public void quicksort(int[] arr, int start, int end) {
int i = start;
int j = end;
int pivot = arr[start];
while(i<j){
while (i<j && arr[i] < pivot) {
i++;
}
while (i<j && arr[j] > pivot ){
j--;
}
if(i < j){
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
if(start<j){
quicksort(arr, start, j);
}
if(i+1<end){
quicksort(arr, i+1, end);
}
}
时间复杂度:O(NlogN)
但是以上的算法,在有重复数据的时候会报错,这个怎么解决呢?
都说快速排序对小数组没有优势,为什么呢?