class QuickSort{
swap(a,left,right){
let tmp;
tmp = a[left];
a[left] = a[right];
a[right] = tmp;
}
partition(a ,left ,right){
let self = this;
let pivotKey = a[left];
let pivotPoint = left ;
while (left <right){
while(left<right&&a[right]>pivotKey){ //先从右边开始 当小于a[left] 就停止
right--;
}
while(left<right&&a[left]<=pivotKey){ //右边停止后 ,左边开始, 当大于a[left] 就停止
left++;
}
self.swap(a,left,right) //把大的交换到右边,把小的交换到左边
}
self.swap(a,pivotPoint,left) //最后把piovt到中间
console.log(a)
return left
}
Sort(a,left,right){
let self = this;
if (left>=right){ //跳出递归
return
}
const pivotPos = self.partition(a,left,right)
self.Sort(a,left,pivotPos-1)
self.Sort(a,pivotPos+1,right)
}
}
module.exports = QuickSort;
const QuickSort = require("./quickSort");
let a =[34,5,25,7,54,23,56,75,32,344,53,2]
let left = 0;
let right = a.length-1;
const quick = new QuickSort();
quick.Sort(a,left,right)
result
➜ quickSort node test.js
[ 32, 5, 25, 7, 2, 23, 34, 75, 56, 344, 53, 54 ]
[ 23, 5, 25, 7, 2, 32, 34, 75, 56, 344, 53, 54 ]
[ 7, 5, 2, 23, 25, 32, 34, 75, 56, 344, 53, 54 ]
[ 2, 5, 7, 23, 25, 32, 34, 75, 56, 344, 53, 54 ]
[ 2, 5, 7, 23, 25, 32, 34, 75, 56, 344, 53, 54 ]
[ 2, 5, 7, 23, 25, 32, 34, 53, 56, 54, 75, 344 ]
[ 2, 5, 7, 23, 25, 32, 34, 53, 56, 54, 75, 344 ]
[ 2, 5, 7, 23, 25, 32, 34, 53, 54, 56, 75, 344 ]