是否有所有内容的 Big-O 符号的主列表?数据结构、算法、对每个执行的操作、平均情况、最坏情况等。
6 回答
算法和数据结构字典是一个相当全面的列表,并且在算法的描述中包括复杂性(Big-O)。如果您需要更多信息,它会在其中一个链接的参考资料中,并且总是有 Wikipedia 作为后备。
Cormen的书更多的是教你如何证明给定算法的 Big-O 是什么,而不是死记硬背算法的 Big-O 性能。前者比后者更有价值,并且需要您进行投资。
试试Cormen、Leisersen 和 Rivest 的“算法简介”。如果它不在那里,它可能不值得知道。
在 c++ 中,STL 标准由算法的 Big-O 特征以及空间要求定义。这样,您可以在 STL 的竞争实现之间切换,并且仍然知道您的程序具有相同的运行时特性。特别好的 STL 实现甚至可以比标准要求更好的特定类型的特殊情况列表。
它使为特定问题选择正确的迭代器或列表类型变得很容易,因为您可以轻松地在空间消耗和速度之间进行权衡。
当然,Big-O 只是一个指导方针,因为所有常量都被删除了。如果算法在 k*O(n) 中运行,它将被归类为 O(n),但如果 k 足够高,对于 n 和 m 的某些值,它可能比 O(n^2) 更差。
算法简介,第二版,又名 CLRS(Cormen,Leiserson,Rivest,Stein),是我能想到的最接近的东西。
如果失败了,那么试试Knuth的 The Art of Computer Programming。如果不是这些,你可能需要做一些真正的研究。
对于任何从谷歌来回答这个问题的人。