数据结构算法--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
相关推荐
费弗里3 分钟前
一个小技巧轻松提升Dash应用debug效率
python·dash
小小测试开发5 分钟前
Python浮点型常用方法全解析:从基础到实战
python
jiaguangqingpanda8 分钟前
Day24-20260120
java·开发语言·数据结构
52Hz11814 分钟前
力扣24.两两交换链表中的节点、25.K个一组反转链表
算法·leetcode·链表
老鼠只爱大米17 分钟前
LeetCode经典算法面试题 #160:相交链表(双指针法、长度差法等多种方法详细解析)
算法·leetcode·链表·双指针·相交链表·长度差法
ValhallaCoder21 分钟前
Day53-图论
数据结构·python·算法·图论
老鼠只爱大米25 分钟前
LeetCode经典算法面试题 #84:柱状图中最大的矩形(单调栈、分治法等四种方法详细解析)
算法·leetcode·动态规划·单调栈·分治法·柱状图最大矩形
C雨后彩虹36 分钟前
羊、狼、农夫过河
java·数据结构·算法·华为·面试
Elastic 中国社区官方博客1 小时前
使用瑞士风格哈希表实现更快的 ES|QL 统计
大数据·数据结构·sql·elasticsearch·搜索引擎·全文检索·散列表
lpfasd1231 小时前
PyGithub用法详解
git·python·github