JS快速排序和去重怎么实现
导读:这篇文章给大家分享的是“JS快速排序和去重怎么实现”,文中的讲解内容简单清晰,对大家学习和理解有一定的参考价值和帮助,有这方面学习需要的朋友,接下来就跟随小编一起学习一下“JS快速排序和去重怎么实现”吧。 JS的快速排序和JS...
这篇文章给大家分享的是“JS快速排序和去重怎么实现”,文中的讲解内容简单清晰,对大家学习和理解有一定的参考价值和帮助,有这方面学习需要的朋友,接下来就跟随小编一起学习一下“JS快速排序和去重怎么实现”吧。
JS的快速排序和JS去重在面试的时候问的挺多的.下面是我对快速排序的理解,和快速排序,去重的代码.
1.什么是快速排序?
第一步: 快速排序就是去个中间值,把比中间值小的放在左边设为arrLeft,比中间值大的放在右边设为arrRight
第二步: 对arrLeft进行第一步,对arrRight进行第一步.(明显是一个递归嘛,当数组的长度小于2的时候结束)
第三步: 合并arrLeft,中间值,arrRight
quickSort = function(arr){
if(arr.length 2){
return arr;
}
var tmp = arr.splice(Math.floor(arr.length/2), 1)[0],
arrLeft = [],
arrRight = [];
for(var i = 0;
i arr.length;
i ){
if(arr[i] >
= tmp){
arrRight.push(arr[i]);
}
else{
arrLeft.push(arr[i]);
}
}
return arguments.callee(arrLeft).concat(tmp,arguments.callee(arrRight));
}
2.JS的去重?
大家第一个想到的应该是,循环一次数组,每取到一个值就与后面的比较,如果没有相同的就放入一个新数组里面,这样就去重了
//第一种
var unique1 = function(arr){
var newArr = [];
while(arr.length){
var value = arr.shift();
for(var i = 0, len = arr.length;
ilen;
i ){
if(value == arr[i]){
break;
}
}
if(i == len){
newArr.push(value);
}
}
return newArr;
}
但是这样循环了二次,效率不好.下面提供的较好,声明一个对象,数组的值作为对象的属性并赋值为一,然后判断这个对象属性是否存在就行了
//第二种
var unique2 = function(arr){
var arr = [];
var obj = {
}
;
for(var i = 0, len = a.length;
i len;
i ){
if(!obj[a[i]]){
obj[a[i]] = 1;
arr.push(a[i]);
}
}
console.log(obj)
return arr;
}
;
还有一种就是排序并去重 ,这种就更加容易了.判断前面一个值是不是等于后面一个值如果相等,往后移动一位就行了
//第三种
var unique3 = function(arr){
var newArr = [];
for(var i = 0, len = arr.length;
i len;
i ){
if(arr[i] !== arr[i 1]){
newArr.push(arr[i]);
}
if(i == len){
newArr.push(arr[i]);
}
}
return newArr;
}
以上就是关于“JS快速排序和去重怎么实现”的相关知识,感谢各位的阅读,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注网络,小编每天都会为大家更新不同的知识。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: JS快速排序和去重怎么实现
本文地址: https://pptw.com/jishu/654898.html
