二分查找

二分查找的python实现

# -*— coding:utf8 -*-
# 二分查找

def divided_search(sorted_list, key):
    length = len(sorted_list)
    if not length:
        return False
    high = length-1
    low = 0
    while low <= high:
        mid = (high + low) / 2
        print "high: %d" % high
        print "low: %d" % low
        print "mid: %d" % mid
        print "===================================="
        if key < sorted_list[mid]:
            high = mid-1
        elif key > sorted_list[mid]:
            low = mid + 1
        elif key == sorted_list[mid]:
            print "find key: %d at %d" % (sorted_list[mid], mid)
            return mid

测试执行输出

l = [1, 3, 4, 5, 7, 8, 10, 13, 17, 33, 38, 40, 51, 53, 66]
divided_search(l, 5)

输出:

high: 14
low: 0
mid: 7
====================================
high: 6
low: 0
mid: 3
====================================
find key: 5 at 3

时间复杂度 O()=O(log2n)

总共有n个元素,每次查找的区间大小就是n,n/2,n/4,…,n/2^k(接下来操作元素的剩余个数),其中k就是循环的次数。 由于n/2k 取整后>=1,即令n/2k=1,可得k=log2n(是以2为底,n的对数)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. 二分查找 在对线性表的操作中,经常需要查找某一个元素在线性表中的位置。此问题的输入是待查元素x和线性表L,输...
    HeartGo阅读 2,350评论 0 1
  • 二分查找概念: 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求带查表为有序表,且插入...
    Fwwwddd阅读 3,517评论 0 0
  • 优缺点 二分查找又称折半查找。 优点:比较次数少,查找速度快,平均性能好。 缺点:要求待查表为有序表,且插入删除困...
    linheimx阅读 4,783评论 0 1
  • 白居易 阅读下面这首唐诗,完成下列小题。 编集拙诗,成一十五卷,因题卷末,戏赠元九、李二十① 白居易 一篇长恨有风...
    心晴爱语阅读 5,739评论 0 0
  • 创建本地仓库 使用git bash进入需要创建仓库的目录下: cd xxxx git init 创建本地仓库 此时...
    xiang205012阅读 2,515评论 0 0

友情链接更多精彩内容