我正在阅读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!)
,对吗?