Python查找-二分查找

二分查找

折半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。
它的基本思想是,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。如 果x<a[n/2],则我们只要在数组a的左半部继续搜索x(这里假设数组元素呈升序排列)。如果x>a[n/2],则我们只要在数组a的右 半部继续搜索x。

二分查找非递归方式

def binarySearch(sourceList,key):high = len(sourceList)low = 1while low <= high:mid = int((low + high)/2)if key < sourceList[mid]:high = mid - 1elif key > sourceList[mid]:low = mid + 1else:return midreturn 0
if __name__ == "__main__":sourceList = [0,2,5,7,10,12,13,14,17,18]index = binarySearch(sourceList,14)print(index)

程序输出结果

7

二分查找递归方式

def binarySearch_1(sourceList,key,low,high):if low <= high:mid = int((low + high) / 2)print(mid)if sourceList[mid] < key:low = mid + 1return binarySearch_1(sourceList,key,low,high)if sourceList[mid] > key:high = mid + 1return binarySearch_1(sourceList,key,low,high)elif sourceList[mid] == key:return midreturn 0
if __name__ == "__main__":sourceList = [0,2,5,7,10,12,13,14,17,18]index = binarySearch_1(sourceList,14,1,len(sourceList))print(index)

程序输出结果

7

Python查找-二分查找相关推荐

  1. python实现二分查找(折半查找)算法

    python实现二分查找算法 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法.但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列. 查找又称折半 ...

  2. python中二分查找什么意思_python中二分查找法的实现方法

    如果想要在有序数据中进行查找想要的数据,二分查找法就个好方法,它可以大大缩短了搜索时间,是一种常见的查找方法.二分查找很好写,却很难写对,下面,小编就简单向大家介绍一下二分查找,并演示器使用代码. 1 ...

  3. 七十六、Python | Leetcode二分查找和分治算法系列

    @Author:Runsen @Date:2020/7/4 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...

  4. python二分查找算法_如何使用python的二分查找算法

    如何使用python的二分查找算法 发布时间:2020-11-18 09:27:29

  5. python函数教程:Python递归函数 二分查找算法实现解析

    这篇文章主要介绍了Python递归函数 二分查找算法实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.初始递归 递归函数:在一个函数里在调 ...

  6. python实现二分查找(对新手友好,内容通俗易懂)

    python实现二分查找 二分查找又名折半查找. 优点:查询速度快,性能好. 缺点:要求查询的表为有序表 原理:将表中间位置(mid)的数字与待查数字(data)做比较, 如果相等:返回true,结束 ...

  7. python实现二分查找代码+详解

    python实现二分查找代码+详解 一.规定函数值 函数输入值 li=[1,2,3,4,5,6,7,8,9]#输入的集合 val=4#要查找的值 函数内部值 left=0#代表集合中第一个值的位置 r ...

  8. Python实现二分查找算法,图片结合代码讲解,简单易懂

    Python实现二分查找算法,图片结合代码讲解,简单易懂 二分查找是指在一个数组中循环找到特定的目标元素的一种算法,二分查找算法要求这个数组必须是有序的,如果不是有序则最后得出的结果是不准确的,因为其 ...

  9. 数据结构与算法(8-2)有序表查找(折半查找(二分查找)、插值查找)

    目录 一.折半查找(二分查找) 二.插值查找 总代码 一.折半查找(二分查找) 原理:一次次折半,不断向着查找值的位置靠近 . 适用场景:有序(必须) 流程:开始时,min标志首,max标志尾,med ...

最新文章

  1. 一种视觉惯性+激光传感器的SLAM系统
  2. python 内存回收机制_Python垃圾回收机制是什么
  3. 邀请参加活动的邀请函_圣诞节点灯仪式活动邀请函制作
  4. 【Python面试】 说说Python面向对象三大特性?
  5. 进军中国软件,踏上寻找自我价值之路的菜鸟
  6. 简述html的3种列表uloldl,语义化HTML:ul、ol和dl
  7. perl - Java调用perl
  8. Android逆向系列之ARM语法篇
  9. vs2015安装vax助手
  10. 关于PCBLayout的一些具体细节的认识(能力有限,请大家多多指点)
  11. Jmeter 使用详解
  12. 微信朋友圈装x代码_微信朋友圈写入代码 微信朋友圈代码大全
  13. 【总结思考】如何提高项目的稳定性和开发效率
  14. 使用ESP8266驱动TFT显示屏
  15. 人工智能基础:人工智能云服务(Alaas)介绍
  16. mxgraph.js实现Topo图
  17. 程序员锻炼宽广的胸怀
  18. (八)Python数据分析与挖掘实战(实战篇)——中医证型关联规则挖掘
  19. 如何制作一份疫情场所分布地图?(附数据和源码)
  20. 007 - 配置 Clion 调试显示 Qt 变量

热门文章

  1. ​炸了!程序员现在没有这点技能都还不能就业了?
  2. 阿里再次主办大数据世界杯, KDD Cup2020正式开赛
  3. 浪潮刘军:为什么说计算力是AI时代“免费的午餐”?
  4. 和达摩院深度绑定,阿里云下一个十年,成为“云上的阿里巴巴”
  5. AI聚变:寻找2018最佳人工智能应用案例
  6. 我终于决定要放弃 okhttp、httpClient,选择了这个牛逼的神仙工具!贼爽!
  7. 如何利用装饰者模式在不改变原有对象的基础上扩展功能
  8. IntelliJ IDEA 新版介绍
  9. 鱼佬:从数据竞赛到工作!
  10. 数据科学家成长指南(下)