この解答例は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は安定ソートです。