每个程序解决问题时都可能有不同的实现方法,也就是我们常说的算法,而不同的算法对计算机资源的占用都不一样,因此我们常用算法复杂度来衡量一个算法是否好的算法。
算法复杂度是对程序计算机资源占的度量,这些资源主要包括时间资源和内存资源,因此算法复杂度又分为时间复杂度(时间资源的度量)和空间复杂度(内存资源的度量)。
一、时间复杂度(Time Complexity)算法的时间复杂度简单来说就是一个函数,它定性描述了该算法的运行时间。
我们知道一个程序的运行就是计算机内部的指令的执行,而每条指令执行的时间即指令周期大致相同,上升到程序中或者说算法上来,可以理解为每条语句执行的时间大致相同,所以只要计算出算法中基本语句的执行次数就能定性地对时间复杂度进行度量。我们一般将执行次数的总和记为函数f(n),n是指问题的规模。
例如下面的算法:
for(i=1; i<=n; ++i) { for(j=1; j<=n; ++j)//规模为n { c[i][j] = 0;//基本操作① for(k=1; k<=n; ++k) c[i][j] += a[i][k] * b[k][j];//基本操作② } }