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生成随机mac地址的方法
Mar 16 Python
整理Python最基本的操作字典的方法
Apr 24 Python
Python及PyCharm下载与安装教程
Nov 18 Python
python函数式编程学习之yield表达式形式详解
Mar 25 Python
Python中property函数用法实例分析
Jun 04 Python
python中使用iterrows()对dataframe进行遍历的实例
Jun 09 Python
详解Python字典小结
Oct 20 Python
对python内置map和six.moves.map的区别详解
Dec 19 Python
Python 实现中值滤波、均值滤波的方法
Jan 09 Python
浅谈Python批处理文件夹中的txt文件
Mar 11 Python
python 解决pycharm运行py文件只有unittest选项的问题
Sep 01 Python
关于python scrapy中添加cookie踩坑记录
Nov 17 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
php 根据url自动生成缩略图并处理高并发问题
2014/01/23 PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
2014/04/18 PHP
PHP基于工厂模式实现的计算器实例
2015/07/16 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
2017/02/15 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
2017/09/17 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
PHP实现类似题库抽题效果
2018/08/16 PHP
jQuery 选择表格(table)里的行和列及改变简单样式
2012/12/15 Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
2016/12/27 Javascript
使用Javascript判断浏览器终端设备(PC、IOS(iphone)、Android)
2017/01/04 Javascript
vue2 自定义动态组件所遇到的问题
2017/06/08 Javascript
react-native ListView下拉刷新上拉加载实现代码
2017/08/03 Javascript
一文让你彻底搞清楚javascript中的require、import与export
2017/09/24 Javascript
关于js的三种使用方式(行内js、内部js、外部js)的程序代码
2018/05/05 Javascript
JS通过ajax + 多列布局 + 自动加载实现瀑布流效果
2019/05/30 Javascript
layui table表格数据的新增,修改,删除,查询,双击获取行数据方式
2019/11/14 Javascript
JavaScript中的this基本问题实例小结
2020/03/09 Javascript
[01:12:35]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
[43:35]EG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python中私有函数调用方法解密
2016/04/29 Python
python3.4下django集成使用xadmin后台的方法
2017/08/15 Python
浅谈flask中的before_request与after_request
2018/01/20 Python
Python从数据库读取大量数据批量写入文件的方法
2018/12/10 Python
python可视化篇之流式数据监控的实现
2019/08/07 Python
Python headers请求头如何实现快速添加
2020/11/03 Python
HTML5中判断用户是否正在浏览页面的方法
2014/05/03 HTML / CSS
土耳其家居建材网站:Koçtaş
2016/11/22 全球购物
Europcar英国:英国汽车和货车租赁
2017/01/21 全球购物
Lookfantastic葡萄牙官方网站:欧洲第一大化妆品零售商
2018/03/17 全球购物
String是最基本的数据类型吗?
2013/06/13 面试题
Python面试题:Python是如何进行内存管理的
2014/08/04 面试题
学校门卫岗位职责范本
2014/06/30 职场文书
赔偿协议书范本
2014/09/12 职场文书
乡镇机关党员民主评议表自我评价
2014/09/21 职场文书
Go使用协程交替打印字符
2021/04/29 Golang
Redis特殊数据类型HyperLogLog基数统计算法讲解
2022/06/01 Redis