정렬 중간 과정에서 정렬된 데이터와 정렬되지 않은 데이터로 나누어져서,
정렬되지 않은 데이터에서 제일 작은 데이터를 검색하여 선택하고 정렬되지 않은 데이터의 제일 앞 숫자를 그 숫자와 교환함
👉 왼쪽(정렬된 데이터) 오른쪽(정렬되지 않은 데이터)
void swap(int* a, int* b){
int tmp = *a;
*a = *b;
*b = tmp;
}
void selectionSort(int array[], int n){
int i, j, min_index;
for(i=0; i<n; i++){
min_index = i; // 정렬되지 않은 데이터의 제일 앞 index
for(j=i+1; j<n; j++){
if(array[j] < array[min_index]){
min_index = j;
}
}
if(min_index != i) {
swap(array[min_index], array[i]);
}
}
}
✔︎ Not Stable
✔︎ In-place