가장 급한 일을 먼저 꺼낼 때 목록을 매번 정렬해야 할까?
작업 네 건의 우선순위가 5, 2, 8, 4라고 하자. 숫자가 작을수록 급하다면 지금은 2를 먼저 처리해야 한다. 잠시 뒤 우선순위 1인 작업이 새로 들어올 수도 있다. 급한 작업 하나를 꺼낼 때마다 목록 전체를 정렬하는 방법도 있지만, ‘다음에 처리할 한 건’을 빨리 찾는 데 맞춘 구조를 쓸 수 있다.우선순위 큐(priority queue)는 들어온 순서와 관계없이 우선순위가 가장 높은 값을 먼저 꺼내는 자료구조다. 앞에서 본 일반 큐(queue)가 먼저 들어온 것을 먼저 꺼내는 것과 다르다. 우선순위 큐를 구현하는 방법 중 하나가 힙(heap)이다. 힙은 전체 원소를 차례대로 정렬하지 않고, 다음에 꺼낼 값이 맨 앞에 오도록 필요한 관계만 유지한다.맨 앞이 최솟값인 이유최소 힙(min-heap)은 부..