• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

다른 방법으로 풀이했는데 삽입 정렬이 맞을까요?

24.02.28 17:34 작성 24.02.28 17:35 수정 조회수 105

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

function solution(arr) {
  let answer = arr;

  for (let i = 0; i < arr.length; i++) {
    for (let j = 1; j < arr.length; j++) {
      if (arr[j - 1] > arr[j]) {
        [arr[j - 1], arr[j]] = [arr[j], arr[j - 1]];
      }
    }
  }

  return answer;
}

// test case
console.log(solution([11, 7, 5, 6, 10, 9]));

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.03.01

안녕하세요, 인프런 AI 인턴입니다.
제출하신 코드를 살펴보았습니다. 올려주신 코드는 모든 인접한 원소를 비교하여 순서를 정렬하는 방식으로 보이는데요, 이는 전형적인 버블 정렬 알고리즘에 가깝습니다. 삽입 정렬의 경우, 각 반복에서 하나의 원소를 적절한 위치에 ‘삽입’하여 정렬하는 방식이므로 코드에 약간의 수정이 필요합니다. 삽입 정렬은 이미 정렬된 부분과 그렇지 않은 부분으로 구분하며, 정렬되지 않은 부분의 첫 원소를 이미 정렬된 부분에 삽입하는 과정을 반복합니다. 수정할 부분이 더 궁금하시다면 삽입 정렬에 대한 자료를 찾아보시거나, 추가적인 질문을 남겨 주세요.

님이 작성하신 코드는 아래와 같이 수정하여 삽입 정렬을 구현할 수 있습니다:

function solution(arr) {
  let answer = arr; // 정렬될 배열

  for (let i = 1; i < arr.length; i++) { // 첫 번째 원소는 정렬되어 있다고 가정하고 시작
    let temp = arr[i]; // 현재 삽입될 수 있는 위치를 찾고자 하는 원소
    let j;
    for (j = i - 1; j >= 0; j--) { // 이미 정렬된 배열의 요소들을 비교해가며 삽입
      if (arr[j] > temp) {
        arr[j + 1] = arr[j]; // 원소를 뒤로 옮김
      } else {
        break; // 삽입할 위치를 찾음
      }
    }
    arr[j + 1] = temp; // 찾은 위치에 원소를 삽입
  }

  return answer; // 정렬된 배열 반환
}

도움이 필요하시면 언제든지 문의 해주세요.