js数组快速排序-算法

构思

比如一个数组: var arr=[32,45,78,9,1,6]

第一步:找一个基点,比如找32,建立左右2个空数组

第二步:根据基点把大于基点的数放右边数组,小于基点的数放左边数组
于是有:左数组 [9,1,6] 右数组 [45,78]

第三步:对左右数组进行排序,(前提数组长度大于等于2)

第四步:整合数组就行

代码如下

  var arr=[32,45,78,9,1,6];
    function f(arr) {
    
    
        //先找一个基点32 ,都32小的放入左数组,比32大的放入右数组
        var jd=arr[0];
        var left_arr=[];
        var right_arr=[];
        for (var i=1;i<arr.length;i++){
    
    
            if (arr[i]>jd) {
    
    
                right_arr.push(arr[i]);
            }else {
    
    
                left_arr.push(arr[i]);
            }
        } //遍历数组

        //左右数组分好后,对左右数组进行排序 里面的数组长度一定要大于2,不然没意义
        if (left_arr.length>=2){
    
    
            left_arr=f(left_arr);
        }
        if (right_arr.length>=2) {
    
    
            right_arr=f(right_arr);
        }
        return left_arr.concat(jd,right_arr);
    }
   let a =f(arr);
    console.log(a);

控制台输出:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41309350/article/details/113442194