티스토리 뷰

노트

c++) Priority Queue 구현

tose33 2022. 3. 7. 14:32

https://yoongrammer.tistory.com/80

 

[자료구조] 힙 (Heap) or 이진 힙(binary heap)

목차 힙 (Heap) or 이진 힙(binary heap) 알아보기 힙(heap)은 이진 힙(binary heap)이라고도 하며, 최댓값 및 최솟값을 찾아내는 연산을 빠르게 하기 위해 고안된 완전 이진트리(complete binary tree)를 기본으..

yoongrammer.tistory.com

(위 yoongrammer님의 블로그를 보고 공부했습니다) 

 

 

- 우선순위 큐는 주로 Heap 구조로 구현된다.

 

- Heap 구조는 최댓갓 최솟값을 빠르게 찾기위해 고안된 완전 이진 트리를 기본으로한 자료구조다.

 

- 구현할때는 배열을 이용해 구현하며, 편의를 위해 시작 인덱스는 0이 아닌 1부터 시작된다. 

 

- 노드들의 인덱스는 다음과 같은 특성들을 갖고 있다.

  • 노드 i의 부모 노드의 인덱스 = floor(i / 2) 
  • 노드 i의 왼쪽 자식의 인덱스 = i * 2
  • 노드 i의 오른쪽 자식의 인덱스 = i * 2 + 1 

 

- 기억해야 할 점은 heap 에서는 부모가 자식보다 큰 우선순위를 갖는 것은 보장되지만, 형제들끼리는 보장되지 않는다.

  즉 heap 구조로 저장된 배열을 쭉 출력해봤을때 정렬되있는 상태는 아니라는 것이다.

 

 

 


위와 같이 100, 20, 200을 큐에 넣고 배열을 출력해보면 200, 100, 10이 아닌 200, 10, 100이 출력되는 것을 알 수 있다.

이는 heap은 부모가 자식보다 큰 값을 갖는것은 보장되지만, 형제들끼리는 그렇지 않기 때문이다.

200이 루트, 10, 100은 루트의 왼쪽자식과 오른쪽 자식이다. 

 


두개의 변수를 갖는 Node 구조체의 첫번째 변수 기준으로 내림차순한 우선순위 큐

더보기

 

 

 

'노트' 카테고리의 다른 글

The rule of 3 / 0  (0) 2022.03.24
PS 문제에서 메모리 초과 나는 경우  (0) 2022.03.15
JAVA의 우선순위 큐  (0) 2022.03.03
c++) pow 함수와 부동소수점  (0) 2022.02.10
python 자주 쓰는 함수 정리  (0) 2022.01.29
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
글 보관함