使用Mergesort,quicksort等时,是O(n log n)base 2还是10?

时间:2014-04-27 02:26:00

标签: big-o time-complexity quicksort

我对大O符号感到有些困惑。

假设我正在使用16个元素的数组并尝试执行QuickSort。

QuickSort的平均情况是O(n log n),最坏的情况是O(n ^ 2)

我认为它将是log base 2,因为我们正在使用计算机(二进制)。但是我也听说你可以使用base 10并获得相同的复杂性。

我认为在O(n log n)处它将是16 * log2 * 16 == 16 * 4 = 64次比较。

在最坏的情况下,在O(n ^ 2)== 16 ^ 2 == 256比较。

我有正确的想法吗?作为一般规则,我应该使用基数10还是基数2?

1 个答案:

答案 0 :(得分:2)

就大哦符号而言,对数的基数并没有产生任何真正的区别,因为this重要属性称为Change of Base

根据这个属性,在大符号方面改变对数的基数只会影响复杂度。

作为一般规则你应该使用什么......嗯,这取决于。

Mergesort将数组减半,因此您应该将其视为基数为2的对数。

处理由n元素构成的二叉树的算法的复杂性应该使用base-2对数,但如果处理由n元素构成的三元树,它应该是base-3对数

这都是正确计算的问题。

所以唯一的一般规则就是改变基本属性。