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生成随机数的方法
Jan 14 Python
python人人网登录应用实例
Sep 26 Python
Python中使用wxPython开发的一个简易笔记本程序实例
Feb 08 Python
python使用正则表达式提取网页URL的方法
May 26 Python
基于python时间处理方法(详解)
Aug 14 Python
简述Python2与Python3的不同点
Jan 21 Python
pycharm 将python文件打包为exe格式的方法
Jan 16 Python
Django框架登录加上验证码校验实现验证功能示例
May 23 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
Jul 13 Python
Python3爬虫关于识别点触点选验证码的实例讲解
Jul 30 Python
Python基于execjs运行js过程解析
Nov 27 Python
python BeautifulSoup库的安装与使用
Dec 17 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
Youku 视频绝对地址获取的方法详解
2013/06/26 PHP
PHP字符串word末字符实现大小写互换的方法
2014/11/10 PHP
PHP获取Exif缩略图的方法
2015/07/13 PHP
style、 currentStyle、 runtimeStyle区别分析
2010/08/01 Javascript
js的Boolean对象初始值示例
2014/03/04 Javascript
javascript中的取反再取反~~没有意义
2014/04/06 Javascript
JavaScript获取文本框内选中文本的方法
2015/02/20 Javascript
详解nodejs 文本操作模块-fs模块(五)
2016/12/23 NodeJs
js循环map 获取所有的key和value的实现代码(json)
2018/05/09 Javascript
简单的三步vuex入门
2018/05/20 Javascript
JavaScript实现数字前补“0”的五种方法示例
2019/01/03 Javascript
qrcode生成二维码微信长按无法识别问题的解决
2019/04/04 Javascript
快速了解Vue父子组件传值以及父调子方法、子调父方法
2020/07/15 Javascript
如何在JS文件中获取Vue组件
2020/09/16 Javascript
python3访问sina首页中文的处理方法
2014/02/24 Python
Python中使用asyncio 封装文件读写
2016/09/11 Python
python实现FTP服务器服务的方法
2017/04/11 Python
解决pycharm 误删掉项目文件的处理方法
2018/10/22 Python
python实现名片管理系统
2018/11/29 Python
布隆过滤器的概述及Python实现方法
2019/12/08 Python
python 实现提取log文件中的关键句子,并进行统计分析
2019/12/24 Python
Jupyter Notebook 文件默认目录的查看以及更改步骤
2020/04/14 Python
五分钟带你搞懂python 迭代器与生成器
2020/08/30 Python
用python实现一个简单计算器(完整DEMO)
2020/10/14 Python
用OpenCV进行年龄和性别检测的实现示例
2021/01/29 Python
可以随进度显示不同颜色的css3进度条分享
2014/04/11 HTML / CSS
如何用Java实现列出某个目录下的所有子目录
2015/07/20 面试题
高一英语教学反思
2014/01/22 职场文书
课外科技活动总结
2014/08/27 职场文书
党的群众路线教育实践活动对照检查材料思想汇报
2014/09/19 职场文书
2015年派出所工作总结
2015/04/24 职场文书
党员个人承诺书
2015/04/27 职场文书
社区安置帮教工作总结2015
2015/05/20 职场文书
导游词之南迦巴瓦峰
2019/11/19 职场文书
Python中相见恨晚的技巧
2021/04/13 Python
输入框跟随文字内容适配宽实现示例
2022/08/14 Javascript