算法 | 二分查找

Posted yuanCruise

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法 | 二分查找相关的知识,希望对你有一定的参考价值。

阅读文本大概需要 5 分钟




1.算法介绍

    二分查找是一个非常基础的入门级的算法,但它确实能够然你非常直观的领略到算法在解决问题的时候带来的效率。

    二分查找带来的最直观的作用就是,在猜100个数字的游戏中,每次都猜中间的那个,然后通过对方告诉你是大了还是小了,通过这个信息你就可以排除掉一半的数字。因此如下图所示,二分查找法猜数字的时候最多七次就可以把目标数字猜出来。

Note:二分查找要求给定的数据范围必须是有序的,不然“大”,“小”这两个特征没办法直接排除一半的数字了。

2.算法时间复杂度分析

    如上图所示,对于100个元素二分查找最多找 7次:

    所以二分查找的算法复杂度为:


3.算法代码实现

Python版本


def binary_search(array, item):
bottom = 0
       top = len(array)-1

       while bottom <= top:
mid = (bottom + top)/2
           guess = array[mid]
if guess == item:
return mid
if guess>item:
top = mid - 1
           else:
bottom = mid + 1
       return -1

array = [1,2,3,4,5,6,7,8,9,10]
print(binary_search(array, 3))# output :  2
print(binary_search(array, 11))# output : -1



以上是关于算法 | 二分查找的主要内容,如果未能解决你的问题,请参考以下文章

python算法:二分查找

java 二分查找法

二分查找算法讲解及其C++代码实现

leetcode查找算法(顺序查找,二分法,斐波那契查找,插值查找,分块查找)

二分查找算法

python算法之二分查找