Time 时间复杂度为O(lg n)的搜索函数

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)

我需要创建一个时间复杂度为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
def搜索(x,seq):
对于下文中的i:
如果xseq[-1]:
收益率(序列指数(序列[-1]))+1

此代码是否具有时间复杂性O(lgn)?

您当前的解决方案是
O(n)


由于您提到一个元组总是按排序的顺序排列的,所以您可以应用它来查找适当的索引,它在
O(lg(n))
中运行

一个元组是否总是按排序的顺序排列,就像你的例子中所假设的那样?是的,的确如此!对不起,忘了提了