0
我使用數組以靜態方式在java中實現了quickSort算法。是否可以在列表中使用列表來實現快速排序?
public static <T extends Comparable<T>> void quickSort(T[] A){
quickSort(A, 0, A.length-1);
}
private static <T extends Comparable<T>> void quickSort(T[] A, int p, int r){
if(p < r){
int q = partition(A, p, r);
quickSort(A, p, q);
quickSort(A, q+1, r);
}
}
private static <T extends Comparable<T>> int partition(T[] A, int p, int r){
T x = A[p];
int i = p;
int j = r;
while(true){
while(A[j].compareTo(x) > 0 && j > p){
j--;
}
while(A[i].compareTo(x) < 0 && i < r){
i++;
}
if(i < j)
swap(A, i, j);
else
return j;
}
}
有沒有一種方法來實現這個算法使用列表,保留「在本地」屬性。我認爲使用沒有索引的列表是一個問題,因爲在兩個不同的「while」之後,如果引用屬於另一個之前的節點,則需要知道。有誰知道避免這種麻煩的方法嗎?
@khelwood它不,QuickSort僅用於對原始數組進行排序。其他人使用MergeSort(早期版本)/ TimSort(從Java 7開始)。 – 2015-01-09 20:33:41