这里有新鲜出炉的 Javascript 教程,程序狗速度看过来!
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
在 js 面试中快速排序和数组去重是比较常问的面试题,下面小编给大家分享下我对 JS 实现快速排序和去重的理解,感兴趣的朋友一起看看吧
JS 的快速排序和 JS 去重在面试的时候问的挺多的. 下面是我对快速排序的理解,和快速排序,去重的代码.
1. 什么是快速排序?
第一步: 快速排序就是去个中间值,把比中间值小的放在左边设为 arrLeft,比中间值大的放在右边设为 arrRight
第二步: 对 arrLeft 进行第一步, 对 arrRight 进行第一步.(明显是一个递归嘛,当数组的长度小于 2 的时候结束)
第三步: 合并 arrLeft, 中间值, arrRight
- quickSort = function(arr){
- if(arr.length < ){
- return arr;
- }
- var tmp = arr.splice(Math.floor(arr.length/), )[],
- arrLeft = [],
- arrRight = [];
- for(var i = ; 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 unique = function(arr) {
- var newArr = [];
- while (arr.length) {
- var value = arr.shift();
- for (var i = ,
- len = arr.length; i < len; i++) {
- if (value == arr[i]) {
- break;
- }
- }
- if (i == len) {
- newArr.push(value);
- }
- }
- return newArr;
- }
但是这样循环了二次,效率不好. 下面提供的较好, 声明一个对象,数组的值作为对象的属性并赋值为一,然后判断这个对象属性是否存在就行了
第二种
- var unique = function(arr){
- var arr = [];
- var obj = {};
- for(var i = , len = a.length; i < len; i++){
- if(!obj[a[i]]){
- obj[a[i]] = ;
- arr.push(a[i]);
- }
- }
- console.log(obj)
- return arr;
- };
还有一种就是排序并去重 , 这种就更加容易了. 判断前面一个值是不是等于后面一个值如果相等,往后移动一位就行了
第三种
- var unique = function(arr) {
- var newArr = [];
- for (var i = ,
- len = arr.length; i < len; i++) {
- if (arr[i] !== arr[i + ]) {
- newArr.push(arr[i]);
- }
- if (i == len) {
- newArr.push(arr[i]);
- }
- }
- return newArr;
- }
以上所述是小编给大家介绍的 JS 实现快速排序和去重,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 phperz 网站的支持!
来源: http://www.phperz.com/article/17/0521/331121.html