码迷,mamicode.com
首页 > 编程语言 > 详细

快速排序算法

时间:2019-09-02 12:16:49      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:接下来   bsp   快速排序   push   第一个   快速   ddl   turn   highlight   

先来显示一下它的过程

1.给一个数组 10,22,3,90,8,6 从小到大 快速排序

2.选取它的第一个值作为flag 其他数组以此做排序,比它大的放右边,比它小的放左边。[10, 22, 3, 90, 8, 6] => { 3, 8, 6 } 10 { 22, 90 }

3.上一步得到的数组是{ 3, 8, 6 } 10 { 22, 90 } ,接下来对 左边,和右边的两个数组,进行类似的排序。

 [ 3,8,6 ] 10 [ 22, 90 ] => [3, {8,6} ] 10 [ 22 ,{ 90}] ,

4.上面一步得到 [3, {8,6} ] 10 [ 22 ,{ 90}] ,下面对 里面的 {8, 6} 排序,{90}只有一个值,不用排序了。

[3, {8,6} ] 10 [ 22 ,{ 90}] =>  [3, {6, 8} ] 10 [ 22 ,{ 90}] .结束 这样就得出 最后结果

 

 

写法

 var arr = [10, 22, 3, 90, 8, 6];
    function sort(arr){
        if(arr.length <= 1) return arr;
        var middle = arr[0];
        var left = [];
        var right = [];
        for(var i = 1; i < arr.length; i++){
            if(arr[i] < middle){
                left.push(arr[i]);
            }
            if(arr[i] > middle){
                right.push(arr[i]);
            }
        }
        return sort(left).concat(middle).concat(sort(right));
    }

    console.log(sort(arr));

  

快速排序算法

标签:接下来   bsp   快速排序   push   第一个   快速   ddl   turn   highlight   

原文地址:https://www.cnblogs.com/chenyi4/p/11445123.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!