最大子数组问题求解的是给定一个数组a[0...n-1],求出它的一个子数组使得其所有元素的和加起来最大
如果使用暴力解法即枚举所有的子数组,则时间复杂度为O(n^2)
采用分治法,对一段数组a[low.....high],求它的最大子数组,mid = (low+high)/ 2
那么,a[low..high]的子数组有可能有三种分布的情况,假设子数组的上下届为i,j
1) 在a的左部分,即 low < = i <= j < = mid
2) 在a的右部分,即 mid + 1 <= i <= j <= high
3) 跨越mid,即 low <= i <= mid <= j <= high
下面给出基于此思想的分治算法
注