7 ^$ g4 a* }! N6 V1 |# q O1 g先决条件 7 ~5 M* a$ C) \ s1 }5 [& x4 j ( c U2 b9 n& j0 v( a. D我在伊利诺伊大学教授的算法课程有两个重要的先决条件: 9 O+ n1 V' s2 ?* m; Q0 a1. **离散数学**课程- @5 W4 q; z1 s- b" N) o0 n* W
2. **基础数据结构**课程 # x' y( O' T, X9 C% s1 N$ \
9 e/ H. f7 T# x: H$ n& a. l因此,这本教材可能不适合大多数学生作为入门书籍。 9 w# @" o2 }; o9 Q* y& l: R: k, E9 Q2 h. W! f( P
主要内容 - {! X7 z6 x; y+ F' i A. o( d6 B( G t) b) F
书中的内容涉及以下几个方面:- |3 i. W5 I9 H* A' C
" z0 Q" I: e& e. C- **基本数据结构**: : [! k8 x6 m" e - 队列、映射/字典、排序映射/字典、优先队列8 d# ^1 Q5 A$ Q
- 数组、链表(单向和双向、线性和循环)、二叉搜索树,至少一种形式的平衡二叉搜索树(如AVL树、红黑树、Treap、跳表或伸展树)、哈希表、二叉堆,以及最重要的,前面列表与此列表之间的区别。 * O: P, E; s- }# n' ~1 _0 N5 H0 I" J6 ~& U# E3 P
- **基本计算问题**:4 t, z* m, ]* S U. N% n) M
- 基本算术、排序、搜索、枚举、树的遍历(先序、中序、后序、层序等)。/ J6 u# K$ b2 D% B# g% K
% {* P: q- k2 ?2 y1 s. o
- **基本算法**:, ~# n6 V: R; O
- 基本算法、顺序搜索、二分搜索、各种排序算法(选择排序、插入排序、归并排序、堆排序、快速排序、基数排序等)、在(至少二叉)树中的广度优先搜索和深度优先搜索,以及前面列表与此列表之间的区别。; \& T8 c& z4 R" i
" {* v/ `3 B: ?) Z
- **初步算法分析**:+ Q6 I" Z' C+ ]0 S$ L
- 渐近符号(o, O, Θ, Ω, ω)、将循环转换为求和以及递归调用转换为递归关系、评估简单求和和递归关系。0 o1 X) k; ]+ |$ n8 W( E, ]
0 N' b; ~, O g% T: X: n n: a X2 {; G! O0 L
- **数学成熟度**:- L. {8 F, d* u8 K
- 对抽象、形式(尤其是递归)定义的熟悉程度,书写和理解数学论证的能力,识别和避免句法、语义和/或逻辑上的错误。+ x6 Q: j; i Q( ~& _