与合并排序相比,修改后的合并排序的运行时间?

时间:2017-09-27 00:51:51

标签: algorithm list sorting computer-science mergesort

来自维基百科,https://en.wikipedia.org/wiki/Merge_algorithm#Application

在图中,假设我们考虑中间的数字行(如果有人可以在这里发布图片会有帮助)。如果我将其修改为:

,算法的运行时间是多少?
  • 合并38和27,然后按升序对数字进行排序。 (27,38)
  • 将上面的结果与43合并,然后按升序对数字进行排序。 (27,38,43)
  • 将上面的结果与3合并,然后按升序对数字进行排序。 (3,27,38,43)。
  • ...依此类推,直到我有一个完全排序的列表。

这是一种非常低效的排序方式(我可以直观地说 - 在最坏的情况下,添加的数字会与列表中的每个数字交换)虽然我不太确定它的比较(在证明我的理由方面)分析)合并排序的O(n log n)时间。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您要描述的算法是插入排序 - 您通过一次添加一个元素,按排序顺序构建不断增长的值列表。这意味着运行时匹配插入排序 - 如果数组已排序,则为线性,平均为二次等等。