话不多说,源码如下:
//快速排序算法:从小到大
#include <stdio.h>
int d[11]; //用于存放10个数据
void QuickSort(int left,int right)
{
int i,j,t,temp;//i指示数组下标(从小到大),j指示数组下标(从大到小)
if (left>right) //终止条件
return;
temp=d[left];
i=left;
j=right;
while(i!=j)
{
while(d[j]>=temp&&i<j) //先从右向左,寻找比基准temp小的数
j--;
while(d[i]<=temp&&i<j) //再从左向右,寻找比基准temp大的数
i++;
//交换两个数
if(i<j) //两个数没有相遇
{
t=d[i];
d[i]=d[j];
d[j]=t;
}
//i与j相等时,将基准数temp归位至数组合适位置
d[left]=d[i];
d[i]=temp;
QuickSort(left,i-1); //递归:继续处理基准位左边的数
QuickSort(i+1,right); //递归:继续处理基准位右边的数
return;
}
}
int main()
{
int i;
for (i=1;i<=10;i++)
scanf("%d",&d[i]); //输入10个数,输入时用适当的分隔符隔开,如回车/空格
QuickSort(1,10);
for(i=1;i<=10;i++)
printf("%d ",d[i]); //注意是d[i]而非 &d[i]
getchar();
getchar(); //两个getchar()
return 0;
}