【发布时间】:2015-10-28 19:34:52
【问题描述】:
我似乎混淆了两个概念,渐近复杂度(函数增长的速度)和大 O(算法的时间复杂度)。它们是一样的吗?
例如,我知道O(1) 是算法的最佳案例运行时间。但很明显,这比O(n^n) 之类的增长速度要慢,后者增长得非常快,但这不是一种有利的算法复杂性吗?
还有类似的:
nlogn 的增长速度比 1 或 logn 快,但所有这些函数的增长速度都比 n^n 慢?任何澄清将不胜感激。
【问题讨论】:
-
快速增长是不好的。你似乎已经明白这很好。不知道为什么。
-
两个大学课程(数据结构和离散数学)之间的混淆会导致误解,进而导致误解。
-
这取决于你想要什么。如果你想让你的算法超慢(例如,如果你想要一个能抵抗彩虹表攻击的哈希函数),快速增长是好的。如果你想用更少的资源,那当然不好……
标签: algorithm data-structures big-o time-complexity discrete-mathematics