为什么没有hegort lg(n!)?

时间:2014-04-07 00:48:33

标签: algorithm runtime time-complexity heapsort clrs

我正在阅读CLRS,它说heapsort是

HEAPSORT(A):
BUILD-MAX-HEAP(A);
for (i = A.length; i >= 1; i++)
{
    exchange A[1] with A[i];
    A.heap-size = A.heap-size - 1; 
    MAX-HEAPIFY(A,1);
}

MAX_HEAPIFY为O(lg n)。 该书说它运行MAX-HEAPIFY n次,因此O(n lg n)时间。

但是如果堆的大小缩小了1,那么每次迭代不应该是O(lg n!)

这将是lg 1 + lg 2 ... + lg(n-1) + lg (n) = lg(n!),对吗?

1 个答案:

答案 0 :(得分:10)

实际上是Stirling's Approximation

O( log(n!) ) = O(nlogn)