python二分查找算法的递归实现方法


Posted in Python onMay 12, 2016

本文实例讲述了python二分查找算法的递归实现方法。分享给大家供大家参考,具体如下:

这里先提供一段二分查找的代码:

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

近来喜欢递归的简单明了,所以修改成递归的方法:

def binSearch(lst, item):
  mid = len(lst) //2
  found = False
  if lst[mid] ==
item:
 found = True
 return found
  if mid == 0:
#mid等于0就是找到最后一个元素了。
 found = False
 return found
  else:
 if item > lst[mid]: #找后半部分
   #print(lst[mid:])
   return
binSearch(lst[mid:], item)
 else:
   return
binSearch(lst[:mid], item) #找前半部分

测试通过。

更多关于Python相关内容可查看本站专题:《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python 读取excel文件生成sql文件实例详解
May 12 Python
更换Django默认的模板引擎为jinja2的实现方法
May 28 Python
python3 中文乱码与默认编码格式设定方法
Oct 31 Python
Python读取YUV文件,并显示的方法
Dec 04 Python
python实现图书借阅系统
Feb 20 Python
python如何删除文件中重复的字段
Jul 16 Python
基于python SMTP实现自动发送邮件教程解析
Jun 02 Python
python二维图制作的实例代码
Dec 03 Python
python palywright库基本使用
Jan 21 Python
python3使用diagrams绘制架构图的步骤
Apr 08 Python
pytorch 实现变分自动编码器的操作
May 24 Python
Python采集爬取京东商品信息和评论并存入MySQL
Apr 12 Python
Python数据类型详解(四)字典:dict
May 12 #Python
Python匹配中文的正则表达式
May 11 #Python
Python3使用requests发闪存的方法
May 11 #Python
Python3控制路由器——使用requests重启极路由.py
May 11 #Python
Python3使用requests登录人人影视网站的方法
May 11 #Python
在Django中进行用户注册和邮箱验证的方法
May 09 #Python
Python数据类型详解(三)元祖:tuple
May 08 #Python
You might like
PHP系统流量分析的程序
2006/10/09 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
2013/06/25 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
2014/03/18 PHP
php使用标签替换的方式生成静态页面
2015/05/21 PHP
PHP析构函数destruct与垃圾回收机制的讲解
2019/03/22 PHP
解决Laravel5.2 Auth认证退出失效的问题
2019/10/14 PHP
ExtJs扩展之GroupPropertyGrid代码
2010/03/05 Javascript
ASP.NET jQuery 实例4(复制TextBox的文本到本地剪贴板上)
2012/01/13 Javascript
Textarea根据内容自适应高度
2013/10/28 Javascript
js返回上一页并刷新的多种实现方法
2014/02/26 Javascript
Javascript进制转换实例分析
2015/05/14 Javascript
浅谈JS继承_寄生式继承 &amp; 寄生组合式继承
2016/08/16 Javascript
AngularJS过滤器filter用法实例分析
2016/11/04 Javascript
codeMirror插件使用讲解
2017/01/16 Javascript
Ionic3 UI组件之Gallery Modal详解
2017/06/07 Javascript
vuejs点击class变化的实例
2018/09/05 Javascript
vue.js表单验证插件(vee-validate)的使用教程详解
2019/05/23 Javascript
卸载vue2.0并升级vue_cli3.0的实例讲解
2020/02/16 Javascript
nodejs制作小爬虫功能示例
2020/02/24 NodeJs
javascript递归函数定义和用法示例分析
2020/07/22 Javascript
jQuery编写QQ简易聊天框
2020/08/27 jQuery
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
[01:04:08]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第一场 12.16
2020/12/18 DOTA
python opencv设置摄像头分辨率以及各个参数的方法
2018/04/02 Python
Python错误处理操作示例
2018/07/18 Python
Python实现的序列化和反序列化二叉树算法示例
2019/03/02 Python
pyinstaller参数介绍以及总结详解
2019/07/12 Python
不到20行实现Python代码即可制作精美证件照
2020/04/24 Python
python与c语言的语法有哪些不一样的
2020/09/13 Python
python中spy++的使用超详细教程
2021/01/29 Python
CSS3 渐变(Gradients)之CSS3 径向渐变
2016/07/08 HTML / CSS
2014优秀大学生简历自我评价
2014/09/15 职场文书
事业单位人员的自我评价范文
2014/09/21 职场文书
2015年董事长秘书工作总结
2015/07/23 职场文书
商务宴会祝酒词
2015/08/11 职场文书
vue3不同环境下实现配置代理
2022/05/25 Vue.js