배열을 오름차순으로 정렬하면 이진 힙이 생성됩니다. 이 장점의 단점이 있습니까? 그렇다면 그 이유는 무엇입니까?배열을 사용한 이진 힙의 생성 바로 가기
답변
"배열을 오름차순으로 정렬하면 바이너리 힙이 생깁니다." 이 말이 맞습니다. 이제 배열을 오름차순으로 정렬하는 알고리즘에 따라 다릅니다. 최상의 정렬 알고리즘은 복잡도가 O(NLogN)
인 것으로 수행하십시오.
알고리즘 Build_Heap
은 단지 이진 힙을 만들 때 O(N)
의 복잡성을 갖지만.
Counting Sort
과 같은 비 비교 기반 정렬 방법을 사용할 때까지는 이진 힙 생성을위한 복잡성이 최소한 O(NLogN)
및 atmost O(N^2)
입니다.
기존의 바이너리 힙 생성 방법이 유리합니다. Counting Sort
하지만
는 O(N)
시간이 걸릴 것입니다하지만 전통 Build_Heap
은 현재 위치에서 바이너리 힙 을 만들 것 동안은 여분의 공간 O(N)
이 필요합니다.
O (N) 시간에 비교 정렬을 수행 할 수 없습니다. 비교 정렬은 O (N log N)입니다. 기수 정렬과 같은 비 비교 방법은 잠재적으로 O (N)이지만 추가 공간이 필요합니다. –
@JimMischel : 실수로 '계산 중'대신 '비교'를 썼습니다. 수정 해줘서 고마워. – sameerkn
단점은 배열을 정렬하면 기존의 BuildHeap 메서드를 사용하는 것보다 시간이 오래 걸린다는 것입니다. –