合并两个排序数组的最坏情况下的比较次数?

Number of Comparison in Worst Case of Merging Two Sorted Array?

给定两个排序数组 A, B,大小为 nm。我正在寻找合并这两个数组的最差比较次数。

1) n+m-1

2) 最大值(n,m)

3)min (m,n)

4) 百万

我知道这不是一个好问题,因为没有提到合并算法,但我认为,正常的合并排序算法 - 合并步骤通常应用 n + m -1 比较,其中一个列表的大小为 n 并且另一个列表的大小为 m。使用此算法是组合两个排序列表的最简单方法。任何专家都可以帮助我,我选择(1)是否正确?

这可以很容易地从documentation中找到:

Complexity

At most std::distance(first1, last1) + std::distance(first2, last2) - 1 comparisons.

所以它是第一名。 (是的,它假设标准委员会正确地理解了复杂性,但这不是一个延伸。)

选项 4 显然是错误的,因为 n + m - 1 的增长速度比 n*m 慢,所以我们已经有了更好的估计。

对于这个反例,选项 3 是错误的:

[4], [1, 2, 6, 7]

至少需要两次比较。选项2反例:

[1,6], [2,5]

需要 3 次比较:

1 < 2?, 6 < 2?, 6 < 5?

假设m < n,至少m次比较,最多n+m-1次比较(最坏情况)。所以假设最小列表的所有元素都在前,则最小比较次数为min(n,m)。假设最简单的意思是最好的情况,那么答案 3 就是正确答案。对于最坏的情况,答案 1 是正确的。