inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)

정렬 - 선택정렬

질문

282

ghuhan18

작성한 질문수 121

1

수업들어보니 자바스크립트의 let 이 자바의 int 같은데, 만약 int min = i ; 선언하고 아래 if ( arr[j] < arr[min]) {

min = j ;

}

라고 하셨는데, 그러면 변수 min 에는 j 값이 저장 되기는 하지만 int 는 지역 변수라 if 문 안에서 저장된 int min 의 값이 if 문 밖으로 나가서는 for 문을 실행하여 다시 j 가 하나 더해져서 반복 실행 되었을때 min 의 값은 다시 i 로 초기화 되는건가요? 아니면 j 로 바뀐건가요 ?

 

-제가 아는 지역 변수에 대한 설명입니다

지역 변수는 선언된 함수나 메소드 내에서만 접근이 가능하고, 해당 함수나 메소드의 실행이 끝나면 그 범위를 벗어나서 접근할 수 없습니다.

알고리즘

답변 2

0

ghuhan18

항상 친절하게 설명해주셔서 감사합니다.

 

그럼 즉, 두번째 for 문에서 if 에서 minvalueindex = j 인데, 그게 if 조건문 안에 있는 arr [ minValueIndex] 에 영향을 미친다는 말씀 이신가요?

 

즉 제가 아는 지역변수의 개념은 if 문 {} 안에서만 값이 유효하고 그 밖에서는 유효하지 못한걸로 아는데, 보시면 if 문 안에 minValueIndex 값이 = J 로 되었지만 다시 for 문 반복 실행시 if 를 2번째 실행할때 if 조건문 안의 arr[minValueIndex] 가 왜 기존 int minValueIndex = i ; 가 되는게 아니라 j 로 그대로 있는건지 이해가 안갑니다.

이게 왜 영향을 미치는지 잘 이해가 안갑니다.

 

혹여나 안에 있는 inner loop 들이 가장 밖에 있는 for loop 과 연관이 있기 때문에 그 for 문까지는 영향을 끼치는 건가요?

0

감자

지역변수의 개념은 선언과 소멸로 바라보시면 될 것 같습니다.
let minValueIndex가 첫 번째 for문 안에 선언되어 있기 때문에 해당 for문을 다시 반복하기 전까지는 계속 살아있습니다.
즉 inner for문이 동작하는 동안에는 지역변수는 계속 살아있습니다.
따라서 j로 값을 덮어쓰면 계속 유지됩니다.
다른 언어에서 같은 코드를 작성하더라도 똑같습니다.
중첩 for문으로 테스트 해보시길 바랍니다

0

감자

min은 SelectionSort함수 내 첫 번째 for문 안에 선언되어 있으므로 첫 번째 for문안에서 유효합니다.
따라서 두 번째 for문에서 값을 수정했더라도 첫 번째 for문 안의 값은 그대로 유지됩니다.
다만 첫 번째 포문의 다음 인덱스때는 i값으로 초기화해주기 때문에 i값으로 변하겠죠?

1

ghuhan18

항상 친절하게 설명해주셔서 감사합니다.

 

그럼 즉, 두번째 for 문에서 if 에서 minvalueindex = j 인데, 그게 if 조건문 안에 있는 arr [ minValueIndex] 에 영향을 미친다는 말씀 이신가요?

 

즉 제가 아는 지역변수의 개념은 if 문 {} 안에서만 값이 유효하고 그 밖에서는 유효하지 못한걸로 아는데, 보시면 if 문 안에 minValueIndex 값이 = J 로 되었지만 다시 for 문 반복 실행시 if 를 2번째 실행할때 if 조건문 안의 arr[minValueIndex] 가 왜 기존 int minValueIndex = i ; 가 되는게 아니라 j 로 그대로 있는건지 이해가 안갑니다.

이게 왜 영향을 미치는지 잘 이해가 안갑니다.

 

혹여나 안에 있는 inner loop 들이 가장 밖에 있는 for loop 과 연관이 있기 때문에 그 for 문까지는 영향을 끼치는 건가요?

연결리스트 삽입삭제 O(1) 아닌가요?

0

13

2

큐의 마지막 데이터가 head에 위치해야 하는 이유가 궁금합니다.

0

72

2

이중연결 리스트 데이터 삭제시 질문이 있습니다.

1

65

2

자바스크립트 배열은 동적이 아닌가요?

1

88

2

자바스크립트 배열

0

78

2

코테에서 링크리스트 자료구조를 사용해야 하면, 이번 강의에서 구현한 메서드들도 모두 직접 구현하면 되나요?/

0

153

2

공부 방식 질문 드립니다.

1

118

2

메모이제이션과 타뷸레이션 관련해서 질문드립니다.

1

170

2

병합정렬에서 질문이 있습니다.

2

143

1

병합정렬 질문 있습니다.

1

139

5

데이터 삽입, 삭제 함수 오류 범위 설정

0

158

2

해시 테이블에서 질문이 잇습니다.

2

129

2

시간복잡도 계산 시 1회 연산당 연산량은 왜 고려하지 않는 건가요?

1

148

2

터미널 설정

0

115

2

2:13분 관련 질문입니다

0

92

1

8:47초경부터 9:00초까지 질문입니다.

1

136

2

tail을 삭제하는 경우에 관련해서 질문이 있습니다.

0

108

1

2:36초 head 위치가?

1

112

2

환경구축강의 중 터미널 파일 실행오류

0

162

2

4:58 이중for문 질문있습니다.

0

106

1

hanoi함수 처음 호출에 대해서 여쭤봅니다.

1

134

2

해쉬테이블 데이터 관련해서 질문있습니다.

0

150

2

자바스크립트 Map과 어떤 차이가 있나요??

0

206

2

질문이있습니다.

0

105

1