C语言中算法时间复杂度

设n为正整数,请用大O表示法描述下列程序段的时间复杂度 x=91;y=100; while(y>0) { if(x>100) { x-=10; y--; } else x++; } 此题是一个双重循环。对于每个y值(y>0),if语句执行11次,其中10次执行x++。因此,if语句的频度为11×100=1100次。 请问频度1100次是如何算出的?前面的执行11次,其中10次执行x++;这句我理解。但后面的频率11×100=1100次是如何得出的。为什么要这样算。请讲解下,谢谢

第1个回答  2014-07-07
看看循环体的个数,一般来说循环体越多 时间复杂度越高 例如for(i:0->n) for(j: 0 -> m){ m += n; } 这段代码的操作执行次数是n*m 如果n和m之间有函数关系,如 n = 2m。基本操作次数就是2m^2,时间复杂度中只取最高次幂项且忽略系数,所以时间复杂度为:O(m^2) 当然也可以西城O(n^2)。本回答被提问者采纳
第2个回答  2019-12-27
外层循环每循环一次,
if
会被执行一次,对吧?
外层循环需要y--100次才会停对吧?
外层循环每执行11次,才会执行1次y--对吧?
那不就是
11*100了么?