Python 二分法查找

原创 2012年03月22日 15:17:50

1.如果找到该值就返回

2.如果找不到该值就返回该值的上一个Index和下一个Index

3.小于List[0] 返回0

4.大于len(List)返回该List[-1]


def BinarySearch(keyTime,List):
    low = 0
    high = len(List) - 1
    middle = 0
    
    while(low <= high):
        middle = int((low + high) / 2)
        #获取中间数据
        listTime = List[middle][0]
        if listTime == keyTime:
            return listTime
            break
        elif listTime < keyTime:
            low = middle + 1
        elif listTime > keyTime:
            high = middle - 1
        
        if high < 0:
            print '不在List范围内'
            return 0
        elif low > len(List) - 1:
            print '超出List范围'
            return len(List)
        else:
            return (high,low)


相关文章推荐

二分法和牛顿迭代法求平方根(Python实现)

原文地址 求一个数的平方根函数sqrt(int num) ,在大多数语言中都提供实现。那么要求一个数的平方根,是怎么实现的呢? 实际上求平方根的算法方法主要有两种:二分法(binary...

Python算法 折半搜索算法(二分法)

在计算机科学中,折半搜索是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或...

二分法和牛顿迭代法求平方根(Python实现)

求一个数的平方根函数sqrt(int num) ,在大多数语言中都提供实现。那么要求一个数的平方根,是怎么实现的呢? 实际上求平方根的算法方法主要有两种:二分法(binary search)和牛顿迭代...

【Python学习笔记】-冒泡排序、插入排序、二分法查找

date:2017-03-30冒泡排序 主要是拿一个数与列表中所有的数进行比对,若比此数大(或者小),就交换位置 #encoding:utf-8 l=[5,3,6,2,1,4,8,7,9] for...
  • Yort2016
  • Yort2016
  • 2017年03月29日 15:40
  • 26114

Python-二分法查找

二分法算法原理:数组是有序数组, 确定该期间的中间位置center 将查找的值key与array[center]比较。若相等,查找成功返回此位置;否则确定新的查找区域,继续二分查找。 新区域...
  • tao3741
  • tao3741
  • 2017年08月27日 19:01
  • 109

用二分法查找循环递增序列 | Python

问题: 使用二分法在循环递增序列中查找指定元素,返回其下标;若不存在,则返回-1.要求时间复杂度为:O(logN)。 循环递增序列的定义:        nums = [7,8,9,10,1,2,3,...

Python实现冒泡排序、选择排序、插入排序、快速排序、归并排序、二分法查找算法(基于《算法导论》伪代码)

为加深对各种基础排序算法的理解,我基于Thomas H. Cormen等《算法导论》中的伪代码,用Python实现了冒泡排序、选择排序、插入排序、快速排序、归并排序、二分法查找算法。 具体算法如下...
  • vernice
  • vernice
  • 2016年02月17日 10:11
  • 1722

基础算法——查找(二分法)(python)

二分查找法(BinarySearchST)应用十分广泛,是必须要掌握的查找方法。适用对象是有序数组。具有最优的查找效率和空间需求,能够进行有序相关的操作。但插入操作很慢。 从编程技巧上来说,二分法适用...
  • sqiu_11
  • sqiu_11
  • 2017年05月17日 20:02
  • 317

Python二分法

  • 2017年11月15日 16:23
  • 877B
  • 下载

MIT公开课:计算机科学及编程导论 Python 笔记5 浮点数,逐次逼近法和二分法

Lecture5: Floating point number , successive refinement, finding roots 浮点数和二分法3wschool 数字>>> a = 2 *...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python 二分法查找
举报原因:
原因补充:

(最多只允许输入30个字)