二分法查找

二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。


二分法查找实现
(非递归实现)

def binary_search(alist, item):first = 0last = len(alist)-1while first<=last:midpoint = (first + last)/2if alist[midpoint] == item:return Trueelif item < alist[midpoint]:last = midpoint-1else:first = midpoint+1return False
testlist = [0, 1, 2, 8, 13, 17, 19, 32, 42,]
print(binary_search(testlist, 3))
print(binary_search(testlist, 13))

(递归实现)

def tow_search(li, item):if len(li) == 0:return Falseelse:mid = len(li) // 2if li[mid] == item:return Trueelse:if li[mid] > item:return tow_search(li[:mid], item)elif li[mid] < item:return tow_search(li[mid + 1:], item)testlist = [0, 1, 2, 8, 13, 17, 19, 32, 42,]
print(tow_search(testlist, 3))  # False
print(tow_search(testlist, 13))  # True

我还是比较喜欢递归的,比较好理解

时间复杂度

最优时间复杂度:O(1)
最坏时间复杂度:O(logn)

二分法查找 - python实现相关推荐

  1. python实现二分法查找_python3 二分法查找

    ''' 二分法查找 有序列表 掐头去尾取中间 查找列表中xx在不在列表中,在,则返回索引值 ''' # lst = [1, 4, 6, 8, 9, 21, 23, 26, 35, 48, 49, 54 ...

  2. python二分法查找程序_Python程序查找最大EVEN数

    python二分法查找程序 Input N integer numbers and we have to find the maximum even number. 输入N个整数,我们必须找到最大的偶 ...

  3. python二分法查找程序_查找Python程序的输出| 套装2(基础)

    python二分法查找程序 Program 1: 程序1: a = 10 b = 3 res = a/b print "a/b: ", res res = float(a/b) p ...

  4. python二分法查找程序_Python程序查找地板划分

    python二分法查找程序 When we divide a number by another number – division operator (/) return quotient it m ...

  5. python实现二分法查找_python二分法查找

    下面是一段用Python实现的二分法查找代码#encoding=utf-8 import sys def search2(a,m): low = 0 high = len(a) - 1 while l ...

  6. 微课|中学生可以这样学Python(例8.25):二分法查找

    适用教材: 董付国,应根球.<中学生可以这样学Python>.清华大学出版社,2017. 第8章  常用算法的Python实现 例8.25  二分法查找 京东购买链接:https://it ...

  7. 可自定义匹配规则查找控件_懂Excel轻松入门Python数据分析包pandas(二十八):二分法查找...

    此系列文章收录在公众号中:数据大宇宙 > 数据处理 > E-pd 转发本文并私信我"python",即可获得Python资料以及更多系列文章(持续更新的) 经常听别人说 ...

  8. python二分法查找时间点_Python 二分法查找

    # 二分法查找主要的作用就是查找元素 lst = [1,3,5,7,12,36,68,79] # 数据集 百万级数据 num = int(input("请输入你要查找的元素信息:" ...

  9. python二分法查找数字_Python——二分法查找

    #递归实现二分法查找 data=[1,3,6,7,9,12,14,16,17,18,20,21,22,23,30,32,33,35]defbinary_search(dataset,find_num) ...

最新文章

  1. 在IT的世界里,分享是一种快乐.
  2. matlab中读文件的行数_Matlab中读取txt文件的几种方法
  3. Linux下配置LVM
  4. php 获取delete蚕丝_php结合Redis实现100万用户投票项目,并实时查看到投票情况的案例...
  5. 省选+NOI 第五部分 高级数据结构
  6. 使用hive完成统计分析功能
  7. JavaScript浏览器对象模型
  8. 偶尔看到的c11新特性1
  9. Java对Map排序
  10. 学习MVC3(二)——创建自己的第一个网页:实现用户登陆(1)
  11. 宁录哨兵机器人_单纯靠速度快银就打得过哨兵机器人?想多了,怼上这一版就不行!...
  12. 别踩白块儿游戏代码html,别踩白块儿HTML版的第二天
  13. 2015年9月29笔试总结
  14. 50.纯 CSS 创作一个永动的牛顿摆
  15. 《金融学》笔记 第一章 货币的本质
  16. pix2pixHD: High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs
  17. Android项目CJM9之新闻浏览模块的实现
  18. 操作系统内核Hack:(二)底层编程基础
  19. 如何安装svelte_svelte js框架介绍编译器
  20. 王者荣耀-数模论文分享(虽然结果我自己都不信)

热门文章

  1. 伊恩斯普里格斯3D肖像的秘密
  2. 张家口市12320卫生热线呼叫中心预计今年初启动
  3. JavaScript indexOf() 方法
  4. linux:shell:tree
  5. Windows Server 2003 下安装Apache+Php+Mysql
  6. Robotium 数据驱动测试框架
  7. 一款不错的开源 Laravel 后台面板/CMS系统 —— LaraAdmin
  8. 行为设计模式 - 状态设计模式
  9. 程序员如何跨过自我推销的难关?
  10. 【Java】说明变量作用域的示例程序