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基础教程之获取本机ip数据包示例
Feb 10 Python
python对字典进行排序实例
Sep 25 Python
详解Python2.x中对Unicode编码的使用
Apr 03 Python
Python闭包实现计数器的方法
May 05 Python
浅谈python新手中常见的疑惑及解答
Jun 14 Python
Python基于tkinter模块实现的改名小工具示例
Jul 27 Python
Python批量生成特定尺寸图片及图画任意文字的实例
Jan 30 Python
python函数与方法的区别总结
Jun 23 Python
Python学习笔记之Break和Continue用法分析
Aug 14 Python
python 实现在shell窗口中编写print不向屏幕输出
Feb 19 Python
python 实现多维数组(array)排序
Feb 28 Python
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
Jun 11 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默认安装产生系统漏洞
2006/10/09 PHP
简单的用PHP编写的导航条程序
2006/10/09 PHP
php+mysql 实现身份验证代码
2010/03/24 PHP
PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
2012/05/07 PHP
php计算十二星座的函数代码
2012/08/21 PHP
怎样给PHP源代码加密?PHP二进制加密与解密的解决办法
2013/04/22 PHP
codeigniter发送邮件并打印调试信息的方法
2015/03/21 PHP
PHP微信开发用Cache 解决数据缓存
2016/07/11 PHP
jQuery温习篇 强大的JQuery选择器
2010/04/24 Javascript
分享10篇优秀的jQuery幻灯片制作教程及应用案例
2011/04/16 Javascript
JS中setInterval、setTimeout不能传递带参数的函数的解决方案
2013/04/28 Javascript
js中的cookie的读写操作示例详解
2014/04/17 Javascript
js脚本获取webform服务器控件的方法
2014/05/16 Javascript
10个很棒的jQuery代码片段
2015/09/24 Javascript
JavaScript中rem布局在react中的应用
2015/12/09 Javascript
利用jquery制作滚动到指定位置触发动画
2016/03/26 Javascript
JavaScript ES6中CLASS的使用详解
2016/11/22 Javascript
微信小程序 action-sheet 反馈上拉菜单简单实例
2017/05/11 Javascript
vue数字类型过滤器的示例代码
2017/09/07 Javascript
微信小程序中使用Async-await方法异步请求变为同步请求方法
2019/03/28 Javascript
layui 数据表格 根据值(1=业务,2=机构)显示中文名称示例
2019/10/26 Javascript
vue+animation实现翻页动画
2020/06/29 Javascript
vue路由切换时取消之前的所有请求操作
2020/09/01 Javascript
微信小程序实现modal弹出框遮罩层组件(可带文本框)
2020/12/20 Javascript
Python注释详解
2016/06/01 Python
python实现微信远程控制电脑
2018/02/22 Python
对numpy中shape的深入理解
2018/06/15 Python
安全检查与奖惩制度
2014/01/23 职场文书
玲玲的画教学反思
2014/02/04 职场文书
2015年国税春训心得体会
2015/03/09 职场文书
护理专业自我评价
2015/03/11 职场文书
2015年业务工作总结范文
2015/04/10 职场文书
汽车销售员岗位职责
2015/04/11 职场文书
MySQL窗口函数的具体使用
2021/11/17 MySQL
python数据可视化使用pyfinance分析证券收益示例详解
2021/11/20 Python
Spring Boot接口定义和全局异常统一处理
2022/04/20 Java/Android