zoukankan      html  css  js  c++  java
  • 数据搜索中的战斗机-二分查找法

    搜索的几种常见方法:顺序查找、二分法查找、二叉树查找、哈希查找

    二分查找优缺点;

    优点是比较次数少,查找速度快,平均性能好

    缺点是要求待查表为有序表,且插入删除困难

    二分查找的前提:1.有序序列 2.顺序表(时间复杂度为O(1))

    二分查找的时间复杂度: 最优时间复杂度:O(1) , 最坏时间复杂度:O(logn)

    1.递归方法实现二分查找

    """递归方法实现"""
    def binary_search(alist, item):
        n = len(alist)
        if 0 == n:
            return False
        mid = n // 2
        if alist[mid] == item:
            return True
        elif item < alist[mid]:
            return binary_search(alist[:mid], item)
        else:
            return binary_search(alist[mid + 1:], item)
    
    
    if __name__ == '__main__':
        li = [12, 23, 34, 67, 78, 89]
        print(binary_search(li, 34))
        print(binary_search(li, 45))

    2.非递归方法实现二分查找

    """非递归方法实现"""
    def binary_search(alist, item):
        n = len(alist)
        start = 0
        end = n - 1
        while start <= end:
            mid = (start + end) // 2
            if alist[mid] == item:
                return True
            elif item < alist[mid]:
                end = mid - 1
            else:
                start = mid + 1
    
        return False
    
    if __name__ == '__main__':
        li = [12, 23, 34, 67, 78, 89]
        print(binary_search(li, 34))
        print(binary_search(li, 45))

  • 相关阅读:
    受脑认知和神经科学启发的人工智能
    1分钟爱上管理学
    刻意练习
    课题设计相关
    销售必备心灵鸡汤(转)
    从优秀到卓越
    小记
    何谓成熟?
    三体运动的程序模拟
    行星运动轨迹的程序实现
  • 原文地址:https://www.cnblogs.com/mengxinfeng/p/12545542.html
Copyright © 2011-2022 走看看