강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của nawnstjs1705
nawnstjs1705

câu hỏi đã được viết

Lập trình C bắt đầu một cách quyết liệt

[Bài tập thực hành bắt buộc] Sắp xếp chọn

선택정렬 if 교환

Đã giải quyết

Viết

·

339

0

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

c컴퓨터-구조assembly-languagevc++

Câu trả lời 3

0

nullnull8537님의 프로필 이미지
nullnull8537
Người chia sẻ kiến thức

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

0

nawnstjs1705님의 프로필 이미지
nawnstjs1705
Người đặt câu hỏi

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

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

0

nullnull8537님의 프로필 이미지
nullnull8537
Người chia sẻ kiến thức

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

Hình ảnh hồ sơ của nawnstjs1705
nawnstjs1705

câu hỏi đã được viết

Đặt câu hỏi