C언어 - 힙 정렬 구현 코드
본문 바로가기
CS/알고리즘 및 자료구조

C언어 - 힙 정렬 구현 코드

by IYK2h 2021. 5. 21.
728x90
 #include <stdio.h>

#define num 8
int node[] = {2,1,33,21,6,42,50,5};

void heapify(int n, int start, int *node)
{
	int l,r,tmp;
	l = start*2+1;
	r = start*2+2;

	if(r>n)
	{
		return;
	}
	if(node[l] > node[start] || node[r] > node[start])
	{
		if(node[l] > node[r])
		{
			tmp = node[start];
			node[start]=node[l];
			node[l]=tmp;
			return heapify(n,l,node);
		}
		else
		{
			tmp = node[start];
			node[start]=node[r];
			node[r]=tmp;
			return heapify(n,r,node);
		}
	}
	return;
}
void maxHeap(int n)
{
	int start = n/2-1;
	for(int i = start ; i >=0 ; i--)
	{
		heapify(n,i,node);
	}
}
void heapSort(int n)
{
	int tmp;
	n--;
	while(n>1)
	{
		maxHeap(n);
		tmp = node[n];
		node[n] = node[0];
		node[0] = tmp;
		n--;
	}
}
void print(int *node)
{
	for(int i=0 ; i<num; i++)
	{
		printf("%d ",node[i]);
	}
}

int main()
{
	int n = num;
	heapSort(n);
	print(node);
}

이해가 안가시는 부분 댓글로 질문해주세요.

참고 - https://iyk2h.tistory.com/142

 

힙 정렬(Heap Sort)

힙 정렬(Heap Sort)은 큌 정렬(Quick sort)과 병합 정렬(Merge Sort)과 같은 시간 복잡도 O(N*logN)를 가지고 있다. 힙 트리를 이용하는 정렬 방법이다. 힙 트리란 힙 트리의 조건 중 부모 노드의 값은 항상 자

iyk2h.tistory.com

 

728x90

댓글