繁体   English   中英

具有时间复杂度O(lg n)的搜索函数

[英]Search function with time complexity O(lg n)

我需要创建一个具有时间复杂度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)?

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

由于您提到了一个元组将始终处于排序顺序,因此您可以应用在O(lg(n))运行的二进制搜索来找到适当的索引。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM