hello-algo/docs/chapter_divide_and_conquer/summary.md
krahets 34985bdf2b Add the summary of chapter divide and conquer
Enable instant loading feature
Fix the math rendering in mathjax.js
2023-07-17 20:23:46 +08:00

1.4 KiB

小结

  • 分治算法是一种常见的算法设计策略,包括分(划分)和治(合并)两个阶段,通常基于递归实现。
  • 判断是否是分治算法问题的依据包括:问题能否被分解、子问题是否独立、子问题是否可以被合并。
  • 归并排序是分治策略的典型应用,其递归地将数组划分为等长的两个子数组,直到只剩一个元素时开始逐层合并,从而完成排序。
  • 引入分治策略往往可以带来算法效率的提升。一方面,分治策略减少了计算吧操作数量;另一方面,分治后有利于系统的并行优化。
  • 分治既可以解决许多算法问题,也广泛应用于数据结构与算法设计中,处处可见其身影。
  • 相较于暴力搜索,自适应搜索效率更高。时间复杂度为 O(\log n) 的搜索算法通常都是基于分治策略实现的。
  • 二分查找也体现了分治思想,我们可以通过递归分治实现二分查找。
  • 在构建二叉树问题中,构建树(原问题)可以被划分为构建左子树和右子树(子问题),其可以通过划分前序遍历和中序遍历的索引区间来实现。
  • 在汉诺塔问题中,一个规模为 n 的问题可以被划分为两个规模为 n-1 的子问题和一个规模为 1 的子问题。按顺序解决这三个子问题后,原问题随之得到解决。