我对大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?
答案 0 :(得分:2)
就大哦符号而言,对数的基数并没有产生任何真正的区别,因为this重要属性称为Change of Base
。
根据这个属性,在大符号方面改变对数的基数只会影响复杂度。
作为一般规则你应该使用什么......嗯,这取决于。
Mergesort将数组减半,因此您应该将其视为基数为2的对数。
处理由n
元素构成的二叉树的算法的复杂性应该使用base-2对数,但如果处理由n
元素构成的三元树,它应该是base-3对数
这都是正确计算的问题。
所以唯一的一般规则就是改变基本属性。