快排模板
- 定義兩個指針,左指針從左邊界開始,右指針從右邊界開始
- 左指針指向的數小於x,左指針向右移動,直到指向的數大於等於x
- 右指針指向的數大於x, 右指針向左移動,直到指向的數小於等於x
- 交換兩個數,繼續循環
- 直到兩個指針相等
void quick_sort(int a[], int l, int r) {
if (l >= r) {
return;
}
int i = l - 1, j = r + 1, x = a[l + r >> 1];
while (i < j) {
do i ++ ; while(a[i] < x);
do j -- ; while(a[j] > x);
if (i < j) {
swap(a[i], a[j]);
}
}
quick_sort(a, l, j);
quick_sort(a, j + 1, r);
}