Python实现二分法算法实例


Posted in Python onFebruary 02, 2015

1.算法:(设查找的数组期间为array[low, high])

(1)确定该期间的中间位置K
(2)将查找的值T与array[k]比较。若相等,查找成功返回此位置;否则确定新的查找区域,继续二分查找。区域确定如下:

a.array[k]>T 由数组的有序性可知array[k,k+1,……,high]>T;故新的区间为array[low,……,K-1]
b.array[k]<T 类似上面查找区间为array[k+1,……,high]。每一次查找与中间值比较,可以确定是否查找成功,不成功当前查找区间缩小一半。递归找,即可。

#!/usr/bin/python

# -*- coding: utf-8 -*-
def BinarySearch(array,t):

low = 0

height = len(array)-1

while low <= height:

mid = (low+height)/2

if array[mid] < t:

low = mid + 1
elif array[mid] > t:

height = mid - 1
else:

return array[mid]
return -1
if __name__ == "__main__":

print BinarySearch([1,2,3,34,56,57,78,87],57)

结果:57

3.时间复杂度:O(log2n);

注意:二分查找的前提必须待查找的序列有序。

Python 相关文章推荐
python利用hook技术破解https的实例代码
Mar 25 Python
Python中关于字符串对象的一些基础知识
Apr 08 Python
快速排序的算法思想及Python版快速排序的实现示例
Jul 02 Python
python实现二叉树的遍历
Dec 11 Python
python使用matplotlib画饼状图
Sep 25 Python
python+opencv实现摄像头调用的方法
Jun 22 Python
centos 安装Python3 及对应的pip教程详解
Jun 28 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
Aug 02 Python
Python logging设置和logger解析
Aug 28 Python
Tensorflow不支持AVX2指令集的解决方法
Feb 03 Python
python 实现 hive中类似 lateral view explode的功能示例
May 18 Python
利用Python实现斐波那契数列的方法实例
Jul 26 Python
Python标准异常和异常处理详解
Feb 02 #Python
Python中使用md5sum检查目录中相同文件代码分享
Feb 02 #Python
Python列表append和+的区别浅析
Feb 02 #Python
Python中的tuple元组详细介绍
Feb 02 #Python
Linux下编译安装MySQL-Python教程
Feb 02 #Python
Python写的服务监控程序实例
Jan 31 #Python
用python 制作图片转pdf工具
Jan 30 #Python
You might like
基于PHP5魔术常量与魔术方法的详解
2013/06/13 PHP
php实现的zip文件内容比较类
2014/09/24 PHP
php隐藏IP地址后两位显示为星号的方法
2014/11/21 PHP
php中使用url传递数组的方法
2015/02/11 PHP
php二维码生成
2015/10/19 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
iframe实用操作锦集
2014/04/22 Javascript
js+css实现超简洁的二级下拉菜单效果代码
2015/09/07 Javascript
全国省市二级联动下拉菜单 js版
2016/05/10 Javascript
javascript动画系列之模拟滚动条
2016/12/13 Javascript
12 款 JS 代码测试必备工具(翻译)
2016/12/13 Javascript
详解Vue学习笔记进阶篇之列表过渡及其他
2017/07/17 Javascript
详解Puppeteer 入门教程
2018/05/09 Javascript
jQuery中DOM常见操作实例小结
2019/08/01 jQuery
vue图片上传组件使用详解
2019/12/23 Javascript
[10:24]郎朗助力完美“圣”典,天籁交织奏响序曲
2016/12/18 DOTA
python根据时间生成mongodb的ObjectId的方法
2015/03/13 Python
Python递归函数定义与用法示例
2017/06/02 Python
Python实现感知器模型、两层神经网络
2017/12/19 Python
python 实现返回一个列表中出现次数最多的元素方法
2019/06/11 Python
pycharm配置当鼠标悬停时快速提示方法参数
2019/07/31 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
2020/01/03 Python
python实现输入三角形边长自动作图求面积案例
2020/04/12 Python
Django models文件模型变更错误解决
2020/05/11 Python
Python错误的处理方法
2020/06/23 Python
荷兰DOD药房中文官网:DeOnlineDrogist
2020/12/27 全球购物
现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset
2012/11/09 面试题
结婚周年感言
2014/02/24 职场文书
医院护士见习期自我鉴定
2014/04/10 职场文书
专项法律服务方案
2014/06/11 职场文书
工作散漫检讨书
2014/09/16 职场文书
2014年终个人工作总结
2014/11/07 职场文书
2014年团总支工作总结
2014/11/21 职场文书
2014年纳税评估工作总结
2014/12/23 职场文书
三八妇女节慰问信
2015/02/14 职场文书
Spring Boot两种全局配置和两种注解的操作方法
2021/06/29 Java/Android