我需要创建一个时间复杂度为O(lgn)的搜索函数,该函数将返回某个值x在元组中的位置。
例如,search(8, (2, 7, 12))
将返回2,
search(-5, (2, 3, 4, 10))
将返回0和
search(6, (4, 6, 12))
将返回1。
元组已经排序了
我写了以下代码:
def search(x,seq):
for i in seq:
if x<i:
return seq.index(i)
elif x == i:
return seq.index(i)
elif x>seq[-1]:
return (seq.index(seq[-1]))+1
此代码是否具有时间复杂度O(lgn)?
答案 0 :(得分:0)
您当前的解决方案是O(n)
。
由于您提到元组将始终按排序顺序排列,因此您可以应用O(lg(n))
运行{{1}}来查找相应的索引。