1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
#include <bits/stdc++.h>
using namespace std;
void quickSort(vector<int>& a, int l, int r) {
if (l < r) {
int ptrl = l, ptrr = r;
int x = a[ptrl];
while (ptrl < ptrr) {
while (a[ptrl] <= x and ptrl < r) { // 注意这里是 < r 不是 < ptrr
ptrl++;
}
while (a[ptrr] >= x and ptrr > l) {
ptrr--;
}
if (ptrl < ptrr) {
swap(a[ptrl], a[ptrr]);
}
}
swap(a[l], a[ptrr]);
quickSort(a, l, ptrr - 1);
quickSort(a, ptrr + 1, r);
}
}
int main() {
vector<int> a = {3, 5, 1, 8, 9, 4, 2, 6, 0, 1};
quickSort(a, 1, (int) a.size() - 1);
for (int i : a) {
cout << i << ' ';
}
return 0;
}
|