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