Heap (힙)
- 데이터에서 최대값과 최소값을 빠르게 찾기 위해 고안된 완전 이진 트리
- 반 정렬 상태이며 중복 값이 허용된다.
Heap 시간복잡도
O(logn)
import java.util.PriorityQueue;
public class HeapExample {
public static void main(String[] args) {
// Integer를 저장하는 최소 힙 생성
PriorityQueue<Integer> minHeap = new PriorityQueue<>();
// 요소 추가
minHeap.offer(5);
minHeap.offer(2);
minHeap.offer(8);
minHeap.offer(1);
// 최소값 확인
int minValue = minHeap.peek();
System.out.println("Min value: " + minValue); // Min value: 1
// 최소값 삭제
int deletedValue = minHeap.poll();
System.out.println("Deleted value: " + deletedValue); // Deleted value: 1
// 최소값 확인
minValue = minHeap.peek();
System.out.println("Min value: " + minValue); // Min value: 2
}
}
장점
- 힙 정렬은 정렬을 위해 추가적인 메모리(즉, 인플레이스 정렬)를 필요로 하지 않아 메모리 효율이 좋다.
- 동일한 값을 가진 레코드의 상대적인 순서가 정렬 후에 변경될 수 있다.
단점
- 힙 정렬은 연속된 메모리 위치에 접근하지 않기 때문에 현대의 컴퓨터 아키텍처에서 캐시 효율성이 떨어짐.
- 동일한 값의 원소 간의 상대적 순서가 중요한 경우에는 다른 정렬 알고리즘을 고려해야 함
- 힙 구조를 만들고 유지하는 데 필요한 연산이 복잡함
관련link
https://hoehen-flug.tistory.com/32
[자료구조] 힙(Heap) 자료구조 알아보기 & Java 예제 코드
자료구조 중 힙(Heap)에 대해 정리해보자. 힙(Heap)이란? 자료구조 중 힙(Heap)은 특정한 순서에 따라 정렬된 요소들을 저장하는 트리 기반의 자료구조이다. Heap은 일반적으로 이진 힙(binary heap)으로
hoehen-flug.tistory.com
https://velog.io/@suk13574/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0Java-%ED%9E%99heap
[자료구조/Java] 힙(heap)
✔ 목차 힙(heap)이란? 힙 종류 힙 구현 힙 연산 시간복잡도 힙 응용 - 우선순위 큐 힙 응용 - 힙 정렬 🔎 힙(heap)이란? 완전 이진트리 중복값 허용 흽의 왼쪽 부트리와 오른쪽 부트리 모두 힙 최댓
velog.io
https://go-coding.tistory.com/25
[자료구조] 힙 개념과 JAVA로 구현
항상 문제를 풀때마다 힙(heap)에 대한 개념이 많이 헷갈려서 포스팅한다. 다른 분의 블로그에 매우 잘 정리된 포스팅을 가져와 정리해서 쓴 글이다. 힙(Heap) 힙은 이진트리의 일종이다. 반정렬 상
go-coding.tistory.com
https://hyunseo-fullstackdiary.tistory.com/16
JAVA-자료구조 (Heap)
1. 힙 (Heap) 이란? 힙: 데이터에서 최댓값과 최솟값을 빠르게 찾기 위해 고안된 완전 이진 트리 (Complete Binary Tree) 완전 이진 트리: 노드를 삽입할 때 최하단 왼쪽 노드부터 차례대로 삽입하는 트리
hyunseo-fullstackdiary.tistory.com
https://velog.io/@jeongbeom4693/Java-Heap-Sort
[Java] 힙 정렬(Heap Sort)
힙 정렬(heap sort)는 힙(heap)을 사용하여 정렬하는 알고리즘입니다. 힙은 "부모의 값이 자식의 값보다 항상 크다(작다)"라는 조건을 만족하는 완전이진트리입니다.
velog.io
'Study for Backend > Data Structure' 카테고리의 다른 글
[Data Structure 기초연습] HashTable - 해시 충돌 해결 - 개방 주소법 ( 선형 탐사법 ) (0) | 2024.02.29 |
---|---|
[Data Structure 기초] HashTable (0) | 2024.02.27 |
[Data Structure 기초] Deque (0) | 2024.02.23 |
[Data Structure 기초] Linked List (0) | 2024.02.23 |
[Data Structure 기초] Hashmap (0) | 2024.02.22 |