具有时间复杂度O(lg n)的搜索功能

时间:2014-03-15 09:26:29

标签: 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)
            elif x == i:
                return seq.index(i)
            elif x>seq[-1]:
                return (seq.index(seq[-1]))+1

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

1 个答案:

答案 0 :(得分:0)

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

由于您提到元组将始终按排序顺序排列,因此您可以应用O(lg(n))运行{{1}}来查找相应的索引。