快速排序的基本思想就是首先选择一个中间值middle,然后把比他小的放在左边,大的放在右边(具体的实现方法是从两边找,找到一对后交换),然后对两边分别使用这个过程。
#include "stdio.h"
void sort(int s[],int left,int right)
{
int i,j,temp,middle;
i=left,j=right;
middle=s[(left+right)/2];
do{
while((s[i]<middle)&&(i<right))
i++;
while((s[j]>middle)&&(j>left))
j--;
if(i<=j)
{
temp=s[i];
s[i]=s[j];
s[j]=temp;
i++;
j--;
}
}while(i<=j);
if(left<j)
sort(s,left,j);
if(right>i)
sort(s,i,right);
}
void quicksort(int s[],int count)
{
sort(s,0,count-1);
}
void main()
{
int i;
int count;
int arry[]={9,6,7,8,3,4};
quicksort(arry,6);
for(i=0;i<6;i++)
{
printf("%d ",arry[i]);
}
getch();
}