最坏情况与平均情况

情景:早上出门,发现忘带手机,最好情况是手机在门口的台子上,最坏情况是找了很久很久才找到,平均情况是找了一会就找到了。

算法分析:

在一个有n个数字的数组中查找某个数字

最好情况:第一个数字就是要查找的,则算法时间复杂度O(1)

最坏情况:最后一个是数字是要查找的,则算法时间复杂度O(n)

平均情况:从概率角度看,要查找的数字在每个位置的可能性是相同的,平均查找时间为n/2,算法时间复杂度O(n)

最坏情况

(1)定义一类输入,在这类输入下,算法表现出了最坏的运行性能。这类输入的共同性质阻止了算法高效地运行,而不只是针对特定的输入。

(2)计算最坏情况的时间复杂度

(3)一种保证,保证运行时间不会更坏了。

(4)是最重要的需求,通常提到的运行时间都是最坏情况的运行时间。

(5)对实时性要求非常高的情况,必须分析最坏情况。

比如,汽车防抱死系统,差10毫秒就是人命关天,时间就是生命。

这种情况必须把最坏情况的复杂度控制在某个阈值之下,平均复杂度处于次要位置。

平均情况:

(1)平均情况是表示算法在随机给定的数据上期望的执行情况。通俗地说,一些输入可能会在某些特殊情况下耗费程序大量的时间,但是大部分的输入并不会这样。这个衡量标准描述了用户对算法性能的期望。

(2)计算所有情况的平均值

(3)期望的运行时间,是所有情况中最有意义的。

(4)现实中平均运行时间很难通过分析得到,一般是通过运行一定数量的实验数据后估算出来的。

(5)对实时性没有要求的情况,分析平均情况即可。

比如,在实验室用某个算法分析1千万条数据,我们关心的是总共花多少时间,所以只需要知道算法的平均时间复杂度就够了。

最好情况:

定义一类输入,算法在这类输入下表现出了最好的运行性能。对于这类输入来说,算法只进行很少的计算。不过在实际情况下,最好情况很少出现。

你可能感兴趣的:(最坏情况与平均情况)