1.기출문제집 175페이지 문제2번
2018년 4월 정보처리산업기사 실기 문제2번
if(a[0] == 0 || a[0] < 1 ) 이게 참일경우에return a를 수행한다는건가요 ?거짓이면 for문장을 수행하나요??
제가 이문제의 해석을잘못하겟습니다 ㅠㅠ 순서와 진행방법을 천천히알려주실수있을까요?
안녕하세요 길벗수험서 운영팀입니다.
if(a[0] == 0 || a[0] < 1)
return a;
a[0]이 0이거나 1보다 작으면 a값을 반환하고 메소드를 종료한다는 의미입니다.
만약 a[0]의 값이 1이상이라면 다음 줄인 for문으로 이동하여 진행을 계속하겠죠.
for(i = 0; i < n-1; i++) {
sw = i;
for(j = i + 1; j < n; j++) {
if(a[j] < a[sw])
sw = j;
}
a[j]와 a[sw](≒a[i])의 값을 비교하고 있고, a[j]가 작으면 그 위치를 sw에 저장하고 있습니다.
i가 0부터 배열의 크기-1 까지 반복하고 있음에 주의하세요.
temp = a[i];
a[i] = a[sw];
a[sw] = temp;
}
이제 sw에는 가장 작은 수의 위치가 저장되어 있을 테고 이것을 배열의 첫 번째 위치랑 교환하네요. i, j값의 변화와 조건문을 보았을 때 선택 정렬을 활용한 오름차순 정렬임을 알 수 있습니다.
행복한 하루되세요 :)
-
관리자2021-10-11 11:41:37
안녕하세요 길벗수험서 운영팀입니다.
if(a[0] == 0 || a[0] < 1)
return a;
a[0]이 0이거나 1보다 작으면 a값을 반환하고 메소드를 종료한다는 의미입니다.
만약 a[0]의 값이 1이상이라면 다음 줄인 for문으로 이동하여 진행을 계속하겠죠.
for(i = 0; i < n-1; i++) {
sw = i;
for(j = i + 1; j < n; j++) {
if(a[j] < a[sw])
sw = j;
}
a[j]와 a[sw](≒a[i])의 값을 비교하고 있고, a[j]가 작으면 그 위치를 sw에 저장하고 있습니다.
i가 0부터 배열의 크기-1 까지 반복하고 있음에 주의하세요.
temp = a[i];
a[i] = a[sw];
a[sw] = temp;
}
이제 sw에는 가장 작은 수의 위치가 저장되어 있을 테고 이것을 배열의 첫 번째 위치랑 교환하네요. i, j값의 변화와 조건문을 보았을 때 선택 정렬을 활용한 오름차순 정렬임을 알 수 있습니다.
행복한 하루되세요 :)