快速排序 (Javascript)

//快速排序
//時間複雜度 O(nlogn) ,可以原地排序。
//採用遞歸的方式寫

//快排
function quickSort(left,right,arr) {
    var len = arr.length ,
        partitionIndex;
    var left = typeof left === "number" ? left:0;
    var right = typeof right === "number" ? right:len - 1;
    if(left < right){
        partitionIndex = partition(left,right,arr);
        quickSort(left,partitionIndex - 1,arr);
        quickSort(partitionIndex + 1 ,right ,arr);
    }

    return arr;
}
//劃分
function partition(left,right,arr) {
    var index = left + 1;
    for(let i = left + 1;i <= right;i++){
        if(arr[i] < arr[left]){
            swap(i,left,arr);
            index++;
        }
    }
    swap(left,index - 1,arr);
    return index - 1;
}
//交換位置
function swap(i,j,arr) {
    var temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
 }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章