자료구조

알고리즘/자료구조

[자료구조/Swift] 힙(Heap) 구현하기

힙에 대한 설명은 이전 포스팅을 참고해주세요. 힙의 구현 힙을 구현하는 자료구조는 배열으로, 배열의 첫 번째 인덱스는 사용되지 않는다. 고로 루트 노드는 인덱스 1이고 아래 노드로 내려갈수록 인덱스가 쭉쭉 추가가 된다.  힙에서 부모 노드와 자식 노드 간의 관계왼쪽 자식의 인덱스 = `(부모의 인덱스) * 2`오른쪽 자식의 인덱스 = `(부모의 인덱스) * 2 + 1`부모의 인덱스 = `(자식의 인덱스) / 2`이 점을 참고해서 구현해보자 - !  기본 틀 `Comparable` 프로토콜을 채택하여 비교가 가능한 데이터 타입을 받도록 구조체를 생성한다. struct Heap { private var heap: [T] = [] private let comparer: (T,T) -> (Bool) ..

CS/자료구조

[자료구조] 힙(Heap)이란?

힙(Heap)이란?힙이란 완전 이진 트리의 일종으로, 여러 개의 값들 중 최댓값이나 최솟값을 빠르게 찾아내도록 만들어진 자료구조이다. 힙은 트리의 루트 노드에 데이터들의 최댓값 또는 최솟값을 저장한다.즉, 부모 노드의 키 값이 자식 노드의 키 값보다 항상 큰(작은) 이진 트리를 말한다. 최대 힙 & 최소 힙 최대 힙 (max heap)- 부모 노드의 키 값이 자식 노드의 키 값보다 크거나 같은 이진 트리 - 루트 노드에 힙의 최댓값 저장최소 힙 (min heap)- 부모 노드의 키 값이 자식 노드의 키 값보다 작거나 같은 이진 트리 - 루트 노드에 힙의 최솟값 저장 힙의 삽입 다음의 과정을 거쳐서 힙에 데이터를 삽입한다. 1. 힙의 가장 마지막에 데이터를 삽입한다. 2. 삽입한 노드의 부모 노..

시로-
'자료구조' 태그의 글 목록