簡單地說:
1. 選擇一個基準數 key = arr[0]
2. 大於這個數 的放到key的右邊,小於這個數的放在左邊,這樣數組分成了兩個區間。
3. 分別在上述兩個區間做第二步操作。
4. 一直重複,用遞歸的方式,直到區間的數爲1時結束。
代碼如下:
let arr=[5,9,8,7,3,45,8,10,2,6]
function qs(arr,left,right){
let key = arr[left]
while(left<right){
while(left<right && arr[right]>=key)
right--;
arr[left] = arr[right]
while(left<right && arr[left]<=key)
left++;
arr[right] = arr[left]
arr[left] = key
}
return left
}
function sort(arr,left,right){
if (left<right) {
let flag = qs(arr,left,right)
sort(arr,left,flag-1)
sort(arr,flag+1,right)
}
return arr
}
let v = sort(arr,0,arr.length-1)
console.log(v)