#include <iostream>
using namespace std;
void kuaipai(int m[], int l, int r) {
if (l >= r)
return;
int tmp = m[(l + r) / 2]; // 标记点
int ll = l - 1;
int rr = r + 1;
while (true) {
do
ll++;
while (m[ll] < tmp);
do
rr--;
while (m[rr] > tmp);
if (ll >= rr)
break;
int kk = m[ll];
m[ll] = m[rr];
m[rr] = kk;
}
kuaipai(m, l, rr);
kuaipai(m, rr + 1, r);
}
int main() {
int n;
cin >> n;
int a[n];
for (int i = 0; i < n; i++) {
cin >> a[i];
}
kuaipai(a, 0, n - 1);
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
cout << endl;
return 0;
}
上述代码可以AC 求大佬解惑:
kuaipai(m, l, rr);
kuaipai(m, rr + 1, r);
这串代码改成下列为什么会全TLE
kuaipai(m, l, rr - 1);
kuaipai(m, rr, r);