우선순위 큐 + 힙

Jinhoon Yoon·2023년 8월 24일
0

데이터 구조

목록 보기
2/11

현업에서 구현할 일은 잘 없음.
하지만 개념과 사례를 알면, 기술 문서를 읽을 때 도움이 될 수 있음.

개념

우선순위 큐(Priority queue)

  • 큐(Queue)와 유사함
  • 우선순위가 높은 아이템이 먼저 처리되는 큐

우선순위 큐 주요 동작

  • insert: 아이템을 우선순위 정보와 함께 넣음
  • delete: 최(!)우선순위 아이템을 빼냄
  • peek: delete와 유사하지만, 제거는 안함

힙(Heap)

  • 힙은, 주로 이진 트리(binary tree) 기반으로 구현
    *트리: 계층적인 구조(ex. 부모-자녀 관계)
    **이진 트리: 자녀가 0~2개인 트리
  • 힙의 2종류
    • max heap:
      부모 노드의 key가 자식 노드(들)의 key보다 크거나 같은 트리
    • min heap:
      부모 노드의 key가 자식 노드(들)의 key보다 작거나 같은 트리

힙 주요 동작

  • insert: 아이템과 key를 넣음 (max heap / min heap)
  • delete: 아이템과 key를 빼냄 (max heap / min heap)
  • peek: delete와 유사하지만, 제거는 안함 (max heap / min heap)

차이

힙(heap)의 key를 우선순위(priority)로 사용한다면,
힙(heap)은 우선순위 큐(Priority queue)의 구현체가 된다.
(가능한 구현체 중에서 '힙'이 가장 성능이 좋아서 많이 씀)

Priority queue = ADT
Heap = Data Structure

사례

프로세스 스케줄링(process scheduling)

  • CPU를 쓰려고 ready queue에서 대기하고 있는 프로세스1, 2, 3, ..., etc

힙 정렬(heap sort)

힙 메모리의 힙 != 오늘 배운 힙

0개의 댓글