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中使用ConfigParser解析ini配置文件实例
Aug 30 Python
用Python进行基础的函数式编程的教程
Mar 31 Python
浅析Python中的多条件排序实现
Jun 07 Python
Python进阶篇之字典操作总结
Nov 16 Python
python 实现求解字符串集的最长公共前缀方法
Jul 20 Python
selenium在执行phantomjs的API并获取执行结果的方法
Dec 17 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
Feb 25 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
Jul 04 Python
Python倒排索引之查找包含某主题或单词的文件
Nov 13 Python
利用python实现AR教程
Nov 20 Python
opencv+python实现均值滤波
Feb 19 Python
python使用梯度下降算法实现一个多线性回归
Mar 24 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中的escape函数
2013/06/29 PHP
PHP资源管理框架Assetic简介
2014/06/12 PHP
Linux下创建nginx脚本-start、stop、reload…
2014/08/03 PHP
对比分析php中Cookie与Session的异同
2016/02/19 PHP
PHP的mysqli_thread_id()函数讲解
2019/01/24 PHP
Laravel修改验证提示信息为中文的示例
2019/10/23 PHP
些很实用且必用的小脚本代码
2006/06/26 Javascript
利用javascript实现一些常用软件的下载导航
2009/08/03 Javascript
基于jquery的给文章加入关键字链接
2010/10/26 Javascript
jQuery EasyUI API 中文文档 - NumberSpinner数值微调器使用介绍
2011/10/21 Javascript
深入分析Javascript跨域问题
2015/04/17 Javascript
深入理解Node.js 事件循环和回调函数
2016/11/02 Javascript
jquery+ajax实现省市区三级联动效果简单示例
2017/01/04 Javascript
javascript实现计算指定范围内的质数示例
2018/12/29 Javascript
nodejs log4js 使用详解
2019/05/31 NodeJs
微信小程序从注册账号到上架(图文详解)
2019/07/17 Javascript
[04:03]2014DOTA2西雅图国际邀请赛 LGD战队巡礼
2014/07/07 DOTA
[01:03:37]Secret vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python读写Excel文件的实例
2013/11/01 Python
Python selenium实现微博自动登录的示例代码
2018/05/16 Python
python设定并获取socket超时时间的方法
2019/01/12 Python
Python中如何导入类示例详解
2019/04/17 Python
利用python-docx模块写批量生日邀请函
2019/08/26 Python
基于Python生成个性二维码过程详解
2020/03/05 Python
h5页面唤起app如果没安装就跳转下载(iOS和Android)
2020/06/03 HTML / CSS
柯基袜:Corgi Socks
2017/01/26 全球购物
请说出几个常用的异常类
2013/01/08 面试题
如何利用find命令查找文件
2015/02/07 面试题
就业推荐自我鉴定
2013/10/06 职场文书
乡镇总工会学雷锋活动总结
2014/03/01 职场文书
师范生求职自荐信
2014/06/14 职场文书
2014年教师教学工作总结
2014/11/08 职场文书
2014年班干部工作总结
2014/11/25 职场文书
《岳阳楼记》原文、译文赏析
2019/09/10 职场文书
iPhone13再次曝光
2021/04/15 数码科技
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
2022/04/08 Java/Android