안녕하세요 길벗수험서 운영팀입니다.
해당 알고리즘은 i가 고정위치, j가 가변위치로 이동해가며 더 작은 값을 맨 앞으로 이동시킵니다.
안쪽 for문에서 고정위치의 값보다 더 작은 값이 없는지 비교를 수행하게 되고,
만약 더 작은 값이 없다면, sw는 그대로 i의 값을 갖고 있게 되면서 해당 세 줄에서 자기 교체가 이루어지죠.(의미 없는 교환)
반면 더 작은 값을 찾게 되면 sw가 j를 갖게 되면서 i과 j 위치의 값이 서로 교환이 이루어지게 됩니다.
이 알고리즘에서 교체 시 i가 아닌 j 위치의 값은 사용하지 못합니다.
안쪽 for문 종료 시 j는 n의 값을 갖게 되는데, 이 때 a[j]를 조회하게 되면 배열의 범위를 벗어난 위치를 조회하게 되어 오류가 발생합니다.
해당 교체 수행 시 a[j]는 항상 a[n]의 값을 갖게 되어 알고리즘 자체도 정상적으로 수행되지 않게 되죠.
행복한 하루되세요 :)
-
관리자2022-09-13 09:24:11
안녕하세요 길벗수험서 운영팀입니다.
해당 알고리즘은 i가 고정위치, j가 가변위치로 이동해가며 더 작은 값을 맨 앞으로 이동시킵니다.
안쪽 for문에서 고정위치의 값보다 더 작은 값이 없는지 비교를 수행하게 되고,
만약 더 작은 값이 없다면, sw는 그대로 i의 값을 갖고 있게 되면서 해당 세 줄에서 자기 교체가 이루어지죠.(의미 없는 교환)
반면 더 작은 값을 찾게 되면 sw가 j를 갖게 되면서 i과 j 위치의 값이 서로 교환이 이루어지게 됩니다.
이 알고리즘에서 교체 시 i가 아닌 j 위치의 값은 사용하지 못합니다.
안쪽 for문 종료 시 j는 n의 값을 갖게 되는데, 이 때 a[j]를 조회하게 되면 배열의 범위를 벗어난 위치를 조회하게 되어 오류가 발생합니다.
해당 교체 수행 시 a[j]는 항상 a[n]의 값을 갖게 되어 알고리즘 자체도 정상적으로 수행되지 않게 되죠.
행복한 하루되세요 :)