数据结构与算法(1)——时间和空间复杂度

简介: 时间和空间复杂度该系列参考b站up视频:https://space.bilibili.com/31337561/channel/seriesdetail?sid=389852后续会继续更新

时间复杂度

算法的执行效率,算法执行时间与算法输入值之间的关系

def test(num):
    total=0
    for i in range(num):
        total+=i
    return total
# 大O表示法中不关心系数和两个小的时间复杂度。
# 该算法的时间复杂度为O(N)

一般看时间复杂度查看算法中有没有for/while循环 无循环一般都为O(1)

# 案例分析
# O(1)
def O1(num):
    i = num
    j = num*2
    return i+j
# O(logN)
def OlogN(num):
    i=1
    while(i<num):
        i=i*2
    return i
# O(N)
def ON(num):
    total=0
    for i in range(num):
        total+=i
    return total
# O(M+N) 两个循环并列
def OMN(num1,num2):
    total=0
    for i in range(num1):
        total+=i
    for j in range(num2):
        total+=j
    return total
# O(NlogN)
def ONlogN(num1,num2):
    total=0
    j=0
    for i in range(num1):#N
        while(j<num2):#logN
            total+=i+j
            j=j*2
    return total
# O(N^2)
def ON2(num):
    total=0
    for i in range(num):
        for j in range(num):
            total+=i+j
    return total

整体思路:先看有没有循环,没有循环就是O(1)

写程序时候力求时间复杂度最低

img

O(1)<O(logN)<O(N)<O(NlogN)<O(N^2)<O(2^N)<O(N!)

二分查找:O(logN),排序:O(NlogN)


算法的空间复杂度

大O表示法

算法存储空间与输入值之间的关系

def test(num):
    total=0        #变量占空间了,空间复杂度O(1)
    for i in range(num):
        total+=i
    return total
# 空间复杂度O(1) 一个int型占四个字节,一直不变的

def test(nums):
    array=[]    #声明了列表变量
    for num in nums:
        array.append(num)
    return array
#空间复杂度O(N)

占空间的都是声明的变量,1.看空间复杂度直接找变量

变量如果是常量,就是O(1),里面有多个数据,随着输入改变变化时候,就是O(N),eg:array list等等。

常用空间复杂度O(1),O(N)

很少有O(N^2)

2.看有无递归,每一层信息都保留在递归栈,递归一般都有空间复杂度O(N)


总结:时间复杂度和空间复杂度只能二选一,鱼和熊掌不可兼得。可以写出两种不同的程序,工作时候时间复杂度>空间复杂度

相关文章
|
8天前
|
机器学习/深度学习 存储 缓存
数据结构从入门到精通——算法的时间复杂度和空间复杂度
算法的时间复杂度和空间复杂度是评估算法性能的两个重要指标。时间复杂度主要关注算法执行过程中所需的时间随输入规模的变化情况,而空间复杂度则关注算法执行过程中所需的最大存储空间或内存空间。
92 0
|
8天前
|
存储 算法
数据结构——lesson1时间复杂度和空间复杂度
数据结构——lesson1时间复杂度和空间复杂度
|
8天前
|
存储 算法
算法空间复杂度详解
算法空间复杂度详解
38 0
|
1天前
|
机器学习/深度学习 算法 存储
[数据结构]——算法的时间复杂度和空间复杂度
[数据结构]——算法的时间复杂度和空间复杂度
|
8天前
|
存储 算法
算法的时间复杂度和空间复杂度
算法的时间复杂度和空间复杂度
|
8天前
|
算法
数据结构:2、空间复杂度
数据结构:2、空间复杂度
11 0
|
8天前
|
存储 算法
算法的时间复杂度和空间复杂度
算法的时间复杂度和空间复杂度
|
8天前
|
机器学习/深度学习 算法
算法的时间复杂度及空间复杂度
算法的时间复杂度及空间复杂度
11 0
|
8天前
|
机器学习/深度学习 存储 算法
初阶数据结构之---导论,算法时间复杂度和空间复杂度(C语言)
初阶数据结构之---导论,算法时间复杂度和空间复杂度(C语言)
|
8天前
|
存储 算法
数据结构第二弹---空间复杂度
数据结构第二弹---空间复杂度