二分法查找 - python实现
二分法查找
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
二分法查找实现
(非递归实现)
def binary_search(alist, item):first = 0last = len(alist)-1while first<=last:midpoint = (first + last)/2if alist[midpoint] == item:return Trueelif item < alist[midpoint]:last = midpoint-1else:first = midpoint+1return False
testlist = [0, 1, 2, 8, 13, 17, 19, 32, 42,]
print(binary_search(testlist, 3))
print(binary_search(testlist, 13))
(递归实现)
def tow_search(li, item):if len(li) == 0:return Falseelse:mid = len(li) // 2if li[mid] == item:return Trueelse:if li[mid] > item:return tow_search(li[:mid], item)elif li[mid] < item:return tow_search(li[mid + 1:], item)testlist = [0, 1, 2, 8, 13, 17, 19, 32, 42,]
print(tow_search(testlist, 3)) # False
print(tow_search(testlist, 13)) # True
我还是比较喜欢递归的,比较好理解
时间复杂度
最优时间复杂度:O(1)
最坏时间复杂度:O(logn)
二分法查找 - python实现相关推荐
- python实现二分法查找_python3 二分法查找
''' 二分法查找 有序列表 掐头去尾取中间 查找列表中xx在不在列表中,在,则返回索引值 ''' # lst = [1, 4, 6, 8, 9, 21, 23, 26, 35, 48, 49, 54 ...
- python二分法查找程序_Python程序查找最大EVEN数
python二分法查找程序 Input N integer numbers and we have to find the maximum even number. 输入N个整数,我们必须找到最大的偶 ...
- python二分法查找程序_查找Python程序的输出| 套装2(基础)
python二分法查找程序 Program 1: 程序1: a = 10 b = 3 res = a/b print "a/b: ", res res = float(a/b) p ...
- python二分法查找程序_Python程序查找地板划分
python二分法查找程序 When we divide a number by another number – division operator (/) return quotient it m ...
- python实现二分法查找_python二分法查找
下面是一段用Python实现的二分法查找代码#encoding=utf-8 import sys def search2(a,m): low = 0 high = len(a) - 1 while l ...
- 微课|中学生可以这样学Python(例8.25):二分法查找
适用教材: 董付国,应根球.<中学生可以这样学Python>.清华大学出版社,2017. 第8章 常用算法的Python实现 例8.25 二分法查找 京东购买链接:https://it ...
- 可自定义匹配规则查找控件_懂Excel轻松入门Python数据分析包pandas(二十八):二分法查找...
此系列文章收录在公众号中:数据大宇宙 > 数据处理 > E-pd 转发本文并私信我"python",即可获得Python资料以及更多系列文章(持续更新的) 经常听别人说 ...
- python二分法查找时间点_Python 二分法查找
# 二分法查找主要的作用就是查找元素 lst = [1,3,5,7,12,36,68,79] # 数据集 百万级数据 num = int(input("请输入你要查找的元素信息:" ...
- python二分法查找数字_Python——二分法查找
#递归实现二分法查找 data=[1,3,6,7,9,12,14,16,17,18,20,21,22,23,30,32,33,35]defbinary_search(dataset,find_num) ...
最新文章
- 在IT的世界里,分享是一种快乐.
- matlab中读文件的行数_Matlab中读取txt文件的几种方法
- Linux下配置LVM
- php 获取delete蚕丝_php结合Redis实现100万用户投票项目,并实时查看到投票情况的案例...
- 省选+NOI 第五部分 高级数据结构
- 使用hive完成统计分析功能
- JavaScript浏览器对象模型
- 偶尔看到的c11新特性1
- Java对Map排序
- 学习MVC3(二)——创建自己的第一个网页:实现用户登陆(1)
- 宁录哨兵机器人_单纯靠速度快银就打得过哨兵机器人?想多了,怼上这一版就不行!...
- 别踩白块儿游戏代码html,别踩白块儿HTML版的第二天
- 2015年9月29笔试总结
- 50.纯 CSS 创作一个永动的牛顿摆
- 《金融学》笔记 第一章 货币的本质
- pix2pixHD: High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs
- Android项目CJM9之新闻浏览模块的实现
- 操作系统内核Hack:(二)底层编程基础
- 如何安装svelte_svelte js框架介绍编译器
- 王者荣耀-数模论文分享(虽然结果我自己都不信)