数据分析学习总结笔记11:空间复杂度和时间复杂度

文章目录

  • 1 算法与程序
  • 2 算法复杂度概述
  • 3 时间复杂度
    • 3.1 时间复杂度记号O
    • 3.2 时间复杂度的计算
    • 3.3 时间复杂度的类别
    • 3.4 时间复杂度分析实例
  • 4 空间复杂度
  • 5 O(1), O(n), O(logn), O(nlogn) 的区别

本文较简略,具体可参照: 算法的时间复杂度和空间复杂度-总结

1 算法与程序

(1)算法:是解决问题的方法或过程,严格的讲是满足下述性质的指令序列:

  • 输入:有零个或多个外部量作为算法的输入;
  • 输出:算法产生至少一个量作为输出;
  • 确定性:组成算法的每条指令清晰、无歧义;
  • 有限性:算法中每条指令的执行次数有限,执行每条指令的时间也有限。
  • 可行性。

(2)程序:是算法用某种程序设计语言的具体实现。程序可以不满足算法的有限性。

(3)问题求解周期:问题简化、模型构建、算法设计、程序升级和测试等过程。(抽象→建模→算法→实现→验证)。

2 算法复杂度概述

算法复杂度是算法运行所需要的计算机资源的量,需要时间资源的量称为时间复杂度,需要的空间资源的量称为空间复杂度。

  • 时间复杂度和空间复杂度是只依赖于算法求解的问题规模算法输入的函数。
  • N、I分别表示算法求解的问题规模和算法输入,则算法的时间复杂度T和空间复杂度S可以分别表示为:T=T(N,I), S=S(N,I)。
    数据分析学习总结笔记11:空间复杂度和时间复杂度_第1张图片

3 时间复杂度

影响算法执行时间的相关因素:
(1)算法选用的策略
(2)问题规模
(3)编写程序的语言
(4)编译程序产生的机器代码的质量
(5)计算机执行指令的速度

时间复杂度不应该是在特定计算机上求解某一个输入实例所需要的运行时间;而应该是一个不依赖于计算机配置、问题规模和输入实例的抽象表示。
数据分析学习总结笔记11:空间复杂度和时间复杂度_第2张图片
数据分析学习总结笔记11:空间复杂度和时间复杂度_第3张图片
数据分析学习总结笔记11:空间复杂度和时间复杂度_第4张图片

3.1 时间复杂度记号O

数据分析学习总结笔记11:空间复杂度和时间复杂度_第5张图片

3.2 时间复杂度的计算

数据分析学习总结笔记11:空间复杂度和时间复杂度_第6张图片

# O(1)
print('Hello World')
print('Hello Algorithm')
 
# O(n)
for i in range(n):  
    print('Hello world')
 
# O(n^2)
for i in range(n):  
    for j in range(n):
        print('Hello world')
 
# O(n^2) 
for i in range(n):  
    print('Hello World')
    for j in range(n):
        print('Hello World')
 
# O(n^2)
for i in range(n):  
    for j in range(i):
        print('Hello World')
 
# O(n^3)
for i in range(n):
    for j in range(n):
        for k in range(n):
            print('Hello World')  

几次循环就是n的几次方的时间复杂度
如果是循环减半的过程,时间复杂度为O(logn)或O(log2n)
常见的时间复杂度高低排序:O(1)

3.3 时间复杂度的类别

数据分析学习总结笔记11:空间复杂度和时间复杂度_第7张图片
数据分析学习总结笔记11:空间复杂度和时间复杂度_第8张图片

3.4 时间复杂度分析实例

(1)非递归算法
数据分析学习总结笔记11:空间复杂度和时间复杂度_第9张图片
数据分析学习总结笔记11:空间复杂度和时间复杂度_第10张图片
数据分析学习总结笔记11:空间复杂度和时间复杂度_第11张图片
数据分析学习总结笔记11:空间复杂度和时间复杂度_第12张图片
数据分析学习总结笔记11:空间复杂度和时间复杂度_第13张图片
数据分析学习总结笔记11:空间复杂度和时间复杂度_第14张图片
(2)递归算法
数据分析学习总结笔记11:空间复杂度和时间复杂度_第15张图片
数据分析学习总结笔记11:空间复杂度和时间复杂度_第16张图片
数据分析学习总结笔记11:空间复杂度和时间复杂度_第17张图片

4 空间复杂度

空间复杂度一般不做太多计算。

定义一个或多个变量,空间复杂度都是为1,列表的空间复杂度为列表的长度

数据分析学习总结笔记11:空间复杂度和时间复杂度_第18张图片

5 O(1), O(n), O(logn), O(nlogn) 的区别

参照该博客:O(1), O(n), O(logn), O(nlogn) 的区别

你可能感兴趣的:(数据分析学习总结笔记)