普林斯顿公开课 算法1-5:算法理论

时间:2014-06-01 15:57:46   收藏:0   阅读:220

本节主要讲解的是算法的复杂度。


算法性能


算法的性能分为三种:


以二分查找为例


最佳情况是1,因为第一次就有可能找到需要找的整数。

最差情况是logN

平均情况是logN


算法复杂度


算法复杂度用于定义问题的难度,另外也有助于开发最优化的算法,算法复杂度可以通过分析最坏情况来减少输入数据对算法性能的影响。


为了简化问题难度的表示方法,算法复杂度减少了算法分析的细节,忽略常数系数。


最优算法


所谓的最佳算法就是在任何情况下都能保证运行时间在理论范围内,而且没有更好的算法能够超越。


算法复杂度表示方法


常见的表示方法有比如O(N^2)表示算法最大可能的复杂度,Ω(N^2)表示最小可能的复杂度,Θ(N^2)表示算法复杂度的增长情况。


举例


问题描述:判断一个数组中有多少个0。

以暴力方法为例。

这个问题中性能上限就是指某个特定的算法能实现的复杂度。

算法下限就是经过数学方法的证明,最优算法的复杂度是Ω(N)。因为数组中每个元素都有可能是0,必须要循环整个数组才能得出结果。

最优算法:这个问题中暴力算法就是最优算法,所以最优算法的复杂度为Θ(N^2)。


算法的开发步骤


  1. 开发一个算法

  2. 证明最低下限


如果开发出的算法复杂度和证明得出的最低复杂度不相符的话,可以去寻找新的算法。也有可能是证明出错,当然证明出错的情况是比较少见的。


1970年代是算法设计的黄金年代。


误区


关于算法复杂度有以下误区:



普林斯顿公开课 算法1-5:算法理论,布布扣,bubuko.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!