二分查找

Posted 捡贝壳的人

tags:

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

二分查找要求数组必须有序,代码比较容易理解

如下:

# coding: utf-8

arr1 = [0, 1, 3, 5, 7, 8]
item = 3


# non-recurse
def binary_search(alist, aitem):
    n = len(alist)
    start = 0
    end = n - 1
    while start <= end:
        mid = (start + end) // 2
        if alist[mid] == aitem:
            return True
        elif aitem < alist[mid]:
            end = mid - 1
        else:
            start = mid + 1
    return False


print(binary_search(arr1, item))


# recurse
def binary_search_recurse(alist, aitem):
    n = len(alist)
    if n == 0:
        return False
    mid = n // 2
    if aitem == alist[mid]:
        return True
    elif aitem < alist[mid]:
        return binary_search_recurse(alist[:mid], aitem)
    else:
        return binary_search_recurse(alist[mid + 1:], aitem)


print(binary_search_recurse(arr1, item))

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

java 二分查找法

代码题(12)— 二分查找

二分查找代码

PHP实现二分查找算法(代码详解)

「算法笔记」一文摸秃二分查找

C语言二分查找