[C++] stl priority_queue와 heap

2021. 6. 3. 14:59·Data Structure
heap이란

heap은 최대값과 최소값을 빠르게 찾기 위해 만들어진 완전이진트리로 구성된 자료구조이다.

 

- maxheap 최대힙

maxheap에서는 임의의 한 트리가 있을 때에 root 노드는 항상 최대값을 갖는다.

 

- minheap 최소힙

minheap에서는 임의의 한 트리가 있을 때에 root 노드는 항상 최소값을 갖는다.

 

둘의 공통점

- 이진 탐색 트리와 같이 작은 값이 왼쪽 큰 값이 오른쪽으로 가지않고 자식이 부모보다 max,min인지의 조건에 따라 크거나 작은지를 확인한다.

 

힙을 이용한다면 최댓값 혹은 최솟값을 O(logN)에 찾을 수 있다. 

 

heap의 삽입 과정

maxheap기준

1. 삽입 값을 힙의 마지막 위치에 넣는다.

2. 부모와의 크기를 비교하여 부모가 더 작다면 자식의 값과 부모의 값을 바꾼다. 

3. 2가 해당되지 않을 때까지 반복한다.

 

heap의 삭제 과정

maxheap기준

1. root의 값을 삭제한다.

2. root의 자리에 힙의 마지막 값을 넣는다.

3. root의 자식들과 비교를 하고 크다면 자식값을 부모값과 바꾼다.

4. 부모값보다 자식값크다면 계속 바꿔준다. (큰 순으로 정렬한다.)

 

priority_queue

- priority_queue는 heap으로 구성되어 있다.

- push시에 기본적으로 내림차순으로 정렬되며 값을 삽입한다.

- pop시에 가장 큰 값이 먼저 나오게 된다.

 

 

 

 

 

참고사이트 : https://hochoon-dev.tistory.com/entry/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC-Heap-Priority-Queue-%EA%B0%9C%EB%85%90-c-%EA%B5%AC%ED%98%84

 

[알고리즘 개념 정리] Heap, Priority Queue 개념 c++ 구현

Heap이란 힙(Heap)은 최댓값 및 최솟값을 찾아내는 연산을 빠르게 하기 위해 고안된 완전이진트리(Complete binary tree)를 기본으로 한 자료구조(tree-based structure)다. 최악의 경우가 생겨도 힙은 완전 이

hochoon-dev.tistory.com

 

저작자표시 (새창열림)

'Data Structure' 카테고리의 다른 글

레드블랙트리  (0) 2021.08.09
[C++] stl map  (0) 2021.05.31
해시(hash)  (0) 2021.01.20
링크드 리스트(Linked List)  (0) 2021.01.19
스택(stack)  (0) 2021.01.15
'Data Structure' 카테고리의 다른 글
  • 레드블랙트리
  • [C++] stl map
  • 해시(hash)
  • 링크드 리스트(Linked List)
chanheess
chanheess
'왜' 그렇게 했는가?에 대한 생각으로 공부 및 작업의 저장관리
  • chanheess
    왜 그렇게 생각했는가?
    chanheess
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Backend Programming
      • Game Programming
        • Unreal
        • DirectX
      • C++
        • Memo
        • Basic
        • Effective Modern
      • Java
      • Algorithm
        • Memo
        • Baekjoon
        • Programmers
        • HackerRank, LeetCode
      • Data Structure
      • Design Pattern
      • Etc
        • Memo
        • Daily Log
        • Book
  • 최근 글

  • 최근 댓글

  • 태그

    백준
    c++ 기초 플러스
    dp
    JPA
    SpringSecurity
    위클리 챌린지
    티스토리챌린지
    JWT
    오블완
    dfs
    Java
    spring
    알고리즘
    프로그래머스
  • hELLO· Designed By정상우.v4.10.0
chanheess
[C++] stl priority_queue와 heap

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.