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中的CURL PycURL使用例子
Jun 01 Python
python3序列化与反序列化用法实例
May 26 Python
python 网络编程详解及简单实例
Apr 25 Python
python 连接sqlite及简单操作
Jun 30 Python
Python创建二维数组实例(关于list的一个小坑)
Nov 07 Python
详解Python图像处理库Pillow常用使用方法
Sep 02 Python
python实现拉普拉斯特征图降维示例
Nov 25 Python
解决python中的幂函数、指数函数问题
Nov 25 Python
Python基于Tkinter编写crc校验工具
May 06 Python
MxNet预训练模型到Pytorch模型的转换方式
May 25 Python
python 装饰器的实际作用有哪些
Sep 07 Python
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
Jan 24 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
打造计数器DIY三步曲(中)
2006/10/09 PHP
杏林同学录(三)
2006/10/09 PHP
php缓冲 output_buffering和ob_start使用介绍
2014/01/30 PHP
PHP 常用的header头部定义汇总
2015/06/19 PHP
javascript div 弹出可拖动窗口
2009/02/26 Javascript
jQuery 顺便学习下CSS选择器 奇偶匹配nth-child(even)
2010/05/24 Javascript
javascript中setTimeout的问题解决方法
2014/05/08 Javascript
浅谈jquery.fn.extend与jquery.extend区别
2015/07/13 Javascript
ExtJs动态生成treepanel的Json格式
2015/07/19 Javascript
jquery判断复选框是否被选中的方法
2015/10/16 Javascript
jQuery滚动加载图片实现原理
2015/12/14 Javascript
jq给页面添加覆盖层遮罩的实例
2017/02/16 Javascript
微信小程序中form 表单提交和取值实例详解
2017/04/20 Javascript
Vue使用localStorage存储数据的方法
2019/05/27 Javascript
layui使用button按钮 点击出现弹层 弹层中加载表单的实例
2019/09/04 Javascript
使用Layer组件弹出多个对话框(非嵌套)与关闭及刷新的例子
2019/09/25 Javascript
浅谈Vuex的this.$store.commit和在Vue项目中引用公共方法
2020/07/24 Javascript
[01:31:22]Ti4 循环赛第四日附加赛LGD vs Mouz
2014/07/13 DOTA
[55:45]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第一局
2016/02/28 DOTA
将Emacs打造成强大的Python代码编辑工具
2015/11/20 Python
python如何把嵌套列表转变成普通列表
2018/03/20 Python
使用tensorflow实现线性回归
2018/09/08 Python
Python中反射和描述器总结
2018/09/23 Python
在Python中分别打印列表中的每一个元素方法
2018/11/07 Python
Python 调用PIL库失败的解决方法
2019/01/08 Python
python读取大文件越来越慢的原因与解决
2019/08/08 Python
Python paramiko模块使用解析(实现ssh)
2019/08/30 Python
python中_del_还原数据的方法
2020/12/09 Python
欧洲领先的火车票和大巴票预订平台:Trainline
2018/12/26 全球购物
美国现代家具购物网站:LexMod
2019/01/09 全球购物
汉语专业应届生求职信
2013/10/01 职场文书
支行行长岗位职责
2015/02/15 职场文书
2015年电信员工工作总结
2015/05/26 职场文书
初中物理教学反思
2016/02/19 职场文书
redis限流的实际应用
2021/04/24 Redis
方法汇总:Python 安装第三方库常用
2022/04/26 Python