다음 Java 코드가 인접 원소를 비교해 오름차순으로 정렬하고, 이미 정렬되면 반복을 끝내도록 ①과 ②에 들어갈 식을 쓰시오. 서로 같은 값은 교환하지 않는다.
class Sorter {
static void bubble(int[] values) {
int limit = values.length;
boolean changed;
do {
changed = false;
for (int i = 1; i < limit; i++) {
if (values[i - 1] ① values[i]) {
int temp = values[i - 1];
values[i - 1] = values[i];
values[i] = temp;
changed = true;
}
}
②;
} while (changed);
}
public static void main(String[] args) {
int[] data = {6, 2, 5, 1};
bubble(data);
}
}모범답안
① >, ② limit--
풀이와 판단 근거
오름차순 정렬에서는 왼쪽 원소가 오른쪽 원소보다 클 때만 교환하므로 ①은 `>`다. 한 번의 순회가 끝나면 그 구간의 최댓값이 맨 오른쪽에 확정되므로 다음 비교 범위를 하나 줄이는 `limit--`가 ②에 들어간다.
changed가 false인 순회가 나오면 더 이상 교환할 원소가 없어 do-while이 종료된다.
자주 틀리는 지점
- 작은 값을 오른쪽으로 보내는 `<`를 넣어 내림차순으로 만듦
- limit를 증가시켜 배열 범위를 벗어나게 함
- changed를 순회마다 false로 초기화하지 않는 코드로 해석함
자동 판정 방식
한글·영문 동의어와 문항별 필수 개념을 확인하며, 정답 단어가 부정되거나 반대 개념과 함께 쓰이면 자동 정답으로 확정하지 않습니다. 부분점수는 ITPASSLAB의 학습용 예상 점수입니다.