二分查找

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

如下:

# 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))
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 前言 二分查找本身是个简单的算法,但是正是因为其简单,更容易写错。甚至于在二分查找算法刚出现的时候,也是存在b...
    __七把刀__阅读 1,409评论 0 1
  • 数据结构与算法--查找之顺序查找和二分查找 符号表的目的是将一个键和一个值关联起来,可以将一对键值对插入到符号表中...
    sunhaiyu阅读 1,837评论 1 2
  • 今天去参加面试的时候被提问到一个问题--请你解释一下二分查找。一时间忽然想不起来。于是乎回来复习了一下。 在百度百...
    specter_hhg阅读 4,146评论 9 8
  • 介绍 当我们想在一个数组中查找一个元素的时候,最简单的方法莫过于顺序查找了,不过顺序查找有一个致命的缺点,就是它的...
    ghwaphon阅读 945评论 0 12
  • 自从亚当夏娃岀现,关于男女两性关系总显那么复杂,千百年來关于两性情感描述的书籍多如繁星,名家、受伤之人或对...
    大唐真成阅读 530评论 3 3