This commit is contained in:
krahets
2023-07-21 21:53:04 +08:00
parent 2338b35039
commit 175cf59c9d
18 changed files with 324 additions and 35 deletions

View File

@@ -7,6 +7,8 @@ status: new
我们已经学过,搜索算法分为两大类:暴力搜索、自适应搜索。暴力搜索的时间复杂度为 $O(n)$ 。自适应搜索利用特有的数据组织形式或先验信息,可达到 $O(\log n)$ 甚至 $O(1)$ 的时间复杂度。
### 基于分治的搜索算法
实际上,**$O(\log n)$ 的搜索算法通常都是基于分治策略实现的**,例如:
- 二分查找的每一步都将问题(在数组中搜索目标元素)分解为一个小问题(在数组的一半中搜索目标元素),这个过程一直持续到数组为空或找到目标元素为止。
@@ -14,7 +16,7 @@ status: new
分治之所以能够提升搜索效率,是因为暴力搜索每轮只能排除一个选项,**而基于分治的搜索每轮可以排除一半选项**。
## 12.2.1.   基于分治实现二分
### 基于分治实现二分
接下来,我们尝试从分治策略的角度分析二分查找的性质: