数据结构算法--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
相关推荐
深蓝海拓4 分钟前
PySide6从0开始学习的笔记(二十六) 重写Qt窗口对象的事件(QEvent)处理方法
笔记·python·qt·学习·pyqt
纠结哥_Shrek4 分钟前
外贸选品工程师的工作流程和方法论
python·机器学习
小汤圆不甜不要钱6 分钟前
「Datawhale」RAG技术全栈指南 Task 5
python·llm·rag
故以往之不谏14 分钟前
函数--值传递
开发语言·数据结构·c++·算法·学习方法
渐暖°23 分钟前
【leetcode算法从入门到精通】5. 最长回文子串
vscode·算法·leetcode
今天_也很困23 分钟前
LeetCode热题100-560. 和为 K 的子数组
java·算法·leetcode
v_for_van36 分钟前
力扣刷题记录2(无算法背景,纯C语言)
c语言·算法·leetcode
A懿轩A41 分钟前
【Java 基础编程】Java 变量与八大基本数据类型详解:从声明到类型转换,零基础也能看懂
java·开发语言·python
2301_8112329842 分钟前
低延迟系统C++优化
开发语言·c++·算法