关于时间复杂度计算和实时消耗的难题


春风助手
2025-03-14 07:41:23 (17天前)

在学习算法的基本知识的同时,我发现有关运行代码的时间复杂度计算和实时消耗的困惑。

演示代码指定了问题。

function calcDemo1(){
var init = 0;
for(var i=0;i<40;i++){
init += 0;
}
return init;
}

function calcDemo2(){
var init = 0;
init += (0+1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+26+27+28+29+30+31+32+33+34+35+36+37+38+39);
return init;
}
即使calcDemo1的时间复杂度是“ for循环”,它的时间复杂度是否也为O(1)?
如果它们的时间复杂度均为O(1),则在运行代码的最坏情况下它们是否花费相同的时间?
相对的问题在这里https://stackoverflow.com/questions/11032015/how-to-find-time-complexity-of-an-algorithm

2 条回复
  1. 1# 只怕再见是故人 | 2020-08-11 18-23

    它们都具有恒定的时间复杂度。O(1)时间复杂度。

    对于情况1,有一个for循环,但它运行40次。因此,它将具有恒定的时间复杂度。

    在第二种情况下,没有for循环存在,但是仍然需要增加时间。所以这是O(1)一次。

    这并不意味着如果存在for循环,它的复杂性就不可能恒定。

    作为对评论的答复,是的,即使我们增加了硬编码的值,时间复杂度也不会改变。它会静止的O(1)。

登录 后才能参与评论