Rumah >hujung hadapan web >tutorial js >javascript数组去重和快速排序算法实例详解
数组去重
原理:定义一个对象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)); }
Atas ialah kandungan terperinci javascript数组去重和快速排序算法实例详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!