Languages/C & C++

C++ : STL heap

2023. 1. 5. 14:01

#include <algorithm>


index로 임의 접근이 가능한 자료구조라면 STL heap 관련 함수 적용 가능 : arr, vector

​

1. make_heap(배열.begin(), 배열.end() , 생략가능 less<>) : O(N), max 3N (???)

새로운 자료구조로 생성되는게 아니라, 기존 배열을 힙 정렬 형태로 재배열하는 형태로 힙을 구성한다. 기본 max heap으로 정렬된다. greater functor로 min heap 정렬도 가능하다.

2. pop_heap(배열.begin(), 배열.end()) : O(logN), max logN

재배열 후 [0] 이 head가 된다. pop_head는 head를 맨 마지막 인덱스와 뒤바꾸고, 맨 마지막 인덱스 전까지를 다시 heap 형태 재정렬해준다. vector를 사용하는 경우 back()으로 값을 백업하고 pop_back으로 제거하면 된다.

3. push_heap(배열.begin(), 배열.end()) : O(logN), max 2logN

맨 마지막 인덱스가 새로 들어갈 노드라고 가정하고, 맨 마지막 인덱스 값을 힙에 추가하는 형식으로 재배열한다. 즉 push_heap 앞에는 push_back 등으로 마지막에 새로운 값을 넣어주어야 한다는것.

4. sort_heap(배열.begin(), 배열.end()) : O(NlogN), max NlogN

배열 전체를 힙 형태로 싹 갈아엎는다.

저작자표시

'Languages > C & C++' 카테고리의 다른 글

C++ : STL Priority Queue  (0) 2023.01.05
C++ : STL map, set, multiset  (0) 2023.01.05
C++ : STL map, set 처럼 인덱스 엑세스가 불가능한 컨테이너 접근하기  (0) 2023.01.05
기묘한 시간초과...  (0) 2023.01.05
C++ : lower_bound 의 활용  (0) 2023.01.05
'Languages/C & C++' 카테고리의 다른 글
  • C++ : STL Priority Queue
  • C++ : STL map, set, multiset
  • C++ : STL map, set 처럼 인덱스 엑세스가 불가능한 컨테이너 접근하기
  • 기묘한 시간초과...
jamong5
jamong5
데이터 엔지니어를 희망하는 개발자 지망생
jamong5
JAMONG5
jamong5
전체
오늘
어제
  • 분류 전체보기 (171)
    • Algorithem (92)
      • 백준 PS with code (64)
      • 프로그래머스 PS with code (9)
      • 알고리즘 이론 (3)
    • Languages (19)
      • Python (10)
      • Java (2)
      • C & C++ (7)
    • SQL (42)
      • 프로그래머스 MySQL with code (41)
      • MySQL (1)
    • CS (2)
    • DevOps (4)
      • Docker (1)
      • Git, GitHub (3)
    • 코드 고민 (1)
    • 도움을 받은 정보 (2)
    • 책 (4)
    • 보드 게임 일기 (1)
    • 컴퓨터 일기 (2)
    • R&D 휴지통 (0)

블로그 메뉴

  • 소개
  • 홈
  • 태그

공지사항

인기 글

태그

  • 프로그래머스
  • 백트래킹
  • 백준
  • LCS
  • Git
  • 스택
  • 그래프탐색
  • 구현
  • 똥이
  • 최소힙
  • Python
  • 투포인터
  • SQL
  • MySQL
  • 알고리즘
  • backtracking
  • 파이썬
  • 시간초과
  • heapq
  • join

최근 댓글

최근 글

hELLO · Designed By 정상우.
jamong5
C++ : STL heap
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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