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实现抓取城市的PM2.5浓度和排名
Mar 19 Python
Python中的with语句与上下文管理器学习总结
Jun 28 Python
Python 使用SMTP发送邮件的代码小结
Sep 21 Python
快速查询Python文档方法分享
Dec 27 Python
基于Python列表解析(列表推导式)
Jun 23 Python
python使用phoenixdb操作hbase的方法示例
Feb 28 Python
Python学习笔记之lambda表达式用法详解
Aug 08 Python
python3 深浅copy对比详解
Aug 12 Python
如何表示python中的相对路径
Jul 08 Python
scrapy redis配置文件setting参数详解
Nov 18 Python
ubuntu安装jupyter并设置远程访问的实现
Mar 31 Python
python中redis包操作数据库的教程
Apr 19 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实现字符串首字母大写和单词首字母大写的方法
2015/03/14 PHP
浅析PHP7新功能及语法变化总结
2016/06/17 PHP
jQuery 瀑布流 浮动布局(一)(延迟AJAX加载图片)
2012/05/23 Javascript
js在输入框屏蔽按键,只能键入数字的示例代码
2014/01/03 Javascript
Visual Studio中js调试的方法图解
2014/06/30 Javascript
JS实现判断滚动条滚到页面底部并执行事件的方法
2014/12/18 Javascript
jQuery实现判断滚动条到底部
2015/06/23 Javascript
javascript日期格式化方法汇总
2015/10/04 Javascript
AngularJS 让人爱不释手的八种功能
2016/03/23 Javascript
js 获取站点应用名的简单实例
2016/08/18 Javascript
浅析BootStrap Treeview的简单使用
2016/10/12 Javascript
Bootstrap Search Suggest使用例子
2016/12/21 Javascript
基于jQuery实现顶部导航栏功能
2016/12/27 Javascript
Javascript实现的StopWatch功能示例
2017/06/13 Javascript
基于JS代码实现简单易用的倒计时 x 天 x 时 x 分 x 秒效果
2017/07/13 Javascript
浅谈vue.js中v-for循环渲染
2017/07/26 Javascript
详解React-Native全球化多语言切换工具库react-native-i18n
2017/11/03 Javascript
微信小程序控制台提示warning:Now you can provide attr &quot;wx:key&quot; for a &quot;wx:for&quot; to improve performance解决方法
2019/02/21 Javascript
浅谈element中InfiniteScroll按需引入的一点注意事项
2020/06/05 Javascript
使用 UniApp 实现小程序的微信登录功能
2020/06/09 Javascript
使用Vue-cli 中为单独页面设置背景图片铺满全屏
2020/07/17 Javascript
使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
2014/01/23 Python
python循环监控远程端口的方法
2015/03/14 Python
python 将大文件切分为多个小文件的实例
2019/01/14 Python
python 读取文件并把矩阵转成numpy的两种方法
2019/02/12 Python
使用PyQtGraph绘制精美的股票行情K线图的示例代码
2019/03/14 Python
Python编程快速上手——PDF文件操作案例分析
2020/02/28 Python
Pyspark获取并处理RDD数据代码实例
2020/03/27 Python
python设置表格边框的具体方法
2020/07/17 Python
浅谈对python中if、elif、else的误解
2020/08/20 Python
linux面试相关问题
2012/08/11 面试题
高中运动会广播稿
2014/01/21 职场文书
高校师德师风自我剖析材料
2014/09/29 职场文书
微信搭讪开场白
2015/05/28 职场文书
Oracle笔记
2021/04/05 Oracle
简单聊一聊SQL注入及防止SQL注入
2022/03/23 MySQL