Greedy、分治、資料結構

Greedy

人的本性

分治

DQ, D&C, divide and conquer...

核心思想

  1. 大問題切成小問題
  2. 算小問題的答案
  3. 小問題合併成大問題

Merge sort

如果我有兩個已經排序好的陣列,想要把他合併成一個,要怎麼做

每次把兩個陣列的最小值拿出來比較,小的那個就放進去

為什麼是好的? Greedy

複雜度多少? O(n)

那我現在想要排序一個陣列

分而治之

  1. 把陣列切成兩半
  2. 分別排序兩半的陣列
  3. 把兩半透過上面的排序法合併成一個

複雜度

假設 T(n) 表示排序一個長度為 n 的陣列需要的時間

T(n) = 2T(n/2) + O(n)

T(n) = O(nlogn)

主定理

自己看

好的連續子序列

有資料結構做法,但是分治時間最優

資料結構

Data Structure

Greedy/D&C/DS

By alvingogo

Greedy/D&C/DS

  • 209