源代码:
//从大到小排列
#include<bits/stdc++.h>
using namespace std;
int n,a[1000005];
void mysort(int a[],int l,int r)//a:要排列的数组
{ //l:要排列部分左端的下标(含此下标)
if(l>=r) //r:要排列部分右端的下标(含此下标)
return;
int i=l,j=r,k=a[(l+r)/2];//k:基准数
do
{
while(a[i]>k)i++;
while(a[j]<k)j--;
if(i<=j)
{
swap(a[i],a[j]);
i++;
j--;
}
}while(i<=j);
if(l<j)mysort(a,l,j);//分治
if(i<r)mysort(a,i,r);
}
int main()
{ //输入
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
mysort(a,1,n);//排列
//输出
for(int i=1;i<=n;i++)
cout<<a[i]<<" ";
return 0;
}