代码时间复杂度分析:int x=90; y=90; while循环执行次数
代码片段时间复杂度分析:
int x=90; y=90;
while (y>0)
if(x>10)
{x-=10; y--;}
else x++;
每条语句的时间复杂度:
int x=90; y=90;// O(1)while (y>0)// O(y)if(x>10)// O(y) - 因为该语句在 while 循环内,执行次数与 y 的值相关{x-=10; y--;}// O(y) - 同样,执行次数与 y 的值相关else x++;// O(y) - 与 if 语句同理
总的时间复杂度:
总的时间复杂度为 O(y),因为 while 循环的执行次数取决于 y 的值,而不是固定的 101 次。
- 当 y=90 时,while 循环执行 90 次;
- 当 y=1 时,while 循环执行 1 次。
为什么不是 O(101)?
代码中虽然 x 的初始值为 90,但经过每次循环,x 的值可能会发生变化,并且循环的终止条件是 y>0,而不是 x 的值。因此,无法保证循环一定会执行 101 次。
总结:
这段代码的总时间复杂度为 O(y),因为 while 循环的执行次数取决于 y 的值,而不是固定的次数。
原文地址: https://www.cveoy.top/t/topic/n6VK 著作权归作者所有。请勿转载和采集!