#include <stdio.h>
void QS(int a[],int low,int high)
{
int xx=low,yy=high;
int key=a[low];//以第一个数为参照做比较
if(low>=high) return;
while(xx!=yy)
{
while(xx<yy&& a[yy]>=key)
yy--;//不小于分界值的留在右边,遇到小于的停止
a[xx]=a[yy];
while(xx<yy&& a[xx]<=key)
xx++;//小于分界值的留在左边,遇到不小于的停止
a[yy]=a[xx];
}
a[xx]=key;
QS(a,low,xx-1);//递归
QS(a,xx+1,high);
}
int main()
{
int i;
int R[]={4,3,8,1,5,6,2,7};
for(i=0;i<8;i++)
printf("%d ",R[i]);
printf("\n");
QS(R,0,7);
for(i=0;i<8;i++)
printf("%d ",R[i]);
printf("\nok!\n");
return 0;
}
快速排序算法
最新推荐文章于 2015-11-04 17:41:57 发布