- 时间复杂度简介:
-
相信大多数人判断一个算法的好坏就是比较算法的执行时间,即经过多长的时间可以运算出结果。其实这并不是正确的。如果对于解决一个问题有2种算法,算法1的执行时间小于算法2,这并不能代表算法1优于算法2。假设执行算法1的计算机性能和环境都低于执行算法2的计算机的性能和环境,那么算法1可能执行的时间会更长。所以可以看出仅仅根据执行时间来衡量算法的优劣不一定是正确的。
-
算法的衡量标准应该是以时间复杂度来进行衡量。 时间复杂度:就是运算所经历的步骤。
-
用比较官方的话说就是(摘自百度百科):计算机科学中,算法的时间复杂度是一个函数,它定性描述了该算法的运行时间。这是一个关于代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,它考察当输入值大小趋近无穷时的情况。
- 时间复杂度的分类:
- 最优时间复杂度:完成运算最少需要多少步骤。(最乐观的情况,我们一般不考虑)
- 最坏时间复杂度:完成运算最多需要多少步骤。(在实际中,都是关注最坏时间复杂度。)
- 平均时间复杂度:完成运算平均需要多少步骤。(平均时间复杂度的意义也不大)
3.时间复杂度的几条基本计算规则:
- 基本操作,即只有常数项,认为其时间复杂度为O(1)
- 顺序结构,时间复杂度按加法进行计算
- 循环结构,时间复杂度按乘法进行计算
- 分支结构,时间复杂度取最大值
- 判断一个算法的效率时,往往只需要关注操作数量的最高次项,其它次要项和常数项可以忽略
- 在没有特殊说明时,我们所分析的算法的时间复杂度都是指最坏时间复杂度