假设 P、Q、R、S、T 是长度分别为 20、24、30、35、50 的排序序列。通过一次将两个序列合并在一起,将它们合并为一个序列。执行此操作的最佳算法在最坏情况下所需的比较次数是____。
(一) 358
(二) 438
(三) 568
(四) 664答案:(一)
解释:要合并两个大小为 m 和 n 的列表,我们需要在最坏情况下进行 m+n-1 次比较。由于我们需要一次合并 2 个,因此最佳策略是首先采用最小大小的列表。选择最小的两个项目的原因是为了在合并中携带最少的项目重复。
我们首先合并 20 和 24,并使用 43 个最坏情况比较得到 44 个列表。然后我们使用 64 个最坏情况比较将 30 和 35 合并到 65 个列表中。然后我们使用 93 次比较将 50 和 44 合并为 94 的列表。最后,我们使用 158 次比较合并 94 和 65。所以比较的总数是 43 + 64 + 93 + 158,也就是 358。
资料来源:https://www.geeksforgeeks.org/data-structures-algorithms-set-34-2/
这个问题的测验