python二分查找算法的递归实现方法
作者:xuebuyuan 发布时间:2023-05-12 23:22:48
标签:python,二分查找,递归
本文实例讲述了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程序设计有所帮助。


猜你喜欢
- 基于上一篇文章,这篇文章是关于使用coverage来实现代码覆盖的操作实例,源代码在上一篇已经给出相应链接。本篇文章字用来实现代码覆盖的源代
- 本人是一名python初学者,刚刚看到一道有趣的python问题,“用python如何在编译器中打印出菱形图案?”因此决定尝试一下,代码不多
- 前言什么是OCR?光学字符识别(Optical Character Recognition, OCR),是指对文本资料的图像文件进行分析识别
- 1、 设置WriteHeader的顺序问题之前遇到个问题,在一段代码中这样设置WriteHeader,最后在header中取Name时怎么也
- “你如何为成千上万的用户和页面提供CSS?” 这是Nicole Sullivan在她的在丹佛的Web Directions North 大会
- 前言最近需要源码部署一个项目,因此探索一下保护源码的方式,由简单到复杂主要总结为以下三大类:代码混淆:主要是改变一些函数名、变量名代码打包:
- <?php //本功能主要是利用文件修改时间函数filemtime与现在时间作减法判断是否更新内容。 $cahetime=2;//设置
- 该章节我们学习虚拟环境的相关知识,虚拟环境对于刚刚使用Python的初学者来说使用的概率可能会比较低。但是我们依然要对它有一定的了解。认识虚
- 我们或多或少都使用过各式各样的富文本编辑器,其中有一个很方便功能,复制一张图片然后粘贴进文本框,这张图片就被上传了,那么这个方便的功能是如何
- 目录1、压缩并输出tar.gz文档2、tar解压缩查看官方文档,官方自带的演示:// 官方演示package mainimport ( &n
- 需求是这样的,我在.net程序里操作数据时将一些字段数据加密了,这些数据是很多系统共用的,其中一delphi程序也需要用到,并且需要将数据解
- // 格式化字符串 Fmt("{0}.[{id}].{name}",{id:1,name:'
- 俄罗斯方块,一个很有趣的一个小游戏,此次基于html+css+javaScript实现,包含在一个方块落地后自动生成方块、操控方块的移动以及
- 在实际使用python时,我们会将一些公共的东西写到一些基础模块中,供其他模块去调用,这时会去import自定义的一些基础模块,然后来导入。
- MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型
- 你已经在上面取出w打头记录的例子中看到了LIKE的用法。LIKE判定词是一个非常有用的符号。不过,在很多情况下用了它可能会带给你太多的数据,
- Edit:2016-5-11 修正了代码里面一些明显的错误,并发布在 ajaxjs 库之中,源码在这里。Edit:2016-5-24 加入
- 开发堡垒机之前,先来学习Python的paramiko模块,该模块基于SSH用于连接远程服务器并执行相关操作安装paramiko模块pip3
- 使用pyaudio录音和格式转化环境pip3 install pyaudiopip3 install wavepip3 install nu
- 一、打开、关闭文件 语法为open (filevar, filename),其中filevar为文件句柄,或者说是程序中用来代表某文件的代号