This commit is contained in:
krahets
2023-04-10 03:12:02 +08:00
parent 2289822dfd
commit 867ecf6d92
32 changed files with 329 additions and 445 deletions
+7 -9
View File
@@ -4,19 +4,17 @@ comments: true
# 10.4.   小结
- 线性查找是一种最基础的查找方法,通过遍历数据结构 + 判断条件实现查找
- 二分查找利用数据的有序性,通过循环不断缩小一半搜索区间来实现查找,其要求输入数据有序的,并且仅适用于数组或基于数组实现的数据结构。
- 哈希查找借助哈希表实现常数阶时间复杂度的查找操作,体现空间换时间的算法思
- 下表总结对比了查找算法的各种特性和时间复杂度。
- 线性查找通过遍历数据结构并进行条件判断来完成查找任务
- 二分查找依赖于数据的有序性,通过循环逐步缩减一半搜索区间来实现查找。它要求输入数据有序且仅适用于数组或基于数组实现的数据结构。
- 哈希查找利用哈希表实现常数阶时间复杂度的查找操作,体现空间换时间的算法思
- 下表概括并对比了三种查找算法的特性和时间复杂度。
<div class="center-table" markdown>
| | 线性查找 | 二分查找 | 哈希查找 |
| ------------------------------------- | ------------------------ | ----------------------------- | ------------------------ |
| 适用数据结构 | 数组、链表 | 数组 | 数组、链表 |
| 输入数据要求 | 无 | 有序 | 无 |
| 平均时间复杂度</br>查找 / 插入 / 删除 | $O(n)$ / $O(1)$ / $O(n)$ | $O(\log n)$ / $O(n)$ / $O(n)$ | $O(1)$ / $O(1)$ / $O(1)$ |
| 最差时间复杂度</br>查找 / 插入 / 删除 | $O(n)$ / $O(1)$ / $O(n)$ | $O(\log n)$ / $O(n)$ / $O(n)$ | $O(n)$ / $O(n)$ / $O(n)$ |
| 空间复杂度 | $O(1)$ | $O(1)$ | $O(n)$ |
| 适用数据结构 | 数组、链表 | 有序数组 | 数组、链表 |
| 时间复杂度</br>(查找,插入,删除) | $O(n)$ , $O(1)$ , $O(n)$ | $O(\log n)$ , $O(n)$ , $O(n)$ | $O(1)$ , $O(1)$ , $O(1)$ |
| 间复杂度 | $O(1)$ | $O(1)$ | $O(n)$ |
</div>