この解答例はChatGPTによって生成されています,正しいかは自己判断で。

BFE.devでのAI解答例 - JavaScript コーディング問題
41. Merge Sortを実装する

以下がJavaScriptのMerge Sort実装例です。

function mergeSort(arr) {
  // 配列の要素数が1以下の場合は並べ替え不要
  if (arr.length <= 1) {
    return arr;
  }

  // 配列を二つに分割する
  const mid = Math.floor(arr.length / 2);
  const leftArr = arr.slice(0, mid);
  const rightArr = arr.slice(mid);

  // 二つに分割した配列それぞれに再帰的にsort()を実行する
  const sortedLeftArr = mergeSort(leftArr);
  const sortedRightArr = mergeSort(rightArr);

  // 二つに分割した配列をマージする
  const mergedArr = [];
  let leftIndex = 0;
  let rightIndex = 0;
  while (leftIndex < sortedLeftArr.length && rightIndex < sortedRightArr.length) {
    if (sortedLeftArr[leftIndex] < sortedRightArr[rightIndex]) {
      mergedArr.push(sortedLeftArr[leftIndex]);
      leftIndex++;
    } else {
      mergedArr.push(sortedRightArr[rightIndex]);
      rightIndex++;
    }
  }

  return mergedArr.concat(sortedLeftArr.slice(leftIndex), sortedRightArr.slice(rightIndex));
}

const arr = [5, 3, 1, 4, 2];
console.log(mergeSort(arr)); // [1, 2, 3, 4, 5]

上記実装の時間複雑性はO(n log n)、空間複雑性はO(n)となります。また、Merge Sortは安定ソートです。