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 相关文章推荐
启动targetcli时遇到错误解决办法
Oct 26 Python
Python中getpass模块无回显输入源码解析
Jan 11 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
Apr 18 Python
pycharm安装和首次使用教程
Aug 27 Python
python数据结构学习之实现线性表的顺序
Sep 28 Python
Pandas GroupBy对象 索引与迭代方法
Nov 16 Python
Django中使用haystack+whoosh实现搜索功能
Oct 08 Python
Django restframework 框架认证、权限、限流用法示例
Dec 21 Python
Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析
Dec 26 Python
Python库skimage绘制二值图像代码实例
Apr 10 Python
python 负数取模运算实例
Jun 03 Python
Python如何加载模型并查看网络
Jul 15 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 foreach 使用&amp;(与运算符)引用赋值要注意的问题
2010/02/16 PHP
PHP IF ELSE简化/三元一次式的使用
2011/08/22 PHP
php将access数据库转换到mysql数据库的方法
2014/12/24 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
2016/11/09 PHP
php格式文件打开的四种方法
2018/02/24 PHP
asp.net 30分钟掌握无刷新 Repeater
2011/09/16 Javascript
JQUERY 获取IFrame中对象及获取其父窗口中对象示例
2013/08/19 Javascript
JS小功能(onmouseover实现选择月份)实例代码
2013/11/28 Javascript
原生js和jquery实现图片轮播淡入淡出效果
2015/04/23 Javascript
浏览器复制插件zeroclipboard使用指南
2016/03/26 Javascript
JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动)
2017/06/19 Javascript
JavaScript hasOwnProperty() 函数实例详解
2017/08/04 Javascript
Postman的下载及安装教程详解
2018/10/16 Javascript
python实现分析apache和nginx日志文件并输出访客ip列表的方法
2015/04/04 Python
简单谈谈python中的Queue与多进程
2016/08/25 Python
Python调用微信公众平台接口操作示例
2017/07/08 Python
Atom的python插件和常用插件说明
2018/07/08 Python
对numpy数据写入文件的方法讲解
2018/07/09 Python
opencv python 图像去噪的实现方法
2018/08/31 Python
Python多进程池 multiprocessing Pool用法示例
2018/09/07 Python
Django框架创建项目的方法入门教程
2019/11/04 Python
opencv3/C++ 平面对象识别&amp;透视变换方式
2019/12/11 Python
python 双循环遍历list 变量判断代码
2020/05/04 Python
简单了解Python字典copy与赋值的区别
2020/09/16 Python
python实现磁盘日志清理的示例
2020/11/05 Python
SmartBuyGlasses美国官网:太阳眼镜和眼镜
2017/08/20 全球购物
施华洛世奇加拿大官网:SWAROVSKI加拿大
2018/06/03 全球购物
管理专员自荐信
2014/01/26 职场文书
中国好声音华少广告词
2014/03/17 职场文书
机关门卫的岗位职责
2014/04/29 职场文书
公司董事长助理工作职责
2014/07/12 职场文书
寻找最美家庭活动方案
2014/08/20 职场文书
营销总经理岗位职责范本
2014/09/02 职场文书
大学生学习计划书
2014/09/15 职场文书
护士医德医风自我评价
2014/09/15 职场文书
《半截蜡烛》教学反思
2016/02/19 职场文书