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实现简单的TCP代理服务器
Oct 08 Python
python通过pil将图片转换成黑白效果的方法
Mar 16 Python
简单介绍Python中的round()方法
May 15 Python
Python中的条件判断语句与循环语句用法小结
Mar 21 Python
Python 判断 有向图 是否有环的实例讲解
Feb 01 Python
在python中按照特定顺序访问字典的方法详解
Dec 14 Python
python实现感知器算法(批处理)
Jan 18 Python
python中的decimal类型转换实例详解
Jun 26 Python
python利用proxybroker构建爬虫免费IP代理池的实现
Feb 21 Python
python抢购软件/插件/脚本附完整源码
Mar 04 Python
总结Python使用过程中的bug
Jun 18 Python
浅谈哪个Python库才最适合做数据可视化
Jun 28 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
dedecms 制作模板中使用的全局标记图文教程
2007/03/11 PHP
php的XML文件解释类应用实例
2014/09/22 PHP
php+mysqli事务控制实现银行转账实例
2015/01/29 PHP
javascript 时间比较实现代码
2009/10/28 Javascript
详谈 Jquery Ajax异步处理Json数据.
2011/09/09 Javascript
JS等比例缩小图片尺寸的实例
2013/02/27 Javascript
Js控制滑轮左右滑动实例
2015/02/13 Javascript
微信小程序 绘图之饼图实现
2016/10/24 Javascript
真正好用的js验证上传文件大小的简单方法
2016/10/27 Javascript
javascript使用btoa和atob来进行Base64转码和解码
2017/03/20 Javascript
深入理解JavaScript继承的多种方式和优缺点
2017/05/12 Javascript
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
2017/09/18 NodeJs
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
2019/01/27 Javascript
layui 实现table翻页滚动条位置保持不变的例子
2019/09/05 Javascript
在vue中使用回调函数,this调用无效的解决
2020/08/11 Javascript
jquery实现简易验证插件封装
2020/09/13 jQuery
JS时间戳与日期格式互相转换的简单方法示例
2021/01/30 Javascript
Vue单页面应用中实现Markdown渲染
2021/02/14 Vue.js
[06:44]2014DOTA2国际邀请赛-钥匙体育馆开战 开幕式振奋人心
2014/07/19 DOTA
Python中解析JSON并同时进行自定义编码处理实例
2015/02/08 Python
Python简单获取自身外网IP的方法
2016/09/18 Python
python常用知识梳理(必看篇)
2017/03/23 Python
Django项目实战之用户头像上传与访问的示例
2018/04/21 Python
Python3 中把txt数据文件读入到矩阵中的方法
2018/04/27 Python
在Python中居然可以定义两个同名通参数的函数
2019/01/31 Python
Java文件与类动手动脑实例详解
2019/11/10 Python
Python input函数使用实例解析
2019/11/22 Python
使用CSS3实现SVG路径描边动画效果入门教程
2019/10/21 HTML / CSS
世界最大域名注册商:GoDaddy
2016/07/24 全球购物
英国儿童设计师服装和玩具购物网站:Zac & Lulu
2020/10/19 全球购物
工商管理专业自荐信
2014/06/03 职场文书
2014年团员学习十八大思想汇报
2014/09/13 职场文书
四风批评与自我批评范文
2014/10/14 职场文书
经典祝酒词大全
2015/08/12 职场文书
教你用python控制安卓手机
2021/05/13 Python
华为HarmonyOS3.0强在哪? 看看鸿蒙3.0这7个小功能
2023/01/09 数码科技