【问题标题】:Quicksort or O(N.logN) sort in jdk [duplicate]jdk中的快速排序或O(N.logN)排序[重复]
【发布时间】:2013-03-11 12:22:31
【问题描述】:

是否有快速排序,或另一种 O(N.logN) 排序,在 jdk 标准库中可用?

Collections 课堂没有带来希望:

只要遵守规范本身,实施者应该可以随意替换其他算法。 (例如,sort 使用的算法不一定是归并排序,但它必须是稳定的。)

Collections.sort() 没有给出任何线索:

排序(列表列表) 根据其元素的自然顺序对指定列表进行升序排序。

【问题讨论】:

标签: sorting java standard-library


【解决方案1】:

Collections.sort 是一种优化的归并排序,它实际上在每种情况下都能保证 O(n log n) 并且它是稳定的; link.

【讨论】:

    【解决方案2】:

    排序依赖于Arrays.sort。由于排序方法取决于类型,因此读取 JavaDoc 并不那么明显。 根据阈值修改的合并排序或调整的快速排序:

     /**
     * Tuning parameter: list size at or below which insertion sort will be
     * used in preference to mergesort or quicksort.
     */
    private static final int INSERTIONSORT_THRESHOLD = 7;
    

    这是一个比较快速排序和合并排序的帖子:Quick Sort Vs Merge Sort

    结论:相信 Java 实现,除非你真的知道自己在做什么。

    【讨论】:

      猜你喜欢
      • 2012-08-19
      • 1970-01-01
      • 1970-01-01
      • 2017-11-03
      • 2020-05-10
      • 1970-01-01
      • 2016-12-23
      • 1970-01-01
      • 2011-01-13
      相关资源
      最近更新 更多