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之正规地说一句话
Sep 28 Python
Python中使用Beautiful Soup库的超详细教程
Apr 30 Python
python使用线程封装的一个简单定时器类实例
May 16 Python
基于python的字节编译详解
Sep 20 Python
Django查询数据库的性能优化示例代码
Sep 24 Python
Python基于递归实现电话号码映射功能示例
Apr 13 Python
浅谈Pycharm中的Python Console与Terminal
Jan 17 Python
django解决跨域请求的问题详解
Jan 20 Python
python通过对字典的排序,对json字段进行排序的实例
Feb 27 Python
python3.6使用SMTP协议发送邮件
May 20 Python
撤回我也能看到!教你用Python制作微信防撤回脚本
Jun 11 Python
Python中的turtle画箭头,矩形,五角星
Mar 16 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
ThinkPHP整合百度Ueditor图文教程
2014/10/21 PHP
JavaScript学习历程和心得小结
2010/08/16 Javascript
js 弹出菜单/窗口效果
2011/10/30 Javascript
类似php的js数组的in_array函数自定义方法
2013/12/27 Javascript
jQuery 中$(this).index与$.each的使用指南
2014/11/20 Javascript
多个jQuery版本共存的处理方案
2015/03/17 Javascript
JS提交form表单实例分析
2015/12/10 Javascript
jQuery获取剪贴板内容的方法
2016/06/16 Javascript
xmlplus组件设计系列之网格(DataGrid)(10)
2017/05/05 Javascript
浅析JS抽象工厂模式
2017/12/14 Javascript
jQuery Migrate 插件用法实例详解
2019/05/22 jQuery
Vue响应式原理Observer、Dep、Watcher理解
2019/06/06 Javascript
layUI的验证码功能及校验实例
2019/10/25 Javascript
javascript设计模式 ? 工厂模式原理与应用实例分析
2020/04/09 Javascript
jquery+ajax实现异步上传文件显示进度条
2020/08/17 jQuery
nuxt引入组件和公共样式的操作
2020/11/05 Javascript
[10:04]国际邀请赛采访专栏:DK.Farseer,mouz.Black^,采访员Josh专访
2013/08/05 DOTA
[02:31]《DAC最前线》之选手酒店现场花絮
2015/01/30 DOTA
Python字符串拼接的几种方法整理
2017/08/02 Python
微信跳一跳python辅助脚本(总结)
2018/01/11 Python
python实现Decorator模式实例代码
2018/02/09 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
Python Subprocess模块原理及实例
2019/08/26 Python
Django实现文件上传和下载功能
2019/10/06 Python
ITK 实现多张图像转成单个nii.gz或mha文件案例
2020/07/01 Python
python 实现图片裁剪小工具
2021/02/02 Python
泰国排名第一的家居用品中心:HomePro
2020/11/18 全球购物
工商干部先进事迹
2014/05/14 职场文书
护校行动方案
2014/05/31 职场文书
装修施工安全责任书
2014/07/24 职场文书
学习考察心得体会
2014/09/04 职场文书
农村党建工作汇报材料
2014/10/27 职场文书
2014年幼儿园教学工作总结
2014/12/04 职场文书
医院病假条怎么写
2015/08/17 职场文书
竞聘演讲报告:基本写作有哪些?附开头范文
2019/10/16 职场文书
用Python提取PDF表格的方法
2021/04/11 Python