[C] 선택 정렬

less than 1 minute read

선택정렬은 특정 위치에 비교 대상 중 가장 큰/작은 값을 치환하는 정렬 알고리즘이다. 오름차순의 경우 맨 첫 자리에 배열 요소 중 최소값을 넣고, 다음 위치에는 남은 요소 중 최소값을 치환하는 형태로 배열 끝까지 진행된다. 알고리즘을 살펴보면 배열을 입력받아 이중 for 문을 수행한다. 이중 for 문에서 첫 번째 루프는 배열 요소를 변경하는 역할을 하고 안쪽 루프는 나머지 대상 중 최소 값을 찾는 역할을 한다. 이후 배열 요소를 치환함으로써 정렬을 수행한다.

#include <stdio.h>

void selectionsort(int a[], int N){
    int temp = 0;
    int min=0;

    for(int i=0; i<N-1 ; i++){
        min=i;
        for(int j=i+1; j< N; j++ ){
            if (a[j]< a[min]) min=j;
        }
        temp = a[i];
        a[i]= a[min];
        a[min]=temp;
    }     
}

int main(){
    int a[10]= {2,9,1,4,6,3,5,7,8,0};
    int a_size = (sizeof(a))/(sizeof(a[0]));
    selectionsort(a, a_size);

    for(int i=0; i<a_size; i++){
        printf("%d ", a[i]);
    }
    return 0;
}
0 1 2 3 4 5 6 7 8 9