数据结构算法--1 顺序查找二分查找

顺序查找时间复杂度为O(n)

我们可以借助Python中的函数enumerate,通过enumerate遍历列表返回其索引和值

python 复制代码
def linnear_search(li, val):
    for ind, v in enumerate(li):
        if v == val:
            return ind
    else:
        return None

也可以通过列表长度依次遍历:

python 复制代码
def linear_search(li, val):     # 顺序查找复杂度为O(n)
    for i in range(len(li)):
        if li[i]==val:
            return i
    return

O(1)<O(logn)<O(n)<O(nlogn)<O(n*n)

但是二分查找时间复杂度为O(logn):

python 复制代码
def binary_search(li,val):
    left=0
    right=len(li)-1
    while left<=right:
        mid=(left+right) // 2
        if li[mid]==val:    # 最后会找到mid
            return mid
        elif li[mid]>val:   # mid值大与查找值,就需要去左半侧查找,right指针就改变
            right=mid-1
        else:
            left=mid+1
    else:
        return None
相关推荐
龙虎榜小红牛系统9 分钟前
WordCloud参数的用法:
python·wordcloud
hummhumm14 分钟前
第 36 章 - Go语言 服务网格
java·运维·前端·后端·python·golang·java-ee
YuanLiu_22723 分钟前
代码随想录算法训练营第十三天(递归遍历;迭代遍历;统一迭代;层序遍历)
java·数据结构·笔记·算法·leetcode
闻缺陷则喜何志丹26 分钟前
【C++动态规划】1411. 给 N x 3 网格图涂色的方案数|1844
c++·算法·动态规划·力扣·网格·数目·涂色
achaoyang26 分钟前
【Python中while循环】
开发语言·python
仙俊红41 分钟前
快速运行openMMOCR
深度学习·算法
-Max-静-1 小时前
Paddle Inference部署推理(十八)
人工智能·windows·深度学习·算法·paddle·推理 部署
eclipsercp1 小时前
PyQt5:Python GUI开发的超级英雄
开发语言·python·qt
f狐0狸x1 小时前
【数据结构实战篇】用C语言实现你的私有队列
c语言·数据结构·链表··队列
codists1 小时前
《Django 5 By Example》阅读笔记:p339-p358
python·django