정리하고기록하자

힙(Heap) 본문

Data Structure

힙(Heap)

정리하고기록하자 2022. 3. 26. 19:36
반응형

힙 ( Heap )

힙이란 완전이진트리의 형태로 만들어진 자료구조 이다.

*이진트리란 컴퓨터 응용에서 가장 많이 활용되는 트리구조이다.


힙의 종류

- 최대 힙 : ( 완전 이진 트리 ) + ( 부모 노드 > 자식 노드 )

최대 힙은 완전 이진 트리이면서 부모 노드가 자식 노드보다 큰 트리를 말한다.

- 최소 힙 : ( 완전 이진 트리 ) + ( 부모 노드 < 자식 노드 )

최소 힙은 완전 이진 트리이면서 부모 노드가 자식 노드보다 작은 크리를 말한다.

*보통 힙이라고 하면 일반적으로 최대 힙을 의미한다.


힙의 활용

힙은 최댓값 혹은 최솟값을 빠르게 찾아내기 유리한 자료구조이다.

1. 우선순위 큐를 구현할 때 쓰이기도 한다.

2. 허프만 코드를 구현할 때도 쓰이기도 한다.

3. 힙 정렬을 구현 할 때도 쓰인다.

* 허프만 코드 : 데이터를 효율적으로 압축하는데 사용하는 방법 ( 탐욕 알고리즘 중 하나 ) 


힙 삽입

힙을 만들기 위해서는 값 삽입 > 힙 구조 변경 > 값 삽입 > 힙 구조 변경 .... 반복

https://todaycode.tistory.com/56

 

힙(Heap) 이란?

1. 힙(Heap)  1-1. 힙이란?  1-2. 힙의 종류  1-3. 힙의 활용  1-4. 예시(힙 삽입) 1. 힙(Heap) 1-1. 힙이란? 맨 처음에 힙을 들었을 때 엉덩이(hip)가 생각날 수도 있지만 힙은 heap이다. 무언가를 차곡차..

todaycode.tistory.com


힙 코드

public void init()  throws IOException{
	PriorityQueue<Integer> minHeap = new PriorityQueue<>();
    System.out.println("최소 힙");
    runHeapTest(minHeap);

	
    PriorityQueue<Integer> maxHeap = new PriorityQueue<>(Collections.reverseOrder());
    System.out.println("최대 힙");
    runHeapTest(maxHeap);
}
	
private void runHeapTest(PriorityQueue<Integer> heap) {
	heap.add(1);
	heap.add(8);
	heap.add(5);
	heap.add(2);
	heap.add(3);
	while(!heap.isEmpty()) {
    	System.out.println(heap.poll());
    }
}

 


 

우선순위 큐 PriorityQueue 사용하기 (heap)

최근 알고리즘 문제를 한개씩 풀다보면 풀다보면 자주 최대 힙, 최소 힙을 구현하여 사용해야 되는 경우가 생깁니다. (예를 들면 위상정렬, 최대값 뽑아내기 등) 자바에서는 현재 PriorityQueue를 이

duooo-story.tistory.com

 

반응형

'Data Structure' 카테고리의 다른 글

HashTable VS HashMap  (0) 2022.05.22
HashMap  (0) 2022.05.21
해쉬 테이블 ( HashTable )  (1) 2022.04.16
트리 (Tree)  (0) 2022.04.07
큐(Queue)  (2) 2022.04.02