我在确定这个嵌套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),但这是线性还是多项式?请记住,小时数因性能而异,可以任意大小。
答案 0 :(得分:1)
它与输入中的总小时数呈线性关系。如果该数字不能表示为演出次数的函数,那么您就无法将演出时间与演出次数联系起来。
答案 1 :(得分:1)
我可能会说O(mn)
,其中n
是表演的数量,m
是每次演出的平均小时数(或者,你说,O(totalHours)
)。
它在总小时数中是线性的。
由于它不仅取决于表演的数量,我也不相信你可以说它是线性的(甚至是多项式)(尽管它的力量) n
1
在上述复杂程度中是{{1}}(但意见可能会有所不同)。