[英]Number of Comparison in Worst Case of Merging Two Sorted Array?
给定两个大小为n
和m
排序数组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.