I. 힙 정렬 (Heap Sort)의 개요
가. 힙 정렬의 정의
트리 중에서 부모 노드의 원소 값이 자식 노드의 원소 값보다 큰 완전 이진 트리인 힙(Heap)을 만들기 위한 정렬 방법
나. 힙 정렬의 특징
- 힙 구조에서 가장 큰 값의 위치는 루트에 있음.
- 배열에 저장하는 것이 효율적임.
- 수행시간 복잡도: O(n·log2n)
Ⅱ. 힙 정렬의 삽입∙삭제 과정 및 사례
가. 힙 정렬의 삽입과정 및 사례
|
||||||
⇒ | ⇒ | ⇒ | ||||
void insert_max_heap(element item, int *n) { int i; if(HEAP_FULL(*n)) { fprintf(stderr,”The heap is full. ₩n”); exit(1); } i = ++(*n); while((i!=1)&&(item.key>heap[i/2].key)) { heap[i] = heap[i/2]; i /= 2; } heap[i] = item; } |
나. 힙 정렬의 삭제과정 및 사례
|
||||||
⇒ | ⇒ | ⇒ | ||||
element delete_max_heap(int *n) { element item, temp; if(HEAP_EMPTY(*n)) { fprintf(stderr,”The heap is empty₩n”); exit(1); } item = heap[1]; temp = heap[(*n)--]; parent = 1; child = 2; while(child <= *n) { if((child < *n) && (heap[child].key < heap[child+1].key)) child++; if(temp.key>=heap[child].key) break; heap[parent] = heap[child]; parent = child; child *= 2; } heap[parent] = temp; return item; } |
'IT 용어 및 개념 > Algorithm' 카테고리의 다른 글
[Algorithm] 계수 정렬 (Counting Sort) (0) | 2024.09.15 |
---|---|
[Algorithm] 문자열 탐색 알고리즘 - 원시적 탐색, 카프라빈 탐색, KMP탐색, 보이어 무어 탐색 (0) | 2024.09.15 |
[Algorithm] 백트래킹 알고리즘 (1) | 2024.09.15 |
[Algorithm] 최단 경로 탐색 알고리즘 (0) | 2024.09.15 |
[Algorithm] 선택 정렬 (Selection Sort) (0) | 2024.09.15 |