#include<stdio.h>
int pai(int a[],int left ,int right)
{
int t;
t=a[left]; //用一个变量把左值存起来
while(left < right)
{
while(left < right && a[right] >= t) //从右至左找出一个比 t 小的数
right = right-1;
a[left]=a[right]; //把找出来的数放到left的位置
while(left < right && a[left] <= t) //再从左至右找出一个比 t 大的数
left = left +1;
a[right]=a[left]; //把找出的数放到right的位置
}
a[left]=t; //最后当循环完成的时候,left 与 right 指向同一位置。
return left; //返回值为中间数的下标
}
//完成一次 pai 函数后,就把数组分成两部分,左边的都比中间的数小,右边的都比中间的数大
void kuaipai(int a[],int left, int right)
{
int mid;
if(left<right)
{
mid=pai(a,left,right); //找出中间的数
kuaipai(a,left,mid-1); //递归调用两次,使左右两边的数组完成排序
kuaipai(a,mid+1,right);
}
}
int main()
{
int a[10];
int i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
kuaipai(a,0,9);
for(i=0;i<10;i++)
printf("%d ",a[i]);
}
C语言实现快速排序
最新推荐文章于 2024-07-10 07:13:13 发布