问题如下:用快速排序进行从大到小排序
分析问题:首先看一下这个题,经过读题我们得知使用方法是快速排序,先说一下什么是快速排序:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。代码如下:
#include <stdio.h>
int qusort(int s[],int start,int end)
{
int i,j;
i=start;
j=end;
s[0]=s[start];
while(i<j)
{
while(i<j&&s[0]<s[j])
j--;
if(i<j)
{
s[i]=s[j];
i++;
}
while(i<j&&s[0]<s[j])
i++;
if(i<j)
{
s[j]=s[i];
j--;
}
}
s[i]=s[0];
if(start<i)
qusort(s,start,j-1);
if(i<end)
qusort(s,j+1,end)
}
void main()
{
int a[11],i;
printf("请输入十个数:\n");
for(i=1;i<=10;i++)
scanf("%d",&a[i]);
qusort(a,1,10);
printf("排序后的顺序是:\n");
for(i=1;i<=10;i++)
printf("%5d",a[i]);
printf("\n");
}