使这个QuickSort Java程序更好

时间:2011-07-06 11:08:05

标签: java quicksort

我有这个QuickSort程序,我想也许这不是最好的解决方案,我想要我可以做的优化的想法。我计划在大约20万个整数上运行它。

public static ArrayList<Comparable> quickSort(ArrayList<Comparable> arrayToSort) {
    if(arrayToSort.size() <= 0) {
        return arrayToSort;
    }
    Comparable pivot = arrayToSort.get(0);
    arrayToSort.remove(pivot);
    return quickSort(arrayToSort, pivot);
}

private static ArrayList<Comparable> quickSort(ArrayList<Comparable> arrayToSort, Comparable pivot) {
    ArrayList<Comparable> smaller = new ArrayList<Comparable>();
    ArrayList<Comparable> bigger = new ArrayList<Comparable>();

    for(Comparable i: arrayToSort) {
        if(i.compareTo(pivot) > 0) {
            bigger.add(i);
        } else {
            smaller.add(i);
        }
    }
    ArrayList<Comparable> retVal = new ArrayList<Comparable>();

    retVal.addAll(quickSort(smaller));
    retVal.add(pivot);
    retVal.addAll(quickSort(bigger));

    return retVal;
}

由于

1 个答案:

答案 0 :(得分:2)

  1. 使用introsort代替quicksort。
  2. 使用三分之一或随机枢轴选择。
  3. 使用Fork/Join进行并行化。
相关问题