본문 바로가기

Programming Skill/Data Structure & Algorithm

[알고리즘] 선택정렬(Selection Sort)

작업 환경

OS : Ubuntu 14.04.5 LTS


선택정렬이란?

- 정렬순서에 맞게 하나씩 선택해서 옮기며, 옮기면서 정렬되는 알고리즘


그림 참조 - 윤성우의 열혈 자료구조



문제

배열에 3,1,5,4,2를 저장하고 선택정렬을 이용하여 오름차순으로 정렬하시오.


select_sort.c

#include<stdio.h>


void SelectSort(int *arr , int cnt);


int main()

{

int arr[5] = {3,1,5,4,2};

int i , cnt;


cnt = sizeof(arr) / sizeof(int);


SelectSort(arr , cnt);


for(i=0 ; i<cnt ; ++i)

printf("%d " , arr[i]);


putchar('\n');


return 0;

}


void SelectSort(int *arr , int cnt)

{

int i , j , temp , idx;


for(i=0 ; i<cnt-1 ; ++i)

{

idx = i;


//최소값 찾기

for(j=i+1 ; j<cnt ; ++j)

{

if(arr[idx] > arr[j])

idx = j;

}


temp = arr[i];

arr[i] = arr[idx];

arr[idx] = temp;

}

}



컴파일 : gcc select_sort.c -o select_sort

실행 : ./select_sort


실행결과