/*快速排序
*/
#include <stdio.h>
int a[10],n;//全局变量,方便在函数中使用,已默认初始化
void quicksort(int left,int right)
{
int i,j,t,temp;
if(left>right)//控制函数的结束
{
return;
}
temp = a[left];//作为基准数,也就是数列中选取某个数作为比较的对象
i = left;//左边
j = right;//右边
while(i!=j)//为相遇
{
while(a[j]>=temp&&i<j)//从右边找到比基准数小的数
{
j--;
}
while(a[i]<=temp&&i<j)//从左边找到比基准数大的数
{
i++;
}
if(i<j)//交换两个数
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
//将基准数归位
a[left] = a[i];
a[i] = temp;
quicksort(left,i-1);//重新定义基准数,再次比较
quicksort(i+1,right); // 重新定义基准数,再次比较
return ;
}
int main()
{
int i,j;
printf("请输入需要排序的个数:");
scanf("%d",&n);
printf("请输入排序的数:\n");
for(i = 0;i < n;i++)
{
scanf("%d",&a[i]);
}
quicksort(0,n-1);
printf("排序结果为:\n");
for(i = 0;i < n;i++)
{
printf("%d ",a[i]);
}
return 0;
}