给定一个数组返回最大值。
可以遍历数组,但是时间复杂度是On
现在用分治法:时间复杂度是Ologn
或者使用Arrays先对数组进行升序排序,输出最后一个元素也行。
import java.util.Arrays;
public class maxSubstring {
public static int getArrMaxDivide(Integer arr[], int strat, int end) {
if (strat == end) {
return arr[strat];
}else {
int leftMax = getArrMaxDivide(arr, strat, (end+strat) / 2);
int rightMax = getArrMaxDivide(arr, (end+strat) / 2 + 1, end);
return leftMax > rightMax ? leftMax : rightMax;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Integer[] arr = new Integer[9];
arr[0] = -2;
arr[1] = 1;
arr[2] = -3;
arr[3] = 4;
arr[4] = -1;
arr[5] = 2;
arr[6] = 1;
arr[7] = -5;
arr[8] = 4;
System.out.println(getArrMaxDivide(arr, 0, arr.length-1));
Arrays.sort(arr);
System.out.println(arr[arr.length-1]);
}
}