在通过生成器帮助构建的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单位成本。
请问对此有何解释
答案 0 :(得分:5)
对数时间复杂度的解释是错误的。
如果将输入的大小减少一小部分而不是固定的数量,则会得到对数复杂度。例如,二进制搜索在每次迭代中将大小除以2,因此它是O(log n)。如果输入大小为8
,则需要进行4
次迭代,将大小加倍为16
只会将迭代次数增加为5
。