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根据路径导入模块的方法
Sep 30 Python
Python黑帽编程 3.4 跨越VLAN详解
Sep 28 Python
Python制作刷网页流量工具
Apr 23 Python
python生成式的send()方法(详解)
May 08 Python
详解python里的命名规范
Jul 16 Python
python 批量解压压缩文件的实例代码
Jun 27 Python
python sklearn库实现简单逻辑回归的实例代码
Jul 01 Python
python实现猜数字游戏
Mar 25 Python
python 读取更新中的log 或其它文本方式
Dec 24 Python
python关于调用函数外的变量实例
Dec 26 Python
python em算法的实现
Oct 03 Python
利用python 下载bilibili视频
Nov 13 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语法(2)
2006/10/09 PHP
BBS(php &amp; mysql)完整版(三)
2006/10/09 PHP
PHP遍历二维数组的代码
2011/04/22 PHP
基于PHP文件操作的详细诠释
2013/06/21 PHP
详解WordPress开发中get_header()获取头部函数的用法
2016/01/08 PHP
jquery 选择器引擎sizzle浅析
2013/02/06 Javascript
javascript-表格排序(降序/反序)实现介绍(附图)
2013/05/30 Javascript
js showModalDialog参数的使用详解
2014/01/07 Javascript
js判断字符长度及中英文数字等
2014/03/19 Javascript
Javascript排序算法之计数排序的实例
2014/04/05 Javascript
理解javascript异步编程
2016/01/27 Javascript
AngularJS页面访问时出现页面闪烁问题的解决
2016/03/06 Javascript
使用jQuery制作基础的Web图片轮播效果
2016/04/22 Javascript
javascript 面向对象function详解及实例代码
2017/02/28 Javascript
javascript 开发之网页兼容各种浏览器
2017/09/28 Javascript
JavaScript使用百度ECharts插件绘制饼图操作示例
2019/11/26 Javascript
微信小程序如何实现点击图片放大功能
2020/01/21 Javascript
微信小程序实现音乐播放页面布局
2020/12/11 Javascript
在Python中操作字典之clear()方法的使用
2015/05/21 Python
在Python中操作时间之tzset()方法的使用教程
2015/05/22 Python
以视频爬取实例讲解Python爬虫神器Beautiful Soup用法
2016/01/20 Python
python中模块的__all__属性详解
2017/10/26 Python
Python3.5.3下配置opencv3.2.0的操作方法
2018/04/02 Python
python hook监听事件详解
2018/10/25 Python
Python Django Cookie 简单用法解析
2019/08/13 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
2020/02/17 Python
Django通过设置CORS解决跨域问题
2020/11/26 Python
房地产财务管理制度
2014/02/02 职场文书
财务支持类个人的自我评价
2014/02/14 职场文书
旷课检讨书1000字
2014/02/14 职场文书
人口与计划生育目标管理责任书
2014/07/29 职场文书
教师节主题班会方案
2015/08/17 职场文书
2016年寒假家长评语
2015/10/10 职场文书
《我要的是葫芦》教学反思
2016/02/18 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书