算法的定义
- 一个有限的指令集
- 接受一些输入(有时不需要输入)
- 产生输出
- 在有限步骤之后终止
算法的复杂度分析
n表示输入规模
空间复杂度S(n):
根据算法写成的程序在执行时占用存储单元的长度。这个长度与输入数据的规模有关,空间复杂度过高的算法可能导致内存溢出。
时间复杂度T(n):
根据算法写成的程序在执行时耗费时间的长度。这个长度与输入数据的规模有关,时间复杂度过高的算法可能导致长时间无法得到输出。
算法的复杂度,可以理解为一个关于输入规模的函数,当输入规模增大时,所需的时间和空间以一种怎样的关系增长。是成指数增长或是成对数增长或是成线性增长等等。。。
增长数量级
描述 | 数量级 | 说明 | 举例 |
常数级 | 1 | 普通语句 | |
对数级 | ㏒N | 二分策略 | |
线性级 | N | 循环 | |
线性对数级 | N㏒N | 分治 | |
平方级 | N² | 双层循环 | |
立方级 | N³ | 三层循环 | |
指数级 | 2^N | 穷举查找 | |
阶乘级 | N! |