代码
#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std;
const int maxn = 1000+50;
int A[maxn], n;
void qsort(int l, int r){
int i,j,temp;
if (l>r) return;
temp = A[l]; // 基准点
i = l;
j = r;
while (i!=j){
// 顺序一定是先从右边。因为基准点选在了左边。
while (A[j] >= temp && i<j)
j--;
while (A[i] <= temp && i<j)
i++;
if(i<j)
swap(A[i],A[j]);
}
swap(A[l],A[i]);
qsort(l,i-1);
qsort(i+1,r);
}
int main(){
scanf("%d",&n);
for(int i = 0; i<n; i++)
scanf("%d",&A[i]);
qsort(0, n); // 前闭后开区间
for (int i = 0; i<n; i++)
printf("%d ",A[i]);
return 0;
}
思路
坐在马桶上看算法:快速排序
看这个就可以。经典算法是要多看,多体悟,才能慢慢理解。