void quicksort(int a[], int left, int right) {
int i,j,t,temp; if(left>right) //(递归过程先写结束条件)
return; temp=a[left]; //temp中存的就是基准数
i=left; j=right;
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;
因为a[i]位置上的数字一定比temp要小,此时交换a[i]和temp也是保证数组的有序性
尤其是在只有两个元素的数组中:{40,38}
前面都没有交换的过程,全靠这两步实现交换,保证数组的有序性。
quicksort(a,left,i-1);
quicksort(a,i+1,right);