###### tags: `ADA 2.6` `Maximum Subarray` # ADA 2.6 Maximum Subarray 取Array中間的連續一段值然後最大化(可得最大值),最大子序列  * Example 買股票的買低賣高 寫code的黃金產出時段  ## 暴力破解方法 (brute-force solution) 得到 $O(n^2)$ Big O的N平方 *n指的是時間複雜度  $O(n^2)$ = Upper bound --> Lower bound = Omega(n) 表示至少要把array的值都看過一遍 ## Better way: using Divide-and-Conquer solution * **Base case (n=1)** maximum subarray = itself * **Recursive case (n>1)** 有三種可能情形:  In case 3:cross the middle 1.將array分成兩個subarray 2.分別找出兩個array中的maximum subarray 3.將兩個maximum subarray merge maximum subarray = 3.   所以所花時間 = j-i+1 = i~k 的int數量 ## 總整理  base case所花時間: 1 = constant time recursive case -case 1 所花時間: k-i+1 -case 2 所花時間: j-k -case 3 所花時間: j-i+1 ## 結論 the running time T(n) of find maximum subarray:  等同於之前的Merge Sort
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up