Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- AWS
- AWS조사
- 원본과 복사본
- 재귀함수
- 생활코딩
- appendChild
- 스코프
- AWS기초
- JavaScript
- node.js
- complexity
- var
- 코드스테이츠
- 메모이제이션
- 리커젼
- flex기본
- APPEND
- Big-O notation
- 클로저
- let
- vscode
- 인터프리터
- css기초
- prototype
- CSS
- node.js설치
- 기초공부
- 개발툴
- scope
- IT
Archives
- Today
- Total
Jveloper
힙(Heap) 본문
우선순위 큐를 위하여 만들어진 자료구조
우선순위 큐 : 우선순위의 개념을 큐에 도입한 자료구조
- 데이터들이 우선순위를 가지고 있고 우선순위가 높은 데이터가 먼저 나간다.
- 우선순위 큐는 배열, 연결리스트, 힙으로 구현이 가능하다.
이 중에서 힙으로 구현하는것이 가장 효율적이다.
자료구조 '힙(Heap)'이란?
- 완전 이진 트리의 일종으로 우선순위 큐를 위하여 만들어진 자료구조이다.
- 여러 개의 값들 중에서 최댓값이나 최솟값을 빠르게 찾아내도록 만들어진 자료구조이다.
- 힙은 일종의 반정렬 상태(느슨한 정렬 상태)를 유지한다.
- 큰 값이 상위 레벨에 있고 작은 값이 하위 레벨에 있다는 정도
- 간단히 말하면 부모 노드의 키 값이 자식 노드의 키 값보다 항상 큰(작은) 이진 트리를 말한다. - 힙 트리에서는 중복된 값을 허용한다.(이진 탐색 트리에서는 중복된 값을 허용하지 않는다.)
힙(Heap)의 구현
- 힙을 저장하는 표준적인 자료구조는 배열이다.
- 구현을 쉽게 하기 위하여 배열의 첫 번째 인덱스인 0은 사용되지 않는다.
- 특정 위치의 노드 번호는 새로운 노드가 추가되어도 변하지 않는다.
(예를 들어 루트 노드의 오른쪽 노드의 번호는 항상 3이다)
힙(Heap)의 삽입
- 힙에 새로운 요소가 들어오면, 일단 새로운 노드를 힙의 마지막 노드에 이어서 삽입한다.
- 새로운 노드를 부모 노드들과 교환해서 힙의 성질을 만족시킨다.
힙(Heap)의 삭제
- 최대 힙에서 최댓값은 루트 노드이므로 루트 노드가 삭제된다.
- 최대 힙에서 삭제 연산은 최댓값을 가진 요소를 삭제하는 것이다 - 삭제된 루트 노드에는 힙의 마지막 노드를 가져온다.
- 힙을 재구성한다.
'자료구조 > 시간복잡도 & 공간복잡도' 카테고리의 다른 글
선형구조와 비선형구조(자료구조의 하위 카테고리) (0) | 2019.06.11 |
---|---|
그래프, 트리, B-tree, 해쉬테이블 (0) | 2019.05.30 |
스택과 큐, linked list (0) | 2019.05.29 |
Big-O notation (0) | 2019.05.07 |
Comments