To appreciate different time complexity by way of example of a dynamic programming

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 ; 
    } 
}

 

Guess you like

Origin www.cnblogs.com/zhaijiayu/p/11563281.html