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 collections模块实例讲解
Apr 07 Python
Python运算符重载用法实例分析
Jun 01 Python
详解Python读取配置文件模块ConfigParser
May 11 Python
Python获取指定字符前面的所有字符方法
May 02 Python
python3去掉string中的标点符号方法
Jan 22 Python
Python 支付整合开发包的实现
Jan 23 Python
Python获取Redis所有Key以及内容的方法
Feb 19 Python
python常用库之NumPy和sklearn入门
Jul 11 Python
自适应线性神经网络Adaline的python实现详解
Sep 30 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
Jun 04 Python
Python如何定义有默认参数的函数
Aug 10 Python
python 使用三引号时容易犯的小错误
Oct 21 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中的正规表达式(二)
2006/10/09 PHP
php完全过滤HTML,JS,CSS等标签
2009/01/16 PHP
ASP和PHP实现生成网站快捷方式并下载到桌面的方法
2014/05/08 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
excel操作之Add Data to a Spreadsheet Cell
2007/06/12 Javascript
Javascript 调试利器 Firebug使用详解六
2009/07/05 Javascript
小议Javascript中的this指针
2010/03/18 Javascript
弹出层之1:JQuery.Boxy (一) 使用介绍
2011/10/06 Javascript
javascript中方便增删改cookie的一个类
2012/10/11 Javascript
jquery datatable后台封装数据示例代码
2014/08/07 Javascript
JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
2014/08/16 Javascript
一个支持任意尺寸的图片上下左右滑动效果
2014/08/24 Javascript
使用jquery清空、复位整个输入域
2015/04/02 Javascript
js实现的简洁网页滑动tab菜单效果代码
2015/08/24 Javascript
简单谈谈javascript中的变量、作用域和内存问题
2015/08/30 Javascript
JS基于面向对象实现的拖拽库实例
2015/09/24 Javascript
纯js代码实现简单计算器
2015/12/02 Javascript
JavaScript的模块化开发框架Sea.js上手指南
2016/05/12 Javascript
js事件驱动机制 浏览器兼容处理方法
2016/07/23 Javascript
细数JavaScript 一个等号,两个等号,三个等号的区别
2016/10/09 Javascript
vue实现表格增删改查效果的实例代码
2017/07/18 Javascript
[01:18:21]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
[01:01:22]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
Pycharm无法使用已经安装Selenium的解决方法
2018/10/13 Python
详解如何修改python中字典的键和值
2020/09/29 Python
pycharm 实现光标快速移动到括号外或行尾的操作
2021/02/05 Python
一款简洁的纯css3代码实现的动画导航
2014/10/31 HTML / CSS
Html5 postMessage实现跨域消息传递
2016/03/11 HTML / CSS
html5 viewport使用方法示例详解
2013/12/02 HTML / CSS
商场活动策划方案
2014/01/24 职场文书
职业生涯规划书范文
2014/03/10 职场文书
党的群众路线教育实践活动个人对照检查材料(乡镇)
2014/11/05 职场文书
工作违纪检讨书范文
2015/01/26 职场文书
英语导游词
2015/02/13 职场文书
房屋维修申请报告
2015/05/18 职场文书
MySQL数据库压缩版本安装与配置详细教程
2021/05/21 MySQL