数据结构算法--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
相关推荐
写代码的【黑咖啡】15 小时前
深入了解 Python 中的 Seaborn:优雅的数据可视化利器
开发语言·python·信息可视化
爱编程的小吴15 小时前
【力扣练习题】热题100道【哈希】189. 轮转数组
算法·leetcode·哈希算法
wjykp15 小时前
105~108SVMf
算法
matlabgoodboy15 小时前
matlab代编程序机器学习通信仿真python神经网络图像处理优化算法
python·机器学习·matlab
qq74223498415 小时前
大模型技术全景与核心概念解析:从基础原理到AI智能体架构
人工智能·python·架构
qq_139484288215 小时前
python基于大数据技术的酒店消费数据分析系统
大数据·python·scrapy·django·flask
星火开发设计15 小时前
栈的深度解析与C++实现
开发语言·数据结构·c++·学习·知识
逆境清醒15 小时前
Python 的数字类型(整数、浮点数、复数、布尔类型、类型转换、数值运算、判断类型)
python
leoufung15 小时前
LeetCode 322. Coin Change:从错误思路到正确一维 DP
算法·leetcode·职场和发展
旧梦吟15 小时前
脚本网页 双子星棋
算法·flask·游戏引擎·css3·html5