This commit is contained in:
krahets
2023-08-17 05:12:05 +08:00
parent f0826da7f6
commit 97c532b228
67 changed files with 1481 additions and 1066 deletions
@@ -29,6 +29,8 @@ comments: true
=== "<5>"
![binary_search_dictionary_step_5](algorithms_are_everywhere.assets/binary_search_dictionary_step_5.png)
<p align="center"> 图:查字典步骤 </p>
查阅字典这个小学生必备技能,实际上就是著名的「二分查找」。从数据结构的角度,我们可以把字典视为一个已排序的「数组」;从算法的角度,我们可以将上述查字典的一系列操作看作是「二分查找」算法。
**例二:整理扑克**。我们在打牌时,每局都需要整理扑克牌,使其从小到大排列,实现流程如下:
@@ -39,7 +41,7 @@ comments: true
![扑克排序步骤](algorithms_are_everywhere.assets/playing_cards_sorting.png)
<p align="center"> Fig. 扑克排序步骤 </p>
<p align="center"> 图:扑克排序步骤 </p>
上述整理扑克牌的方法本质上是「插入排序」算法,它在处理小型数据集时非常高效。许多编程语言的排序库函数中都存在插入排序的身影。
@@ -53,7 +55,7 @@ comments: true
![货币找零过程](algorithms_are_everywhere.assets/greedy_change.png)
<p align="center"> Fig. 货币找零过程 </p>
<p align="center"> 图:货币找零过程 </p>
在以上步骤中,我们每一步都采取当前看来最好的选择(尽可能用大面额的货币),最终得到了可行的找零方案。从数据结构与算法的角度看,这种方法本质上是「贪心算法」。
+2 -2
View File
@@ -35,13 +35,13 @@ comments: true
![数据结构与算法的关系](what_is_dsa.assets/relationship_between_data_structure_and_algorithm.png)
<p align="center"> Fig. 数据结构与算法的关系 </p>
<p align="center"> 图:数据结构与算法的关系 </p>
数据结构与算法犹如拼装积木。一套积木,除了包含许多零件之外,还附有详细的组装说明书。我们按照说明书一步步操作,就能组装出精美的积木模型。
![拼装积木](what_is_dsa.assets/assembling_blocks.jpg)
<p align="center"> Fig. 拼装积木 </p>
<p align="center"> 图:拼装积木 </p>
两者的详细对应关系如下表所示。