해결된 질문
작성
·
242
0
소스코드 18라인에 if로 j가 변환할떄만 바꿔주신다고 했는데 변환하지 않아도 자기자신끼리 교환하는 거니까 결과값이 달라지진 않잖아요. 근데도 조건문을 사용하는게 더 좋은 코드인건가요?
답변 3
0
당연히 정상작동합니다. 대신 중첩된 for문 중 바깥쪽 for문이 수행될 때 반복회수 만큼 교환코드가 실행될 것입니다. 무엇보다 j와 idxMin 값이 같아서 교환할 이유가 없는 상황에서조차 실행될 것입니다. 따라서 불필요한 교환이 반복됩니다. 이러한 문제를 해결하기 위해 idxMin 값이 j와 다를 때만 교환하도록 한 것입니다. 참고하시기 바랍니다.
0
제가 너무 성의없이 질문한거 같네요 죄송합니다. 제가 여쭤보고 싶었던 것은
if (idxMin != j)가 없더라도 정상적으로 작동한다는 것입니다. 오름차순으로 정렬할 때 해당 인덱스보다 더 작은 값이 없을 경우에 j와 idxMin의 값이 같기 때문입니다. 혼자 실습해보고 idxMin = j;가 for문 안에서 정의된것을 보고 엄청 감탄했는데 왜 조건문을 썼지? 라고 생각이 들어서 질문드렸습니다.
0
죄송하지만...질문의 내용을 제가 정확히 이해하기가 어렵네요. 문의하신 부분이 없을 경우 효율의 문제를 떠나 예제가 정상적으로 작동하지 못합니다. 그리고 '자기자신끼리 교환'하는 부분은 어디를 언급한 것인지 모르겠습니다. 아무튼 결과적으로 더 좋고 나쁘고의 문제는 아니라 할 수 있겠습니다. 감사합니다. 😄