Heap 이란?

우선순위큐(Priority Queue)를 구현하기 위한 자료구조이다.

 

우선순위큐

- 특정 우선순위를 정해두고 그 기준으로 만든 큐를 의미한다.
(기존의 큐는 FIFO이지만, 우선순위를 가장 큰 값 또는 가장 작은 값으로 정해놓는 큐를 의미한다.)

우선순위큐는 이진트리(Binary Tree) 형태의 자료구조이다.

그림과 같이 이진트리형태는 왼쪽 위로 차있는 형태이다.

 

이진트리

Max Heap의 Binary Tree

- 부모 노드가 자식 노드보다 작은 값을 가지는 최소 힙(Min Heep)과, 부모 노드가 자식 노드보다 큰 값을 가지는 최대 힙(Max Heap)으로 나눌 수 있다.
- 각 노드는 최대 두 개의 자식 노드를 갖는다.
- 새로운 원소는 일반적으로 힙의 맨 끝에 추가되고, 이후 힙의 성질을 유지하기 위해 적절한 위치로 재배치 된다.
- 최소힙에서는 최소값을, 최대힙에서는 최대값을 추출하는 동작이 빠르다.
- Heap에 쓰이는 이진트리는 느슨한 정렬상태를 유지한다.

 

Heap의 배열 Index 계산법

Heap의 삽입과 삭제

 

'Java > 개념 정리' 카테고리의 다른 글

var 키워드에 대하여  (0) 2024.02.28
JWT(Json Web Token)의 구조  (0) 2024.02.22
연결리스트(LinkedList)  (0) 2023.10.21
HashMap 이란?  (0) 2023.10.20
컬렉션 프레임워크와 주요 인터페이스  (0) 2023.10.09

+ Recent posts