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中实现单例模式的三种方法
Apr 08 Python
python开发之字符串string操作方法实例详解
Nov 12 Python
Python之web模板应用
Dec 26 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
Jan 15 Python
python实现随机调用一个浏览器打开网页
Apr 21 Python
python粘包问题及socket套接字编程详解
Jun 29 Python
Django 使用easy_thumbnails压缩上传的图片方法
Jul 26 Python
python yield关键词案例测试
Oct 15 Python
Python3标准库之threading进程中管理并发操作方法
Mar 30 Python
在keras中实现查看其训练loss值
Jun 16 Python
解析目标检测之IoU
Jun 26 Python
python解析json数据
Apr 29 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
ThinkPHP写数组插入与获取最新插入数据ID实例
2014/11/03 PHP
php学习笔记之面向对象
2014/11/08 PHP
PHP生成RSS文件类实例
2014/12/05 PHP
ajax+php控制所有后台函数调用
2015/07/15 PHP
10个对初学者非常有用的PHP技巧
2016/04/06 PHP
动态控制Table的js代码
2007/03/07 Javascript
JavaScript 实现模态对话框 源代码大全
2009/05/02 Javascript
window.js 主要包含了页面的一些操作
2009/12/23 Javascript
使用jQuery动态加载js脚本文件的方法
2014/04/03 Javascript
JQuery分屏指示器图片轮换效果实例
2015/05/21 Javascript
js验证真实姓名与身份证号是否匹配
2015/10/13 Javascript
AngularJS入门(用ng-repeat指令实现循环输出
2016/05/05 Javascript
Javascript从数组中随机取出不同元素的两种方法
2016/09/22 Javascript
Javascript中关于Array.filter()的妙用详解
2016/12/04 Javascript
js Canvas绘制圆形时钟效果
2017/02/17 Javascript
JavaScript中值类型和引用类型的区别
2017/02/23 Javascript
微信小程序开发之选项卡(窗口底部TabBar)页面切换
2017/04/12 Javascript
js实现倒计时关键代码
2017/05/05 Javascript
详解win7 cmd执行vue不是内部命令的解决方法
2017/07/27 Javascript
图文介绍Vue父组件向子组件传值
2018/02/17 Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
2019/04/17 Javascript
vue 实现搜索的结果页面支持全选与取消全选功能
2019/05/10 Javascript
jQuery提示框插件SweetAlert用法分析
2019/08/05 jQuery
[55:16]Mski vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
python str与repr的区别
2013/03/23 Python
Python实现的多线程端口扫描工具分享
2015/01/21 Python
python中zip和unzip数据的方法
2015/05/27 Python
python实现AES加密解密
2019/03/28 Python
Python+PyQt5实现美剧爬虫可视工具的方法
2019/04/25 Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
2021/03/03 Python
HTML5中form如何关闭自动完成功能的方法
2018/07/02 HTML / CSS
租租车:国际租车、美国租车、欧洲租车、特价预订国外租车(中文服务)
2018/03/28 全球购物
电脑教师的教学自我评价
2013/11/26 职场文书
法律专业自荐信
2014/06/03 职场文书
爱牙日宣传活动总结
2015/02/05 职场文书
夏洛特的网观后感
2015/06/15 职场文书