分治
分治是一种将大问题分解成相同任务的小问题的方法,常见的分治思想之一就是归并排序(mergeSort)
归并排序
归并排序在之前的排序章节中有讲解过,这里再回顾一下:
给定一个无序列表:
从中间将其分为左右两个子列表,两个字列表之后再进行分开,直到都子列表只剩下一个元素时候,然后再进行合并排序;
伪代码如下:
MERGE-SORT(A, p, r)
if p < r
q = p + (r-p)/2
MERGE-SORT(A, q+1, r)
MERGE-SORT(A, p, q)
MERGE(A, p, q, r)
-
首先分成
5,4,1,8
和7,2,6,3
-
5,4,1,8
和7,2,6,3
再分别分成5,4
和1,8
以及7,2
和6,3
-
5,