数组去重和快速排序

来源:互联网 发布:苹果手机数据备份 编辑:程序博客网 时间:2024/04/30 15:32

                    管什么语言,对于数组的去重和排序都是必不可少的,以前也分析过C语言中的一些数组排序方法,这次再来看看js中吧



数组去重:

 

(思路:新建一个空的result数组,一个空的对象。遍历需要去重的数组,判断对象中是否存在当前遍历的元素作为属性名,没有的话则将该元素存入result数组中,同时为obj对象添加上该属性名。)


Array.prototype.removeDup3 = function(){                var result = [];                var obj = {};                for(var i = 0; i < this.length; i++){                    if(!obj[this[i]]){                        result.push(this[i]);                        obj[this[i]] = 1;                    }                }                return result;            }            var arr = [1,2,2,5,2,"测试","test","测试","test"];            console.log(arr.removeDup3());




数组快速排序:

 

(思路:判断当传入的数组长度大于1的情况下,获取中间值,新建两个空数组,分别用来存放大于中间值和小于中间值的元素,递归调用,最后返回结果。)

var quickSort = function(arr) {              if (arr.length <= 1) { return arr; }              var pivotIndex = Math.floor(arr.length / 2);              var pivot = arr.splice(pivotIndex, 1)[0];              var left = [];              var right = [];              for (var i = 0; i < arr.length; i++){                if (arr[i] < pivot) {                  left.push(arr[i]);                } else {                  right.push(arr[i]);                }              }              return quickSort(left).concat([pivot], quickSort(right));            };            var arr1 = [1,4,65,21,2,222,111];            console.log(quickSort(arr1));//concat() 方法用于连接两个或多个数组。



tips:

split用于分割字符串

splice用户插入,删除或者替换数组

slice 用户提取字符串的某个部分





0 0