【发布时间】:2020-07-21 03:11:31
【问题描述】:
帮助我了解 Modified MergeSort 算法的运行时间。 在经典的 MergeSort 中,当输入数组被分成两部分并递归排序时,执行时间为:nlogn
MergeSort 算法的执行时间是多少,如果 将输入数组分成三部分(不是一半),每三分之一递归排序,最后使用三参数 Merge 合并子程序合并结果。
- n
- nlogn
- n (log n) ^ 2
- n ^ 2logn
【问题讨论】:
-
在你的排序中,需要多少次比较才能从 3 个项目中选出最小的?
-
@DavidZimmerman - 比较的增加被移动的减少所抵消。
-
我正确理解,当输入数据被分成三部分时,比较的次数增加了,但是递归的次数(深度)减少了。那些。比较的次数由递归的数量(深度)来平衡。因此,无论我们将输入数据分解多少部分,算法的复杂性都保持不变。
-
仍然是 O(n log n)。只有对数的底会发生变化。所以你得到的是
n * log_base_3(n),而不是n * log_base_2(n)。您执行的迭代次数更少,但每次迭代的工作量更多。 -
请注意,您的语句“执行时间为:nlogn”不正确。该算法的复杂度为 O(n log n),执行时间预计与 n log n 成正比。
标签: algorithm sorting mergesort