선택정렬 이해하기 & 구현하기
47
2 asked
function selectionSort(array) {
//1.
//해당부분 length -1 하는 이유가 뭘 까요?
//i에 대해서만 -1을 해야 배열 맨 끝까지 돌 수 있는거 아닌가요?
const n = array.length -1;
// const n = array.length;
for (let i = 0; i < n ; i++) {
//for (let i = 0; i < n -1 ; i++) //{
let minIndex = i;
for (let j = i + 1; j < n; j++) {
if (array[j] < array[minIndex]) {
minIndex = j;
}
}
if (minIndex !== i) {
// let temp = array[i];
// array[i] = array[minIndex];
// array[minIndex] = temp;
[array[i], array[minIndex]] = [array[minIndex], array[i]];
}
}
return array;
}
console.log(selectionSort([77, 1, 33, 51, 13, 2, 6, 7, 9]));
Answer 1
0
안녕하세요, 인프런 AI 인턴입니다. 에렌님.
질문하신 선택 정렬 코드에서 array.length - 1을 n에 대입하면, 내부 반복문의 조건이 j < n이므로 배열의 마지막 인덱스를 비교하지 못합니다.
선택 정렬에서는 다음과 같이 작성하는 것이 적절합니다.
const n = array.length;
for (let i = 0; i < n - 1; i++) {
let minIndex = i;
for (let j = i + 1; j < n; j++) {
if (array[j] < array[minIndex]) {
minIndex = j;
}
}
if (minIndex !== i) {
[array[i], array[minIndex]] = [array[minIndex], array[i]];
}
}
n은 배열 전체 길이인array.length로 설정합니다.
- 바깥쪽 반복문은 마지막 원소까지 기준값으로 삼을 필요가 없으므로
i < n - 1까지만 실행합니다.
- 안쪽 반복문은 정렬되지 않은 영역의 마지막 원소까지 확인해야 하므로
j < n으로 작성합니다.
관련 내용을 다룬 기존 질문과 답변을 참고해 주세요.
해당 답변에서도 n을 array.length로 설정하고, 바깥쪽 반복문을 i < n - 1로 수정하는 방법을 설명하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
스크립트 영상 미일치
0
35
3
감정일기장 다이어리 필터 적용할때 컨텍스트를 Home에서 가져오는 특별한 이유가 궁금합니다.
0
27
2
강의 설명 중에 헷갈리는 것이 있네요
0
30
1
수업자료 관련 문의
0
38
3
3-K private case 질문
0
32
1
1강 동영상 재생 오류
1
51
2
안녕하세요. 코딩살구클럽 문의드립니다!
0
62
2
Composition단계에서 `Layer`는 누가 만드는지
0
32
1
7:41 듣다가 질문합니다
0
55
2
코드 리뷰 요청드립니다!
0
57
2
Strict Mode 예시 질문!
0
54
2
수업이 안보여요
0
57
1
코테의 바이블 수강생 코테올인원 JAVA 쿠폰
0
40
1
생산 공정 최적화 (이분탐색) worst Case 수정
0
102
1
버블정렬
0
85
1
학습 방향성에 대한 문의
1
122
2
큐 구현 관련
0
105
2
난이도 질문
0
164
2
강의 구현 코드
0
135
2
테스트 케이스 관련
0
110
1
연결리스트 뒤집기
0
116
2
공부방법 문의
0
123
1
알고리즘 개념에 대한 추천 자료문의
0
114
1
강의에 나온 selection 코드에 오류가 있습니다.
0
170
2

