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中使用Boolean操作符做真值测试实例
Jan 30 Python
Python中的面向对象编程详解(上)
Apr 13 Python
Python分析学校四六级过关情况
Nov 22 Python
python Opencv将图片转为字符画
Feb 19 Python
Flask模板引擎之Jinja2语法介绍
Jun 26 Python
关于python导入模块import与常见的模块详解
Aug 28 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
Nov 07 Python
python如何使用Redis构建分布式锁
Jan 16 Python
PyCharm无法识别PyQt5的2种解决方法,ModuleNotFoundError: No module named 'pyqt5'
Feb 17 Python
Python字符串函数strip()原理及用法详解
Jul 23 Python
python 自动刷新网页的两种方法
Apr 20 Python
Django migrate报错的解决方案
May 20 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 修改zen-cart下单和付款流程以防止漏单
2010/03/08 PHP
php trim 去除空字符的定义与语法介绍
2010/05/31 PHP
PHP取整函数:ceil,floor,round,intval的区别详细解析
2013/08/31 PHP
PHP迭代器的内部执行过程详解
2013/11/12 PHP
php遍历类中包含的所有元素的方法
2015/05/12 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
PHP编程实现阳历转换为阴历的方法实例
2017/08/08 PHP
PHP PDOStatement::columnCount讲解
2019/01/30 PHP
PHP生成随机字符串实例代码(字母+数字)
2019/09/11 PHP
使一个函数作为另外一个函数的参数来运行的javascript代码
2007/08/13 Javascript
jQuery获取地址栏参数插件(模仿C#)
2010/10/26 Javascript
基于jquery跨浏览器显示的file上传控件
2011/10/24 Javascript
JavaScript中的ubound函数使用实例
2014/11/04 Javascript
非jQuery实现照片散落桌子上,单击放大的LightBox效果
2014/11/28 Javascript
JavaScript让Textarea支持tab按键的方法
2015/06/26 Javascript
JS实现仿新浪微博发布内容为空时提示功能代码
2015/08/19 Javascript
jQuery循环遍历子节点并获取值的方法
2016/04/14 Javascript
AngularJS API之copy深拷贝详解及实例
2016/09/14 Javascript
基于JavaScript实现滑动门效果
2017/03/16 Javascript
一文看懂如何简单实现节流函数和防抖函数
2019/09/05 Javascript
Vue实现开关按钮拖拽效果
2020/09/22 Javascript
原生js实现九宫格拖拽换位
2021/01/26 Javascript
在Python下使用Txt2Html实现网页过滤代理的教程
2015/04/11 Python
Python中将两个或多个list合成一个list的方法小结
2019/05/12 Python
Python中asyncio模块的深入讲解
2019/06/10 Python
django获取from表单multiple-select的value和id的方法
2019/07/19 Python
使用python实现时间序列白噪声检验方式
2020/06/03 Python
Python 高效编程技巧分享
2020/09/10 Python
Python爬虫之Selenium警告框(弹窗)处理
2020/12/04 Python
房地产营销策划方案
2014/02/08 职场文书
主管竞聘书范文
2014/03/31 职场文书
团组织推优材料
2014/12/29 职场文书
公司辞职信模板
2015/05/13 职场文书
入党介绍人意见范文
2015/06/01 职场文书
2016年寒假学习心得体会
2015/10/09 职场文书
基于angular实现树形二级表格
2021/10/16 Javascript