一、基本思想
- 採用分治的思想,通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的數據比另一部分的數據都要小,然後再按此方法對這兩部分分別進行排序,整個排序過程可以遞歸進行
二、時空複雜度
時間複雜度 | 空間複雜度 |
---|---|
最優: 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>