快速排序

写法一:

var example=[1,4,3,8,9,6,2]
        
function quickSort(arr){
    if(arr.length<=1){
        return arr;
    }
    var left=[],right=[],current=arr.splice(0,1);
    for(let i=0;i<arr.length;i++){
        if(arr[i]<current){
            left.push(arr[i])
        }else{
            right.push(arr[i])
        }
    }
    return quickSort(left).concat(current,quickSort(right));
}
console.log(quickSort(example)); // => [1, 2, 3, 4, 6, 8, 9]

写法二:

var arr = [1, 4, 3, 8, 9, 6, 2];
function quickSort(arr,l,r){
    if(l < r){
        var i = l, j = r, x = arr[i];
        while(i<j){
            while(i<j && arr[j]>x)
                j--;
            
            if(i<j)
                //这里用i++,被换过来的必然比x小,赋值后直接让i自加,不用再比较,可以提高效率
                arr[i++] = arr[j];
            
            while(i<j && arr[i]<x)
                i++;
            
            if(i<j)
                //这里用j--,被换过来的必然比x大,赋值后直接让j自减,不用再比较,可以提高效率
                arr[j--] = arr[i];
        }
        arr[i] = x;
        
        quickSort(arr, l, i-1);
        quickSort(arr, i+1, r);
    }
}
quickSort(arr, 0, arr.length - 1);
console.log(arr); // => [1, 2, 3, 4, 6, 8, 9]

 

posted @ 2021-05-25 13:22  web_cnblogs  阅读(44)  评论(0)    收藏  举报