비전공자의 프로그래머 도전기
로그인
비전공자의 프로그래머 도전기
로그인
힙 (Heap)
김찬수
·
2023년 3월 7일
팔로우
0
Csharp
heap
priority queue
알고리즘
우선순위 큐
자료구조
힙
힙의 불변성
0
개요
힙은 완전 이진 트리에 있는 노드 중에서 값이 가장 큰 노드나 값이 가장 작은 노드를 찾기 위해 만든 자료구조다.
값이 가장 큰 노드를 찾기 위한 힙을 최대 힙, 가장 작은 노드를 찾기 위한 힙을 최소 힙이라고 한다.
힙은 우선순위 큐(Priority Queue)라고도 한다.
완전 이진 트리 : 마지막 레벨을 제외하고 모든 노드의 차수가 2인 이진 트리
힙의 불변성
힙이 되기 위한 조건이 있다.
최대 / 최소 원소에 즉각적으로 접근이 가능해야 한다.
그래서 최대 / 최소 원소는 항상 루트 노드에 존재한다.
부모 노드가 자식 노드보다 항상 크거나, 작아야 한다.
성능
검색 및 읽기 : 최대/최소 원소에 대해서만 가능하며 O(1)이다.
삽입 : 완전 이진 트리이기 때문에 O(logN)이다.
삭제 : 최대/최소 원소에 대해서만 가능하며 O(logN)이다.
사용법
힙의 경우 PriorityQueue로 제공된다.
구현
PriorityQueue의 경우 최신 라이브러리라서 프로젝트에 따라선 사용이 불가능할 수 있다. 아래는 직접 구현하는 방법이다.
김찬수
프로그래머 지망생
팔로우
이전 포스트
트리
다음 포스트
해시 테이블
0개의 댓글
댓글 작성