目录
算法特征
- 有穷性:有限步之后不会出现无限循环
- 确定性:不存在二义性
- 可行性:能实现的算法
- 输入:能被计算机处理的各种类型数据,如数字、音频、图像等
- 输出:一至多个程序输出结果
时间复杂度
用来衡量算法随着问题规模增大,算法执行时间增长的快慢。
定义:语句总的执行次数T(n)是关于问题n的函数,进而分析T(n)随n变化情况,从而确定T(n)的数量级。
算法的时间量度(算法复杂度):T(n)=O( f(n) ); 它表示随问题规模n的增大,算法执行时间的增长率和 f (n)的增长率相同。
计算方法:取算法时间增长最快的那个函数项,把他的系数改为1【执行次数=时间】
常用时间复杂度大小关系:从左至右,时间性能依次降低
O(1)< O(log n)< O(n)< O(nlog n)< O(n*n)< O(n*n*n)< O(2^n)
空间复杂度
用来衡量算法随着问题规模增大,算法所需空间增长的快慢。
S(n)指算法运行过程中所使用的辅助空间的大小。
辅助空间:除了存储算法本身的指令、常数、变量和输入数据外,还需要存储对数据操作的存储单元。
算法原地工作是指算法所需的辅助空间是常量,即O(1)。
主要分析其问题规模函数 S(n)的数量级。 S(n)= O(g(n))