我寫了這個快速排序算法的實現。 理論上,quicksort應該使用任何支點,但我的代碼無法正確排序數組。快速排序:算法只適用於特定的關鍵
如果我使用l作爲支點算法的工作原理,但我無法理解爲什麼它不能使用h。任何想法?
public ArrayList<Integer> sort(ArrayList<Integer> array, int l, int h){
if ((h - l) > 0){
int splitPoint = partition(array, l, h);
sort(array, l, splitPoint);
sort(array, splitPoint +1, h);
}
return array;
}
public int partition(ArrayList<Integer> array, int l, int h) {
int p = h; //with int p = l; the algorithm works
Integer pivot = array.get(p);
while(l<h) {
for (; h>l && array.get(h).compareTo(pivot) >= 0; h--);
for (; l<h && array.get(l).compareTo(pivot) < 0; l++);
swap(array, l, h);
}
return h;
}
我們無法告訴您您沒有向我們展示過的實施有什麼問題。在我們可以確切地告訴你你做錯了什麼之前,你必須向我們展示工作和非工作版本。 – RBarryYoung
@RBarryYoung我試圖重寫我的問題,我把錯誤的代碼 – drolando