티스토리 뷰
728x90
[DS] Heap
힙이란 무엇일까?
알고리즘에 있어서 아주 중요한 자료구조이다.
알고리즘에서 가장 중요한 것 2가지는 `시간`과 `공간`의 복잡도이다. (Time & Space Complexity)
(최대 or 최소 값을 구하는 문제에서) 힙은 이 두가지 중에서 `시간 복잡도`를 획기적으로 줄여주는 자료구조이다.
[Time Complexity]
Search Max/Min: O(1)
Insert: O(logN)
Remove: O(logN)
최소 or 최대 값은 항상 루트 노드에 존재하기 때문에 O(1) 만에 찾을 수 있다.
힙은 완전 이진 트리 형태를 가지고 있다.
삽입은 가장 마지막 노드 위치에 하며,
삽입을 통한 노드 재정렬은 한쪽에서만 발생하므로 O(logN)의 시간이 걸린다.
삭제는 최대 or 최소 값을 찾아서 제거하는 경우 이므로,
루트 노드를 제거하고, 가장 마지막 노드를 루트로 가져온 후,
재정렬 하기 때문에 삽입과 마찬가지로 O(logN)의 시간이 걸린다.
[Code]
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
int main() {
priority_queue<int, vector<int>, less<int>> maxHeap;
priority_queue<int, vector<int>, greater<int>> minHeap;
maxHeap.push(2);
maxHeap.push(1);
maxHeap.push(3);
minHeap.push(2);
minHeap.push(1);
minHeap.push(3);
cout << "max heap top:" << maxHeap.top() << endl;
cout << "min heap top:" << minHeap.top() << endl;
return 0;
}
[출처]
https://gmlwjd9405.github.io/2018/05/10/data-structure-heap.html
728x90
'공부' 카테고리의 다른 글
[Spring] MySQL 연동 KST 에러 (0) | 2018.10.09 |
---|---|
[Linux] shell alias (0) | 2018.10.08 |
[JS] NodeJS Server의 특징과 단일 스레드인 이유 (0) | 2018.10.04 |
[Security] Same-Origin-Policy & Cross-Origin-Resource-Sharing (0) | 2018.10.01 |
[keyword] 결합도 & 응집도(Coupling & Cohesion) (1) | 2018.09.28 |
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- wlw
- 인스타그램
- 메디파크 내과 전문의 의학박사 김영수
- 개리마커스
- 어떻게 능력을 보여줄 것인가?
- 레퍼럴
- 테슬라
- 테슬라 레퍼럴 코드 확인
- 테슬라 레퍼럴
- follower
- 책그림
- 테슬라 리퍼럴 코드 혜택
- 클루지
- 김달
- 팔로워 수 세기
- 모델 Y 레퍼럴
- Bot
- 유투브
- Kluge
- COUNT
- 테슬라 레퍼럴 적용 확인
- 테슬라 추천
- 테슬라 리퍼럴 코드
- 연애학개론
- 할인
- 테슬라 리퍼럴 코드 생성
- 테슬라 크레딧 사용
- 모델y
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함