其中有一些j,j+1可以换成i,但会有边界问题,也就是前面也要改,边界问题很麻烦,这个东西不涉及算法逻辑但又不得不处理还难处理,我的想法是背一下,照个这个思路写,虽然我不喜欢背,但这种边界问题还是背一下好。
输入 :
5
4 7 9 2 4
#include <iostream>
using namespace std;
int q[1024];
void quick_sort(int l, int r) {
if (l >= r)
return;
int x = q[l];
int i = l - 1;
int j = r + 1;
while (true) {
while (q[++i] < x);
while (q[--j] > x);
if (i < j) {
swap(q[i], q[j]);
} else
break;
}
quick_sort(l, j);
quick_sort(j + 1, r);
}
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> q[i];
}
quick_sort(0, n-1);
for (int i = 0; i < n; i++) {
cout << q[i] << " ";
}
cout << endl;
return 0;
}