數據結構

分治算法

分治算法

在分治算法中,問題被分為兩部分。第一部分是將問題分解成子問題,第二部分是解決較小的問題並結合最終結果。分而治之分為3部分;

  1. 分:把這個問題分成更小的子問題。
  2. 征服:通過遞歸調用來解決子問題,直到解決並到達條件不滿足的階段。
  3. 結合:結合子問題得到最終的解決方案

的例子。歸並排序,快速排序。

歸並排序算法:

歸並排序(arr[]左,右)

如果r > l

  1. 找到中點將數組分成兩半:

中m = l+ (r-l)/2

  1. 調用合並排序的上半場:

調用mergeSort(arr, l, m)

  1. 調用合並排序下半場:

調用mergeSort(arr, m+1, r)

  1. 合並步驟2和步驟3中排序的兩半:

調用merge(arr, l, m, r)

解釋:在上述歸並排序算法中,將數組分為兩部分,這是分治法的第一個過程。在此之後,這兩個部分將分成許多子部分,解決子問題,並將所有子問題結合起來解決實際問題。

Baidu
map