目录
01. 绪论
1 - 8 A. 计算
9 - 17
B. 计算模型
18 - 31
C. 大 O 记号
32 - 45 D. 算法分析
46 - 61
E. 迭代与递归
62 - 72
XA. 限制
73 - 85
XB. 排序与下界
86 - 96
XC. 动态规划
02. 向量
97 - 106 A. 接口与实现
107 - 114
B. 可扩充向量
115 - 125
C. 无序向量
126 - 132 D1. 有序向量:唯一化
133 - 141 D2. 有序向量:二分查找
142 - 147 D3. 有序向量 :Fibonacci 查找
148 - 154 D4. 有序向量:二分查找(改进)
155 - 160 D5. 有序向量:插值查找
161 - 165
E. 起泡排序
166 - 175
F. 归并排序
03. 列表
176 - 185 A. 接口与实现
186 - 194
B. 无序列表
195 - 197
C. 有序列表
198 - 203 D. 选择排序
204 - 211
E. 插入排序
212 - 214
F. 归并排序
215 - 220
XA. 游标实现
221 - 227
XB. Java 序列
228 - 232
XC. Python 列表
04. 栈与队列
233 - 236 A. 栈:接口与实现
237 - 242
B. 栈:函数调用栈
243 - 248
C1. 栈应用:进制转换
249 - 256
C2. 栈应用:括号匹配
257 - 263
C3. 栈应用:栈混洗
264 - 275
C4. 栈应用:中缀表达式求值
276 - 284
C5. 栈应用:逆波兰表达式
285 - 288 D. 队列:接口与实现
289 - 292
E. 队列:应用
293 - 295
XA. Steap + Queap
296 - 306
XB. 试探回溯法:八皇后
307 - 311
XC. 试探回溯法:迷宫寻径
05. 二叉树
312 - 319 A. 树
320 - 326
B. 树的表示
327 - 332
C. 二叉树概述
333 - 341 D. 二叉树实现
342 - 353
E1. 先序遍历
354 - 364
E2. 中序遍历
365 - 375
E3. 后序遍历
376 - 384
E4. 层次遍历
385 - 387
E5. 二叉树的重构
388 - 394
F. PFC 编码
395 - 408 G. Huffman 树
06. 图
409 - 413 A. 概述
414 - 429
B1. 邻接矩阵
430 - 436
B2. 邻接表
437 - 448
C. 广度优先搜索
449 - 466 D. 深度优先搜索
467 - 475
E. 拓扑排序
476 - 480
F. 优先级搜索
481 - 494 G. Prim 算法
495 - 510 H. Dijkstra 算法
511 - 523
XA. 双连通分量
524 - 537
XB. Kruskal 算法
538 - 544
XC. Floyd-Warshell 算法
07. 二叉搜索树
545 - 551 A. 接口
552 - 562
B. 算法与实现
563 - 572
C. 平衡与等价
573 - 587 D. AVL 树
08. 高级搜索树
588 - 593 A1. 伸展树:单层伸展
594 - 599 A2. 伸展树:双层伸展
600 - 607 A3. 伸展树:算法实现
608 - 612
B1. B-树:动机
613 - 621
B2. B-树:结构
622 - 629
B3. B-树:查找
630 - 638
B4. B-树:插入
639 - 650
B5. B-树:删除
651 - 655
XA1. 红黑树:动机
656 - 660
XA2. 红黑树:结构
661 - 672
XA3. 红黑树:插入
673 - 687
XA4. 红黑树:删除
688 - 700
XB1. kd-树:一维
701 - 713
XB2. kd-树:二维
714 - 727
XC. 更多变种
09. 词典
728 - 737 A. 散列:循值访问
738 - 748
B. 散列:原理
749 - 761
C. 散列:散列函数
762 - 770 D1. 散列:排解冲突(1)
771 - 782 D2. 散列:排解冲突(2)
783 - 789
E. 桶排序
790 - 795
F. 基数排序
796 - 802
XA1. 跳转表:结构
803 - 812
XA2. 跳转表:算法
813 - 816
XB1. 位图:结构
817 - 824
XB2. 位图:应用
825 - 827
XB3. 位图:初始化
828 - 836
XB4. 位图:计数排序
837 - 843
XC. MD5
10. 优先级队列
844 - 849 A1. 动机
850 - 856 A2. 基本实现
857 - 861
B1. 完全二叉堆:结构
862 - 866
B2. 完全二叉堆:插入
867 - 871
B3. 完全二叉堆:删除
872 - 878
B4. 完全二叉堆:建堆
879 - 886
C. 堆排序
887 - 894 D. 锦标赛排序
895 - 900
XA1. 左式堆:结构
901 - 905
XA2. 左式堆:合并
906 - 910
XA3. 左式堆:插入+删除
911 - 918
XB. 多叉堆
11. 串
919 - 923 A. ADT
924 - 927
B1. 串匹配
928 - 933
B2. 蛮力算法
934 - 938
C1. KMP 算法:记忆法
939 - 945
C2. KMP 算法:查询表
946 - 949
C3. KMP 算法:理解 next[]表
950 - 955
C4. KMP 算法:构造 next[]表
956 - 959
C5. KMP 算法:分摊分析
960 - 967
C6. KMP 算法:改进
968 - 973 D1. BM 算法:BC 策略:以终为始
974 - 979 D2. BM 算法:BC 策略:坏字符
980 - 981 D3. BM 算法:BC 策略:构造 bc[]表
982 - 984 D4. BM 算法:BC 策略:性能
985 - 990
E1. BM 算法:GS 策略:好后缀
991 - 994
E2. BM 算法:GS 策略:构造 gs[]表
995 - 997
E3. BM 算法:GS 策略:性能
998 - 1004
F1. KR 算法:指纹
1005 - 1009
F2. KR 算法:散列
12. 排序
1010 - 1019 A1. 快速排序:算法
1020 - 1022 A2. 快速排序:性能
1023 - 1028 A3. 快速排序:重复元素
1029 - 1033 A4. 快速排序:变种
1034 - 1039
B1. 选取:众数
1040 - 1045
B2. 选取:中位数
1046 - 1057
B3. 选取:线性算法
1058 - 1068
XB1. 希尔排序:Shell 序列
1069 - 1076
XB2. 希尔排序:逆序对
1077 - 1084
XB3. 希尔排序:更佳序列