[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;
	}
}

댓글

이 블로그의 인기 게시물

[NSIS] 32비트와 64비트 모듈 등록하는 법. (regsvr32)

[Visual Studio] Windows 7 에서 Visual Studio 6.0 디버그 시 프로세스 좀비되는 증상 해결 방법