分治
分治是一种将大问题分解成相同任务的小问题的方法,常见的分治思想之一就是归并排序(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,4和1,8以及7,2和6,3再分别分成
本文介绍了分治算法的概念,并通过归并排序进行详细解释。此外,还提供了多个使用分治策略解决的编程题目,包括将有序数组转为二叉搜索树、从中序与后续遍历序列构造二叉树以及找多数元素等问题的解题思路和代码实现。
订阅专栏 解锁全文
944

被折叠的 条评论
为什么被折叠?



