有人可以解释如何评估以下代码的复杂性吗?考虑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;
}
}
答案 0 :(得分:0)
根据我的测试,增长是线性的,具有巨大的常数因子。 假设最后一个是0开头。 它将始终传递第一个值,因为循环中的i ++。 因此,当涉及第二个值时,如果它是1,则last将被添加到INT_MAX。那么如果(temp&gt; last)永远是假的,那么就是线性的。 第二个值的大小将影响最后达到INT_MAX的速度。