인프런 커뮤니티 질문&답변

나준선님의 프로필 이미지
나준선

작성한 질문수

독하게 시작하는 C 프로그래밍

[필수 실습 문제] 선택정렬

선택정렬 if 교환

해결된 질문

작성

·

242

0

소스코드 18라인에 if로 j가 변환할떄만 바꿔주신다고 했는데 변환하지 않아도 자기자신끼리 교환하는 거니까 결과값이 달라지진 않잖아요. 근데도 조건문을 사용하는게 더 좋은 코드인건가요?

답변 3

0

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

당연히 정상작동합니다. 대신 중첩된 for문 중 바깥쪽 for문이 수행될 때 반복회수 만큼 교환코드가 실행될 것입니다. 무엇보다 j와 idxMin 값이 같아서 교환할 이유가 없는 상황에서조차 실행될 것입니다. 따라서 불필요한 교환이 반복됩니다. 이러한 문제를 해결하기 위해 idxMin 값이 j와 다를 때만 교환하도록 한 것입니다. 참고하시기 바랍니다.

0

나준선님의 프로필 이미지
나준선
질문자

제가 너무 성의없이 질문한거 같네요 죄송합니다. 제가 여쭤보고 싶었던 것은 선택정렬2.png

선택정렬1.pngif (idxMin != j)가 없더라도 정상적으로 작동한다는 것입니다. 오름차순으로 정렬할 때 해당 인덱스보다 더 작은 값이 없을 경우에 j와 idxMin의 값이 같기 때문입니다. 혼자 실습해보고 idxMin = j;가 for문 안에서 정의된것을 보고 엄청 감탄했는데 왜 조건문을 썼지? 라고 생각이 들어서 질문드렸습니다.

0

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

죄송하지만...질문의 내용을 제가 정확히 이해하기가 어렵네요. 문의하신 부분이 없을 경우 효율의 문제를 떠나 예제가 정상적으로 작동하지 못합니다. 그리고 '자기자신끼리 교환'하는 부분은 어디를 언급한 것인지 모르겠습니다. 아무튼 결과적으로 더 좋고 나쁘고의 문제는 아니라 할 수 있겠습니다. 감사합니다. 😄

나준선님의 프로필 이미지
나준선

작성한 질문수

질문하기