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使用rabbitmq实现网络爬虫示例
Feb 20 Python
python抓取百度首页的方法
May 19 Python
理解Python中的绝对路径和相对路径
Aug 30 Python
python的Crypto模块实现AES加密实例代码
Jan 22 Python
python中多个装饰器的执行顺序详解
Oct 08 Python
在IPython中进行Python程序执行时间的测量方法
Nov 01 Python
Python实现去除列表中重复元素的方法总结【7种方法】
Feb 16 Python
解决python 文本过滤和清理问题
Aug 28 Python
python NumPy ndarray二维数组 按照行列求平均实例
Nov 26 Python
如何基于python实现脚本加密
Dec 28 Python
详解python定时简单爬取网页新闻存入数据库并发送邮件
Nov 27 Python
python微信智能AI机器人实现多种支付方式
Apr 12 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+mysql分页代码详解
2008/03/27 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
2012/07/02 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
2013/06/24 PHP
PHP排序算法之希尔排序(Shell Sort)实例分析
2018/04/20 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
PHP中的异常处理机制深入讲解
2020/11/10 PHP
jquery.fileEveryWhere.js 一个跨浏览器的file显示插件
2011/10/24 Javascript
新增加的内容是如何将div的scrollbar自动移动最下面
2014/01/02 Javascript
jquery实现简单文字提示效果
2015/12/02 Javascript
详解Vue 实例中的生命周期钩子
2017/03/21 Javascript
JavaScript插件Tab选项卡效果
2017/11/14 Javascript
微信小程序ajax实现请求服务器数据及模版遍历数据功能示例
2017/12/15 Javascript
babel之配置文件.babelrc入门详解
2018/02/22 Javascript
详解vue填坑之解决部分浏览器不支持pushState方法
2018/07/12 Javascript
jQuery 实现批量提交表格多行数据的方法
2018/08/09 jQuery
JavaScript语句错误throw、try及catch实例解析
2020/08/18 Javascript
python实现决策树ID3算法的示例代码
2018/05/30 Python
python远程调用rpc模块xmlrpclib的方法
2019/01/11 Python
Python3.5运算符操作实例详解
2019/04/25 Python
解决jupyter notebook 前面书写后面内容消失的问题
2020/04/13 Python
Python3以GitHub为例来实现模拟登录和爬取的实例讲解
2020/07/30 Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
2020/10/09 Python
使用jTopo给Html5 Canva中绘制的元素添加鼠标事件
2014/05/15 HTML / CSS
前端实现弹幕效果的方法总结(包含css3和canvas的实现方式)
2018/07/12 HTML / CSS
介绍一下内联、左联、右联
2013/12/31 面试题
优秀毕业大学生推荐信
2013/11/13 职场文书
汽车维修工岗位职责
2014/02/12 职场文书
物业管理毕业生的自我评价
2014/02/17 职场文书
环保建议书500字
2014/05/14 职场文书
公务员检讨书
2014/11/01 职场文书
五年级学生评语大全
2014/12/26 职场文书
2015年工程师工作总结
2015/04/30 职场文书
教师岗位说明书
2015/09/30 职场文书
导游词之藏龙百瀑景区
2019/12/30 职场文书
给原生html中添加水印遮罩层的实现示例
2021/04/02 Javascript
Python基础之赋值,浅拷贝,深拷贝的区别
2021/04/30 Python