JS实现快速排序

快速排序也采用了分治的策略,它的基本思想是:
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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值