https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
如有转载,请注明出处(如不注明,盗者必究)

  二分查找也称折半查找(Binary Search),这种搜索算法每一次比较都使搜索范围缩小一半,是一种效率较高的查找方法。

概念

  是一种在有序数组中查找某一特定元素的查询算法。搜索过程从数组的中间元素开始,如果中间元素与要查找的元素相等,则搜索过程结束;如果查找元素大于或小于中间元素,则在数组大于或小于中间元素的那一半中进行查找,而且跟开始一样从中间元素开始比较。重复以上过程,直到找到满足条件的元素,使查找成功,或直到数组为空为止,此时查找不成功。

要求

  必须采用顺序存储结构,且按关键字大小进行有序排列。

代码举例

#coding=utf-8# 二分查找  (递归)
# 返回 x 在 lists 中的索引,如果不存在返回None
def binarySearch(lists, left, right, x):# 如果右边的值大于左边的值if right >= left:# 取左右两个数的中间值mid = (left + (right - left) // 2)# 若目标元素正好是中间位置,就返回mid,搜索过程结束if lists[mid] == x:return mid# 元素小于中间位置的元素,比较左边的元素,且移动right下标elif lists[mid] > x:return binarySearch(lists, left, mid - 1, x)# 元素大于中间位置的元素,比较右边的元素,移动left下标else:return binarySearch(lists, mid + 1, right, x)else:# 不存在的目标元素的情况就返回Nonereturn# 测试举例数组
arr = [1, 2, 3, 4, 5]
x = 6# 函数调用
result = binarySearch(arr, 0, len(arr) - 1, x)if result != None:print("您输入的元素在数组中的索引为 %d" % result)
else:print("您输入的元素不在数组中")

运行结果:

当x=3时;
运行结果

https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
如有转载,请注明出处(如不注明,盗者必究)

Python二分查找/折半查找算法详解--(面试常考)相关推荐

  1. python插入排序算法详解-面试常考

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 让这个可爱的宝藏女孩在努力的道路上与你一起同行! 如有转载,请 ...

  2. 经典排序算法(4)——折半插入排序算法详解

    折半插入排序(Binary Insertion Sort)是一种插入排序算法,通过不断地将数据元素插入到合适的位置进行排序,在寻找插入点时采用了折半查找. 一.算法基本思想 (1)基本思想 折半插入排 ...

  3. 折半插入排序算法详解之C语言版

    一.算法原理 折半插入排序是插入排序方法中一种,相比较与直接插入排序算法,减少了排序过程中比较次数,也是一种常用的排序算法. 折半插入排序算法基本原理是将折半查找方法与直接插入排序方法相结合,也就是在 ...

  4. python数据科学常国珍_《PYTHON数据科学:全栈技术详解》常国珍//赵仁乾//张秋剑著【摘要 书评 在线阅读】-苏宁易购图书...

    商品参数 作者: 常国珍//赵仁乾//张秋剑著 出版社:机械工业出版社 出版时间:2018-07-01 00:00:00 版次:1 印次:1 印刷时间:2018-07-01 字数:250 页数:422 ...

  5. 敏感词或关键词过滤,DFA算法详解及python代码实现

    一.前言 近期项目有了一个过滤敏感词的功能需求,在网上找了一些方法及解说,发现DFA算法比较好用,容易实现,但很多文章解释得不太清楚,这里将其详细描述,并用python代码实现. 二.DFA算法详解 ...

  6. 聚类 python_python中实现k-means聚类算法详解

    算法优缺点: 优点:容易实现 缺点:可能收敛到局部最小值,在大规模数据集上收敛较慢 使用数据类型:数值型数据 算法思想 k-means算法实际上就是通过计算不同样本间的距离来判断他们的相近关系的,相近 ...

  7. 蚂蚁算法python_Python编程实现蚁群算法详解

    简介 蚁群算法(ant colony optimization, ACO),又称蚂蚁算法,是一种用来在图中寻找优化路径的机率型算法.它由Marco Dorigo于1992年在他的博士论文中提出,其灵感 ...

  8. python二分法查找算法_顺序查找算法和折半(二分法)查找算法,C语言查找算法详解...

    查找是指在大量的信息中寻找一个特定的信息.在计算机中,查找是非常重要的一个应用,比如"百度".查找算法的好坏直接影响查找的速度. 常用的查找算法主要有顺序查找和折半(二分法)查找: ...

  9. python bisect_Python实现二分查找与bisect模块详解

    前言 其实Python 的列表(list)内部实现是一个数组,也就是一个线性表.在列表中查找元素可以使用 list.index()方法,其时间复杂度为O(n) .对于大数据量,则可以用二分查找进行优化 ...

  10. java二分查找法_java算法之二分查找法的实例详解

    java算法之二分查找法的实例详解 原理 假定查找范围为一个有序数组(如升序排列),要从中查找某一元素,如果该元素在此数组中,则返回其索引,否则返回-1.通过数组长度可取出中间位置元素的索引,将其值与 ...

最新文章

  1. 2022-2028年中国IT外包市场投资分析及前景预测报告
  2. php本页面调试报错配置
  3. C语言中的位运算符主要有哪些?逻辑右移与算术右移的区别?
  4. 收藏 | 700页NLP算法在百度、阿里、腾讯等一线大厂的最佳实践!PDF限时领!
  5. 我的选车经历--学习比经验更重要
  6. 统计字符串中单词个数的算法优化
  7. Android查看真机布局,android-外部存储
  8. 合并 多个dataframe_什么是Pandas的DataFrame?
  9. linux 脚本调用企业微信_shell或python调用企业微信发送消息(实现报警功能)
  10. LeetCode 26. Remove Duplicates from Sorted Array
  11. 对文件夹内所有文件批量命名
  12. php 过滤所有html,php过滤所有html标签_PHP教程
  13. 局域网有几台电脑频繁断网_关于电脑经常掉线的那些事,解决方法
  14. Python可视化——随机漫步
  15. 基于MFC的OpenDDS发布订阅例子(PubSubDemo)
  16. 招聘Bev感知实习生
  17. Excel中计算曲线的面积
  18. c语言数组越界也太难了吧,跨函数越界啥意思?
  19. 22/02/17学习笔记
  20. Already included file name xxx differs from file name xxx only in case.

热门文章

  1. linux guide编译器,GUIDE编译器-GUIDE编程工具-GUIDE编译器下载 v1.0.2官方版-完美下载...
  2. 字符串去重_文件数据去重示例
  3. python2和3语法区别_python2和3语法区别
  4. opc服务器消息通知代码,OPCClient浏览OPCServer的简单实例程序源代码.doc
  5. stm32 HSE HSI
  6. C语言程序设计基础练习题
  7. (STL,vector)木块问题
  8. android 多级分组,android 二级菜单(类似QQ分组)
  9. c语言成绩管理系统开题报告,学生信息管理系统,开题报告(共篇).doc
  10. mysql key_mysql 索引 key 的用法