Merge 合并的最坏关键比较数是多少?

Merge 合并的最坏关键比较数是多少?,merge,Merge,在Mergesort算法中,merge函数将两个已排序的对象作为输入 大小大致相等的数组。但是,合并算法可以 也可用于合并两个大小非常不同的排序数组。 假设两个数组A和B的大小分别为3和1000,并且 两者都按升序排序。最坏的情况是什么 合并的键比较数?证明你的答案是正确的 我在想,假设1000大小数组的第一个999元素小于3大小数组头部的元素。然后假设所有3个元素都小于1000大小数组的最后一个元素。我应该能得到1002个比较。这是最大的比较吗?我可以采取什么方法来解决它。现在我只是猜测一些值

在Mergesort算法中,merge函数将两个已排序的对象作为输入 大小大致相等的数组。但是,合并算法可以 也可用于合并两个大小非常不同的排序数组。 假设两个数组A和B的大小分别为3和1000,并且 两者都按升序排序。最坏的情况是什么 合并的键比较数?证明你的答案是正确的

我在想,假设1000大小数组的第一个999元素小于3大小数组头部的元素。然后假设所有3个元素都小于1000大小数组的最后一个元素。我应该能得到1002个比较。这是最大的比较吗?我可以采取什么方法来解决它。现在我只是猜测一些值。

是O(n+m)。最糟糕的是,每个数组的每个元素都将与某个元素进行比较

您可以看看用类似问题描述的算法。最好的情况是您在“复制rest”部分花费大量时间,最坏的情况是您必须将两个阵列的计数器提前到完整长度。请随意提出更具体的问题

您可以通过考虑特定的数据集来计算特定的数字。例如,对于
A{100110021003}
B{1,2,…,999,1005}
。最坏的情况是,只对最后一个元素执行“复制-休息”部分(即严格数字为n+m-1)


此时我们已经完成了A,B的最后一个元素使用“复制rest”片段进行合并

排序算法可视化工具Site如果是n+m,答案是1003吗?我似乎无法想象它会达到1003。我已经用你的数字的特定数据集更新了我的答案
999 comparisons: A{1001} vs B{1,..,999} -> B elements merged
1 comparison: A{1001} vs B{1005} -> A merged
1 comparison: A{1002} vs B{1005} -> A merged
1 comparison: A{1003} vs B{1005} -> A merged