题
作为一名自学成才的计算机程序员,我经常无法估计特定操作的 O() 值。是的,我知道大多数重要的事情,比如主要的分类和搜索,但当新的东西出现时,我不知道如何计算,除非它非常明显。有没有一个好的网站或文字可以解释如何做到这一点?哎呀,我什至不知道计算机科学家怎么称呼它,所以我无法用谷歌搜索它。
解决方案
如果你真的想学习这个主题,那么你可能需要一本标准的理论/算法教科书。我不知道有哪个网站可以真正教你复杂性分析(“复杂性”或“时间复杂性”是你如何称呼这些 O() 值;您可能还想在谷歌上搜索“算法分析”或“算法简介”等)。
但在此之前——一个免费的选择。麻省理工学院的 Erik Demaine 和 Charles Leiserson 提供的课程幻灯片是免费的,看起来很棒。我肯定会尝试阅读它们,看看是否适合您。他们是 这里.
现在,教科书:
教科书的经典选择是 Cormen 等人的书 算法简介 (可能有便宜的版本可供购买 这里 我记得在网上看到过免费(可能是非法的)版本,但我不记得在哪里)。
克莱因伯格和塔尔多斯的著作是一本更新、现代风格的书,在我看来读起来更有趣,也是更好的选择。 算法设计.
以下是一些包含信息的网站(我通过谷歌搜索“算法分析讲座笔记”(不带引号)获得这些信息):
以上是一位计算机科学理论家写的。所以程序员或者其他实际的人可能会有一些不同的看法。
不隶属于 StackOverflow