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系列之教你如何根据图片生成字符画
May 23 Python
python中随机函数random用法实例
Apr 30 Python
Pyinstaller将py打包成exe的实例
Mar 31 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
Oct 17 Python
Python发送邮件测试报告操作实例详解
Dec 08 Python
通过python的matplotlib包将Tensorflow数据进行可视化的方法
Jan 09 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
Mar 02 Python
python类共享变量操作
Sep 03 Python
python3代码中实现加法重载的实例
Dec 03 Python
用Python提取PDF表格的方法
Apr 11 Python
python学习之panda数据分析核心支持库
May 07 Python
一篇文章带你了解Python和Java的正则表达式对比
Sep 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 array_search() 函数使用
2010/04/13 PHP
php截取中文字符串不乱码的方法
2013/12/25 PHP
详解YII关联查询
2016/01/10 PHP
PHP使用递归算法无限遍历数组示例
2017/01/13 PHP
php微信扫码支付 php公众号支付
2019/03/24 PHP
jQuery获取文本节点之 text()/val()/html() 方法区别
2011/03/01 Javascript
浅析Javascript使用include/require
2013/11/13 Javascript
jquery实现类似淘宝星星评分功能有截图
2014/09/15 Javascript
bootstrap实现弹窗和拖动效果
2016/01/03 Javascript
关于JavaScript 原型链的一点个人理解
2016/07/31 Javascript
JavaScript实现前端分页控件
2017/04/19 Javascript
node中modules.exports与exports导出的区别
2018/06/08 Javascript
React 源码中的依赖注入方法
2018/11/07 Javascript
Vue中错误图片的处理的实现代码
2019/11/07 Javascript
JavaScript定时器使用方法详解
2020/03/26 Javascript
Javascript柯里化实现原理及作用解析
2020/10/22 Javascript
vue使用transition组件动画效果的实例代码
2021/01/28 Vue.js
[02:46]完美世界DOTA2联赛PWL DAY4集锦
2020/11/03 DOTA
Python cookbook(数据结构与算法)字典相关计算问题示例
2018/02/18 Python
Python numpy 点数组去重的实例
2018/04/18 Python
PyQt5每天必学之布局管理
2018/04/19 Python
python实现输入数字的连续加减方法
2018/06/22 Python
python多线程下信号处理程序示例
2019/05/31 Python
解决pytorch 保存模型遇到的问题
2021/03/03 Python
css3 clip实现圆环进度条的示例代码
2018/02/07 HTML / CSS
Spartoo瑞典:鞋子、包包和衣服
2018/09/15 全球购物
美国最大最全的亚洲购物网站:美国亚米网(Yamibuy)
2020/05/05 全球购物
服务员岗位责任制
2014/02/11 职场文书
秋天的图画教学反思
2014/05/01 职场文书
环保倡议书300字
2014/05/15 职场文书
房屋出租委托书格式
2014/09/23 职场文书
2019年聘任书的写作格式及范文!
2019/07/03 职场文书
Python实现为PDF去除水印的示例代码
2022/04/03 Python
instantclient客户端 连接oracle数据库
2022/04/26 Oracle
Java版 单机五子棋
2022/05/04 Java/Android
基于redis+lua进行限流的方法
2022/07/23 Redis