感谢洛谷…督促我复习了一下快速排序。
这题的算法和后面的一题很像,P1059明明的随机数也可以利用快速排序实现,加一点细节就可以了。
#include<stdio.h>
#define max 100010
void sort(int a[],int begin,int end)
{
if(begin > end)return;
else
{
int i = begin;
int j = end;
int temp = a[(begin + end )/2];
while(i<j){
while(a[i]<temp)i++;
while(a[j]>temp)j--;
if(i<=j){
int t = a[i];
a[i] = a[j];
a[j] = t;
i++;
j--;
}
}
if(begin < j)sort(a,begin,j);
if(end > i)sort(a,i,end);
}
}
int main()
{
int n;
int a[max] = {0};
scanf("%d",&n);
for(int i=0; i<n; i++)
{
scanf("%d",&a[i]);
}
sort(a,0,n-1);
for(int i=0; i<n; i++)
{
printf("%d",a[i]);
if(i != n-1)printf(" ");
}
return 0;
}