- #include
- #include
- #include
- #include
- #include
- using namespace std;
- intn,a[2000002];
- /*int rrand(int l,int r) //三中用于生成随机位置
- {
- srand((unsigned)time(NULL));
- return (int)(rand()%(r-l+1)+l);
- }*/
- voidqsort(intl,intr)//以中间的数为基准快排
- {
- int i,j,mid,p;
- i=l;j=r;
- mid=a[(l+r)/2];
- do
- {
- while(a[i];
- while(a[j]>mid) j--;
- if(i<=j)
- {
- p=a[i];
- a[i]=a[j];
- a[j]=p;
- i++;
- j--;
- }
- }while(i<=j);
- if(l<j) qsort(l,j);
- if(i<r) qsort(i,r);
- }
- /*void qsort(int l,int r) //随机&首位快排
- {
- int i=l,j=r+1,temp=rrand(l,r),k=0; //首位的话是temp=a[i]
- if(r-l<2) return;
- while(i<j)
- {
- while(i<j)
- {
- j--;
- if(a[j]<temp)
- {
- swap(i,j);
- break;
- }
- }
- while(i<j)
- {
- i++;
- if(a[i]>temp)
- {
- swap(i,j);
- break;
- }
- }
- }
- a[i]=temp;
- qsort(l,i);
- qsort(i+1,r);
- }
- */
- int main()
- {
- freopen("sorttest.in","r",stdin);
- freopen("sorttest.out","w",stdout);
- scanf("%d",&n);
- for(inti=n;i>=1;i--) scanf("%d",&a[i]);
- /*sort(a+1,a+n+1); //喜闻乐见的sort
- for(int i=1;i<=n;++i)printf("%d ",a[i]);
- */
- qsort(1,n);
- for(inti=1;i<=n;++i)printf("%d ",a[i]);
- fclose(stdout);
- return 0;
- }
来源: http://www.bubuko.com/infodetail-2058247.html