Java のマージ ソート プログラムは、最も広く使用されている効率的なアルゴリズムの 1 つです。マージ ソートは、特定の問題を複数のサブ問題に分割し、各サブ問題を個別に解決する分割統治手法に基づいています。部分問題が解決されたら、その結果を組み合わせて問題の最終的な解決策を導き出します。マージ ソート アルゴリズムは、主な問題ではなく副問題の処理を伴うため、再帰を使用して実装できます。
マージソートアルゴリズムを使用してソートする必要がある、ソートされていない配列を考えてみましょう。値 18、8、4、13、10、12、7、および 11 で配列をソートする手順は次のとおりです。
無料ソフトウェア開発コースを始めましょう
Web 開発、プログラミング言語、ソフトウェア テスト、その他
これは、Java でのマージ ソートの実装を示すコード例です。
コード:
package com.edubca.sorting; public class MergeSort { private int[] array; private int[] tempMergedArr; private int length; public static void main(String a[]){ int[] inputArr = {18, 8, 4, 13, 10, 12, 7, 11}; MergeSort mergeSort = new MergeSort(); mergeSort.sort(inputArr); for(int i:inputArr){ System.out.print(i + " "); } } public void sort(int inputArr[]) { this.array = inputArr; this.length = inputArr.length; this.tempMergedArr = new int[length]; performMergeSort(0, length - 1); } private void performMergeSort(int lowerIndex, int higherIndex) { if (lowerIndex < higherIndex) { int middle = lowerIndex + (higherIndex - lowerIndex) / 2; // Sort the left side of the array call performMergeSort recursively performMergeSort(lowerIndex, middle); // Sort the right side of the array call performMergeSort recursively performMergeSort(middle + 1, higherIndex); // Merge subparts using a temporary array mergeData(lowerIndex, middle, higherIndex); } } private void mergeData (int lowerIndex, int middle, int higherIndex) { for (int i = lowerIndex; i <= higherIndex; i++) { tempMergedArr[i] = array[i]; } int i = lowerIndex; int j = middle + 1; int k = lowerIndex; while (i <= middle && j <= higherIndex) { if (tempMergedArr[i] <= tempMergedArr[j]) { array[k] = tempMergedArr[i]; i++; } else { array[k] = tempMergedArr[j]; j++; } k++; } while (i <= middle) { array[k] = tempMergedArr[i]; k++; i++; } } }
上記のコードは、出力としてソートされた配列を生成します。
出力:
マージソートは次のシナリオで使用できます:
マージソートの複雑さの分析ポイントを以下に示します:
以下の点は、マージソートと他のアルゴリズムを比較します:
この記事では、マージ ソートはアルゴリズムに関して理解する必要がある重要な概念であると結論付けています。
以上がJavaでのマージソートのプログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。