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将图片文件转换成base64编码的方法
Mar 14 Python
Python引用类型和值类型的区别与使用解析
Oct 17 Python
Python3 queue队列模块详细介绍
Jan 05 Python
利用Python如何实现数据驱动的接口自动化测试
May 11 Python
Python中一些不为人知的基础技巧总结
May 19 Python
Python对象中__del__方法起作用的条件详解
Nov 01 Python
用python 实现在不确定行数情况下多行输入方法
Jan 28 Python
python读取图片的方式,以及将图片以三维数组的形式输出方法
Jul 03 Python
python3.8与pyinstaller冲突问题的快速解决方法
Jan 16 Python
python手机号前7位归属地爬虫代码实例
Mar 31 Python
python中time.ctime()实例用法
Feb 03 Python
Django 如何实现文件上传下载
Apr 08 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实现简单洗牌算法
2013/06/18 PHP
codeigniter数据库操作函数汇总
2014/06/12 PHP
PHP生成唯一订单号
2015/07/05 PHP
laravel 5.3 单用户登录简单实现方法
2019/10/14 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
extjs 为某个事件设置拦截器
2010/01/15 Javascript
类似GMAIL的Ajax信息反馈显示
2010/02/16 Javascript
关于extjs4如何获取grid修改后的数据的问题
2013/08/07 Javascript
第九篇Bootstrap导航菜单创建步骤详解
2016/06/21 Javascript
Nodejs进阶:如何将图片转成datauri嵌入到网页中去实例
2016/11/21 NodeJs
HTML5canvas 绘制一个圆环形的进度表示实例
2016/12/16 Javascript
js实现交通灯效果
2017/01/13 Javascript
AngularJS实现页面跳转后自动弹出对话框实例代码
2017/08/02 Javascript
Thinkphp5微信小程序获取用户信息接口的实例详解
2017/09/26 Javascript
nodejs中密码加密处理操作详解
2018/03/20 NodeJs
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
2018/08/20 Javascript
微信小程序发送短信验证码完整实例
2019/01/07 Javascript
vue 获取视频时长的实例代码
2019/08/20 Javascript
Vue 通过公共字段,拼接两个对象数组的实例
2019/11/07 Javascript
vue实现简单图片上传
2020/06/30 Javascript
再也不怕 JavaScript 报错了,怎么看怎么处理都在这儿
2020/12/09 Javascript
[40:19]2018完美盛典CS.GO表演赛
2018/12/17 DOTA
python网络编程实例简析
2014/09/26 Python
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
2015/05/02 Python
python编程开发之类型转换convert实例分析
2015/11/13 Python
浅谈python抛出异常、自定义异常, 传递异常
2016/06/20 Python
Django框架的使用教程路由请求响应的方法
2018/07/03 Python
新手如何发布Python项目开源包过程详解
2019/07/11 Python
Python脚本去除文件的只读性操作
2020/03/05 Python
PyCharm MySQL可视化Database配置过程图解
2020/06/09 Python
Python的collections模块真的很好用
2021/03/01 Python
岗位职责的定义
2013/11/10 职场文书
制药工程专业职业生涯规划范文
2014/03/10 职场文书
党支部考察意见范文
2015/06/02 职场文书
英雄儿女观后感
2015/06/09 职场文书
Vue3.0中Ref与Reactive的区别示例详析
2021/07/07 Vue.js