繁体   English   中英

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

[英]Number of Comparison in Worst Case of Merging Two Sorted Array?

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

1)n + m-1

2)最大(n,m)

3)分钟(m,n)

4)百万

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

可以从文档中轻松找到:

复杂

最多std :: distance(first1,last1)+ std :: distance(first2,last2)-1个比较。

所以是第一。 (是的,它假设标准委员会的正确性是正确的,但这不是一个难题。)

选项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是正确的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM