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 ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
Jun 10 Python
python smtplib模块发送SSL/TLS安全邮件实例
Apr 08 Python
python实现通过代理服务器访问远程url的方法
Apr 29 Python
简单讲解Python中的字符串与字符串的输入输出
Mar 13 Python
Python3安装Pymongo详细步骤
May 26 Python
python中栈的原理及实现方法示例
Nov 27 Python
python ftplib模块使用代码实例
Dec 31 Python
浅谈keras 模型用于预测时的注意事项
Jun 27 Python
详解Pycharm安装及Django安装配置指南
Sep 15 Python
Python提取视频中图片的示例(按帧、按秒)
Oct 22 Python
python tqdm库的使用
Nov 30 Python
matplotlib实现数据实时刷新的示例代码
Jan 05 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的memory_limit限制的方法分享
2012/02/21 PHP
PHP连接和操作MySQL数据库基础教程
2014/09/29 PHP
PHP SPL标准库中的常用函数介绍
2015/05/11 PHP
Laravel框架源码解析之反射的使用详解
2020/05/14 PHP
TP5多入口设置实例讲解
2020/12/15 PHP
window.ActiveXObject使用说明
2010/11/08 Javascript
动态加载js的方法汇总
2015/02/13 Javascript
使用纯javascript实现经典扫雷游戏
2015/04/23 Javascript
Css3制作变形与动画效果
2015/07/24 Javascript
jquery实现模拟百分比进度条渐变效果代码
2015/10/29 Javascript
Bootstrap的基本应用要点浅析
2016/12/19 Javascript
实例分析nodejs模块xml2js解析xml过程中遇到的坑
2017/03/18 NodeJs
Vue.use源码分析
2017/04/22 Javascript
JS实现给json数组动态赋值的方法示例
2020/03/19 Javascript
用vue构建多页面应用的示例代码
2017/09/20 Javascript
layui select获取自定义属性方法
2018/08/15 Javascript
Vue一个案例引发的递归组件的使用详解
2018/11/15 Javascript
微信小程序实现基于三元运算验证手机号/姓名功能示例
2019/01/19 Javascript
Vue之beforeEach非登录不能访问的实现(代码亲测)
2019/07/18 Javascript
使用原生JS实现火锅点餐小程序(面向对象思想)
2019/12/10 Javascript
JS实现图片切换特效
2019/12/23 Javascript
jQuery实现飞机大战小游戏
2020/07/05 jQuery
解决谷歌搜索技术文章时打不开网页问题的python脚本
2013/02/10 Python
Python中最常用的操作列表的几种方法归纳
2015/04/24 Python
详解使用 pyenv 管理多个版本 python 环境
2017/10/19 Python
numpy.delete删除一列或多列的方法
2018/04/03 Python
利用pandas将numpy数组导出生成excel的实例
2018/06/14 Python
浅析python中numpy包中的argsort函数的使用
2018/08/30 Python
强悍的Python读取大文件的解决方案
2019/02/16 Python
Python编写合并字典并实现敏感目录的小脚本
2019/02/26 Python
解决django model修改添加字段报错的问题
2019/11/18 Python
Python如何实现在字符串里嵌入双引号或者单引号
2020/03/02 Python
html5的canvas实现3d雪花飘舞效果
2013/12/27 HTML / CSS
我的中国梦演讲稿600字
2014/08/19 职场文书
用python删除文件夹中的重复图片(图片去重)
2021/05/12 Python
用Python将GIF动图分解成多张静态图片
2021/06/11 Python