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中readline判断文件读取结束的方法
Nov 08 Python
Python简单日志处理类分享
Feb 14 Python
Python入门教程之运算符与控制流
Aug 17 Python
django 创建过滤器的实例详解
Aug 14 Python
python的pip安装以及使用教程
Sep 18 Python
python pcm音频添加头转成Wav格式文件的方法
Jan 09 Python
Python不同目录间进行模块调用的实现方法
Jan 29 Python
利用Python半自动化生成Nessus报告的方法
Mar 19 Python
PyQt5 窗口切换与自定义对话框的实例
Jun 20 Python
Python读取Excel数据并生成图表过程解析
Jun 18 Python
python3.7.3版本和django2.2.3版本是否可以兼容
Sep 01 Python
TensorFlow低版本代码自动升级为1.0版本
Feb 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 购物车实例(申精)
2009/05/11 PHP
php getsiteurl()函数
2009/09/05 PHP
php强制下载类型的实现代码
2011/04/21 PHP
php 转换字符串编码 iconv与mb_convert_encoding的区别说明
2011/11/10 PHP
php防注入,表单提交值转义的实现详解
2013/06/10 PHP
php去除HTML标签实例
2013/11/06 PHP
php利用新浪接口查询ip获取地理位置示例
2014/01/20 PHP
带你了解PHP7 性能翻倍的关键
2015/11/19 PHP
Yii2中Restful API原理实例分析
2016/07/25 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
避免 showModalDialog 弹出新窗体的原因分析
2010/05/31 Javascript
jQuery.holdReady()使用方法
2014/05/20 Javascript
排序算法的javascript实现与讲解(99js手记)
2014/09/28 Javascript
jQuery弹出下拉列表插件(实现kindeditor的@功能)
2016/08/16 Javascript
初探JavaScript 面向对象(推荐)
2017/09/03 Javascript
JavaScript伪数组用法实例分析
2017/12/22 Javascript
vue+element实现批量删除功能的示例
2018/02/28 Javascript
angularJS1 url中携带参数的获取方法
2018/10/09 Javascript
基于JS实现web端录音与播放功能
2019/04/17 Javascript
浅谈redux, koa, express 中间件实现对比解析
2019/05/23 Javascript
[02:18]《我与DAC》之工作人员:为了热爱DOTA2的玩家们
2018/03/28 DOTA
[59:48]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第一场 1月26日
2021/03/11 DOTA
利用python实现微信头像加红色数字功能
2018/03/26 Python
PyQt5 实现字体大小自适应分辨率的方法
2019/06/18 Python
Python threading的使用方法解析
2019/08/28 Python
Linux下通过python获取本机ip方法示例
2019/09/06 Python
flask实现验证码并验证功能
2019/12/05 Python
Python实现变声器功能(萝莉音御姐音)
2019/12/05 Python
对tensorflow 中tile函数的使用详解
2020/02/07 Python
加拿大床上用品、家居装饰、厨房和浴室产品购物网站:Linen Chest
2018/06/05 全球购物
大学生毕业求职自荐书范文
2014/02/04 职场文书
校园文明标语
2014/06/13 职场文书
质量月口号
2014/06/20 职场文书
2015年教师节慰问信
2015/03/23 职场文书
学习计划是什么
2019/04/30 职场文书
利用python调用摄像头的实例分析
2021/06/07 Python