概述
量化一个算法的时间和空间
内存空间
- 栈空间(Stack Space)
- 概念:操作系统开辟出的一个固定大小的空间,该空间不大,专门用来进行函数调用和递归等操作
- 栈溢出(Stack Overflow):程序开辟过多内存,超过固定空间
- 包含
- 函数参数与返回值
- 函数的局部变量
- 堆空间(Heap Space)
- 概念:保存的是具体信息(如对象,在Java中堆内存空间的开辟由new完成)
- 二者的联系
- 栈空间保存的是一块堆内存地址,即 栈内存 -> 堆内存 -> object
时间复杂度
-
基本可以确定是二分法
-
运算举例
-
多项式(Polynomial):一般在底数位置,不在幂次项
- / /
- /
- /
-
非多项式(Nondeterministic Polynomial)
- / /
-
小o:最好复杂度
-
大O:最坏复杂度
-
只考虑最高项
-
不考虑常数项和系数
-
T函数推导
- T: Time Complexity
- n: 问题规模(比如数组大小)
- T(n): 求处理问题规模为n的数据的时间复杂度是多少?
- 推到方法:不断展开的方法
空间复杂度
-
一般指额外空间复杂度,即不包含输入输出
编程复杂度
-
看得懂
思维复杂度
-
想得出