JS实现快速排序

来源:互联网 发布:网络推广经理 编辑:程序博客网 时间:2024/06/02 02:03
快速排序也采用了分治的策略,它的基本思想是:
1.先从序列中取出一个数作为基准数
2.将序列中比基准数大的数放在基准数的右边,小于或等于基准数的数放在基准数的左边
3.再对左右区间重复第二步,直到各区间只有一个数。
举例:对[20 40 35 28 60 48 55 50 17 67]进行快速排序
第一步:选择中间数60作为基准数(基准可以任意选取)
20 40 35 28 【60】 48 55 50 17 67
第二步:按顺序将每个数与基准数比较,小的放左边,大的放右边
[20 40 35 28 48 55 50 17] 【60】 [67]
第三步:不断重复一二步
[20 40 35 【28】 48 55 50 17] 60 [67]
[20 17] 【28】 [40 35 48 55 50] 60 67
17 20 28 [40 35 【48】 55 50] 60 67
17 20 28 [40 35] 【48】 [55 50] 60 67

17 20 28 35 40 48 50 55 60 67

<script>    function quickSort(arr){        if(arr.length<=1) {return arr;}        var baseIndex=Math.floor(arr.length/2);        var base=arr.splice(baseIndex,1)[0];        var left_arr=[],right_arr=[];        for(var i=0,len=arr.length;i<len;i++){            if(arr[i]<=base){                left_arr.push(arr[i]);            }            else{                right_arr.push(arr[i]);            }        }        return quickSort(left_arr).concat([base],quickSort(right_arr));    }    var array=[20,40,35,28,60,48,55,50,17,67];    var arr=quickSort(array);    document.write(arr+'<br>');        </script>


0 0