[알고리즘] Heap & Priority Queue

당고짱·2022년 3월 13일
0

Algorithm

목록 보기
5/8
post-thumbnail

🎈 Heap (힙)

  • 완전 이진 트리 자료구조의 일종 (왼쪽에서 오른쪽으로 데이터가 차례대로 삽입되는 트리)
  • 최댓값과 최솟값을 찾는 연산을 빠르게 하기 위해 사용하는 알고리즘
  • 항상 루트 노드(root node)를 제거한다.
  • 최소 힙(min heap) : 루트 노드가 가장 작은 값을 가짐 ➡️ 값이 작은 데이터가 우선적으로 제거됨
  • 최대 힙(max heap) : 루트 노드가 가장 큰 값을 가짐 ➡️ 값이 큰 데이터가 우선적으로 제거됨

🎈 Heap 구현

  • 주로 배열로 구현됨
  • 부모 노드와 자식 노드의 관계
    - 왼쪽 자식 노드의 인덱스 : 부모 노드 인덱스 2
    - 오른쪽 자식 노드의 인덱스 : 부모 노드 인덱스
    2 + 1
    - 부모 노드의 인덱스 : 자식 노드 인덱스 / 2

🎈 Priority Queue (우선순위 큐)

  • 우선순위가 가장 높은 데이터를 가장 먼저 삭제하는 자료구조
  • 데이터를 우선순위에 따라 처리하고 싶을 때 사용
  • 구현 방법
    1. 단순히 리스트를 이용하여 구현
    2. heap(힙)을 이용하여 구현

⏳ Priority Queue 시간 복잡도

  • N개의 데이터를 힙에 넣었다가 모두 꺼내는 작업은 힙 정렬과 동일 ➡️ O(NlogN)

✏️ 자료구조 정리

  • 스택(Stack) : 가장 나중에 삽입된 데이터
  • 큐(Queue) : 가장 먼저 삽입된 데이터
  • 우선순위 큐(Priority Queue) : 가장 우선순위가 높은 데이터
profile
초심 잃지 말기 🙂

0개의 댓글