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 相关文章推荐
Python3之文件读写操作的实例讲解
Jan 23 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
Jun 13 Python
python 定义给定初值或长度的list方法
Jun 23 Python
Python并行分布式框架Celery详解
Oct 15 Python
使用python将时间转换为指定的格式方法
Nov 12 Python
Python3 max()函数基础用法
Feb 19 Python
详解Pandas之容易让人混淆的行选择和列选择
Jul 10 Python
Django用户认证系统 Web请求中的认证解析
Aug 02 Python
将Pytorch模型从CPU转换成GPU的实现方法
Aug 19 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
Jan 18 Python
python语言中有算法吗
Jun 16 Python
理解深度学习之深度学习简介
Apr 14 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
织梦模板标记简介
2007/03/11 PHP
PHP 中执行排序与 MySQL 中排序
2009/04/21 PHP
ThinkPHP中ajax使用实例教程
2014/08/22 PHP
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
2016/10/14 PHP
JavaScript 版本自动生成文章摘要
2008/07/23 Javascript
40款非常棒的jQuery 插件和制作教程(系列一)
2011/10/26 Javascript
Ext修改GridPanel数据和字体颜色、css属性等
2014/06/13 Javascript
[原创]JQuery 在表单提交之前修改 提交的值
2016/04/14 Javascript
jQuery动态修改字体大小的方法【测试可用】
2016/09/09 Javascript
jQuery插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
2017/03/23 jQuery
JavaScript实现计数器基础方法
2017/10/10 Javascript
vue addRoutes实现动态权限路由菜单的示例
2018/05/15 Javascript
vue将毫秒数转化为正常日期格式的实例
2018/09/16 Javascript
用jQuery将JavaScript对象转换为querystring查询字符串的方法
2018/11/12 jQuery
浅谈Node框架接入ELK实践总结
2019/02/22 Javascript
TypeScript开发Node.js程序的方法
2019/04/30 Javascript
Electron整合React使用搭建开发环境的步骤详解
2020/06/07 Javascript
jQuery开发仿QQ版音乐播放器
2020/07/10 jQuery
[07:03]显微镜下的DOTA2第九期——430圣堂刺客杀戮秀
2014/06/20 DOTA
Python中__init__和__new__的区别详解
2014/07/09 Python
Python类的专用方法实例分析
2015/01/09 Python
python中self原理实例分析
2015/04/30 Python
python django使用haystack:全文检索的框架(实例讲解)
2017/09/27 Python
Python字符串格式化%s%d%f详解
2018/02/02 Python
python生成tensorflow输入输出的图像格式的方法
2018/02/12 Python
如何使用python爬虫爬取要登陆的网站
2019/07/12 Python
NumPy统计函数的实现方法
2020/01/21 Python
python爬虫中抓取指数的实例讲解
2020/12/01 Python
一款超酷的js+css3实现的3D标签云特效兼容ie7/8/9
2013/11/18 HTML / CSS
英国厨房与餐具用品为主的设计品牌:Joseph Joseph
2018/04/26 全球购物
Vans奥地利官方网站:美国原创极限运动潮牌
2018/09/30 全球购物
伦敦香水公司:The London Perfume Company
2019/11/13 全球购物
房屋所有权证明
2014/10/20 职场文书
幼儿园毕业致辞
2015/07/29 职场文书
2016班级元旦联欢会开幕词
2016/03/04 职场文书
vue ant design 封装弹窗表单的使用
2022/06/01 Vue.js