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 相关文章推荐
Django1.7+python 2.78+pycharm配置mysql数据库教程
Nov 18 Python
Windows上使用virtualenv搭建Python+Flask开发环境
Jun 07 Python
Python实现批量压缩图片
Jan 25 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
Dec 07 Python
详解pytorch 0.4.0迁移指南
Jun 16 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
Aug 15 Python
python遍历文件目录、批量处理同类文件
Aug 31 Python
python数值基础知识浅析
Nov 19 Python
关于pytorch中全连接神经网络搭建两种模式详解
Jan 14 Python
Python文本文件的合并操作方法代码实例
Mar 31 Python
python:删除离群值操作(每一行为一类数据)
Jun 08 Python
PIP和conda 更换国内安装源的方法步骤
Sep 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加Nginx实现动态裁剪图片方案
2014/03/10 PHP
仿新浪微博返回顶部的jquery实现代码
2012/10/01 Javascript
详细解密jsonp跨域请求
2015/04/15 Javascript
js根据手机客户端浏览器类型,判断跳转官网/手机网站多个实例代码
2016/04/30 Javascript
Bootstrap如何创建表单
2016/10/21 Javascript
基于easyui checkbox 的一些操作处理方法
2017/07/10 Javascript
js实现省市级联效果分享
2017/08/10 Javascript
chosen实现省市区三级联动
2018/08/16 Javascript
Vue中控制v-for循环次数的实现方法
2018/09/26 Javascript
动态内存分配导致影响Javascript性能的问题
2018/12/18 Javascript
微信小程序实现语音识别转文字功能及遇到的坑
2019/08/02 Javascript
vue打包静态资源后显示空白及static文件路径报错的解决
2020/09/02 Javascript
[02:44]2014DOTA2 国际邀请赛中国区预选赛 大神红毯秀
2014/05/25 DOTA
python实现发送邮件功能代码
2017/12/14 Python
python退出命令是什么?详解python退出方法
2018/12/10 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
2019/08/13 Python
Python数据分析模块pandas用法详解
2019/09/04 Python
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
2020/01/13 Python
Python读取excel文件中带公式的值的实现
2020/04/17 Python
pandas中的ExcelWriter和ExcelFile的实现方法
2020/04/24 Python
Python实现查找数据库最接近的数据
2020/06/08 Python
理解Django 中Call Stack机制的小Demo
2020/09/01 Python
使用Canvas操作像素的方法
2018/06/14 HTML / CSS
HTML5 常用语法一览(列举不支持的属性)
2010/01/26 HTML / CSS
歌唱比赛获奖感言
2014/01/21 职场文书
触电现场处置方案
2014/05/14 职场文书
会计系毕业求职信
2014/08/07 职场文书
安全例会汇报材料
2014/08/23 职场文书
县长“四风”对照检查材料思想汇报
2014/10/05 职场文书
幼师个人总结范文
2015/02/28 职场文书
nginx proxy_cache 缓存配置详解
2021/03/31 Servers
Pytorch实现图像识别之数字识别(附详细注释)
2021/05/11 Python
MySQL 计算连续登录天数
2022/05/11 MySQL
MySQL范围查询优化的场景实例详解
2022/06/10 MySQL
Spring Boot项目如何优雅实现Excel导入与导出功能
2022/06/10 Java/Android