算法分析即指对一个算法所需要的资源进行预测,内存,通信带宽或计算机硬件等资源偶尔是我们主要关心的,一个算法所需要的资源越多,该算法的复杂性越高,反之,所需要的资源越少,该算法的复杂性越低,在计算机的资源中,最重要的是时间和空间(即存储器)资源,因此算法复杂性有时间复杂性和空间复杂性之分,不言而喻,在对给定问题设计算法时,设计出复杂性尽可能低的算法是设计算法时追求的目标,如果给的问题已有多种算法时,选择复杂性最低者,是在选用算法时遵循的重要准则,更确切的说,算法的复杂性是算法运行时所需要的计算机资源的量,需要时间资源称为时间复杂性,需要的空间资源称为空间复杂性,如果分别用N,I,A,表示算法要解问题的规模,算法的输入和算法本身的函数,而且用C表示复杂性,那么应该有C=F(N,I,A)。其中F(N,I,A)是N,I,A的确定的三元函数,如果把时间复杂性和空间复杂性分开,并分别用T和S来表示,那么应该有T=T(N,I,A),S=S(N,I,A)。通常让A隐含在复杂性函数名当中,因而将T和S分别简写为T=T(N,I),S=S(N,I)。
由于时间复杂性与空间复杂性概念相同,计量方法相似,且空间复杂性的分析相对简单,所以现在主要讨论时间复杂性。
复杂性分析的常用符号:若存在两个正常数c,n0,对于任意n>n0,都有|T(n)|<=c|F(n)|,则称,T(n)集合在集合O(F(n))中。记作T(n)=O(F(n))ÿ