JavaScript 배열을 이용한 안정 정렬

Beginner

This tutorial is from open-source community. Access the source code

소개

이 랩에서는 JavaScript 에서 안정 정렬 (stable sorting) 의 개념을 탐구합니다. 안정 정렬은 배열 내 항목의 값이 동일할 때 해당 항목의 순서를 유지하는 기술입니다. Array.prototype.map()Array.prototype.sort() 메서드를 활용하여 배열의 안정 정렬을 구현하는 함수를 사용합니다.

안정 정렬 (Stable Sort)

배열의 안정 정렬을 수행하고 동일한 값을 가진 항목의 초기 인덱스를 유지하려면 다음 단계를 따르세요.

  1. 터미널/SSH 를 열고 node를 입력하여 코딩 연습을 시작합니다.
  2. Array.prototype.map()을 사용하여 입력 배열의 각 요소를 해당 인덱스와 쌍으로 묶습니다.
  3. Array.prototype.sort()compare 함수와 함께 사용하여 비교되는 항목이 같을 경우 초기 순서를 유지하면서 목록을 정렬합니다.
  4. Array.prototype.map()을 다시 사용하여 배열 항목을 초기 형태로 변환합니다.
  5. 원본 배열은 변경되지 않고 새로운 배열이 대신 반환됩니다.

다음은 JavaScript 에서 stableSort 함수의 구현입니다.

const stableSort = (arr, compare) =>
  arr
    .map((item, index) => ({ item, index }))
    .sort((a, b) => compare(a.item, b.item) || a.index - b.index)
    .map(({ item }) => item);

아래와 같이 배열과 compare 함수를 사용하여 stableSort 함수를 호출하여 정렬된 항목이 있는 새 배열을 얻을 수 있습니다.

const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const stable = stableSort(arr, () => 0); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

요약

축하합니다! 안정 정렬 랩을 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.