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通过scapy获取局域网所有主机mac地址示例
May 04 Python
Python图算法实例分析
Aug 13 Python
python中将函数赋值给变量时需要注意的一些问题
Aug 18 Python
tornado 多进程模式解析
Jan 15 Python
Django添加sitemap的方法示例
Aug 06 Python
python的set处理二维数组转一维数组的方法示例
May 31 Python
Python facenet进行人脸识别测试过程解析
Aug 16 Python
Python搭建代理IP池实现检测IP的方法
Oct 27 Python
关于tf.reverse_sequence()简述
Jan 20 Python
小白教你PyCharm从下载到安装再到科学使用PyCharm2020最新激活码
Sep 25 Python
Python控制台输出俄罗斯方块的方法实例
Apr 17 Python
Python自动化测试PO模型封装过程详解
Jun 22 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
Re:从零开始的异世界生活 第2季 开播啦
2020/07/24 日漫
PHP使用memcache缓存技术提高响应速度的方法
2014/12/26 PHP
php中文验证码实现方法
2015/06/18 PHP
深入理解PHP JSON数组与对象
2016/07/19 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
PHP实现图的邻接矩阵表示及几种简单遍历算法分析
2017/11/24 PHP
jquery 插件 人性化的消息显示
2008/01/21 Javascript
深入理解javascript中defer的作用
2013/12/11 Javascript
所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解
2016/05/27 Javascript
Javascript基础学习笔记(菜鸟必看篇)
2016/07/22 Javascript
JS产生随机数的用法小结
2016/12/10 Javascript
vue.js如何将echarts封装为组件一键使用详解
2017/10/10 Javascript
JS扩展String.prototype.format字符串拼接的功能
2018/03/09 Javascript
为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题
2018/04/03 Javascript
JQuery Ajax动态加载Table数据的实例讲解
2018/08/09 jQuery
微信小程序中使用wxss加载图片并实现动画效果
2018/08/13 Javascript
jQuery删除/清空指定元素的所有子节点实例代码
2019/07/04 jQuery
Vue使用axios引起的后台session不同操作
2020/08/14 Javascript
Vue指令实现OutClick的示例
2020/11/16 Javascript
[05:14]辉夜杯主赛事第二日 RECAP精彩回顾
2015/12/27 DOTA
[33:42]LGD vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python算法学习之基数排序实例
2013/12/18 Python
Python连接PostgreSQL数据库的方法
2016/11/28 Python
python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解
2017/11/24 Python
Python实现的redis分布式锁功能示例
2018/05/29 Python
python工具快速为音视频自动生成字幕(使用说明)
2021/01/27 Python
python利用文件时间批量重命名照片和视频
2021/02/09 Python
马来西亚网上花店:FlowerAdvisor马来西亚
2020/01/03 全球购物
新奥尔良珠宝:Mignon Faget
2020/11/23 全球购物
企业文化建设实施方案
2014/03/22 职场文书
幼儿园安全责任书
2014/04/14 职场文书
学生安全责任书模板
2014/07/25 职场文书
2014党员自我评议表范文
2014/09/20 职场文书
学生会招新宣传语
2015/07/13 职场文书
Nginx内网单机反向代理的实现
2021/11/07 Servers
python读取mat文件生成h5文件的实现
2022/07/15 Python