数据结构:一组数据的存储结构 算法:一组操作数据的方法
时间复杂度:时间复杂度不表示具体的代码执行时间,而是表示代码执行时间随随数据规模增长的变化趋势,而公式中的常数、系数、低阶并不能左右变化趋势,因此可以忽略不计,只需要记录最大量级就可以了。
时间复杂度分类
- 多项式复杂度:
- 常量级O(1):一般情况下,代码中不出现循环、递归
- 对数级O(logn)
- 线性级O(n)
- 线性对数级O(nlogn)
- 平方级O(n)
- 非多项复杂度(复杂度随n增大会急剧增大,因此非常低效)
- 指数级O(2)
- 阶乘级O(n!)
空间复杂度:算法的存储空间随数据规模增长的变化趋势。
空间复杂度分类:
- O(1)
- O(n)
- O(n)
复杂度分析:
- 最好情况时间复杂度
- 最坏情况时间复杂度
- 平均情况时间复杂度:加权时间复杂度
- 均摊时间复杂度:特殊的平均复杂度情况(ps:不是很理解)
