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实现socket端口重定向示例
Feb 10 Python
pygame学习笔记(4):声音控制
Apr 15 Python
深入解析Python中函数的参数与作用域
Mar 20 Python
python爬取淘宝商品销量信息
Nov 16 Python
Python实现的各种常见分布算法示例
Dec 13 Python
python用match()函数爬数据方法详解
Jul 23 Python
Django 自动生成api接口文档教程
Nov 19 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
Apr 02 Python
Python带参数的装饰器运行原理解析
Jun 09 Python
Python读写压缩文件的方法
Jul 30 Python
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
Jan 24 Python
Django框架之路由用法
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 应用程序安全防范技术研究
2009/09/25 PHP
PHP实现批量生成App各种尺寸Logo
2015/03/19 PHP
PHP生成图片验证码功能示例
2017/01/12 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
2020/11/10 PHP
JavaScript XML操作 封装类
2009/07/01 Javascript
js 限制数字 js限制输入实现代码
2012/12/04 Javascript
jquery日历控件实现方法分享
2014/03/07 Javascript
首页图片漂浮效果示例代码
2014/06/05 Javascript
jQuery 处理页面的事件详解
2015/01/20 Javascript
jQuery数据缓存用法分析
2015/02/20 Javascript
Python脚本后台运行的几种方式
2015/03/09 Javascript
jquery滚动加载数据的方法
2015/03/09 Javascript
JQuery中$.each 和$(selector).each()的区别详解
2015/03/13 Javascript
原生JS实现图片轮播效果
2016/12/26 Javascript
angular+ionic返回上一页并刷新页面
2017/08/08 Javascript
Vue.js进行查询操作的实例详解
2017/08/25 Javascript
微信小程序自定义可滑动日历界面
2018/12/28 Javascript
JS+CSS实现过渡特效
2021/01/02 Javascript
[54:54]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[02:08]2018年度CS GO枪械皮肤设计大赛优秀作者-完美盛典
2018/12/16 DOTA
用Python解析XML的几种常见方法的介绍
2015/04/09 Python
Python使用CMD模块更优雅的运行脚本
2015/05/11 Python
python 查找文件名包含指定字符串的方法
2018/06/05 Python
Python实现爬虫从网络上下载文档的实例代码
2018/06/13 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
2019/12/11 Python
Django数据统计功能count()的使用
2020/11/30 Python
Canvas绘制浮动球效果的示例
2017/12/29 HTML / CSS
您的健身减肥和健康饮食专家:vitafy
2017/06/06 全球购物
巴黎欧莱雅法国官网:L’Oreal Paris
2019/04/30 全球购物
应届生求职信范文
2014/05/26 职场文书
养成教育经验材料
2014/05/26 职场文书
社区服务活动小结
2014/07/08 职场文书
如何写辞职信
2015/05/13 职场文书
windows11怎么查看自己安装的版本号? win11版本号的查看方法
2021/11/21 数码科技
Python爬虫 简单介绍一下Xpath及使用
2022/04/26 Python
浅谈Redis变慢的原因及排查方法
2022/06/21 Redis