【问题标题】:Which sorting method is the fastest for already sorted data?对于已经排序的数据,哪种排序方法最快?
【发布时间】:2020-02-16 11:53:07
【问题描述】:

当列表已经排序时,哪种排序方法最快?所有排序算法,如:[1] 冒泡排序、[2] 修改冒泡排序和 [3] 在最佳情况下的插入排序将在 O(n) 时执行。所以他们应该都一样快。当我尝试解决示例排序问题时,我发现它们实际上都在 O(n) 时执行。然后我看到一个图表,插入排序将比其他两个更快(它在这里:https://www.toptal.com/developers/sorting-algorithms/nearly-sorted-initial-order)。我想知道对于已经排序的数据是否正确,例如 list = 1、2、3、4?我认为它们同样快 - 我说的对吗?

感谢您的帮助!

【问题讨论】:

标签: algorithm sorting bubble-sort insertion-sort


【解决方案1】:

如果它已经排序,那么可能只是通过列表的每个元素来检查它的顺序是否正确。所以 O(n) 是的。

如果你想证明,你可以写出冒泡排序/修改冒泡排序/插入排序,然后看看在不需要排序的情况下会发生什么。

编辑:

另外,就像你说的,它可能是修改后的冒泡排序。 (最类似于基本的排序?检查)

Which sort algorithm works best on mostly sorted data?.

这里有类似的问题。

【讨论】:

  • 上一个主题已关闭,它通常是关于“排序最多的数据”,而不是完全排序的数据(即使是类似的情况)。我在 Python 中检查了它,我有 0.000000873 秒用于插入,0.000002025 秒用于冒泡排序,0.000000854 秒用于修改冒泡排序。这里修改后的冒泡排序获胜,但在上面的主题中,大多数人都相信插入排序会更快(我提供的链接也支持这一点)。所以我仍然很困惑哪一个真的更快。
  • 我猜任何与排序支票最相似并且附加的装饰最少的东西都会是最快的。 IE。无论从数组的开始到结束,检查它们是否按排序顺序。既然你提到它,我认为这实际上是修改后的冒泡排序。因为它所做的只是检查所有相邻的元素是否需要交换,如果不需要,则继续。如果掉期为零,那就休息吧。我的错,我有点忽略了,因为我先用谷歌搜索了一下,发现有一个非常相似的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-06
  • 1970-01-01
  • 2017-11-19
  • 2011-10-14
  • 1970-01-01
  • 2020-12-20
  • 1970-01-01
相关资源
最近更新 更多