美文网首页
查找算法

查找算法

作者: 她即我命 | 来源:发表于2018-11-26 21:23 被阅读9次
    """
    查找
    判断一个算法好坏的标准:渐近时间复杂度和渐近空间复杂度
    时间和空间通常是不可调和的矛盾
    所以在设计算法时要考虑用空间换时间(*)还是时间换空间
    描述算法的渐近时间复杂度一般使用O标记
    例如二重循环里外都是N的循环那么就记为O(N**2)
    """
    
    
    def seq_search(items, key):
        """顺序查找 - 线性时间复杂度 - O(N)"""
        for index, item in enumerate(items):
            if item == key:
                return index
        return -1
    
    
    def bin_search(items, key):
        """折半查找(二分查找) - 对数时间复杂度 - O(log_2N)"""
        start, end = 0, len(items) - 1
        while start <= end:
            mid = (start + end) // 2
            if key < items[mid]:
                end = mid - 1
            elif key > items[mid]:
                start = mid + 1
            else:
                return mid
        return -1
    
    
    def main():
        """主函数"""
        items = [12, 25, 33, 57, 69, 98]
        print(bin_search(items, 35))
        print(bin_search(items, 12))
        print(bin_search(items, 69))
        print(bin_search(items, 98))
    
    
    if __name__ == '__main__':
        main()
    
    

    相关文章

      网友评论

          本文标题:查找算法

          本文链接:https://www.haomeiwen.com/subject/kbmiqqtx.html