inflearn logo
강의

Course

Instructor

Data Structures and Algorithms Made Easy with Diagrams (Basics)

Sort - Selection Sort

질문

281

ghuhan18

121 asked

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 로 바뀐건가요 ?

 

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

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

알고리즘

Answer 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

gamja5

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

0

gamja5

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 문까지는 영향을 끼치는 건가요?

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

0

71

2

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

1

61

2

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

1

85

2

자바스크립트 배열

0

75

2

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

0

150

2

공부 방식 질문 드립니다.

1

115

2

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

1

166

2

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

2

141

1

병합정렬 질문 있습니다.

1

136

5

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

0

156

2

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

2

127

2

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

1

147

2

터미널 설정

0

113

2

2:13분 관련 질문입니다

0

89

1

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

1

133

2

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

0

106

1

2:36초 head 위치가?

1

109

2

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

0

160

2

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

0

103

1

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

1

129

2

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

0

147

2

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

0

202

2

질문이있습니다.

0

102

1

2번째 복습 스터디📖 를 진행하고 스터디원분들과 나눈 질문들 입니다.(자료구조와 알고리즘)

1

146

2