时间复杂度和空间复杂度分析——数据结构与算法学习
时间复杂度与空间复杂度
时间复杂度
首先我们要明确时间频度的概念。算法中语句执行次数被称为时间频度
当时间无穷大时,有几个步骤可以忽略:
- 算式中的常数可以直接忽略
- 低次项可以被直接忽略
- 最高项系数可以被忽略
常用的时间复杂度
- 常数阶O(1)
- 对数阶O(log2n)
- 线性阶O(n)
- 线性对数阶 O(nlog2n)
- 平方阶 O(n^2)
- 立方阶 O(n^3)
- k 次方阶 O(n^k)
- 指数阶 O(2^n)
空间复杂度
空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度;
2:一个算法在计算机上占用的内存包括:程序代码所占用的空间,输入输出数据所占用的空间,辅助变量所占用的空间这三个方面,程序代码所占用的空间取决于算法本身的长短,输入输出数据所占用的空间取决于要解决的问题,是通过参数表调用函数传递而来,只有辅助变量是算法运行过程中临时占用的存储空间,与空间复杂度相关;
3:通常来说,只要算法不涉及到动态分配的空间,以及递归、栈所需的空间,空间复杂度通常为0(1);