코플릿/toyproblem

toy problem 13

테오구 2021. 10. 29. 09:50
728x90

문제

정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다.

입력

let output = insertionSort([3, 1, 21]);
console.log(output); // --> [1, 3, 21]

 

const insertionSort = function (arr, transform = (item) => item) {
  let sorted = [arr[0]];
  for (let i = 1; i < arr.length; i++) {
    if (transform(arr[i]) >= transform(sorted[i - 1])) {
      sorted.push(arr[i]);
    } else {
      for (let j = 0; j < i; j++) {
        if (transform(arr[i]) <= transform(sorted[j])) {
          const left = sorted.slice(0, j);
          const right = sorted.slice(j);
          sorted = left.concat(arr[i], right);
          break;
        }
      }
    }
  }

  return sorted;
};
728x90

'코플릿 > toyproblem' 카테고리의 다른 글

toy problem 16  (0) 2021.10.29
toy problem 15  (0) 2021.10.29
toy problem 12  (0) 2021.10.29
toy problem 10  (0) 2021.10.28
toy problem 11  (0) 2021.10.28