パブリック クラスメイン{ 公共 静的 ボイドメイン(文字列[]引数){ INT [] A = {5,2,6,3,1,10,9 }。 マージ(A、 0、A.length - 1 )。 以下のために(int型 i = 0; iはA.lengthを<; iは++ ){ System.out.print(A [i]が + "" )。 } のSystem.out.println(); } パブリック 静的 ボイドマージ(INT [] Aは、intです左、int型{右) であれば(左< 右){ int型ミッド=左+(右-左)/ 2 。 マージソート(A、左、中)。 マージ(A、中間 + 1 、右)。 マージ(A、左、中央、右)。 } } パブリック 静的 ボイド(マージをint [] A、int型、左INT、中間値int {右) INT 1 +左- lenL =ミッド。 int型 lenR =右- 中旬。 INT [] AL = 新しい INT [lenL + 1 ]。 INT [] AR = 新しい int型[lenR + 1 ]。 以下のために(int型 i = 0; iはlenL <; iは++ ){ AL [I] = A [左+ I]。 } のために(int型 i = 0; iがlenRを<; Iは++ ){ AR [I] = A [中間+ I + 1 ]。 } AL [lenL] = Integer.MAX_VALUEの; AR [lenR] = Integer.MAX_VALUEの; int型 I = 0、J = 0 ; 用(int型の k個++;右= <K左K = {) であれば(AL [i]が<= {AR [J]) [K] =AL [I]。 I ++ ; } エルス{ [K] = AR [J]。 J ++ ; } } } }
出力:
1 2 3 5 6 9 10