快速排序原理
不多说先贴上代码
#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赋值给中间的数 
注意递归的终止条件咯 
 
                    
                
 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号