在上一篇文章里,有看到一个简单算法题的2个解法,我们运用了复杂度分析来判断哪个解法更合适。
这里的复杂度,就是用于衡量程序的运行效率的重要度量因素。
虽然有句俗话“不管是白猫还是黑猫,抓到老鼠就是好猫”,这句话是站在结果导向的,没错。但是如果
有个程序要去处理海量数据,一个程序员写的要执行2天,而另一个程序员只要半小时,那么第二种显然更适合我们的实际需求。
一、什么是复杂度
复杂度是一个关于输入数据量n的函数。
要表示复杂度很简单,用大写O
加上括号O()
将复杂度包起来就好了。比如这个代码的复杂度是f(n)
,那就可以写成O(f(n))
。
在计算复杂度的时候,有三点需要我们记住:
- 复杂度与具体常系数无关
- 多项式级复杂度相加,选择高者为结果
O(1)
表示特殊复杂度
1、复杂度与具体常系数无关
举个例子,将一个列表反转,不用reverse()
。
def demo_1():
a = [1, 2, 3, 4, 5]
b = [0 fo