图解算法数据结构一 - 算法复杂度

算法复杂度

1. 算法复杂度旨在输入数据量N的情况下, 算法的时间和空间使用情况, 体现算法运行使用的时间和空间随数据大小N而增大的速度。 

算法复杂度主要可以从时间,空间两个角度评价:

  • 时间: 假设各操作的运行时间为固定常数, 统计算法运行的计算操作的数量, 以代表算法运行所需时间
  • 空间: 统计在最差情况下, 算法运行所需使用的最大空

2. 时间复杂度

根据输入数据的特点, 时间复杂度具有最差, 平均, 最佳三种情况:

for num in nums:
         if num == 7:
             return True
     return False

最佳情况: 数组首数字为7, 无论nums 有多少元素, 线性查找的循环次数都为1次。 

最差情况: nums中所有数字不为7, 此时线性查找会遍历这个数组, 循环N次

平均情况:需要考虑输入数据的分布情况,计算所有数据下的平均时间复杂度。 

3. 常见的时间复杂度

根据从小到大排列, O(1) < O(logN) < O(N) < O(NlogN) < O(N2) < O(2N) < O(N!)

 4. 空间复杂度

空间复杂度涉及的空间类型有:

  • 输入空间: 存储输入数据所需的空间大小
  • 暂存空间: 算法运行过程中, 存储所有中间变量和对象等数据所需的空间大小
  • 输出空间: 算法运行返回时, 存储输出数据所需的空间大小

6. 常见的空间复杂度

根据从小到大排列, O(1) < O(logN) < O(N)  < O(N2) < O(2N

 

posted @ 2023-07-10 17:30  球球小世界  阅读(93)  评论(0编辑  收藏  举报