선택정렬
선택정렬이란
- 선택 정렬은 최소값을 찾아 앞쪽으로 이동하기를 배열 크기만큼 반복하는 정렬 방법.
- 배열에서 가장 작은 값을 찾아 처음으로 일단 보낸다.
- 첫 번째 요소는 제외하고 남은 요소들 중에 제일 작은 값을 찾아 선두로 보내기를 배열 끝까지 반복한다.
- 작은 순서대로 계속 앞쪽으로 이동하므로 반복이 끝나면 모든 요소를 순서대로 정렬.

#include<stdio.h>
#include<string.h>
void SelectionSort(char* str, int num);
void Swap(char* pMin, char* pStr);
void main()
{
char str[] = "winapi";
printf("정렬 전의 문자열 : %s\n", str);
int num = strlen(str);
SelectionSort(str, num);
printf("정렬 후의 문자열 : %s\n", str);
}
void SelectionSort(char* str, int num)
{
int minidx = 0;
int i, j;
for (i = 0; i < num - 1; i++)
{
for (j = i + 1, minidx = i; j < num; j++)
{
if (str[minidx] > str[j])
{
minidx = j;
}
}
if (minidx != i)
{
Swap(&str[minidx], &str[i]);
}
}
}
void Swap(char* pMin, char* pStr)
{
char temp;
temp = *pMin;
*pMin = *pStr;
*pStr = temp;
}