본문 바로가기

C/Reference

[C] 선택 정렬

반응형

출처 - C로 배우는 알고리즘 (이재규 지음)

안정성 - 없음(이름순으로 먼저 정렬하고 점수순으로 다시 정렬 했을 때 이름순으로 정렬한 내용이 흩어짐)

실행시간 - 데이터양이 두배 들어나면 시간은 4배 늘어남, N(데이터 량)의 제곱

#include <stdio.h>

void select_sort(char ary[], int aryCnt);

int main(int argc, char *argv[], char **env)
{
	char ary[] = "TOLEARNSORTALGORITHM";

	printf("Before Ary[%s]\n", ary);

	select_sort(ary, (sizeof(ary) - 1/* NULL 문자 제외 */) / sizeof(char));

	printf("After Ary[%s]\n", ary);

	return 0;
}

void select_sort(char ary[], int aryCnt)
{
	char min = 0;
	int minIndex = 0;
	int i = 0, j = 0;

	for(i = 0; i < aryCnt - 1; i++)
	{
		minIndex = i;
		min = ary[minIndex];

		for(j = i + 1; j < aryCnt; j++)
		{
			if(min > ary[j])
			{
				minIndex = j;
				min = ary[minIndex];
			}
		}

		ary[minIndex] = ary[i];
		ary[i] = min;
	}
}
반응형