mirror of
https://github.com/krahets/hello-algo.git
synced 2026-04-13 10:09:54 +08:00
build
This commit is contained in:
@@ -3,7 +3,7 @@ comments: true
|
||||
status: new
|
||||
---
|
||||
|
||||
# 12.2. 分治搜索策略
|
||||
# 12.2 分治搜索策略
|
||||
|
||||
我们已经学过,搜索算法分为两大类:
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ comments: true
|
||||
status: new
|
||||
---
|
||||
|
||||
# 12.3. 构建二叉树问题
|
||||
# 12.3 构建二叉树问题
|
||||
|
||||
!!! question
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ comments: true
|
||||
status: new
|
||||
---
|
||||
|
||||
# 12.1. 分治算法
|
||||
# 12.1 分治算法
|
||||
|
||||
「分治 Divide and Conquer」,全称分而治之,是一种非常重要且常见的算法策略。分治通常基于递归实现,包括“分”和“治”两步:
|
||||
|
||||
@@ -19,7 +19,7 @@ status: new
|
||||
|
||||
<p align="center"> 图:归并排序的分治策略 </p>
|
||||
|
||||
## 12.1.1. 如何判断分治问题
|
||||
## 12.1.1 如何判断分治问题
|
||||
|
||||
一个问题是否适合使用分治解决,通常可以参考以下几个判断依据:
|
||||
|
||||
@@ -33,7 +33,7 @@ status: new
|
||||
2. 每个子数组都可以独立地进行排序(子问题可以独立进行求解)。
|
||||
3. 两个有序子数组(子问题的解)可以被合并为一个有序数组(原问题的解)。
|
||||
|
||||
## 12.1.2. 通过分治提升效率
|
||||
## 12.1.2 通过分治提升效率
|
||||
|
||||
分治不仅可以有效地解决算法问题,**往往还可以带来算法效率的提升**。在排序算法中,快速排序、归并排序、堆排序相较于选择、冒泡、插入排序更快,就是因为它们应用了分治策略。
|
||||
|
||||
@@ -79,7 +79,7 @@ $$
|
||||
|
||||
<p align="center"> 图:桶排序的并行计算 </p>
|
||||
|
||||
## 12.1.3. 分治常见应用
|
||||
## 12.1.3 分治常见应用
|
||||
|
||||
一方面,分治可以用来解决许多经典算法问题:
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ comments: true
|
||||
status: new
|
||||
---
|
||||
|
||||
# 12.4. 汉诺塔问题
|
||||
# 12.4 汉诺塔问题
|
||||
|
||||
在归并排序和构建二叉树中,我们都是将原问题分解为两个规模为原问题一半的子问题。然而对于汉诺塔问题,我们采用不同的分解策略。
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ icon: material/set-split
|
||||
status: new
|
||||
---
|
||||
|
||||
# 12. 分治
|
||||
# 第 12 章 分治
|
||||
|
||||
<div class="center-table" markdown>
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ comments: true
|
||||
status: new
|
||||
---
|
||||
|
||||
# 12.5. 小结
|
||||
# 12.5 小结
|
||||
|
||||
- 分治算法是一种常见的算法设计策略,包括分(划分)和治(合并)两个阶段,通常基于递归实现。
|
||||
- 判断是否是分治算法问题的依据包括:问题能否被分解、子问题是否独立、子问题是否可以被合并。
|
||||
|
||||
Reference in New Issue
Block a user