JS实现快速排序

1.算法思想

   通过一次排序将要排序的数组分割成两个独立的部分,其中一部分的所有数据小于另外一部分的所有数据,然后按照此方法对两个部分的数据进行快速排序,整个过程采用递归实现,以此达到整个数组变为有序数组。

时间复杂度:平均-O(nlogn),最好-O(nlogn),最坏-O(n^2);空间复杂度:O(longn).不稳定

2.算法思路

1.从序列中选取一个基准值;

2.遍历整个序列,比基准值小的数放在左边,比基准数大的数放在右边;

3.重复1、2 直到所有的子集当中只有一个数

3.代码实现

function quickSort(arr){
    if(arr.length<2){//数组特殊情况考虑
        return arr; 
    }   
    var left=[];
    var right=[];
//定义基准值
    var mid=arr.splice(Math.floor(arr.length/2),1);
    for(var i=0;i<arr.length;i++){//遍历数组
        if(arr[i]<mid){//小于基准值 
           left.push(arr[i];
        }else{
           right.push(arr[i]);
        }
        return quickSort(left).concat(mid,quickSort(right));//采用递归,并合并数组
}

猜你喜欢

转载自blog.csdn.net/bangbanggangan/article/details/80984197