假设有一个包含n个元素的数组A,以及包含具有多个条件的if语句的代码行,例如:
for i = 2 to n
if A[i] > m and A[i] - A[1] = EVEN
then set m to A[i]
第二行的运行时间是n-1,还是2 *(n-1),因为if语句有两个条件?
答案 0 :(得分:2)
一般来说,当你谈论运行时,你需要某种“成本模型”来讨论每项操作“花费多少”。看到一个成本模型进入你要进入的详细程度实际上是非常不寻常的 - 通常,你只是抽象出细节,并说执行所有这些测试的成本是O(1) (某些常数不依赖于输入的大小)而不是按照精确的水平计算。
如果要计算某个级别的精确度,您可能还需要考虑数组查找的成本,无论是否发生短路,分支预测或错误预测对运行时的影响等等......这部分地解释了为什么看到人们在这个细节层面上真正谈论事情是如此罕见。