bobo老师,关于快速排序基础版本代码,我无意间把sort的递归写成了partition递归,结果排序正确,还快了10倍。并且对于NearlyOrder的输入对速度也没有任何影响。这个该如何理解?
private static void sort(Comparable[] arr, int l, int r){
if(l > r)
return;
int p = partition(arr, l, r);
partition(arr, l, p-1);
partition(arr, p+1, r);
}
private static int partition(Comparable[] arr, int l, int r){
Comparable v = arr[l];
int j = l; // arr[l+1...j] < v ; arr[j+1...i) > v
for(int i = l+1; i <= r; i++){
if(arr[i].compareTo(v) < 0){
j++;
swap(arr, j, i);
}
}
swap(arr, l, j);
return j;
}