python二分法实现实例


Posted in Python onNovember 21, 2013

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]。每一次查找与中间值比较,可以确定是否查找成功,不成功当前查找区间缩小一半。递归找,即可。

2.python代码:

#!/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 快速排序代码
Nov 23 Python
Python 元类使用说明
Dec 18 Python
10个易被忽视但应掌握的Python基本用法
Apr 01 Python
Python数据结构之顺序表的实现代码示例
Nov 15 Python
django的登录注册系统的示例代码
May 14 Python
基于Python列表解析(列表推导式)
Jun 23 Python
python 实现语音聊天机器人的示例代码
Dec 02 Python
matplotlib.pyplot绘图显示控制方法
Jan 15 Python
Python HTML解析模块HTMLParser用法分析【爬虫工具】
Apr 05 Python
Python实现小黑屋游戏的完整实例
Jan 06 Python
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
May 31 Python
只用20行Python代码实现屏幕录制功能
Jun 02 Python
Python列表推导式的使用方法
Nov 21 #Python
python调用shell的方法
Nov 20 #Python
python和shell变量互相传递的几种方法
Nov 20 #Python
利用soaplib搭建webservice详细步骤和实例代码
Nov 20 #Python
python从ftp下载数据保存实例
Nov 20 #Python
python正则表达式抓取成语网站
Nov 20 #Python
python爬取网站数据保存使用的方法
Nov 20 #Python
You might like
2.PHP入门
2006/10/09 PHP
PHP Zip解压 文件在线解压缩的函数代码
2010/05/26 PHP
php 网上商城促销设计实例代码
2012/02/17 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
laravel框架使用阿里云短信发送消息操作示例
2020/02/15 PHP
网络图片延迟加载实现代码 超越jquery控件
2010/03/27 Javascript
js 动态加载事件的几种方法总结
2013/12/25 Javascript
js时间比较示例分享(日期比较)
2014/03/05 Javascript
JavaScript实现数字数组正序排列的方法
2015/04/06 Javascript
微信小程序 解析网页内容详解及实例
2017/02/22 Javascript
vue子父组件通信的实现代码
2017/07/09 Javascript
Javascript实现时间倒计时效果
2017/07/15 Javascript
elemetUi 组件--el-upload实现上传Excel文件的实例
2017/10/27 Javascript
详解使用React全家桶搭建一个后台管理系统
2017/11/04 Javascript
layui的数据表格+springmvc实现搜索功能的例子
2019/09/28 Javascript
Python使用Socket(Https)Post登录百度的实现代码
2012/05/18 Python
Python中不同进制互相转换(二进制、八进制、十进制和十六进制)
2015/04/05 Python
深入剖析Python的爬虫框架Scrapy的结构与运作流程
2016/01/20 Python
详谈在flask中使用jsonify和json.dumps的区别
2018/03/26 Python
Python实现删除时保留特定文件夹和文件的示例
2018/04/27 Python
浅谈pyqt5在QMainWindow中布局的问题
2019/06/21 Python
Python实现word2Vec model过程解析
2019/12/16 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
2019/12/20 Python
Python 基于FIR实现Hilbert滤波器求信号包络详解
2020/02/26 Python
python求numpy中array按列非零元素的平均值案例
2020/06/08 Python
基于Python的身份证验证识别和数据处理详解
2020/11/14 Python
美国领先的医疗警报服务:Philips Lifeline
2018/03/12 全球购物
优秀经理事迹材料
2014/02/01 职场文书
学校开学标语
2014/10/06 职场文书
入党积极分子对十八届四中全会期盼的思想汇报
2014/10/17 职场文书
晚自修旷课检讨书怎么写
2014/11/17 职场文书
开除通知书范本
2015/04/25 职场文书
go语言使用Casbin实现角色的权限控制
2021/06/26 Golang
详解非极大值抑制算法之Python实现
2021/06/28 Python
入门学习Go的基本语法
2021/07/07 Golang
解决Springboot PostMapping无法获取数据的问题
2022/05/06 Java/Android