用快速排序法对一组数据由小到大进行排序。
#include <stdio.h>
void qusort(int s[],int start,int end)
{
int i,j;
i = start; //将每组首个元素赋值给i
j = end; //将每组末尾个元素赋值给j
s[0] = s[start]; // 设置基准值
while(i<j)
{
while(i < j && s[0] < s[j])
j--; //位置左移
if(i < j)
{
s[i] = s[j]; //将s[j]放到s[i]的位置上
i++; //位置右移
}
while(i < j && s[i] <= s[0])
i++; //位置左移
if(i < j)
{
s[j] = s[i]; //将大于基准值的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("请输入10个数:\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");
system("pause");
}
显示如下: