-
数据结构就是指一组数据的存储结构
算法就是操作数据的一组方法。
两者相辅相成,算法是为数据结构服务的。
其中复杂度是数据结构与算法中最重要的概念 -
复杂度也叫渐进式复杂度,通常用大O来表示分为时间复杂度与空间复杂度,用来分析算法的执行效率与数据规模的增长关系。
-
分析复杂度的时候,低阶(n)、常量、系数三部分可以忽略
-
一般计算复杂度,说的都是最坏的那种
-
有最好、最坏、平均、均摊时间复杂度
时间复杂度也叫渐进式时间复杂度,用来表示算法的执行时间与数据规模之间的增长关系。
常见的时间复杂度如下,从上到下执行的世界也会越来越长。
- 量级:
- 常量阶 O(1)
- 对数阶 O(logn)
- 线性阶 O(n)
- 线性对数阶 O(nlogn)
- 平方阶 O(n^2)
- 指数阶 O(2^n)
- 阶乘阶 O(n!)
- 空间复杂度也叫渐进式空间复杂度,用来表示算法的存储空间与数据规模之间的增长关系。
常见的空间复杂度如下,从上到下执行的存储空间也会越来越多。
-
量级:
- 常量阶 O(1)
- 线性阶 O(n)
- 平方阶 O(n^2)
-
分析复杂度
- 只关注循环执行次数最多的一段代码
- 总复杂度等于量级最大的那段代码的复杂度
- 嵌套代码的复杂度等于嵌套内外代码复杂度的乘积