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常用内置模块之xml模块(详解)
May 23 Python
Python 将RGB图像转换为Pytho灰度图像的实例
Nov 14 Python
PyCharm安装第三方库如Requests的图文教程
May 18 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
Jul 11 Python
python粘包问题及socket套接字编程详解
Jun 29 Python
Python 函数list&amp;read&amp;seek详解
Aug 28 Python
Django继承自带user表并重写的例子
Nov 18 Python
使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
Mar 16 Python
如何在Django中使用聚合的实现示例
Mar 23 Python
python 错误处理 assert详解
Apr 20 Python
Python并发爬虫常用实现方法解析
Nov 19 Python
Python 实现定积分与二重定积分的操作
May 26 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
「OVERLORD」动画重要删减!雅儿贝德的背叛?至尊猎杀队结成
2020/04/09 日漫
PHP中str_replace函数使用小结
2008/10/11 PHP
php+xml实现在线英文词典之添加词条的方法
2015/01/23 PHP
PHP将数据导出Excel表中的实例(投机型)
2017/07/31 PHP
PHP执行普通shell命令流程解析
2020/08/24 PHP
javascript实现的动态文字变换
2007/07/28 Javascript
jquery实现网站超链接和图片提示效果
2013/03/21 Javascript
JQuery页面图片切换和新闻列表滚动效果的具体实现
2013/09/26 Javascript
BootStrap使用file-input插件上传图片的方法
2016/09/05 Javascript
微信小程序商城项目之商品属性分类(4)
2017/04/17 Javascript
Angular.Js中ng-include指令的使用与实现
2017/05/07 Javascript
js移动端图片压缩上传功能
2020/08/18 Javascript
Angularjs按需查询实例代码
2017/10/30 Javascript
javascript之分片上传,断点续传的实际项目实现详解
2019/09/05 Javascript
JS pushlet XMLAdapter适配器用法案例解析
2020/10/16 Javascript
[00:42]《辉夜杯》—职业组预选赛12月3日15点 正式打响
2015/12/03 DOTA
python人人网登录应用实例
2014/09/26 Python
Python实现文件复制删除
2016/04/19 Python
Python 备份程序代码实现
2017/03/06 Python
Ubuntu下Python2与Python3的共存问题
2018/10/31 Python
利用Python代码实现一键抠背景功能
2019/12/29 Python
pytorch dataloader 取batch_size时候出现bug的解决方式
2020/02/20 Python
Matplotlib animation模块实现动态图
2021/02/25 Python
普通PHP程序员笔试题
2016/01/01 面试题
毕业生幼师求职自荐信
2013/10/01 职场文书
法律专业实习鉴定
2013/12/22 职场文书
股权转让协议书范本
2014/04/12 职场文书
导师评语大全
2014/04/26 职场文书
大学毕业生推荐信
2014/07/09 职场文书
社区班子对照检查材料
2014/08/27 职场文书
刑事辩护授权委托书
2014/09/13 职场文书
就业意向协议书
2015/01/29 职场文书
2015年感恩父亲节演讲稿
2015/03/19 职场文书
2015年食品安全宣传周活动总结
2015/07/09 职场文书
关于ObjectUtils.isEmpty() 和 null 的区别
2022/02/28 Java/Android
R9700摩机记
2022/04/05 无线电