实际上已经是我第三次做了。但是理解不够深入加上记性太差,每次都只记得一部分。
快排的步骤是很清楚了。O(nlogn)
我的错点
1、递归
2、等于的时候也是要跳过的
3、以最右的数为基准数,那指针要从左边走,这样最后指针相等时的值才是比最右大的值,才可以交换
4、都是指针罢了
public void quickSort(int[] num,int low,int high){
if(low>=high){
return;
}
int index=partSort(num,low,high);
quickSort(num,low,index-1);
quickSort(num,index+1,high);
}
private int partSort(int[] num, int low, int high) {
int i=low,j=high;
int x=num[high];
while(i<j){
while(i<j&&num[i]<=x){
i++;
}
while(i<j&&num[j]>=x){
j--;
}
int temp=num[i];
num[i]=num[j];
num[j]=temp;
}
num[high]=num[i];
num[i]=x;
return i;
}