搜索——二分搜索实现及细节

来源:互联网 发布:mac 安卓sdk环境变量 编辑:程序博客网 时间:2024/05/01 18:18

二分搜索,又叫折半搜索算法,其原理较为简单,不再赘述,其时间复杂度为 O(logn)。本文重在细节的一些说明,

  • 递归和循环两个版本的实现
  • 循环退出的条件

    l > h
  • middle 值的选取(不溢出)

    m = l + (h-l)//2
# 递归版本def bisearch(s, e, l, h):    if  l > h:        return False    m = l + (h-l)//2    if s[m] == e:        return True    if s[m] < e:        return bisearch(s, e, m+1, h)    return bisearch(s, e, l, m-1)
# while 循环版def bisearch(s, e, l, h):    while l <= h:        m = l + (h-l)//2        if s[m] == e:            return True        elif s[m] < e:            l = m+1        else:            h = m-1    return False

References

[1] 折半搜索算法

0 0
原创粉丝点击