快速排序的算法我就不多说了,网上多的是,其主要的思路就是分而治之,最开始找一个数a,将数组中所有大于a的数都移动到a的右边,小于a的数都移动到a的左边,再从a的位置将数组一分为二,继续迭代执行上面的操作。talk is cheap,show me the code!
(function fastSort(){
let arr = [4,3,7,9,6]
let len = arr.length
let i = 0
let j = len -1
sortNumber(arr,i,j)
console.log(arr)
})(),
// 采用分而治之的方法,将数组一分为二,迭代使用排序算法
function sortNumber(arr,i,j){
if(i>=j){
return
}
let mid = sort(arr,i,j)
sortNumber(arr,i,mid-1)
sortNumber(arr,mid+1,j)
},
// 将小于middle的数都移动到左边,大于middle的数都移动到a的右边
function sort(arr ,i ,j){
let middle = arr[i]
while(i < j){
while(arr[j] >= middle&& i < j){
j --
}
arr[i] = arr[j]
while(arr[i] <= middle && i < j){
i ++
}
arr[j] = arr[i]
}
arr[j] = middle
return j
}