一、基本思想
- 采用分治的思想,通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的数据比另一部分的数据都要小,然后再按此方法对这两部分分别进行排序,整个排序过程可以递归进行
二、时空复杂度
时间复杂度 | 空间复杂度 |
---|---|
最优: nlogn; 最差: n^2; 平均: nlogn | nlogn |
三、JavaScript源码
输出结果在控制台查看
<script type="text/javascript">
var arr = [-2, 10, -1, 0, 5, 4, 7, 6];
function QuickSort(arr, l, r) {
let b = arr[l];
let L=l,R=r;
if (l >= r) {
return;
}
while (l < r) {
while (l < r && arr[r] >= b) {
r--;
}
if (l < r) {
arr[l] = arr[r];
}
while (l < r && arr[l] <= b) {
l++;
}
if (l < r) {
arr[r] = arr[l];
}
if (l >= r) {
arr[l] = b;
}
}
QuickSort(arr,L,r-1);
QuickSort(arr,r+1,R);
}
QuickSort(arr, 0,7);
console.log(arr);
</script>