学到第二章了,才发现原来快排如此简单,1分钟就码出来了
#include<bits/stdc++.h>
using namespace std;
const int N = 100010;
int q[N];
int n;
void s(int l,int r){
if(l>=r)return;
int i = l-1,j = r+1,mid =q[(l+r)>>1];\
while(i<j){
do i++;while(q[i]<mid);
do j--;while(q[j]>mid);
if(i<j)swap(q[i],q[j]);
}
s(l,j),s(j+1,r);
}
int main(){
scanf("%d",&n);
for(int i = 0;i<n;i++)scanf("%d",&q[i]);
s(0,n-1);
for(int i=0;i<n;i++)printf("%d ",q[i]);
return 0;
}