P1177 【模板】快速排序
P1177 【模板】快速排序
快速排序模板
//P1177 【模板】快速排序 #include <bits/stdc++.h> using namespace std; int n,a[100010],t[100010]; void print(){ for(int i=1;i<=n;i++){ cout<<a[i]<<' '; } cout<<endl; } void qsort(int *a,int l,int r){ if(r-l<=1) return ;//只有一个数或者是空序列 int flag=a[rand()%(r-l)+l]; //flag=a[l] int x=l,y=r; for(int i=l;i<r;i++){ if(a[i]<flag){ t[x]=a[i]; x++; } else if(a[i]>flag){ y--; t[y]=a[i]; } } for(int i=x;i<y;i++){ t[i]=flag; } for(int i=l;i<r;i++){ a[i]=t[i]; } qsort(a,l,x); qsort(a,y,r); return; } int main() { cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; } qsort(a,1,n+1);//排序1到n个数 [1,N+1),左闭右开的区间 print(); return 0; }

浙公网安备 33010602011771号