You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

合并两个长度为n和m的已排序数组的最坏运行时间疑问

合并两个有序数组的最坏时间复杂度解析

先直接给结论:合并两个长度为n和m的已排序数组,时间复杂度固定是O(n + m)——不管是最坏还是最好情况,因为你必须处理完所有n+m个元素才能完成合并。

为什么O(n*m)不对

O(n*m)是暴力比对所有元素对的时间复杂度,比如在未排序数组里找交集的笨办法。但数组已经有序的情况下,我们用双指针法就能线性完成合并:

  • 两个指针分别指向两个数组的起始位置
  • 每次比较指针指向的元素,把更小的放进结果,移动对应指针
  • 其中一个数组遍历完后,直接把另一个数组剩下的元素全追加进去
    整个过程每个元素只碰一次,总操作数就是n+m,完全到不了n*m的量级。

为什么O(max(n,m))不对

你可能觉得如果一个数组的元素全比另一个小,就能只遍历长数组?但合并的核心是要把所有元素都整合进去,哪怕数组A全是1,数组B全是100,你还是要把A的n个元素和B的m个元素都处理一遍,总操作数是n+m,而不是max(n,m)。不存在能跳过部分元素的合并方式——毕竟最终的合并数组得包含所有元素。

内容的提问来源于stack exchange,提问作者srises723

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 08:07:09