算法操作次数计算疑问:赋值判定与循环操作次数统计
算法操作次数计算答疑
示例代码
total1 = 0 total2 = 0 n = int( input (' Enter the value of n : ')) for x in range(n+1): total1 += x for y in range(1 , n): total2 += total1*y print('total1' , total1) print('total2' , total2)
用户疑问
- 赋值操作是否应被算作一次操作?
- 如何计算循环中的操作次数,例如上述代码中的
for x in range(n+1): total1 += x循环;另外猜测该循环的操作次数为n+2(循环执行n+1次,加上total1 +=x的1次操作,即n+1+1=n+2),是否正确?
解答
1. 赋值操作的计数
在算法复杂度分析的常规语境下,赋值操作通常被算作一次基本操作。需要注意:
- 像
total1 = 0这种单纯赋值,直接计1次操作。 - 像
total1 += x这类复合赋值,细粒度分析会拆成“加法运算+赋值”两次操作;入门级简化分析里也可能统一视为一次操作——核心是分析全程保持相同的粒度标准,避免前后统计逻辑矛盾。
2. 循环操作次数的计算及猜测验证
针对你提到的for x in range(n+1): total1 += x循环:
- 循环的迭代次数是
n+1次(range(n+1)生成0到n的整数,共n+1个元素,对应n+1次循环体执行)。 - 你的猜测“n+2”是错误的,错误点在于混淆了循环次数和操作次数:循环执行n+1次,每次都会执行
total1 +=x,所以仅循环体内的total1 +=x操作就有n+1次,不是加1次。
如果要完整统计循环相关的所有操作(包括循环控制逻辑):
- 循环的条件判断会执行
n+2次:前n+1次判断通过,进入循环体;第n+2次判断不成立,退出循环。 - 加上循环体内的
n+1次total1 +=x操作,总操作数为(n+2)+(n+1)=2n+3次(这里默认把条件判断、复合赋值都各算一次操作)。
如果只统计核心业务操作(忽略循环控制的判断逻辑),那这个循环的操作次数就是n+1次。
内容的提问来源于stack exchange,提问作者desh
相关产品推荐
相关产品推荐

