public class Main { public static void main(String[] args) { // write your code here int N = 10000; int[] A = new int[N]; for(int i = 0; i < N; i++){ A[i] = (int)(Math.random() * N + 1); } long startTime=System.nanoTime(); int res = MaxSubsequenceSum_4(A, N); long endTime=System.nanoTime(); System.out.println(res); System.out.println("程序运行时间: "+(endTime - startTime)+"ns"); } //Algorithm 1 O(N^3) public static int MaxSubsequenceSum_1(final int A[], int N){ int ThisSum, MaxSum = 0; for(int i = 0; i < N; i++){ for(int j = i; j < N; j++){ ThisSum = 0; for(int k = i; k <= j; k++){ ThisSum +=A [k]; } If (ThisSum> ) { = ThisSum; } } } Return ; } // Algorithm2 O (N ^ 2) public static final int MaxSubsequenceSum_2 ( int [], int n) { int ThisSum = 0 ; for ( int i = 0; i <N; i ++ ) { for ( int j = i; i <N; i ++ ) { ThisSum = A [j]; if (ThisSum> ) { = ThisSum; } } } Return ; } // Algorithm4 O (N) public static final int MaxSubsequenceSum_4 ( int [], int n) { int ThisSum = 0, = 0 ; for ( int j = 0; j <N; i ++ ) { ThisSum + = A [j]; if (ThisSum> ) { = ThisSum; } Else if (ThisSum <0 ) { ThisSum = 0 ; } } Return ; } }