时间复杂度:
1,时间频度(Tn):不能计算需上机测试,一个算法中语句执行次数称为语句频度或时间频度。一个算法花费时间与算法中语句执行次数成正比。
2,时间复杂度0((fn)):当问题规模(n)不断变化,时间频度T(n)也不断变化.而时间复杂度是描述他们之间关系的函数.
3, 常见的复杂度:常数阶0(1),对数阶(log2^n),线性阶0(n),线性对数阶0(nlog2^n),平方阶0(n^2),立方阶0(n^3),K次方阶0(n^k),指数阶0(2^n).随着问题规模的不断增大,算法执行效率越低.
4,最坏的时间复杂度和平均时间复杂度:
1,最坏情况下的时间复杂度称为最坏的时间复杂度.(讨论的时间复杂度均是最坏的情况下的时间复杂度,原因是最坏的情况下的时间复杂度是算法在任何输入实例上运行时间的上界,保证算法运行时间不会比任何更长,在最坏情况下时间复杂度T(n)=0(n)表示任何输入实例,算法运行时间不可能大于0(n));
2,平均时间复杂度:指的是所有可能输入实例均以等概率出现下的算法运行时间
空间复杂度
1,一个程序的空间复杂度指运行完一个程序所需内存大小,一个程序执行除了需要存储空间与存储本身所使用本身所使用,常数,变量和输入数据外,还需要一些对数据进行操作工作单元和存储一些为现实计算所需信息;
辅助空间
1,固定部分:与输入/输出数据的个数多少,数值无关,主要包含指令空间(代码空间),数据空间(常量,简单变量等)所占的空间,这部分是静态空间,
2,可变空间:这部分空间主要包括动态分配空间,以及递归栈所需空间,一个算法所需空间用f(n)表示,S(n)-0(f(n)).n是问题规模,S(n)表空间复杂度;