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中字典映射类型的学习教程
Aug 20 Python
使用numba对Python运算加速的方法
Oct 15 Python
Django objects的查询结果转化为json的三种方式的方法
Nov 07 Python
对python中UDP,socket的使用详解
Aug 22 Python
python+selenium select下拉选择框定位处理方法
Aug 24 Python
给Python学习者的文件读写指南(含基础与进阶)
Jan 29 Python
tensorflow保持每次训练结果一致的简单实现
Feb 17 Python
浅谈Python中的模块
Jun 10 Python
浅谈如何使用python抓取网页中的动态数据实现
Aug 17 Python
python操作redis数据库的三种方法
Sep 10 Python
python 使用csv模块读写csv格式文件的示例
Dec 02 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面向对象全攻略 (三)特殊的引用“$this”的使用
2009/09/30 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
2010/10/25 PHP
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
2011/10/17 PHP
php中使用接口实现工厂设计模式的代码
2012/06/17 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
JQuery设置获取下拉菜单某个选项的值(比较全)
2014/08/05 Javascript
js实现顶部可折叠的菜单工具栏效果实例
2015/05/09 Javascript
JavaScript中几种排序算法的简单实现
2015/07/29 Javascript
JavaScript设计模式经典之工厂模式
2016/02/24 Javascript
浅谈移动端之js touch事件 手势滑动事件
2016/11/07 Javascript
AngularJS 限定$scope的范围实例详解
2017/06/23 Javascript
vue-cli项目如何使用vue-resource获取本地的json数据(模拟服务端返回数据)
2017/08/04 Javascript
js删除数组中的元素delete和splice的区别详解
2018/02/03 Javascript
AngularJs分页插件使用详解
2018/06/30 Javascript
Vue表单控件绑定图文详解
2019/02/11 Javascript
React中this丢失的四种解决方法
2019/03/12 Javascript
详解vue中$nextTick和$forceUpdate的用法
2019/12/11 Javascript
node创建Vue项目步骤详解
2020/03/06 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
2020/05/28 Javascript
js获取url页面id,也就是最后的数字文件名
2020/09/25 Javascript
Python实现简单的代理服务器
2015/07/25 Python
python 上下文管理器使用方法小结
2017/10/10 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
python3+selenium自动化测试框架详解
2019/03/17 Python
使用Python实现将list中的每一项的首字母大写
2019/06/11 Python
Python中使用socks5设置全局代理的方法示例
2020/04/15 Python
Python使用shutil模块实现文件拷贝
2020/07/31 Python
迪奥官网:Dior.com
2018/12/04 全球购物
C语言中break与continue的区别
2012/07/12 面试题
init进程的作用
2012/04/12 面试题
舞蹈教育学专业推荐信
2013/11/27 职场文书
人事主管岗位职责范本
2013/12/04 职场文书
建筑设计专业求职自我评价
2014/03/02 职场文书
小区推广策划方案
2014/06/06 职场文书
2014年个人师德工作总结
2014/12/04 职场文书