1.最大子段和問題的描述

2.分治策略的求解思路

用分治法求解這個問題 。
在數組的 center = (right-left)/2+left 位置處分開。形成兩個子數組。
那么,最大子段和 可能出現在三個位置:
a.可能出現在 左 子數組
b. 可能出現在 右子數組
c.可能出現在 過center的 中間某部分 元素 組成的子數組。
(一定會過center 嗎? 為什么一定會過center?因為這是分治過程,center的值會發生改變,當然,計算中所包含的數也會發生改變,所以,不要死盯着 (0+array.length)/2 的center,center 是 (left+right)/2 ,而不是 (0+array.length)/2
下面考慮 三種情況的計算方法:
第一種情況: 計算 left 到 center 的最大和,記作 leftSum
第二種情況: 計算從 center+1 到 right的最大和,記作 rightSum
第三種情況: 跨邊界的和。 ;以center為中心分別向兩邊計算和。
a.從 center出發,每次向左邊擴張一步,並且記錄當前的值S1,如果當前的和比上次的和大,就更新S1,一 直向左擴張到 位置 Left。
b.從 center+1出發,每次擴張一步,計算當前的和 為S2,如果當前的值比上次的和 大,那么,就更新S2的 值,一直向右擴張到位置Right。
c.計算過center的連續值的和,S1+S2的值 Sum。 這個就是跨邊界的和。
上面三種情況考慮計算完成后,最后一步就是,比較三個值中的最大值,取最大值就可以了。
3.分治方法求解的偽碼

4.最后考慮用分治方法求解的時間復雜度。
我們在(left+right)/2處,把大問題分成了兩個部分的小問題
T(N)1=2T(N) , T(N)2=N
在跨邊界求和的時候,我們需要計算 從center出發的到 left方向的最大和,每次增加一個元素,通過比較,得到最大的和,
時間復雜度為O(N),同樣, 從center+1 出發的到 right 方向的最大和,每次增加一個元素,通過比較,得到最大的和,時間復雜度 為 O(N) ,所以,時間復雜度為 O(N)

5. 代碼
