1.以下代码是在书上看到的,加上自己的理解。
#include<stdio.h> int a[101]; void quictsort(int left,int right) { int i,j,t,temp; if(left>=right)//极为重要,判断退出函数的主要条件 return; i=left; j=right; temp=a[left];//确定最左边一个数为标准数, while(i!=j)//两个数不相等才能进行比较,若相等既说明已经两边数已经比完退出循环,将标准数归位 { while(a[j]>=temp&&i<j) j--; while(a[i]<=temp&&i<j) i++; if(i<=j) { t=a[i]; a[i]=a[j]; a[j]=t; } } a[left]=a[i];//标准数归位 a[i]=temp; quictsort(left,i-1);//对半分,将作半部分排序 quictsort(i+1,right);}int main(void) { int n,i; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&a[i]); } quictsort(1,n); for(i=1;i<=n;i++) { printf("%d\t",a[i]); } }
快排多敲个几遍就可以理解了