美文网首页
查找之顺序查找与二分查找

查找之顺序查找与二分查找

作者: kingron | 来源:发表于2019-10-12 16:39 被阅读0次

查找一般来说是在某个对象(列表、集合等)中找到指定的元素所在位置。

顺序查找

顺序查找的时间复杂度为O(n),实现如下:


def linear_search(li, val):
    """
    遍历并比较,找到合适的值的索引并返回
    """
    for index, value in li:
        if value == val:
            return index
    else:
        return None

二分查找

二分查找的时间复杂度为O(logn),但前提是只能对经过排序后的列表产生作用,如果拿到的是未经排序的列表,那么对列表进行排序的时间复杂度为O(n)。假定拿到的是已经排好序的列表,那么二分法实现如下:


def binary_search(li, val):
    """
    每次取中间值,找到待索引区域
    直到找到指定的值或没有中间值为止
    """
    left = 0
    right = len(li) - 1
    
    while right >= left:
        mid = (left + right) // 2
        value = li[mid]

        if value == val:
            return mid
        elif value > val:
            right = mid - 1
        else:
            left = mid + 1
    else:
        return None

相关文章

  • 查找

    顺序查找 二分查找 插值查找 查找子数组最大和

  • 查找之顺序查找与二分查找

    查找一般来说是在某个对象(列表、集合等)中找到指定的元素所在位置。 顺序查找 顺序查找的时间复杂度为O(n),实现...

  • day13

    查找算法 顺序查找 二分查找 差值查找 斐波那契查找 二分查找 前提数组必须是有序的。 升级 Interpolat...

  • 查找

    查找一般要掌握顺序查找、二分查找、哈希表查找和二叉排序树查找。要能够快速准确地写出二分查找的代码。 1. 顺序查找...

  • 查找算法

    参考资料 有序查找 二分查找 循环版 递归版 无序查找 顺序查找

  • 查找算法

    三种查找算法:顺序查找,二分法查找(折半查找),分块查找,散列表

  • 算法(一)查找算法 平衡二叉树,红黑树,B树等

    顺序查找 略 折半查找 折半查找,也称二分查找,在某些情况下,折半查找比顺序查找效率更高(要求静态查找表中数据必须...

  • 查找算法

    查找算法 1顺序查找 2二分查找 2.1二分查找思路分析 2.2代码实现 3插值查找 3.1插值查找原理介绍: ​...

  • (转)三大查找

    三大查找方法 顺序查找,二分法查找(折半查找),分块查找 顺序查找的基本思想: 从表的一端开始,顺序扫描表,依次将...

  • 数据结构学习-三大查找八大排序

    三大查找方法 顺序查找,二分法查找(折半查找),分块查找 顺序查找的基本思想: 从表的一端开始,顺序扫描表,依次将...

网友评论

      本文标题:查找之顺序查找与二分查找

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