排序3之快排

 快排,据说是平均情况下最好的排序了,算法比较好实现,快排的关键是确定轴的位置,我这里用的轴是在末尾的。

  有关快排的资料可以看http://baike.baidu.com/view/19016.htm



根据上图的算法思想(我觉得这种最好写代码了,呵呵)

#include <stdio.h>
#define N 10
#define swap(x,y) {int t=x;x=y;y=t;}
void qs(int l,int r,int *a)
{
    if(l>=r) //这是递归的出口
      return;
    int i=l,j;
    for(j=l;j<r;j++)
      if(a[j]<a[r])//每次都是和最后那个比较
       {
        swap(a[j],a[i]);i++;
       }
       swap(a[r],a[i]);//这步不能忘了
    qs(l,i-1,a);//递归调用
    qs(i+1,r,a);//递归调用
}
int main()
{
    int a[N];
    int i;
    for(i=0;i<N;i++)//这里是数据的输入
      scanf("%d",&a[i]);
    qs(0,N-1,a);  //快排
    for(i=0;i<N;i++)//显示结果
    printf("%d ",a[i]);
    return 0;
}

                                                         ------江财小子

原文地址:https://www.cnblogs.com/372465774y/p/2421626.html