반응형
#include <stdio.h>
#define max 10
int main(void) {
// 사용할 변수를 선언한다.
int i, j, min, index, temp;
// 정렬할 숫자
int array[max] = { 2,5,7,8,9,1,3,6,10,4};
for (i = 0; i < max; i++) {
// 최소값 변수는 비교를 통해서 가장 작은 값을 넣어야 하기 때문에
// 가장 큰 값을 넣음으로서 최초에 어떤 원소와 비교하더라도 최소값이 되도록 하기 위함이다.
min = 9999;
for (j = i; j < max; j++) {
// min 변수에 들어간 값이 비교한 j값보다 크면
// (j값이 min보다 작으면) j값이 min값을 대체한다.
if (min > array[j]) {
min = array[j];
// array[i] = array[index]를 성사시키기 위해
index = j;
}
}
// j반복문이 다 돌고 나서, swap하기 위해 temp 변수에 기존 배열 array[i]를 넣는다.
temp = array[i];
// 재배열하고 싶은 array[i]에 j반복문에서 찾은 최소값 (기존배열)array[index]를 넣는다.
array[i] = array[index];
// 아까 최소값을 찾았던 빈 상태가 된 배열 인덱스에 방금 바꾸면서 자리를 잃어버린 기존의 배열원소(temp)를 넣어준다.
array[index] = temp;
}
// 배열을 출력한다.
for (i = 0; i < max; i++) {
printf("%d ", array[i]);
}
return 0;
}
이 간단한 알고리즘도 이해하는데 꽤 많은 시간이 소요되었다....
지금이야 읽으면서 왜 이렇게 되었는지 이해할 수 있게 되었지만,
매일 다시 공부해야 할 것 같다는 생각이 든다.
반응형
'Programming > Algorithm' 카테고리의 다른 글
알고리즘과 자료구조 초보자 (0) | 2022.04.28 |
---|---|
프로그래머처럼 생각하는 법 (0) | 2022.04.02 |
그리디 알고리즘 (0) | 2022.03.07 |
디지털이란? (0) | 2022.03.03 |
프로그램과 소프트웨어 (0) | 2022.03.02 |