Python生成器时间复杂度日志(n)

时间:2019-10-01 08:01:10

标签: python time-complexity generator space-complexity

在通过生成器帮助构建的python3范围内

对数时间-O(log n) 当算法在每个步骤中减小输入数据的大小时,据说具有对数时间复杂度。例如,如果我们要在生成器的帮助下打印前10位数字,则首先将得到一个元素,因此剩余的9个元素必须处理,然后是第二个元素,因此剩余的8个元素必须处理

for index in range(0, len(data)):
    print(data[index])

当我检查网址python generators time complexity confusion时说的是O(n)。

由于每次它只生成一个输出,因为我们需要做__next__ 每次是1单位成本。

请问对此有何解释

1 个答案:

答案 0 :(得分:5)

对数时间复杂度的解释是错误的。

如果将输入的大小减少一小部分而不是固定的数量,则会得到对数复杂度。例如,二进制搜索在每次迭代中将大小除以2,因此它是O(log n)。如果输入大小为8,则需要进行4次迭代,将大小加倍为16只会将迭代次数增加为5