선택정렬 : 정렬이 되어있지 않은 숫자들 중에서 최소값을 선택하여 배열의 첫번째 요소와 교환하는 것
정렬은 물건을 크기순으로 오름차순이나 내림차순으로 나열하는 것인데, 컴퓨터공학 분야에서 가장 기본적이고 중요한 알고리즘 중 하나!
자료 탐색에서 필수적이라 정확하게 이해하는 게 중요해 보임
그림
코드
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 10
void makeArray(int A[]){ // 배열 만드는 함수
srand(time(NULL));
for(int i = 0; i < SIZE; i++)
A[i] = rand() % 100; // 중복 제거 안 함
}
void printArray(int A[]){ // 배열 출력 함수
for(int i = 0; i < SIZE; i++)
printf("[%d] ", A[i]);
printf("\n\n");
}
void selection_sort(int A[], int n){ // 선택정렬
int least, temp;
for(int i = 0; i < n - 1; i++){ // 기준점 잡는 for문
least = i; // 일단 least는 첫번째 인덱스라고 가정
for(int j = i + 1; j < n; j++)
if(A[j] < A[least])
least = j; // 이때의 j값이 새로운 least 인덱스가 됨
temp = A[i];
A[i] = A[least];
A[least] = temp;
}
}
void main(){
int list[SIZE]; // 배열 선언
makeArray(list); // 난수로 배열 채우기
printArray(list); // 정렬되기 전
getchar();
selection_sort(list, SIZE);
printArray(list); // 정렬된 후
}