공부/알고리즘
[알고리즘] Java로 구현하는 쉬운 우선순위 큐 (Priority Queue)
yunmap
2019. 4. 28. 14:35
Heap 은 binary tree 형태로 값을 저장하되, 루트 노드에 max heap이면 최댓값이, min heap 이면 최솟값이 저장되는 자료구조를 말한다.
최댓값이나 최솟값을 구해야 하는 경우, heap이라는 자료구조를 사용하면 굉장히 편하게 구할 수 있다.
우선순위 큐는 기본 큐 구조와 달리 입력 순서가 아닌 우선순위 순서로 자료를 저장하는 자료구조를 말한다.
우선순위 큐 (Priority Queue)는 Heap을 사용하여 구현하는데 우선순위에 따른 오름차순 정렬은 Min Heap으로, 내림차순 정렬은 Max Heap으로 구현할 수 있다.
물론, java 에 Priority Queue 라이브러리가 있기 때문에 바로 사용할 수 있지만, 공부를 위해 라이브러리를 사용하지 않고 짜보았다.
먼저, Min Heap의 java 코드는 다음과 같다.
위 코드를 실행하면 실행 결과는 다음과 같다.
1 2 3 4 5 6 7 8 9
Max Heap 코드는 다음과 같다.
실행 결과는 다음과 같다.
9 8 7 6 5 4 3 2 1