use*_*876 4 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);
}
Run Code Online (Sandbox Code Playgroud)
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!),对吧?