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获取远程文件大小的函数代码分享
May 13 Python
Python中的FTP通信模块ftplib的用法整理
Jul 08 Python
Python爬豆瓣电影实例
Feb 23 Python
利用Python在一个文件的头部插入数据的实例
May 02 Python
Django如何配置mysql数据库
May 04 Python
如何利用Anaconda配置简单的Python环境
Jun 24 Python
Windows系统Python直接调用C++ DLL的方法
Aug 01 Python
Flask框架学习笔记之使用Flask实现表单开发详解
Aug 12 Python
python实现从wind导入数据
Dec 03 Python
python实现简单日志记录库glog的使用
Dec 13 Python
python使用pyecharts库画地图数据可视化的实现
Mar 25 Python
Python Opencv实现单目标检测的示例代码
Sep 08 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
DIY实用性框形天线
2021/03/02 无线电
PHP中用正则表达式清除字符串的空白
2011/01/17 PHP
php中is_null,empty,isset,unset 的区别详细介绍
2013/04/28 PHP
php生成缩略图填充白边(等比缩略图方案)
2013/12/25 PHP
php获取四位字母和数字的随机数的实现方法
2015/01/09 PHP
thinkphp分页集成实例
2017/07/24 PHP
PHP结合jquery ajax实现上传多张图片,并限制图片大小操作示例
2019/03/01 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
2019/09/30 PHP
js本身的局限性 别让javascript做太多事
2010/03/23 Javascript
jquery 删除字符串最后一个字符的方法解析
2014/02/11 Javascript
JavaScript中的Math.LN2属性用法详解
2015/06/12 Javascript
Js删除数组中某一项或几项的几种方法(推荐)
2016/07/27 Javascript
微信小程序 textarea 详解及简单使用方法
2016/12/05 Javascript
js 性能优化之算法和流程控制
2017/02/15 Javascript
教你如何用node连接redis的示例代码
2018/07/12 Javascript
vue中的router-view组件的使用教程
2018/10/23 Javascript
node.js 基于cheerio的爬虫工具的实现(需要登录权限的爬虫工具)
2019/04/10 Javascript
浅谈Vue3.0之前你必须知道的TypeScript实战技巧
2019/09/11 Javascript
vue实现百度搜索功能
2020/12/28 Javascript
文章或博客自动生成章节目录索引(支持三级)的实现代码
2020/05/10 Javascript
一则python3的简单爬虫代码
2014/05/26 Python
Python内置的字符串处理函数详细整理(覆盖日常所用)
2014/08/19 Python
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
2015/05/05 Python
通过实例浅析Python对比C语言的编程思想差异
2015/08/30 Python
Python选课系统开发程序
2016/09/02 Python
Python 删除连续出现的指定字符的实例
2018/06/29 Python
flask-socketio实现WebSocket的方法
2018/07/31 Python
python使用turtle绘制国际象棋棋盘
2019/05/23 Python
利用Python制作动态排名图的实现代码
2020/04/09 Python
Python高并发和多线程有什么关系
2020/11/14 Python
解决canvas转base64/jpeg时透明区域变成黑色背景的方法
2016/10/23 HTML / CSS
公务员培训心得体会
2013/12/28 职场文书
拾金不昧锦旗标语
2014/06/27 职场文书
小学美术兴趣小组活动总结
2014/07/07 职场文书
思想作风整顿个人剖析材料
2014/10/06 职场文书
详解MySQL中的pid与socket
2021/06/15 MySQL