public static void quickSort2(int[] a, int left, int right) {
{
int i,j,tmp,pivot ;
if(left>right) {
return;
}
pivot=a[left]; //pivot中存的就是基准数
i=left;
j=right;
while(i!=j)
{
//顺序很重要,要先从右边开始找,如果先从左边找,i++后若满足i>=j则停止,i对应一个大于基准的数,再与基准数交换到左边就不对了!
while(a[j]>=pivot && i<j) {
j--;
}
//再找做左边的
while(a[i]<=pivot && i<j) {
i++;
}
//交换两个数在数组中的位置
if(i<j)
{
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
}
//最终将基准数归位
swap(a,left,i);
quickSort2(a,left,i-1);//继续处理左边的,这里是一个递归的过程
quickSort2(a,i+1,right);//继续处理右边的 ,这里是一个递归的过程
}
}
static void swap(int[]a ,int i,int j){
int t;
a[i];
a[i] = a[j];
a[j] = t;}