← 질문 목록
#259깊이 0

우선순위 큐를 힙으로 구현하는 이유는 무엇인가?

자료구조 · 알고리즘기초성능

정렬해 두면 넣을 자리를 만드느라 O(N)이 들고, 정렬하지 않으면 넣기는 싸지만 가장 급한 것을 찾는 데 O(N)이 든다. 어느 쪽이든 한 곳에서 값을 치른다.

힙 종류부모·자식 관계
최대 힙부모가 자식보다 항상 크거나 같다
최소 힙부모가 자식보다 항상 작거나 같다

은 완전 이진 트리 구조를 사용한다. 완전 이진 트리라 삽입과 삭제가 모두 O(log N)이다.

반면 정렬된 배열은 삭제는 빠르지만 삽입 시 데이터 이동이 O(N)만큼 필요하다. 정렬되지 않은 배열은 삽입은 빠르지만 최댓값/최솟값을 찾는데 O(N)이 걸린다.

다익스트라 알고리즘이나 OS의 스케줄러처럼 우선순위가 계속 바뀌는 환경에서 힙을 선택한다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

우선순위 큐를 힙으로 구현하는 이유는 무엇인가?