O(n / 2)的运行时间复杂度

时间:2016-10-25 22:13:33

标签: algorithm time-complexity

我曾经理解这一点但不再理解。假设我有一个算法可以返回数组中间的数字。

for (int i = 0; i < nums.length; i++) {
  if (i == nums.length / 2) return nums[i];
}

最坏的情况总是O(n / 2)对吗?没有比这更糟糕的情况了。但是,为什么我们只能断定它是O(n)?

1 个答案:

答案 0 :(得分:3)

大O时间复杂度不是衡量算法将要采用的实际时间,而是指定时间复杂度所依赖的变量,以及这些变量与时间复杂度之间存在何种关系(即线性,多项式,指数等。)

因为常量不影响函数类型,所以时间复杂度不会改变Big O值。

注意在你的情况下,你编写的代码实际上可以编译成具有恒定时间的代码,如果编译器足够聪明,可以注意到循环的所有迭代都已经死了但是只有一个。

相关问题