数据结构算法--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
相关推荐
lxh01132 分钟前
二叉树中的最大路径和
前端·算法·js
萌>__<新3 分钟前
力扣打卡每日一题————零钱兑换
算法·leetcode·职场和发展
重生之后端学习4 分钟前
238. 除自身以外数组的乘积
java·数据结构·算法·leetcode·职场和发展·哈希算法
qq_229058016 分钟前
运行djando项目 配置启动类 label_studio包含前后端启动方法
python·django
qq_2515335912 分钟前
查找 Python 中对象使用的内存量
开发语言·windows·python
yaoxin52112316 分钟前
269. Java Stream API - Map-Filter-Reduce算法模型
java·python·算法
Bruce_kaizy38 分钟前
C++树形数据结构————树状数组、线段树中“逆序对”的问题
开发语言·数据结构·c++
梨落秋霜42 分钟前
Python入门篇【函数】
开发语言·python
FMRbpm44 分钟前
用栈实现队列
数据结构·c++·新手入门
电饭叔1 小时前
利用类来计算点是不是在园内《python语言程序设计》2018版--第8章18题第3部分
开发语言·python