나는 CLRS을 읽고 있어요 그리고 힙 정렬이 MAX_HEAPIFY이 O(lg n)
입니다왜 heapsort lg (n!)가 아닌가요?
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가 n
번 실행되므로 O(n lg n)
시간이라고합니다.
그러나 힙 크기가 1 씩 줄어들면 각 반복은 O(lg n!)
이 아니어야합니까?
lg 1 + lg 2 ... + lg(n-1) + lg (n) = lg(n!)
이 맞습니까?
대수의 인수 함께 – user3504876
O (N 로그 n) 및 O (로그 승산 할 수 있도록 n!)은 동일합니다 ... –
'n! = n * (n-1) * (n-2) ... * 1' =>'n!'n! = O (n^n)'=>'O (lg (n!) = O (nlogn) ' –
arunmoezhi