Computer Science/Algorithm
Selection sort(선택 정렬)
해피단무지
2020. 8. 31. 17:09
- 최솟값 선택 정렬이라고 이해하면 쉬움
- key값을 포함해서 최소값을 찾고, 그 최소값이 key값이 아니면 key값과 swap함
#include <stdio.h>
#include <stdlib.h>
void swap(int* a, int* b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
int selectionSort(int* arr, int size)
{
int i, j;
int idxMin;
int key;
for ( i = 0; i < size-1; i++ )
{
key = arr[i];
idxMin = i;
for ( j = i+1; j < size; j++ )
{
if ( arr[idxMin] > arr[j] )
idxMin = j;
}
if (idxMin != i )
swap(&arr[i], &arr[idxMin]);
}
for ( i = 0; i < size; i++ )
printf("%d ", arr[i]);
}
int main(void)
{
int size;
int* arr;
scanf("%d", &size);
arr = (int *)malloc(sizeof(int)*size);
for ( int i = 0; i < size; i++ )
scanf("%d", &arr[i]);
selectionSort(arr, size);
return 0;
}