快速排序原理

不多说先贴上代码
#include<stdio.h>
void qsort(int a[],int start,int end)
{
 int i,j,key;
 i=start;
 j=end;
 if(i>=j) return;
 key=a[i];
 while(i<j)
 {
  if(a[j]>=key) j--;
  a[i]=a[j];
  if(a[i]<=key) i++;
  a[j]=a[i];
 }
 a[i]=key;
 qsort(a,start,i-1);
 qsort(a,i+1,end);
}
int main()
{
 int i;
 int a[10]={0,4,5,7,3,6,1,2,9,8};
 qsort(a,1,9);
    for(i=1;i<=9;i++)
    {
     printf("%d ",a[i]);
    }
 return 0;
}


思想 每一次while循环 都保证i的左边比key小 J的右边比key大 最后把key赋值给中间的数
注意递归的终止条件咯

posted @ 2016-03-27 21:44  猪突猛进!!!  阅读(170)  评论(0)    收藏  举报