A[low..high]的任何子数组A[i,j]所处的位置必定是一下三种情况之一:
- 完全位于子数组A[low..mid]中,low< =i<=j<=mid
- 完全位于子数组A[mid+1..high]中,mid < i< =j< =high
- 跨越了中点,low< =i< =mid < j< =high
思路:
- 递归地求解A[low..mid]和A[mid+1..high]的最大子数组
- 寻找跨越中点的最大子数组
- 选取这三中情况中的最大值
1.寻找跨越中点的最大子数组
/***
*
* @param A 数组
* @param low 下界
* @param mid 中点
* @param high 上界
* @return 最大子数组(跨越mid)的下标范围和最大子数组的和
*/
public static