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之matplotlib学习绘制动态更新图实例代码
Jan 23 Python
python 读取文本文件的行数据,文件.splitlines()的方法
Jul 12 Python
浅谈python函数调用返回两个或多个变量的方法
Jan 23 Python
pymongo中聚合查询的使用方法
Mar 22 Python
python-django中的APPEND_SLASH实现方法
Jun 21 Python
使用Python实现跳一跳自动跳跃功能
Jul 10 Python
Tensorflow 多线程设置方式
Feb 06 Python
Python阶乘求和的代码详解
Feb 14 Python
python读写文件write和flush的实现方式
Feb 21 Python
使用Django清空数据库并重新生成
Apr 03 Python
Python发送邮件封装实现过程详解
May 09 Python
Python函数参数定义及传递方式解析
Jun 10 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中的array_filter()函数去掉多维空值的代码分享
2012/09/07 PHP
php的zip解压缩类pclzip使用示例
2014/03/14 PHP
Apache启动报错No space left on device: AH00023该怎么解决
2015/10/16 PHP
JavaScript 对象、函数和继承
2009/07/07 Javascript
javascript 面向对象编程  function是方法(函数)
2009/09/17 Javascript
如何在一个页面显示多个百度地图
2013/04/07 Javascript
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
JavaScript设置获取和设置属性的方法
2015/03/04 Javascript
百度地图API之本地搜索与范围搜索
2015/07/30 Javascript
浅谈JSON.stringify()和JOSN.parse()方法的不同
2016/08/29 Javascript
通过修改360抢票的刷新频率和突破8车次限制实现方法
2017/01/04 Javascript
Mac系统下Webstorm快捷键整理大全
2017/05/28 Javascript
javascript基本常用排序算法解析
2017/09/27 Javascript
JavaScript中的E-mail 地址格式验证
2018/03/28 Javascript
ES6中异步对象Promise用法详解
2019/07/31 Javascript
python进阶教程之函数对象(函数也是对象)
2014/08/30 Python
简单介绍Python的Django框架加载模版的方式
2015/07/20 Python
详解C++编程中一元运算符的重载
2016/01/19 Python
Python for Informatics 第11章 正则表达式(一)
2016/04/21 Python
详解Python 2.6 升级至 Python 2.7 的实践心得
2017/04/27 Python
解决pycharm无法调用pip安装的包问题
2018/05/18 Python
使用python实现快速搭建简易的FTP服务器
2018/09/12 Python
pytorch对可变长度序列的处理方法详解
2018/12/08 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
2019/10/23 Python
Python使用monkey.patch_all()解决协程阻塞问题
2020/04/15 Python
python实现文字版扫雷
2020/04/24 Python
Python3内置函数chr和ord实现进制转换
2020/06/05 Python
俄罗斯的精英皮具:Wittchen
2018/01/29 全球购物
英国Boots旗下太阳镜网站:Boots Designer Sunglasses
2018/07/07 全球购物
模具设计与制造专业推荐信
2014/02/16 职场文书
信用社主任竞聘演讲稿
2014/05/23 职场文书
安全责任书范文
2014/08/25 职场文书
2014年物业管理工作总结
2014/11/21 职场文书
学雷锋活动简报
2015/07/20 职场文书
Python编程源码报错解决方法总结经验分享
2021/10/05 Python
MySQL 外连接语法之 OUTER JOIN
2022/04/09 MySQL