#include <stdio.h>
int arry[100];
void q(int l,int r)
{
if(l>r)return;//结束条件判断
int i=l,j=r,temp=arry[l],t;//初始化变量
while(i!=j)//i和j相遇时结束循环
{
while(arry[j]<=temp && i<j)//j先走,查找比基准数大的数
j--;
while(arry[i]>=temp && i<j)//i后走,查找比基准数小的数
i++;
if(i<j)//交换两个数
{
t=arry[i];
arry[i]=arry[j];
arry[j]=t;
}
}
arry[l]=arry[i];//交换基准数
arry[i]=temp;
q(l,i-1);//前半部分继续
q(i+1,r);//后半部分继续
}
int main()
{
int n;
printf("n=");
scanf("%d",&n);
n--;
for(int i=0;i<=n;i++)//录入数组
{
printf("arry[%d]=",i+1);
scanf("%d",&arry[i]);
}
q(0,n);//调用排序
for(int i=0;i<=n;i++)//输出数组
{
printf("%d\t",arry[i]);
}
return 0;
}
快速排序
最新推荐文章于 2024-07-17 10:35:12 发布