数据结构时间复杂度问题

题目是:i=1;k=0;
do{k+10*i;
i++;
}while(i<=n-i);
求解和分析

如果循环条件是i <= n - i,则退出条件为2i > n;
对于整数就是2i 为n +1 或者n+2时退出,
因为循环体中执行一次i加1,执行完第m次循环时,i的值为m +1,
如果此时退出循环,列出算式就是:2(m+1)>n
得到m > n / 2 - 1,由于是整数,因此m为(n/2)-1 之后上取整就可以了
去掉所有的常量后,时间复杂度当然还是O(n)
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-09-06
循环退出条件为2i >= n;
看循环体中,每次循环i增加一,第一个循环完后i为2,第二次循环完后i为3
于是第n/2次循环后2i的值为n,正好退出循环
因此执行次数n/2,时间复杂度为O(n)
第2个回答  2020-03-06
第3个回答  2011-09-06
不知道循环体的第一句什么意思,如果忽略它的话,就是楼上两位的答案了。。。
第4个回答  2011-09-20
O(N)
相似回答