无论我们看别人的代码,还是自己写代码,都需要评估算法复杂度,以此达到对算法更好的理解
那么如何评估一个算法的性能?
我们用大O表示法来评估一个算法的复杂度。
算法复杂度分为时间复杂度和空间复杂度。我们通常会牺牲空间复杂度来降低时间复杂度。所以这里我们只讨论时间复杂度。
什么是大O表示法?
时间复杂度是对一个算法运行时间长短量度,用大O表示,记作T(n)=O(f(n)).
例如一个程序执行f(n)=n次,那么用大O表示,即为O(n)。
一个程序执行f(n)=2n次,那么用大O表示,仍为O(n),忽略掉常数2,因为n和2n是同一级别的。
一个程序执行f(n)=n2+n次,那么用大O表示,即为为O(n2),忽略掉n,因为n比n2的级别低,可以忽略。
常见的时间复杂度按照从低到高的顺序,包括O(1),O(log n),O(n),O(nlog n),O(n2)