一、数据结构概述
- 题号:57~65
- 分值:9分
- 内容:数据结构(大头)+算法
二、时间、空间复杂度
2-1、时间复杂度
算法的时间复杂度以算法中基本操作的执行次数为度量。用大O表示法。
2-1-1、常见的时间复杂度
示例:
T(n) = (2n + 3) * (3*n*n + 4)
= n * n^2
=O(n^3)
示例1:
示例2:
示例3:
示例4:
示例5:
示例6:
2-1-2、时间复杂度分类
- 最好时间复杂度
- 平均时间复杂度
- 最坏时间复杂度
2-2、空间复杂度
执行算法时所使用的临时变量所占用内存空间的大小,同时间复杂度一样,用大O表示法。
目的:用于判断算法的优劣。
(在时间复杂度相同的情况下,空间复杂度越小越好)
2-2-1、常见的空间复杂度种类
示例1:
常数空间:O(1)
示例2:一维数组
线性空间:O(n)
示例3:二维数组
二维空间:O(n^2)
2-3、真题
真题1:
真题2:
真题3:
真题4:
三、渐进符号
示例:
示例:
示例:
真题:
四、递归式
示例:阶层的算法
递归就是自己调用自己。
4-1、递归的时间复杂度
递归算法的时间复杂度:递归总次数 * 每次递归中基本操作所执行的次数;
递归算法的空间复杂度:递归深度N * 每次递归所要的辅助空间;
如果每次递归所需的辅助空间是常数,则递归的空间复杂度是 O(N).
示例:
n/2 = 1的时候,退出递归,设递归次数是x,则n / (2^x) = 1
4-2、主观法 (主定理)
4-2-1、真题
真题1:
等差数列
真题2:
真题3:
真题4:
真题5:
问题规模增加了16倍,即设n=16,所以,16^2 = 256
真题6: