세수를 하다가 정렬을 하고 싶어진 동근이의 문제 "세 수 정렬"
선택정렬방법으로 풀기! 나는 아직 정렬 초보니까!
#include <stdio.h>
int main (void){
int i, j, min, index, temp; //정렬을 할 때 값을 바꾸기 위해 잠시 값을 맡겨둘 수 있는 공간 TEMP이 중요해!
int array[3]; //세 수 정렬이니까 배열의 크기는 정해져 있지, 만약에 N개의 수라고 한다면 int array[n+1]하기 0~n까지 담는?
for (i = 0 ; i < 3; i++) //3번 반복하세요 무엇을?
{ scanf("%d", &array[i]); } //숫자를 받아서(scanf), array[i] 공간에 (&) 저장하는 것을
for(i=0; i < 3; i++ ) //3번 반복하세요 무엇을?
{ min = 1000001; //사용자가 적을 수는 범위 고려하여 min 초기값은 그보다 1크게
for(j=i; j < 3; j++) //j=i 설정, 내가 계속 까묵는 부분!
{
if(array[j] < min) //최솟값과 비교해서 찐최소를 만났다면
{ min = array[j]; //찐최소의 값을 min에 저장하고,
index = j; // 찐최소의 주소(인덱스)를 index에 지정해!
}
} //아직 대왕포문?안끝났어 이것도 포문에 들어가있는 문! 중요중요
temp = array[i]; // 현재 for문의 i값은 temp에 넣어두고,
array[i] = array [index]; //찐최소가 있는 주소에 있는 값을 i에 담아,
array[index] = temp; //그리고 temp에 넣어둔 그 값을 텅비어버린 찐최소의 구주소에 담아
}
for (i=0; i < 3; i++){ // 출력하자
printf("%d ", array[i]);} //이렇게 이중for문으로 정렬된 배열들을~
}
'자기발전소 > # @lgorithm' 카테고리의 다른 글
Hash Map (0) | 2020.11.12 |
---|---|
Stack & Queue (0) | 2020.11.11 |
Linked List (0) | 2020.11.11 |