数据结构算法--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
相关推荐
波波侠83 分钟前
代码随想录算法训练营打卡第31天|56. 合并区间、738.单调递增的数字
算法
Snow_day.4 分钟前
有关线段树应用(1)
数据结构·算法·贪心算法·动态规划·图论
阿部多瑞 ABU5 分钟前
`tredomb`:一个面向「思想临界质量」初始化的 Python 工具
前端·python·ai写作
u0109272717 分钟前
Python虚拟环境(venv)完全指南:隔离项目依赖
jvm·数据库·python
m0_686041618 分钟前
Python类型提示(Type Hints)详解
jvm·数据库·python
m0_5613596712 分钟前
C++模块接口设计
开发语言·c++·算法
矢志航天的阿洪14 分钟前
从GitHub到本地:Python IGRF库环境配置完全指南
开发语言·python·github
wengqidaifeng40 分钟前
探索数据结构(二):空间复杂度
c语言·开发语言·数据结构
难得的我们41 分钟前
单元测试在C++项目中的实践
开发语言·c++·算法
weixin1997010801641 分钟前
加盟网 item_search - 根据关键词获取行业列表接口对接全攻略:从入门到精通
java·python