js数组快排的实现原理

2018-03-15  本文已影响0人  来看代码

一.我们平时在使用数组的排序的时候,都是调用的js自带的sort()方法;
var arr = [5,1,8,1,2,9,3,4];
console.log(arr.sort()); //[1,1,2,3,4,5,8,9]
二.其实我们自己可以根据一些简单的方法自己实现,主要实现思路如下:
1.在数据集之中找一个基准点(位于目前的数组的中间的那个数值),
2.建立2个数组,分别存储左边和右边的数组,
3.利用递归进行逐次比较,然后拼接数组达到排序的效果。
function quickSort(arr) {
if (arr.length<=1) {
return arr;
}
var num = Math.floor(arr.length / 2),//找到中间值,如果是浮点数,就向下取整
numValue = arr.splice(num, 1)[0]; //找到中间数的值

        var leftArr = [],
            rightArr = [];
        for (var i = 0; i < arr.length; i++) {
            if (arr[i] < numValue) {
                leftArr.push(arr[i]);
            } else{
                rightArr.push(arr[i]);
            }
        }
        //遍历后的2数组,再调用此方法递归遍历
        return quickSort(leftArr).concat([numValue],quickSort(rightArr));
    }
    //调用测试结果
    var new_arr = quickSort(arr);  //[1,1,2,3,4,5,8,9]
上一篇下一篇

猜你喜欢

热点阅读