什么时候使用O(2 ^ n)算法是合理的?

时间:2016-06-28 03:13:59

标签: algorithm sorting time-complexity big-o

对于排序算法的许多不同选择,在任何示例中使用更高复杂度的算法是否合适?

我能想到的唯一原因是,如果有一个非常短的数组,或者数组非常接近排序,或者只包含几个不同的数字。

1 个答案:

答案 0 :(得分:2)




对于排序算法的许多不同选择,在任何示例中使用更高复杂度的算法是否合适?







如果关注的大O复杂性是最坏的情况,你可能会确定你不会被击中,或者<代码> n 就像你说的那样小(例如 n 是国际象棋棋盘上留下的白棋子数),而且常数因素更为重要。

&#xA; &#xA;

O(2 ^ n)极端但是......你还必须考虑使用它的原因的稳定性 - 有人(包括你将来)可能会意外地修改代码使得适用性无效O(2 ^ n)算法,并且当应用程序被调用并且n高于最初预期或数据不那么“友好”时,让应用程序锁定?

&#xA;&#xA;

对于大多数事情来说,值得花时间预先创建一个合理有效且希望可重复使用的算法,而不必担心,但有时可能会更复杂,更容易出错,CPU或内存的好处就是不证明这一点。最终,重要的是你的实际项目的影响 - 短期和长期。

&#xA;&#xA;

通常在创建算法代码时,有一种简单明了的方法解决它,以及解决它的复杂而有效的方法,快速编写前面的代码是一个好主意,这样你就可以用它来测试后者。前者可称为“oracle”实现,因为它可以信赖真相:正确的答案。如果它也恰好足够快并且您已经限制了n或所讨论的数据场景,那么您可能不需要进入复杂的实现。

&#xA;