美文网首页
11_线性查找和二分查找

11_线性查找和二分查找

作者: 蕴重Liu | 来源:发表于2019-07-18 14:58 被阅读0次

线性查找

if __name__ == '__main__':

    number_list = [0, 1, 2, 3, 4, 5, 6, 7]

    def linear_search(value, iterable):
        for index,val in enumerate(iterable):
            if val == value:
                return index
        return -1
    assert linear_search(5, number_list) == 5

    def linear_search_v2(predicate, iterable):
        for index, val in enumerate(iterable):
            if predicate(val): #传入lamda表达式
                return index
        return -1
    assert linear_search_v2(lambda x: x == 5, number_list) == 5

    def linear_search_recusive(array, value):
        if len(array) == 0:
            return -1
        # 从后往前匹配
        index = len(array) - 1
        if array[index] == value:
            return index
        return linear_search_recusive(array[0:index], value)
    assert linear_search_recusive(number_list, 5) == 5
    assert linear_search_recusive(number_list, 8) == -1
    assert linear_search_recusive(number_list, 7) == 7
    assert linear_search_recusive(number_list, 0) == 0

二分查找

    def binary_search_recursive(sorted_array, beg, end, val):
        # beg 开始查找的区间 左闭右开
        # end 结束位置
        if beg >= end:
            return -1
        mid = int((beg + end) / 2)
        if sorted_array[mid] == val:
            return mid
        elif sorted_array[mid] > val:
            return binary_search_recursive(sorted_array, beg, mid, val)
        else:
            return binary_search_recursive(sorted_array, mid + 1, end, val)

    def test_binary_search_recursive():
        a = list(range(10))
        for i in a:
            assert binary_search_recursive(a, 0, len(a), i) == -1
        assert binary_search_recursive(a, 0, len(a), -1) == -1
        assert binary_search_recursive(a, 0, len(a), 10) == -1

相关文章

  • 11_线性查找和二分查找

    线性查找 二分查找

  • 查找算法-Python

    无序表查找 线性查找 O( n ) 适用于线性表的顺序存储结构和链式存储结构。 有序表查找 二分查找 Binary...

  • Java数据结构与算法:查找算法

    在java中,我们常用的查找有四种: 顺序(线性)查找 二分查找/折半查找 插值查找 斐波那契查找 1、线性查找 ...

  • 二分查找的循环写法与递归写法

    二分查找 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但二分查找要求线性表必须...

  • 数据结构课程 第十二周 查找

    查找基本概念 线性表的查找 顺序查找(线性查找) 折半查找(二分或对分查找) 表中元素是有序的!(仅限于顺序存储结...

  • 算法和排序

    1、线性查找 2、二分法查找 3、冒泡排序

  • 常见算法1、二分查找 Binary Search

    一、简介 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,二分查找要求线性表...

  • 数据结构--查找

    查找分类 有序查找(二分查找、插值查找、斐波拉契查找) 线性索引查找 二叉排序树 散列表

  • 二分查找算法

    一、二分查找算法 二分查找算法又称为折半查找算法,它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序...

  • 查找

    查找 framework 1 顺序 查找 适用: 线性表 思路: 逐个比较 2 二分查找 适用: 有序 顺序表...

网友评论

      本文标题:11_线性查找和二分查找

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