快速排序较冒泡排序而言,递归与两个for循环相比,降低了时间复杂度,速度也更快,是有效常用的一种排序方法。
#include <stdio.h>
#include <stdlib.h>
#define N 10
void fast_sort(int a[],int beg,int end)
{
int l=beg,r=end;
int t=a[beg];
if(beg<end)
{
while(l<r)
{
while((a[r]>=t)&&(l<r))
{
r--;
}
a[l]=a[r];
while((a[l]<=t)&&(l<r))
{
l++;
}
a[r]=a[l];
}
a[l]=t;
fast_sort(a,beg,l-1);
fast_sort(a,r+1,end);
}
else
return ;
}
int main()
{
int a[N],i;
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
fast_sort(a,0,N-1);
for(i=0;i<N;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}