分析嵌套for循环的运行时间

时间:2014-06-05 23:13:53

标签: performance algorithm time-complexity

我在确定这个嵌套for循环是否在O(n)或O(n ^ 2)中运行时遇到了一些问题。

假设我有一个表演P列表,每个表演有一个持续时间(小时数)。

P = [P1, P2, ...., Pn]
for p in P:
    for hour in p.hours:
        //do stuff here
    end
end

这会被认为是什么运行时间?我知道执行的总次数是每次演出中所有小时的总和或O(totalHours),但这是线性还是多项式?请记住,小时数因性能而异,可以任意大小。

2 个答案:

答案 0 :(得分:1)

它与输入中的总小时数呈线性关系。如果该数字不能表示为演出次数的函数,那么您就无法将演出时间与演出次数联系起来。

答案 1 :(得分:1)

我可能会说O(mn),其中n是表演的数量,m是每次演出的平均小时数(或者,你说,O(totalHours))。

它在总小时数中是线性的。

由于它不仅取决于表演的数量,我也不相信你可以说它是线性的(甚至是多项式)(尽管它的力量) n 1在上述复杂程度中是{{1}}(但意见可能会有所不同)。

相关问题