【发布时间】:2019-06-12 21:50:24
【问题描述】:
我目前正在学习 Big O Notation 的运行时间和摊销时间。
我有以下问题:
两种基于分治原则的算法可用于解决复杂度为 n 的问题。 算法 1 将问题分为 18 个小问题,需要 O (n^2) 次操作将子解决方案组合在一起。 算法 2 将问题分为 64 个小问题,需要 O(n) 次操作将子解组合在一起。
哪种算法更好更快(对于较大的 n)?
我猜测第二种算法更好,因为它需要更少的时间(O(n) 比 O(n^2) 快)。 我猜对了吗?
小问题的数量对算法的速度有影响还是总是需要一个恒定的时间?
【问题讨论】:
-
a priori,是的。由于 n --> 无穷大,第二个更好。但在某些情况下,即使对于相当大的“n”,第一个更好。这取决于所涉及的常量。 -
假设算法 2 优于 n -> 无穷大是不正确的。为了准确确定哪种算法更快,您缺少我和哈罗德在下面讨论的信息。
标签: algorithm data-structures time-complexity big-o notation