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

Algorithm 与合并排序相比,修改后的合并排序的运行时间?,algorithm,list,sorting,computer-science,mergesort,Algorithm,List,Sorting,Computer Science,Mergesort,来自维基百科 在图中,让我们考虑中间的一行数字(如果有人可以在这里张贴图片,将会有帮助)。如果我将算法修改为: 合并38和27,然后按升序对数字进行排序。(27、38) 将上面的结果与43合并,然后按升序对数字进行排序。(27、38、43) 将上面的结果与3合并,然后按升序对数字进行排序。(3,27,38,43) …等等,直到我有一个完全排序的列表 这是一种极为低效的排序方式(我可以凭直觉判断——在最坏的情况下,添加的数字会与列表中的每个数字交换),尽管我不太确定它与合并排序的O(n log

来自维基百科

在图中,让我们考虑中间的一行数字(如果有人可以在这里张贴图片,将会有帮助)。如果我将算法修改为:

  • 合并38和27,然后按升序对数字进行排序。(27、38)
  • 将上面的结果与43合并,然后按升序对数字进行排序。(27、38、43)
  • 将上面的结果与3合并,然后按升序对数字进行排序。(3,27,38,43)
  • …等等,直到我有一个完全排序的列表
这是一种极为低效的排序方式(我可以凭直觉判断——在最坏的情况下,添加的数字会与列表中的每个数字交换),尽管我不太确定它与合并排序的O(n log n)时间相比如何(就我的分析而言)


有什么想法吗?

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

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