Mention figures and tables in normal texts.

Fix some figures.
Finetune texts.
This commit is contained in:
krahets
2023-08-21 19:33:45 +08:00
parent 1aff6d6cc2
commit 106f02809a
64 changed files with 277 additions and 240 deletions
+4 -4
View File
@@ -8,9 +8,9 @@
## 方法一:遍历选择
我们可以进行 $k$ 轮遍历,分别在每轮中提取第 $1$ , $2$ , $\dots$ , $k$ 大的元素,时间复杂度为 $O(nk)$ 。
我们可以进行下图所示的 $k$ 轮遍历,分别在每轮中提取第 $1$ , $2$ , $\dots$ , $k$ 大的元素,时间复杂度为 $O(nk)$ 。
方法只适用于 $k \ll n$ 的情况,因为当 $k$ 与 $n$ 比较接近时,其时间复杂度趋向于 $O(n^2)$ ,非常耗时。
方法只适用于 $k \ll n$ 的情况,因为当 $k$ 与 $n$ 比较接近时,其时间复杂度趋向于 $O(n^2)$ ,非常耗时。
![遍历寻找最大的 k 个元素](top_k.assets/top_k_traversal.png)
@@ -20,7 +20,7 @@
## 方法二:排序
我们可以对数组 `nums` 进行排序,返回最右边的 $k$ 个元素,时间复杂度为 $O(n \log n)$ 。
如下图所示,我们可以对数组 `nums` 进行排序,返回最右边的 $k$ 个元素,时间复杂度为 $O(n \log n)$ 。
显然,该方法“超额”完成任务了,因为我们只需要找出最大的 $k$ 个元素即可,而不需要排序其他元素。
@@ -28,7 +28,7 @@
## 方法三:堆
我们可以基于堆更加高效地解决 Top-K 问题,流程如下
我们可以基于堆更加高效地解决 Top-K 问题,流程如下图所示。
1. 初始化一个小顶堆,其堆顶元素最小。
2. 先将数组的前 $k$ 个元素依次入堆。