首先,有些人可能会问:平时我在写程序的时候根本就不关心这个,为什么要注意算法的复杂度呀?首先的话,我想告诉你,如果你不关心算法的复杂度的话,这是一件非常危险的事情,至少说它是一件相对来说比较业余的事情。为什么这么说呢?这就比如你在沙哈拉沙漠里迷路了,你就必须知道你的水壶里还有多少水(当然如果你没带水壶的话,这就不好说了,哈哈)。
首先,算法的复杂度包括时间复杂度和空间复杂度。要检验一个算法最简单的方法就是让程序运行一遍,它所消耗的时间自然也就知道了,但是不妙的是,由于不同的电脑有不同的运行环境,自然同一个程序在不同的电脑上运行的时间就会有差别,当两台电脑的运行环境差别太大时,这种方法所得结果就不可信了。况且我们在写算法的时候,根本就没办法把完整的代码运行。所以呢,我们就引入了时间复杂度。由于这种方法用大O来表示,因此,我们通常称之为【大O号表示法】,这时,时间复杂度T(n)=O(f(n)).常见的时间复杂度根据不同的级别可以分为以下几种:
常数阶O(1),如下图所示:
由名称可知,算法的时间不会因为变量的增加而增加,这样的代码再长,也可以用O(1)来表示,当然O(2)