inflearn logo
강의

Course

Instructor

C Programming for Hardcore Beginners

[Mandatory Practice Problem] Selection Sort

선택정렬 if 교환

Resolved

350

nawnstjs1705

4 asked

0

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

c 컴퓨터-구조 assembly-language vc++

Answer 3

0

nullnull8537

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

0

nawnstjs1705

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

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

0

nullnull8537

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

주소 연산자(&) 간접 지정자(*) 반대 개념

0

22

1

Virtual Memory, Memory, Memory mapping tables

0

42

1

샘플코드 출력 오류 발생 질문드립니다

0

59

2

값의 교환에 사용되는 변수의 위치.

0

83

2

메모리 비교에 관한 질문

0

78

2

문자열 Null

0

60

1

C, C++

0

83

2

문자열 입출력 코드 에러

0

58

2

선생님! 120화 2분 50초 질문입니다.

0

65

1

caller 가 메모리 할당 해제를 할 때의 문제점 질문

0

60

2

단축키 맞는지 여부 문의드립니다.

0

58

2

문자열을 사용하는 이중 포인터에 대하여 질문합니다

0

62

1

char 포인터 변수의 크기에 대하여 제가 이해한 것이 맞을까요

0

77

2

용어 설명 필요

0

55

2

stdin, stdout

0

69

2

필수 실습 (최댓값을 반환하는 함수)

0

90

2

아......ㅠㅠ

0

96

2

버퍼 내 엔터

0

69

1

2진수 뺄셈에서 carry-out

0

110

2

union 식별자는 실무에서 보통 어디에서 사용하나요?

0

76

2

필수실습문제 공부법 (진도 vs 복습)

0

100

2

예제파일 다운로드

0

73

2

Visial Studio Code 를 설치해서 사용해도 수업을 따라가는데 지장이 있나요?

0

112

3

연산자 기본이론 강의 질문

0

57

2