在分治算法中,問題被分為兩部分。第一部分是將問題分解成子問題,第二部分是解決較小的問題並結合最終結果。分而治之分為3部分;
- 分:把這個問題分成更小的子問題。
- 征服:通過遞歸調用來解決子問題,直到解決並到達條件不滿足的階段。
- 結合:結合子問題得到最終的解決方案
的例子。歸並排序,快速排序。
歸並排序算法:
歸並排序(arr[]左,右)
如果r > l
- 找到中點將數組分成兩半:
中m = l+ (r-l)/2
- 調用合並排序的上半場:
調用mergeSort(arr, l, m)
- 調用合並排序下半場:
調用mergeSort(arr, m+1, r)
- 合並步驟2和步驟3中排序的兩半:
調用merge(arr, l, m, r)
解釋:在上述歸並排序算法中,將數組分為兩部分,這是分治法的第一個過程。在此之後,這兩個部分將分成許多子部分,解決子問題,並將所有子問題結合起來解決實際問題。