第一种方法:
public void quickSort(int[] data,int start,int end){
int i=start;
int j=end;
if(i>=j){
return;
}
boolean flag=true;//游标从右侧开始走;
while(i!=j){
if(data[i]>data[j]){
int temp=data[i];
data[i]=data[j];
data[j]=temp;
flag=!flag;
}
if(flag){
j--;
}else{
i++;
}
}
//此时i和j 的游标一样
i--;
j++;
quickSort(data,start,i);
quickSort(data,j,end);
}
第二种方法:
public void quickSort(int[] data,int start,int end){
if(start<end){
int base=data[start];
int i=start;
int j=end+1;
while(true){
while (i<end&&(data[++i]-base<=0));
while(j>start&&(data[--j]-base>=0));
if(i<j){
swap(data,i,j);
}else{
break;
}
}
swap(data,start,j);
quickSort(data,start,j-1);
quickSort(data,j+1,end);
}
}