快速排序演算法思想:
/**
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));
}
複製程式碼