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 相关文章推荐
python3.0 模拟用户登录,三次错误锁定的实例
Nov 02 Python
python实现对excel进行数据剔除操作实例
Dec 07 Python
为什么入门大数据选择Python而不是Java?
Mar 07 Python
pycharm 实现显示project 选项卡的方法
Jan 17 Python
利用Python半自动化生成Nessus报告的方法
Mar 19 Python
Python编程学习之如何判断3个数的大小
Aug 07 Python
如何在python中实现随机选择
Nov 02 Python
Django form表单与请求的生命周期步骤详解
Jun 07 Python
详解如何在PyCharm控制台中输出彩色文字和背景
Aug 17 Python
Python实现敏感词过滤的4种方法
Sep 12 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
Nov 05 Python
Python中文分词库jieba(结巴分词)详细使用介绍
Apr 07 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
PHP中几种常见的超时处理全面总结
2012/09/11 PHP
PHP变量内存分配问题记录整理
2013/11/27 PHP
PHP实现采集抓取淘宝网单个商品信息
2015/01/08 PHP
php使用for语句输出三角形的方法
2015/06/09 PHP
利用PHP判断是否是连乘数字串的方法示例
2017/07/03 PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
2017/10/10 PHP
javascript中万恶的function实例分析
2011/05/25 Javascript
jquery如何扑捉回车键触发的事件
2014/04/24 Javascript
select多选 multiple的使用示例
2014/06/16 Javascript
checkbox 选中一个另一个checkbox也会选中的实现代码
2016/07/09 Javascript
深入理解React Native原生模块与JS模块通信的几种方式
2017/07/24 Javascript
浅谈ajax请求不同页面的微信JSSDK问题
2018/02/26 Javascript
vue嵌套路由与404重定向实现方法分析
2018/05/04 Javascript
微信小程序中时间戳和日期的相互转换问题
2018/07/09 Javascript
JavaScript中变量提升与函数提升经典实例分析
2018/07/26 Javascript
深入解析Vue源码实例挂载与编译流程实现思路详解
2019/05/05 Javascript
vue 返回上一页,页面样式错乱的解决
2019/11/14 Javascript
基于js实现数组相邻元素上移下移
2020/05/19 Javascript
深入解读VUE中的异步渲染的实现
2020/06/19 Javascript
[01:02:48]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 LGD vs OG
2018/04/02 DOTA
Python基于ThreadingTCPServer创建多线程代理的方法示例
2018/01/11 Python
Python实现手写一个类似django的web框架示例
2018/07/20 Python
python sklearn常用分类算法模型的调用
2019/10/16 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
2020/05/17 Python
python爬虫用scrapy获取影片的实例分析
2020/11/23 Python
印尼在线购买隐形眼镜网站:Lensza.co.id
2019/04/27 全球购物
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
2014/01/19 面试题
EJB需直接实现它的业务接口或Home接口吗,请简述理由
2016/11/23 面试题
建筑工程专业学生的自我评价
2013/12/25 职场文书
《雨点》教学反思
2014/02/12 职场文书
竞选大学学委演讲稿
2014/09/13 职场文书
捐款通知怎么写
2015/04/24 职场文书
房地产项目合作意向书
2015/05/08 职场文书
优秀的商业计划书,让融资一步到位
2019/05/07 职场文书
北京大学中文系教授推荐的10本小说
2019/08/08 职场文书
java设计模式--建造者模式详解
2021/07/21 Java/Android