JS快速排序

let arr=[5,7,5,8,1,2,9,10,51,12,18,9,10,2,5];
let l,r;
function quickSort(arr, l, r) {
    if (l < r) {
        let p = partition(arr, l, r);
        quickSort(arr, l, p[0] - 1);
        quickSort(arr, p[1] + 1, r);
    }
    return arr;
}

function partition(arr,  l,  r) {
    let less = l - 1;
    let more = r+1;
    while (l < more) {
        if (arr[l] < arr[r]) {
            swap(arr, ++less, l++);
        } else if (arr[l] > arr[r]) {
            swap(arr, --more, l);
        } else {
            l++;
        }
    }
    //swap(arr, more, r);
    return [less + 1, more-1]; //返回等于区间的边界
}

function swap(arr,q,w){
    tmp=arr[q];
    arr[q]=arr[w];
    arr[w]=tmp;
}
let len=arr.length-1;
let b=quickSort(arr,0,len);
console.log(b);

 

posted @ 2020-05-24 22:20  apple78  阅读(148)  评论(0)    收藏  举报