안녕하세요. 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번째 정렬 값