【问题标题】:When would you use Selection sort versus Merge sort?您什么时候使用选择排序与合并排序?
【发布时间】:2020-08-07 04:02:26
【问题描述】:

合并排序 (nlogn) 的效率总是比选择排序 (n^2) 快。你什么时候会选择选择而不是合并排序?

【问题讨论】:

  • 你很少会选择其中任何一个,有更好的通用排序算法。
  • @Zabuza 但真正的问题是为什么你会选择 O(n^2) 算法而不是 O(n log n) 算法。如果合并和选择是您唯一可用的。 . .
  • 当然,这就是我仅将其作为评论发布的原因。

标签: algorithm sorting big-o mergesort selection-sort


【解决方案1】:

因为选择排序的运行时间是 Θ(n2),而归并排序的运行时间是 O(n log n),对于足够大的输入,归并排序将优于选择排序。但是,选择排序在两个方面可能会更好:

  1. 数组上的选择排序可以使用 O(1) 辅助存储空间来实现,而(大多数)数组上的归并排序实现使用 Θ(n) 辅助存储空间。因此,如果内存非常稀缺,选择排序将是比归并排序更好的选择。 (但是,这将是比堆排序或快速排序更糟糕的选择!)

  2. 在小型输入数组上,选择排序可能比归并排序更快,因为它是一种更简单的算法,其常数因子低于归并排序隐藏的常数因子。例如,如果您要对包含 16 个左右元素的数组进行排序,那么选择排序可能比归并排序更快。 (但是,它可能比插入排序更糟糕)。

换句话说,在某些情况下选择排序会比归并排序更好,但在这些情况下,您可能仍然最好使用另一种排序算法。 :-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 2013-04-25
    • 2013-03-25
    相关资源
    最近更新 更多