Time 时间复杂度为O(lg n)的搜索函数
我需要创建一个时间复杂度为O(lgn)的搜索函数,该函数将返回某个值x在元组中的位置 例如,Time 时间复杂度为O(lg n)的搜索函数,time,time-complexity,Time,Time Complexity,我需要创建一个时间复杂度为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)
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
def搜索(x,seq):
对于下文中的i:
如果xseq[-1]:
收益率(序列指数(序列[-1]))+1
此代码是否具有时间复杂性O(lgn)?您当前的解决方案是
O(n)
由于您提到一个元组总是按排序的顺序排列的,所以您可以应用它来查找适当的索引,它在
O(lg(n))
中运行 一个元组是否总是按排序的顺序排列,就像你的例子中所假设的那样?是的,的确如此!对不起,忘了提了