【问题标题】:Time complexity of nested loop with two different parameter具有两个不同参数的嵌套循环的时间复杂度
【发布时间】:2019-03-12 02:40:20
【问题描述】:

如何计算这个算法的时间复杂度,O() 和 Ω()。

这个嵌套循环不同于普通的嵌套循环分析,因为 m 和 n 是独立的,使得 |A| = n ≥ |B| = 米。

我的想法是每次迭代都会运行 O(1) 时间。

对于迭代次数(第3行和第4行),应该是

m + (m - 1) + ... + 1 + (n - m) = O(m^2 + n)

因此,这个算法的时间应该是O(m^2 + n),Ω也是。

但是,解决方案告诉我它应该是 O(mn) 和 Ω(mn)。我不知道如何得到这个答案。

【问题讨论】:

    标签: algorithm


    【解决方案1】:

    Can Berk Güder的一个相当简洁的解释

    O 表示一个上限,但这个界限可能很紧也可能不紧。

    Ω 表示下限,但这个界限可能很紧,也可能不紧。

    在您的情况下,我们不考虑将存在的具体值(可能的循环),但仅从数学角度来看,它是 O(mn)Ω(mn),因为有一个 n 外循环和 m内循环。

    wiki 中更直接的定义可能更能阐明您的难题。

    由于算法的运行时间在相同大小的不同输入之间可能会有所不同,因此通常会考虑最坏情况时间复杂度,即给定大小的输入所需的最长时间。 不太常见,通常明确指定,是平均情况复杂度,它是给定大小的输入所花费时间的平均值(这是有道理的,因为有只有给定大小的有限数量的可能输入)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-28
      • 2021-12-15
      • 1970-01-01
      相关资源
      最近更新 更多