前端演算法:快速排序演算法

GeekQiaQia發表於2019-04-21

快速排序演算法思想:

/**
    1.選擇基準值base:pivotIndex:Math.floor(arr.length/2);
    2.迴圈原陣列,小於基準值的放在left[];大於基準值的放在right[];
    3.使用遞迴,對left[];right[];做相同的操作;
    3.遞迴結束條件是arr.len<=1; return arr;
*/
複製程式碼

talk is cheap ,show me the code:

Array.prototype.quickSort=function(arr){
    let len=arr.length;
    if(len<=1){
        return arr;
    }
    let left=[],
        right=[],
        pivotIndex=Math.floor(len/2),
        pivot=arr.splice(pivotIndex,1);
    for(let i=0;i<len;i++){
        if(arr[i]<pivot){
            left.push(arr[i]);
        }else{
            right.push(arr[i]);
        }
    }// end of for loop;    
        
    return quickSort(left).concat([pivot],quickSort(right));
}
複製程式碼

相關文章