728x90
반응형
힙(Heap)이란?
- 힙은 완전 이진 트리 기반의 자료구조로, 각 노드가 하위 노드보다 큰(또는 작은) 값을 가지는 것이 특징입니다.
- Java에서는 PriorityQueue 클래스를 통해 힙을 구현할 수 있습니다.
Java에서 힙 구현
- PriorityQueue는 내부적으로 힙 구조를 사용하여 요소들을 정렬합니다.
힙 선언 및 초기화
import java.util.PriorityQueue;
PriorityQueue<Integer> minHeap = new PriorityQueue<>(); // 최소 힙
PriorityQueue<Integer> maxHeap = new PriorityQueue<>(Collections.reverseOrder()); // 최대 힙
힙에 데이터 추가
minHeap.add(10);
minHeap.add(5);
minHeap.add(20);
힙에서 데이터 제거
int minElement = minHeap.poll(); // 힙에서 최소 요소(5) 제거 및 반환
힙의 최상단 요소 확인
int topElement = minHeap.peek(); // 힙의 최상단 요소 확인 (제거하지 않음)
힙의 특징
- 데이터 정렬: 힙은 데이터를 정렬 상태로 유지합니다.
- 빠른 접근: 최소값 또는 최대값에 빠르게 접근할 수 있습니다.
- 동적 크기 조정: 데이터 추가 및 제거에 따라 크기가 동적으로 조정됩니다.
힙의 활용
- 힙은 우선순위 큐, 효율적인 정렬, 데이터 스트림 중 최소/최대값 관리 등에 사용됩니다.
결론
- Java에서 제공하는 PriorityQueue 클래스는 힙 구조를 효율적으로 활용할 수 있는 방법을 제공합니다.
- 힙은 데이터를 우선순위에 따라 관리할 필요가 있는 다양한 상황에서 유용하게 사용될 수 있습니다.
728x90
반응형
'Java' 카테고리의 다른 글
Java에서 딕셔너리(Dictionary) / 맵(Map) 자료구조 효과적으로 활용하기 (0) | 2023.12.18 |
---|---|
Java에서 세트(Set) 자료구조 활용 가이드 (2) | 2023.12.18 |
Java에서 해시 테이블(Hash Table) 효율적으로 활용하기 (0) | 2023.12.18 |
Java에서 그래프(Graph)와 탐색 알고리즘 활용하기 (2) | 2023.12.18 |
Java에서 트리(Tree) 자료구조 마스터하기 (0) | 2023.12.18 |