Presentation is loading. Please wait.

Presentation is loading. Please wait.

Divide-and-Conquer. 什麼是 divide-and-conquer ? Divide 就是把問題分割 Conquer 則是把答案結合起來.

Similar presentations


Presentation on theme: "Divide-and-Conquer. 什麼是 divide-and-conquer ? Divide 就是把問題分割 Conquer 則是把答案結合起來."— Presentation transcript:

1 Divide-and-Conquer

2 什麼是 divide-and-conquer ? Divide 就是把問題分割 Conquer 則是把答案結合起來

3 Divide-and-Conquer 把一個大問題切成幾個小一號的問題, 個 個擊破。 如果這些小一號的問題, 與原 問題長得很像, 就可以寫 遞迴 recursive 程式來解。 例如二元樹搜尋 (Binary Search),Merge Sort,Quick Sort 等

4 Binary Search 在一串排列過後的數值中尋找目標值 最簡單的 Divide-and Conquer 的例子 最多只需要 次就能完成

5 Binary Search 演算法 Int b_search( int low, int high ) { int mid; if(low>high) return 0; else{ mid=(low+high)/2; if (x==S[mid]) return mid; else { if(x<S[mid]) return b_search(low,mid-1); else return b_search(mid+1,high);} }

6 Merge Sort 把資料等分成兩堆, 各自用 merge sort 排序好後再合併 主要的工作都是在 “ 合併 ” 這動作中 有兩種 top-down 跟 bottom-up

7 Top-Down 9 5 1 6 8 4 2 3 7 9 5 1 6 8 | 4 2 3 7 9 5 1 | 6 8 | 4 2 | 3 7 9 5 | 1 | 6 | 8 | 4 | 2 | 3 | 7 9 | 5 | 1 | 6 | 8 | 4 | 2 | 3 | 7 5 9 | 1 | 6 | 8 | 4 | 2 | 3 | 7 1 5 9 | 6 8 | 2 4 | 3 7 1 5 6 8 9 | 2 3 4 7 1 2 3 4 5 6 7 8 9

8 Botton-Up 9 5 1 6 8 4 2 3 7 9 | 5 | 1 | 6 | 8 | 4 | 2 | 3 | 7 5 9 | 1 6 | 4 8 | 2 3 | 7 1 5 6 9 | 2 3 4 8 |7 1 2 3 4 5 6 8 9 | 7 1 2 3 4 5 6 7 8 9

9 Quick Sort 也是一種 divide-and-conquer 類型的演 算法, 可以用遞迴來實作 挑一個元素當做 pivot 把陣列內比它小元 素的都放在同一側把比它大的都放在另 一側然後再對兩邊使用 quick sort 簡單版的 quick sort 是以陣列的最左邊 元素作為 pivot

10 ASP 程式 直譯式語言,也就是說不需要編譯 有由伺服器端執行後把結果傳送到客戶 端端顯示,語法跟 VB 幾乎是一模一樣 或是直接在客戶端執行的 ( vbscript, javascript )

11 JAVA 程式 執行時需要先經過編譯的動作 物件導向的程式語言 變數之類的需要先定義才可以使用 (VB 可 以不用 )


Download ppt "Divide-and-Conquer. 什麼是 divide-and-conquer ? Divide 就是把問題分割 Conquer 則是把答案結合起來."

Similar presentations


Ads by Google