[java] 자바 힙의 데이터 정렬 방식 예시

이 기술 블로그에서는 자바에서의 힙(Heap) 데이터 구조의 정렬 방식에 대해 다룰 것입니다. 특히, 최대 힙(Max Heap)최소 힙(Min Heap)의 동작 방식을 예시를 통해 설명하겠습니다.

힙(Heap)이란?

힙은 완전 이진 트리(Complete Binary Tree)의 일종으로, 부모 노드와 자식 노드 간의 관계에 일정한 규칙을 가지며, 최대 힙최소 힙으로 나뉩니다. 최대 힙은 부모 노드가 항상 자식 노드보다 크거나 같은 규칙을 가지고 있고, 최소 힙은 반대의 규칙을 가지고 있습니다.

최대 힙(Max Heap)의 데이터 정렬 방식

아래는 자바에서 최대 힙의 데이터 정렬 방식을 보여주는 예시 코드입니다.

import java.util.*;

public class MaxHeapExample {
    public static void main(String[] args) {
        PriorityQueue<Integer> maxHeap = new PriorityQueue<>(Collections.reverseOrder());
        maxHeap.add(10);
        maxHeap.add(30);
        maxHeap.add(20);
        System.out.println("최대 힙의 최상위 원소: " + maxHeap.peek());
    }
}

위 코드에서 PriorityQueue를 사용하여 최대 힙을 구현하고, Collections.reverseOrder()를 통해 내림차순으로 정렬된 큐를 만듭니다. 결과적으로, peek() 메서드를 통해 최대 힙의 최상위 원소를 확인할 수 있습니다.

최소 힙(Min Heap)의 데이터 정렬 방식

다음으로 이어지는 예시에서는 자바에서의 최소 힙의 데이터 정렬 방식을 다루겠습니다.

import java.util.*;

public class MinHeapExample {
    public static void main(String[] args) {
        PriorityQueue<Integer> minHeap = new PriorityQueue<>();
        minHeap.add(10);
        minHeap.add(30);
        minHeap.add(20);
        System.out.println("최소 힙의 최상위 원소: " + minHeap.peek());
    }
}

여기서는 PriorityQueue를 사용하여 최소 힙을 구현하고, 기본적으로 오름차순으로 정렬된 큐를 생성합니다. 따라서 peek() 메서드를 통해 최소 힙의 최상위 원소를 확인할 수 있습니다.

더 자세한 내용은 Oracle 자바 공식 문서를 참고하시기 바랍니다.

위 내용을 토대로, 자바에서의 힙 데이터 구조를 활용한 데이터 정렬 방식에 대해 학습하셨습니다.