1.1 우선순위 큐란?
큐(Queue)는 먼저 들어오는 데이터가 먼저 나가는 FIFO(First In First Out) 형식의 자료구조이다.
우선순위 큐(Priority Queue)는 먼저 들어오는 데이터가 아니라, 우선순위가 높은 데이터가 먼저 나가는 형태의 자료구조이다.
우선순위 큐는 일반적으로 힙(Heap)을 이용하여 구현한다.
1.2 힙이란?
힙(Heap)은 우선순위 큐를 위해 고안된 완전이진트리 형태의 자료구조이다.
여러 개의 값 중 최댓값 또는 최솟값을 찾아내는 연산이 빠르다.
힙의 특징
- 완전이진트리 형태로 이루어져 있다.
- 부모노드와 서브트리간 대소 관계가 성립된다. (반정렬 상태)
- 이진탐색트리(BST)와 달리 중복된 값이 허용된다.
힙의 종류
- 최대 힙 (Max Heap)❝ key(부모노드) ≥ key(자식노드) ❞
- 부모 노드의 키 값이 자식 노드보다 크거나 같은 완전이진트리이다.
- 최소 힙 (Min Heap)❝ key(부모노드) ≥ key(자식노드) ❞
- 부모 노드의 키 값이 자식 노드보다 작거나 같은 완전이진트리이다.
1.3 우선순위 큐 구현방법 비교
우선순위 큐를 힙이 아니라 배열 또는 연결리스트를 이용하여 구현할 수도 있다.
하지만 배열과 연결리스트는 선형 구조의 자료구조이므로 삽입 또는 삭제 연산을 위한 시간복잡도는 O(n)이다.
반면 힙트리는 완전이진트리 구조이므로 힙트리의 높이는 log₂(n+1)이며, 힙의 시간복잡도는 O(log₂n)이다.
아래는 이를 정리한 표이다.
728x90
'Study > 코딩스터디_TIL' 카테고리의 다른 글
[java 스터디] 문제풀이 Result506. Relative Ranks (0) | 2025.02.11 |
---|---|
[java] 큐 활용 문제풀이 백준 4949번 균형잡힌 세상 (0) | 2025.02.08 |
[java] 큐 활용 문제풀이 백준 26043번 식당메뉴 (0) | 2025.02.06 |
[JAVA 스터디] Queue 개념 (0) | 2025.02.05 |
[JAVA 스터디] Stack 과 Queue (0) | 2025.02.04 |