パブリック クラスメイン{ 公共の 静的な 無効メイン(文字列[] args)を{ // ここにコードを記述する int型 N = 10000 ; INT [] A = 新た INT [N]。 以下のために(int型 i = 0; iがNを<; iは++ ){ [I] =(INT)(Math.random()* N + 1 )。 } 長いのstartTime = System.nanoTimeの()。 INT RES = MaxSubsequenceSum_4(A、N)。 長い endTimeは= System.nanoTimeの()。 System.out.println(RES)。 System.out.println( {) "程序运行时间: "+(endTimeは-のstartTime)+" NS" ); } // アルゴリズム1 O(N ^ 3) 公共の 静的 INT MaxSubsequenceSum_1(最終 INT A []、int型のN){ int型 ThisSum、MaxSum = 0 。 以下のために(int型 i = 0; iがNを<; iは++ ){ ための(int型 J = I; J <N; J ++ ){ ThisSum = 0 。 以下のための(int型のk = I; K <= J; kは++ ThisSum + = A [K]。 } の場合(ThisSum> ){ = ThisSum。 } } } に戻ります。 } // Algorithm2 O(N ^ 2) パブリック 静的 最終int型 MaxSubsequenceSum_2(INT []、int型のn){ int型 ThisSum = 0 。 以下のために(int型 i = 0; iが++; iがNを< ){ ため(INT J =; J <N; J ++ ){ ThisSum = A [J]。 もし(ThisSum> ){ = ThisSum。 } } } に戻ります。 } // Algorithm4 O(N) パブリック 静的 最終int型 MaxSubsequenceSum_4(INT []、int型のn){ int型 ThisSum = 0、= 0 ; 用(INT J = 0であり、j <N; iが++ ){ ThisSum + = [J]。 もし(ThisSum> ){ = ThisSum。 } そうで あれば(ThisSum <0 ){ ThisSum = 0 。 } } を返します。 } }