선택정렬 이해하기 & 구현하기
3
投稿した質問数 2
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]));
回答 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
7
2
mission12-01 guide.md파일 누락
0
10
1
채점서버 연결 관련 질문입니다
0
19
1
삼성 s직군
0
19
0
자료집 관련
0
20
2
13. (App 2) 기본기 훈련 에서
0
26
1
채점 프로그램 미작동
0
18
2
챌린지 시작일 문의
0
31
0
삼성 코테 없어짐
0
69
1
2. 어떤 도구를 사용하는 것이 가장 유리할까? 강의 중
0
26
1
11차시 Antigravity IDE 설치 후
0
28
1
링크드 리스트 중간 삽입삭제 시간복잡도 질문
0
26
1
처음 에이전트 설정을 잘못 했을 경우 수정 하는 방법
0
31
1
생산 공정 최적화 (이분탐색) worst Case 수정
0
85
1
버블정렬
0
66
1
학습 방향성에 대한 문의
1
104
2
큐 구현 관련
0
85
2
난이도 질문
0
124
2
강의 구현 코드
0
119
2
테스트 케이스 관련
0
96
1
연결리스트 뒤집기
0
95
2
공부방법 문의
0
104
1
알고리즘 개념에 대한 추천 자료문의
0
94
1
강의에 나온 selection 코드에 오류가 있습니다.
0
147
2

