改变其索引的单循环的复杂性

时间:2015-03-26 02:45:30

标签: time-complexity complexity-theory

有人可以解释如何评估以下代码的复杂性吗?考虑array_of_size_n由升序中的正随机数组成。

for(i = 0; i < n; i++){
    temp = array_of_size_n[i] + last

    if(temp > last){
        do_something_else(temp); //doesn't change the complexity
        last = temp;
        i = 0;
    }
}

1 个答案:

答案 0 :(得分:0)

根据我的测试,增长是线性的,具有巨大的常数因子。 假设最后一个是0开头。 它将始终传递第一个值,因为循环中的i ++。 因此,当涉及第二个值时,如果它是1,则last将被添加到INT_MAX。那么如果(temp&gt; last)永远是假的,那么就是线性的。 第二个值的大小将影响最后达到INT_MAX的速度。