//快速排序
//時間複雜度 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;
}