美文网首页
二分查找(有序序列)

二分查找(有序序列)

作者: 郭海杰 | 来源:发表于2019-05-08 16:04 被阅读0次

1.二分查找,递归

def  test_search(alist, item):
    n = len(alist)
    if n > 0:
        mid = n//2
        if alist[mid] == item:
            return True
        elif item < alist[mid]:
            return test_search(alist[:mid],item)
        else:
            return test_search(alist[mid+1:],item)
    return False
#仅限用于有序序列
if __name__ == "__main__":
   li = [12,13,14,15,16,17,18,19,20,21,22,23,24]
    print(test_search(li, 30))
    print(test_search(li, 13))

2.二分查找,非递归

def  test_search(alist, item):
    n = len(alist)
    first = 0
    last = n-1 
    while first <= last:
        mid = (last  + first)//2
        if alist[mid] == item:
            return True
        elif item < alist[mid]:
            last = mid - 1
        else:
            first = mid + 1
    return False
#仅限用于有序序列
if __name__ == "__main__":
   li = [12,13,14,15,16,17,18,19,20,21,22,23,24]
    print(test_search(li, 30))
    print(test_search(li, 13))

相关文章

  • 二分查找

    数据顺序存储,有序序列 O(logn) 递归实现二分查找: 非递归实现二分查找:

  • python二分查找算法

    文章概述 二分查找法介绍 简单查找与二分查找对比 二分查找  二分查找算法主要思想:在有序列表中查找指定元素,先从...

  • 算法笔记(5)| 二分

    1.二分查找 二分查找是基于有序序列的查找算法,该算法一开始令[left,right]为整个序列的下标区间,然后每...

  • 《算法图解》读书笔记

    《算法图解》读书笔记 二分查找 算法实现: ​ 在有序列表中查找一个数,每次都与有序列表的中间数比较,如果不同...

  • 二分查找(有序序列)

  • 二分查找(有序序列)

    1.二分查找,递归 2.二分查找,非递归

  • 用javascript实现二分查找

    二分查找又称折半查找,顾名思义就是一半半的查找。另外二分查找的列表需要为有序列表。 思路:1)定义左边界下标,右边...

  • 2018-07-27 二分查找法

    二分查找是一种查询效率非常高的查找算法。又称折半查找。二分查找的前提必须是有序的序列,优点是查询速度快,缺点是必须...

  • Effective STL 第34条

    为什么有些算法需要排序的区间 binary_search算法是二分查找, 这种查找需要查找空间的序列是有序的. 为...

  • Python二分查找

    二分查找 每次能够排除掉一半的数据,查找的效率非常高,但是局限性比较大。 必须是有序序列才可以使用二分查找。 1....

网友评论

      本文标题:二分查找(有序序列)

      本文链接:https://www.haomeiwen.com/subject/loxvoqtx.html