sort快排
#include<bits/stdc++.h> using namespace std; int n; long long a[100010]; bool b,px[100010]; void jh(int x,int y) { int az=a[y]; a[y]=a[x]; a[x]=az; } void sot(int l,int r) { int f=a[l],sw=l+1; for(int i=l+1;i<=r;i++) { if(a[i]>f && b==false) { b=true; sw=i; } if(a[i]<f) { if(b==true) jh(sw,i); sw++; } } jh(l,sw-1); px[sw-1]=true; b=false; for(int i=l;i<sw-1;i++) { if(px[i]==false) if(px[i+1]==true) ; else sot(i,sw-2); px[i]=true; } for(int i=sw;i<=r;i++) { if(px[i]==false) if(px[i+1]==true) ; else sot(i,r); px[i]=true; } } int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } sot(1,n); // sort(a,a+n+1); for(int i=1;i<n;i++) { cout<<a[i]<<" "; } cout<<a[n]<<endl; return 0; }