【算法设计与分析】算法时间复杂度计算方法、算法时间复杂度的表示方法
1、算法的复杂性分析
算法复杂性是算法运行所需的计算机资源量。
需要的时间资源的量称为时间复杂性,T=T(N,I).
需要的空间资源的量称为空间复杂性,S=S(N,I).
N代表问题的规模,I代表输入(实例)。
时间复杂性是输入为I时的跟规模n相关的算法运行时间增长率。
空间复杂性是输入为I时的跟规模n相关的算法辅助空间增长率。
时间复杂性不是一个时间概念,而是一个时间增长率的概念,空间复杂性同理。
算法复杂性分析的意义:
(1)判断算法的能行性。即:判断算法可行不可行。
(2)比较算法的优劣。
2、时间复杂性分析方法
最坏情况下的时间复杂性即:在所有实例中,找花费时间最长的示例,以它的时间为准作为最坏情况下它的时间复杂性。
最好情况下的时间复杂性即:在所有实例中,找花费时间最少的示例,以它的时间为准作为最好情况下它的时间复杂性。
平均情况下的时间复杂性即:每个示例花费的时间和它这个示例发生的概率乘积的和。
一般情况下,我们讨论算法在最坏的情况下的时间复杂性。最好情况下的时间复杂性是在特例下发生的,意义不大。
如果能保证在最坏情况下的时间复杂性是理想的,算法是能行的,对于问题的解决才有意义。
算法时间复杂性分析分为两类:
(1)非递归算法的时间复杂性分析。
(2)递归算法的时间复杂性分析。
这两种类型的分析方法有所不同。