这种“增量排序”的时间复杂性

时间:2013-10-15 21:41:40

标签: algorithm sorting big-o time-complexity

"Incremental sort"

这使用与合并排序相同的合并功能,但输入的分割方式不同,因此列表以这种方式合并^

在最坏的情况下,此算法的比较次数是多少? 我知道合并排序是(n log n - n + 1),我认为这种排序较慢

2 个答案:

答案 0 :(得分:2)

作为提示:你有没有在其他地方看过这个算法?它的工作原理是从n个已排序元素的列表开始,然后将第n个元素添加到结尾并将其交换到适当的位置。

一旦你弄明白了算法是什么,你就应该能够轻松地获得最佳,最差和平均情况的运行时。

希望这有帮助!

答案 1 :(得分:2)

这种类型是O(n ^ 2)。对于添加的每个项目,您将比较现有列表中的每个项目。

所以在这里你将进行1 + 2 + 3 + 4 + 5 + 6 + 7 =(n ^ 2 + n)/ 2比较。

假设您正在使用标准合并。

您也可以就地执行此操作,在这种情况下,它只是将事物插入到排序列表中。那也是O(n ^ 2)。您将进行log(n)比较以找到要插入项目的位置,但是您必须向下移动项目以腾出空间。所以插入每个项目是n + log(n),排序为O(n ^ 2 + n log n)。