![]() |
#2
flyingcloude2009-09-17 11:52
|

void quickSort(int[] num,int left ,int right){
if(left<right){
int s=num[(left+rihgt)/2]; //把中间的这个数当作轴
int i=left-1;
int j=right+1;
while(true){
while(num[++i]<s); //i从左到右,直到找到第一个不小于s的数
while(num[--j]>s); //j从右到左,直到找到第一个不大于s的数
int tmp=a[i]; //交换i j指向的数
a[i]=a[j];
a[j]=tmp;
} //经过上面的交换,数组的情况是以一个数为中心,左边都是比它小的数,右边都是比它大的数
quickSort(num,left,i-1); //递归左边
quickSort(num,j+1,right);//递归右边
}
}
if(left<right){
int s=num[(left+rihgt)/2]; //把中间的这个数当作轴
int i=left-1;
int j=right+1;
while(true){
while(num[++i]<s); //i从左到右,直到找到第一个不小于s的数
while(num[--j]>s); //j从右到左,直到找到第一个不大于s的数
int tmp=a[i]; //交换i j指向的数
a[i]=a[j];
a[j]=tmp;
} //经过上面的交换,数组的情况是以一个数为中心,左边都是比它小的数,右边都是比它大的数
quickSort(num,left,i-1); //递归左边
quickSort(num,j+1,right);//递归右边
}
}