数据结构算法--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
相关推荐
CoolScript1 分钟前
WingIDE破解代码-支持最新版本
python
杨福瑞2 分钟前
数据结构:队列
c语言·数据结构
测试19985 分钟前
Selenium(Python web测试工具)基本用法详解
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
资深设备全生命周期管理6 分钟前
PLC监控系统+UI Alarm Show
python
Zsy_0510037 分钟前
【数据结构】排序
数据结构·算法·排序算法
青山的青衫7 分钟前
【二分查找-开区间思维】
算法
范小多7 分钟前
24小时学会Python Visual code +Python Playwright通过谷歌浏览器取控件元素(连载、十一)
服务器·前端·python
曹牧10 分钟前
Java:Foreach语法糖
java·开发语言·python
盼哥PyAI实验室11 分钟前
Python验证码处理实战:从12306项目看验证码识别的技术演进
开发语言·网络·python
qq_3561969511 分钟前
day37简单的神经网络@浙大疏锦行
python