자료구조와 알고리즘

[알고리즘 with JS] 삽입 정렬 (insertion sort)

동띵 2023. 1. 24. 15:14

삽입 정렬은 처음 요소가 정렬되어 있다고 가정하고,
그다음 요소와 비교하여 알맞은 자리에 삽입한다.

 

삽입 정렬에서 중요한 것은 첫 번째 값이 정렬되어 있다고 가정하여
두 번째 요소에서 시작하는 것이다.

두 번째 요소를 앞에 있는 값과 비교하여 교환이 필요하다면 swap 한다.

function insertionSort(arr) {
  for (let i=1; i<arr.length; i++) {
    let currVal = arr[i];
    let j = i-1;
    while (j >= 0 && arr[j] > currVal) {
      arr[j+1] = arr[j];
      j--;
    }
    arr[j+1] = currVal;
  }
  return arr;
}

// while문 -> for문
function insertionSort(arr) {
  for (let i=1; i<arr.length; i++) {
    let currVal = arr[i];
    for (let j=i-1; j >= 0 && arr[j] > currVal; j--) {
      arr[j+1] = arr[j];
    }
    arr[j+1] = currVal;
  }
  return arr;
}

두 번째 요소부터 for 문을 돌며 현재 값과 전 값을 비교하고,
현재 값이 전 값보다 작다면 교환하여 정렬해 나아간다.