Python实现二分法算法实例


Posted in Python onFebruary 02, 2015

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]。每一次查找与中间值比较,可以确定是否查找成功,不成功当前查找区间缩小一半。递归找,即可。

#!/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中__str__和__repr__方法的区别
Apr 17 Python
Python3中条件控制、循环与函数的简易教程
Nov 21 Python
使用python 和 lint 删除项目无用资源的方法
Dec 20 Python
python使用pdfminer解析pdf文件的方法示例
Dec 20 Python
使用Django开发简单接口实现文章增删改查
May 09 Python
[机器视觉]使用python自动识别验证码详解
May 16 Python
python ChainMap的使用和说明详解
Jun 11 Python
PyTorch实现AlexNet示例
Jan 14 Python
Python Django view 两种return的实现方式
Mar 16 Python
在keras下实现多个模型的融合方式
May 23 Python
Python极值整数的边界探讨分析
Sep 15 Python
Python 避免字典和元组的多重嵌套问题
Jul 15 Python
Python标准异常和异常处理详解
Feb 02 #Python
Python中使用md5sum检查目录中相同文件代码分享
Feb 02 #Python
Python列表append和+的区别浅析
Feb 02 #Python
Python中的tuple元组详细介绍
Feb 02 #Python
Linux下编译安装MySQL-Python教程
Feb 02 #Python
Python写的服务监控程序实例
Jan 31 #Python
用python 制作图片转pdf工具
Jan 30 #Python
You might like
PHP正则验证Email的方法
2015/06/15 PHP
Javascript 阻止javascript事件冒泡,获取控件ID值
2009/06/27 Javascript
js更优雅的兼容
2010/08/12 Javascript
js控制frameSet示例
2013/09/10 Javascript
js读写cookie实现一个底部广告浮层效果的两种方法
2013/12/29 Javascript
javascript中的五种基本数据类型
2015/08/26 Javascript
javascript学习总结之js使用技巧
2015/09/02 Javascript
网页前端登录js按Enter回车键实现登陆的两种方法
2016/05/10 Javascript
js实现千分符和保留几位小数的简单实例
2016/08/01 Javascript
使用webpack3.0配置webpack-dev-server教程
2018/05/29 Javascript
webpack的tree shaking的实现方法
2019/09/18 Javascript
使用p5.js临摹动态图形
2019/10/23 Javascript
Python中实现远程调用(RPC、RMI)简单例子
2014/04/28 Python
Python中dictionary items()系列函数的用法实例
2014/08/21 Python
Python爬虫番外篇之Cookie和Session详解
2017/12/27 Python
基于python实现名片管理系统
2018/11/30 Python
Django values()和value_list()的使用
2020/03/31 Python
ITK 实现多张图像转成单个nii.gz或mha文件案例
2020/07/01 Python
Python 字符串池化的前提
2020/07/03 Python
PyQt实现计数器的方法示例
2021/01/18 Python
Python开发.exe小工具的详细步骤
2021/01/27 Python
Python之多进程与多线程的使用
2021/02/23 Python
一款纯css3实现的响应式导航
2014/10/31 HTML / CSS
One.com挪威:北欧成长最快的网络托管公司
2016/11/19 全球购物
美国最大婚纱连锁店运营商:David’s Bridal
2019/03/12 全球购物
瑞典香水、须后水和美容产品购物网站:Parfym-Klick.se
2019/12/29 全球购物
法学毕业生自荐信
2013/11/13 职场文书
学生会主席事迹材料
2014/01/28 职场文书
幼儿园元旦亲子活动方案
2014/02/17 职场文书
《东方明珠》教学反思
2014/04/20 职场文书
放飞梦想演讲稿
2014/05/05 职场文书
父亲去世追悼词
2015/06/23 职场文书
小学英语教师研修感悟
2015/11/18 职场文书
JS如何使用剪贴板操作Clipboard API
2021/05/17 Javascript
Redis 常见使用场景
2021/08/30 Redis
MySQL 条件查询的常用操作
2022/04/28 MySQL