최소, 최대힙에 대해 설명하기 전에


이진힙에 대해 설명을 하자면 


트리로 만든 Heap 인데 완전이진트리여야한다는 조건이 붙는다.



이진 힙을 List로 생성해보자

 0

 7

 -

100 

19 

36 

17 

25 


1번 째 줄은 Index, 두번 째 줄은 원소 값이다.


여기서 부모, 자식간의 관계를 수식으로 나타낼 수 있는데

1. a[i]의 자식은 a[2i], a[2i+1]에 존재한다.


2. a[j]의 부모는  a[j/2]에 존재한다.(소숫점은 버린다.)


위와 같은 공식이 나오게 된다.




최소힙


최소힙은 부모가 자식보다 더 작은 값을 지니는 힙을 말한다.



최대힙


최대힙은 부모가 자식보다 더 큰 값을 지니는 힙을 말한다.

위에 있는 사진이 최대힙이다.





힙정렬


힙정렬의 알고리즘을 보자면



1. 정렬되지 않은 n개의 데이터를 입력 받는다.

2. 해당 데이터를 최대힙으로 구성한다.

3. root를 다른 list의 맨 끝으로 뺀다.

2,3번 반복


시간 복잡도는 O(n log n)이다.

'Algorithm' 카테고리의 다른 글

자료구조. 순회(전위 중위 후위)  (0) 2018.03.19
자료구조 트리. Tree  (0) 2018.02.21
자료구조. 스택(stack)과 큐(queue)  (0) 2018.02.20
자료구조. Linked List  (0) 2018.02.18
Horner's role  (0) 2017.03.15

+ Recent posts