先把要排序的數列切一半,然後分別排序好
直接假設你有兩個排序好的陣列了,怎麼把它合併在一起?
1 5 7 8
2 3 6 9
2比較小,拿2, array = [1, 2]
5 7 8
1比較小,拿1, array = [1]
3比較小,拿3, array = [1, 2, 3]
3 6 9
......
畫一下遞迴樹
每一層要花\(O(n)\)的時間
總共\(\log n\)層
複雜度\(O(n\log n)\)
一樣先切一半,可以分別計算左右兩邊的最大連續和
現在只要處理會跨過中間的最大連續和
可以找到從中間往左的最大連續和
還有從中間往右的最大連續和
把兩邊加起來就可以得到跨過中間的最大連續和了
複雜度分析跟合併排序一樣
\(O(n\log n)\)
By scottchou