简单地说:
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)