算法复杂度总结:
复杂度:一般分为时间复杂度和空间复杂度。
算法花费时间与算法中语句的执行次数成正比,一个算法的执行次数称为时间频度(T(n))
时间复杂度:T(n)(时间频度)/f(n)(辅助函数)在n->无穷时的值为一个不等于0的常数,则称f(n)是T(n)的同数量级函数,记作T(n)=O(f(n)),称O(f(n))为算法是(渐进)时间复杂度。即为最高阶的n 的函数,T(n)=n^2+3n+4和T(n)=4n^2+2n+1的时间复杂度都为O(n^2)。
常见时间复杂度递增排列:
O(1)< O(log2n)< O(n)< O(nlog2n)<O(n^2)< O(n^2)< O(n^k)< O(2^n)
空间复杂度是指运行完一个程序所需内存的大小。程序执行时所需存储空间包括两部分:
固定部分:这部分空间的大小与输入输出数据的多少、数值无关。主要包括指令空间(代码空间)、数据空间(常量、简单变量)等所占的空间。属于静态空间
可变空间:这部分空间主要包括动态分配的空间以及递归栈所需的空间。这部分空间的大小与算法有关。