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常用正则表达式符号浅析
Aug 13 Python
python遍历类中所有成员的方法
Mar 18 Python
Python实现简单多线程任务队列
Feb 27 Python
Python缩进和冒号详解
Jun 01 Python
python中使用iterrows()对dataframe进行遍历的实例
Jun 09 Python
使用python制作一个为hex文件增加版本号的脚本实例
Jun 12 Python
python logging模块的使用总结
Jul 09 Python
Python3如何判断三角形的类型
Apr 12 Python
Python Selenium截图功能实现代码
Apr 26 Python
Keras: model实现固定部分layer,训练部分layer操作
Jun 28 Python
如何用Python编写一个电子考勤系统
Feb 08 Python
简述python四种分词工具,盘点哪个更好用?
Apr 13 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
phpMyAdmin2.11.6安装配置方法
2008/08/24 PHP
PHP 中文乱码解决办法总结分析
2009/07/30 PHP
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
2010/06/04 PHP
php中取得文件的后缀名?
2012/02/20 PHP
XAMPP安装与使用方法详细解析
2013/11/27 PHP
微信公众号模板消息群发php代码示例
2016/12/29 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
用js自动判断浏览器分辨率的代码
2007/01/28 Javascript
Javascript中eval函数的使用方法与示例
2007/04/09 Javascript
js中的前绑定和后绑定详解
2013/08/01 Javascript
如何获取select下拉框的值(option没有及有value属性)
2013/11/08 Javascript
javascript中2个感叹号的用法实例详解
2014/09/04 Javascript
Javascript基础教程之比较操作符
2015/01/18 Javascript
Vue.js实现无限加载与分页功能开发
2016/11/03 Javascript
微信小程序  action-sheet详解及实例代码
2016/11/09 Javascript
ES6生成器用法实例分析
2017/04/10 Javascript
详解JavaScript中的六种错误类型
2017/09/21 Javascript
js中的reduce()函数讲解
2019/01/18 Javascript
详解项目升级到vue-cli3的正确姿势
2019/01/28 Javascript
微信小程序实现上传多个文件 超过10个
2020/03/30 Javascript
通过javascript实现扫雷游戏代码实例
2020/02/09 Javascript
JavaScript中的this原理及6种常见使用场景详解
2020/02/14 Javascript
微信小程序清空输入框信息与实现屏幕往上滚动的示例代码
2020/06/23 Javascript
Python程序设计入门(4)模块和包
2014/06/16 Python
python中单下划线_的常见用法总结
2018/07/10 Python
我就是这样学习Python中的列表
2019/06/02 Python
基于python操作ES实例详解
2019/11/16 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
2020/02/17 Python
Python中的Cookie模块如何使用
2020/06/04 Python
董事长助理岗位职责
2014/02/18 职场文书
2014年个人委托书范本
2014/10/13 职场文书
领导批评与自我批评范文
2014/10/16 职场文书
甜美蛋糕店的创业计划书模板,拿来即用!
2019/08/21 职场文书
python入门之算法学习
2021/04/22 Python
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
2021/04/27 Python
Nginx 匹配方式
2022/05/15 Servers