【发布时间】:2013-03-23 01:58:53
【问题描述】:
我正在学习算法和时间复杂度,这个问题突然出现在我的脑海中。
为什么我们只分析算法的时间复杂度?
我的问题是,不应该有另一个指标来分析算法吗?假设我有两个算法 A 和 B。
A 需要 5s 处理 100 个元素,B 需要 1000s 处理 100 个元素。但两者都有O(n) 时间。
所以这意味着 A 和 B 的时间都比cn 增长慢,因为两个单独 常量c=c1 和c=c2。但在我非常有限的算法经验中,我们总是忽略这个常数项,只关注增长。但是,在我给定的 A 和 B 示例之间进行选择时,这不是很重要吗?在这里c1<<c2 所以算法 A 比算法 B 好很多。
还是我在早期阶段想得太多,然后才能进行适当的分析?它叫什么?
或者我对时间复杂度的整个概念是错误的,在我给定的示例中,两者都不能有O(n) 时间?
【问题讨论】:
-
Nitpick:我们不仅分析时间上的复杂性,还分析空间上的复杂性、进行的比较、进行的交换、对相关预言机的查询或任何感兴趣的事情。但是,是的,常量通常被忽略。
标签: algorithm