知行编程网知行编程网  2022-10-04 09:30 知行编程网 隐藏边栏  1 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于在python中二分查找法实现的相关知识,包括python数组排序,以及实现二分查找这些编程知识,希望对大家有参考作用。

python中二分查找方法的实现

如果要在有序数据中找到想要的数据,二分查找法是一种很好的方法,可以大大缩短查找时间,是一种常用的查找方法。二进制搜索很容易写,但很难写正确。下面小编就给大家简单介绍一下二分查找,并演示代码的使用。



1、



二分查找



:在没有重复的有序列表中,找到列表的元素。


2、


特点



(1)必须针对于有序列表


(2)该列表必须无重复


(3)按下标索引查找


3、

使用方法



非递归实现:

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 = [17, 20, 26, 31, 44, 54, 55, 77, 93]
    # print(binary_search(li, 55))
    # print(binary_search(li, 100))



递归实现:


def binary_search_2(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_2(alist[:mid], item)
    else:
        return binary_search_2(alist[mid + 1:], item)


if __name__ == '__main__':
    li = [17, 20, 26, 31, 44, 54, 55, 77, 93]
    # print(binary_search(li, 55))
    # print(binary_search(li, 100))

虽然二分查找的效率很高,但是表应该是key排序的。排序本身是一项耗时的操作。即使使用有效的排序方法,它也需要 O(nlgn) 时间。而且,二分查找只适用于顺序存储结构,不能在链表上实现二分查找。小伙伴们注意啦~

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享