javascript数组去重和快速排序算法实例详解
程序员文章站
2022-04-25 11:26:05
...
数组去重
原理:定义一个对象obj,然后把数组元素作为obj的属性名,利用属性名是否重复进行判重
var unique = function(arr){ let obj = {}; let newArr = []; arr.forEach(function(x){ if(!obj[x]){ //如果对象中没有该元素对应的属性 obj[x] = true; newArr.push(x); } }); return newArr; }
使用快速排序算法对数组进行排序
这里面包括两种效果,一种是利用快排的特性实现了去重快排,另一种是不去重的快排。
原理:获得目标数组,选定一个元素最为标志位,遍历剩余的元素,比标志位大放右边,比标志位小放左边。
特别注意:还有与标志位相等的元素,如果你存储相等的元素,就实现了去重,如果存储了,就不去重。
var quickSort = function(arr){ if(arr.length <= 1){ return arr; } //定义一个左数组,定义一个右数组 let leftArr = []; let rightArr = []; //选定一个参照值 let tag = arr[0]; /* * 使用如下方式判断,会把重复元素去掉,就实现了快排的同时去重 */ for(let i = 0; i < arr.length; i++){ if(arr[i] < tag){ //将比tag小的元素放在左数组中 leftArr.push(arr[i]); } if(arr[i] > tag){ //将比tag大的元素放在右数组中 rightArr.push(arr[i]); } } /* * 使用如下方式就是使用快排进行排序,不去重 */ for(let i = 1; i < arr.length; i++){ if(arr[i] < tag){ //将比tag小的元素放在左数组中 leftArr.push(arr[i]); }else{ //将比tag大的元素放在右数组中 rightArr.push(arr[i]); } } //递归调用 return [].concat(quickSort(leftArr),[tag],quickSort(rightArr)); }
以上就是javascript数组去重和快速排序算法实例详解的详细内容,更多请关注其它相关文章!
上一篇: php-单链表
下一篇: C# 数组动态添加新元素的 方法
推荐阅读
-
javascript数组常见操作方法实例总结【连接、添加、删除、去重、排序等】
-
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
-
javascript数组常见操作方法实例总结【连接、添加、删除、去重、排序等】
-
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
-
JavaScript数组去重算法实例小结
-
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
-
php冒泡排序、快速排序、快速查找、二维数组去重实例分享_PHP
-
php冒泡排序、快速排序、快速查找、二维数组去重实例分享_PHP
-
JavaScript数组去重算法实例
-
php冒泡排序、快速排序、快速查找、二维数组去重实例分享_PHP教程