任何算法示例我们何时比O(n logn)更喜欢Big O(n ^ 2)时间复杂度? 我在某处看到过这个问题,但没有找到答案。
答案 0 :(得分:7)
对于一个大问题,O(n log n)总是会超过O(n ^ 2)。对于一个小问题,big-O表示法隐藏的常数因子可能会使您更喜欢O(n ^ 2)算法。例如,O(n log n)快速排序比O(n ^ 2)插入排序更快,但是当分区变小(少于十个元素)时,一些快速排序实现切换到插入排序。
答案 1 :(得分:6)
选择具有更高时间复杂度的算法有几个原因:
答案 2 :(得分:1)
许多天真的O(n ^ 2)算法在小输入上比其更复杂的O(n log(n))兄弟更快。
例如,GNU MP Bignum library具有非常高度优化的乘法实现。但对于由几十个单词组成的数字,它只使用了教科书乘法(最佳阈值depends heavily on the machine)。实际上是GMP transitions through a whole sequence of fastest-around-size-X algorithms。
答案 3 :(得分:-1)
一种可能性 - O(n logn)算法是递归的,但您可以迭代编程O(n ^ 2),并且您必须使用的编程语言不支持递归。
"优选"这是相对的BTW。如果数据集足够大,你可以使用自己的堆栈变量来模拟递归,你可以在"递归"的版本中操作它。迭代实现的算法(我们必须在今天在CMU的Guy Steele的比较编程课上做这个练习。)