- 최솟값 선택 정렬이라고 이해하면 쉬움
- 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;
}
'Computer Science > Algorithm' 카테고리의 다른 글
Merge Sort (병합 정렬) (0) | 2020.09.03 |
---|---|
[배열과 포인터] 일차원 배열과 이차원 배열 및 포인터 표기 방법 (0) | 2020.09.01 |
[구조체] struct 선언 방법들 (0) | 2020.09.01 |
Insertion sort(삽입 정렬) (0) | 2020.08.31 |
Bubble sort(버블소트) (0) | 2020.08.31 |