6. 힙정렬 1) 힙 성질을 만족하는 완전 이진 트리 (마지막 층은 왼쪽부터 채워져 있으며 일부는 빌 수 있다.) 2) 힙 - 최소(대)힙 : 각 노드의 값이 자식보다 작(크)거나 같다 - root 값이 최소(대) 값이며, O(1) 에 검색이 가능하다. - 바닥에 최대(소) 값이 존재 한다 3) 트리 - 가족관계 : 부모와 자식이 존재 - 원소갯수가 n일 경우 깊이는 logn - 수행시간은 깊이에 비례한다. 4) 완전 이진 트리의 배열 표현 - A[k]의 왼쪽 자식 : A[2k] - A[k]의 오른쪽 자식 : A[2k+1] - A[k]의 부모 : A[ k/2의 내림값 ]
5) 수행시간 : O(nlogn)
6) heapSort(A, n) {
buildHeap(A[], n)
Heapify(A[], k, n) { smaller ← left; smaller ← left; // 왼쪽자식만 있는 경우 if(A[smaller] < A[k]) //재귀적으로 가장 작은 값을 정점과 바꿔 힙 성질을 만족 시킨다. {
|
Study/Sorting
- 힙 정렬 2010.11.30
힙 정렬
2010. 11. 30. 11:39
[출처 : http://blog.naver.com/holywater86/50098589686]