【问题描述】最大子序列和问题:给定整数A1, A2, ..., An(可能有负数),ΣAk的最大值(为方便起见,如果所有整数均为负数,则最大子序列和为0)。
通过四种方式来完成算法的实现,时间复杂度分别为:O(N*N*N)、O(N*N)、O(N*log N)、O(N)
【源码1】
package cn.edu.nwsuaf.cie.qhs.maxsubsum;
/**
* 求最大子序列和(1)
* @author 静寞小森(沧海森林)
* 下面的这种做法来求和,应该是程序员最直观想到的,时间复杂度为:O(N*N*N)
*
*/
public class MaxSubSum1 {
public static int maxSum(int[] array){
int maxSum = 0;
for(int i = 0 ; i < array.length ; i++){
for(int j = i ; j < array.length;j++){
int curSum = 0;
for (int k = i; k <= j; k++){
curSum += array[k];
if(curSum > maxSum){
maxSum = curSum;
}
}
}
}
return maxSum;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
i