if(sum > max) { left = i; right = j; max = sum; } } }
if(right > 0) { System.out.println("Max is from element " + left + "(" + arr[left] + ") to element " + right + "(" + arr[right] + "), max sum is " + max); } else { System.out.println("Max sum is 0 ."); } }
//方法2:时间复杂度为O(n*n) public void Max2(int[] arr) { int max = 0; int sum = 0; int left = -1; int right = -1;
for(int i=0; i<arr.length; i++) { sum = 0; for(int j=i; j<arr.length; j++) { sum = sum + arr[j]; if(sum > max) { left = i; right = j; max = sum; } } }
if(right > 0) { System.out.println("Max is from element " + left + "(" + arr[left] + ") to element " + right + "(" + arr[right] + "), max sum is " + max); } else { System.out.println("Max sum is 0 ."); } }
//方法3:时间复杂度为O(n*n) public void Max3(int[] arr) { int max = 0; int sum = 0; int left = -1; int right = -1;
for(int i=0; i<arr.length; i++) { for(int j=i; j<temp.length; j++) { sum = temp[j] - temp[i]; if(sum > max) { left = i; right = j-1; max = sum; } } }
if(right > 0) { System.out.println("Max is from element " + left + "(" + arr[left] + ") to element " + right + "(" + arr[right] + "), max sum is " + max); } else { System.out.println("Max sum is 0 ."); } }
//方法4:时间复杂度为O(n*logn) public int Max4(int[] arr, int left, int right) { int sum = 0; int max = 0; int max1 = 0; int max2 = 0; int middle = 0;
if(right > 0) { System.out.println("Max is from element " + left + "(" + arr[left] + ") to element " + right + "(" + arr[right] + "), max sum is " + max2); } else { System.out.println("Max sum is 0 ."); } } }输出为:Java代码Max is from element 2(59) to element 6(97), max sum is 187 Max is from element 2(59) to element 6(97), max sum is 187 Max is from element 2(59) to element 6(97), max sum is 187 Max sum is 187 Max is from element 2(59) to element 6(97), max sum is 187