강좌 & 팁
안녕하세요. C언어 코딩을하다보면 여러개의 숫자들이 값의 크기에 상관없이 저장되어 있을 때 숫자들은 작은값에서
부터 큰 값 순으로 정렬을 해야 할때가 있는데요. 오늘은 이 때 사용하는 정렬알고리즘 중에서 선택정렬에 대해 알아보겠습니다.
선택정렬은 정렬 알고리즘 중에서가장 일반적이고 선택정렬은 주어진 값을 정렬하기 위해서 앞에서 뒤로 이동하면서 정렬하는 방식으로 사용이 된다.
예를 들면
5 2 3 7 8 로 되어있으면 선택정렬을 사용하여 2 3 5 7 8 로 오름차순으로 정렬 할 수가 있다.
선택정렬을 이용해서 오름차순으로 정렬하는 방법은 다음과 같다.
#include<stdio.h>
void main()
{
int n[5] = {5, 2, 3, 7, 8};
int i, j, c, = 1;
printf("%d %d %d %d %d (%d) \n", n[0], n[1], n[2], n[3], n[4], c);
for(i=0; i<5-1; i++)
{
for(j=0; j<5-1; j++)
{
if (n [j] < n[[i])
{
int tmp; // tmp에 작은값을 복사
n[j] = n[i]; // 큰값은 n의 j로 이동
n[i] = tmp; // 작은 값을 i에 이동
}
printf("%d %d %d %d %d (%d) \n", n[0], n[1], n[2], n[3], n[4], c++ );
}
}
}
결과를 보시면
5 3 2 8 7(1)
3 5 2 8 7(2)
2 5 3 8 7(3)
2 5 3 8 7(4)
2 5 3 8 7(5) 1째 정렬 값
2 3 5 8 7 6)
2 3 5 8 7 (7)
2 3 5 8 7 (8) 2번쨰 정렬 값
2 3 5 8 7 (9)
2 3 5 8 7 (10) 3번째 정렬 값
2 3 5 7 8(111) 4.5번째 정렬 값