第1章 Java回顾 1
1.1 面向对象的程序设计 1
1.2 程序设计语言Java 1
1.3 变量和对象 2
1.4 基本类型 3
1.5 流程控制 5
1.6 类 8
1.7 修饰符 11
1.8 String类 12
1.9 Math类 16
第2章 数组回顾 29
2.1 数组的特性 29
2.2 数组复制 31
2.3 Arrays类 32
2.4 顺序查找算法 37
2.5 折半查找算法 39
2.6 Vector类 42
3.1 继承 69
第3章 Java高级特性 69
3.2 多态性 70
3.3 类型转换 72
3.4 Object类 75
3.5 抽象类 78
3.6 接口 81
3.7 包 85
3.8 异常处理 85
第4章 递归 93
4.1 递归基和递归体 94
4.2 跟踪递归调用 95
4.3 递归折半查找算法 97
4.4 二项式系数 99
4.5 欧几里德算法 100
4.6 正确性的归纳证明 101
4.7 递归算法的复杂性分析 101
4.8 动态规划 102
4.9 汉内塔 103
4.10 互递归 105
5.1 Java汇集框架 119
第5章 汇集 119
5.3 AbstractCollection类 120
5.2 Collection接口 120
5.4 Bag类 122
5.5 Iterator接口 130
第6章 栈 137
6.1 Java中的Stack类 137
6.2 栈的应用 141
6.3 消去递归 144
7.1 队列框架 153
第7章 队列 153
7.2 顺序实现 156
7.3 链接实现 160
7.4 队列应用 162
第8章 线性表 178
8.1 java.util.List接口 178
8.2 java.util.List接口的实现 180
8.3 AbstractList与AbstractSequentialList类 181
8.4 线性表迭代器 182
8.5 ArrayList类 184
8.6 LinkedList类 186
8.7 独立线性表迭代器 197
第9章 树 204
9.1 树的定义 205
9.2 决策树与迁移图 207
9.3 有序树 210
9.4 有序树的树遍历算法 211
10.1 定义 220
第10章 二叉树 220
10.2 二叉树的计数 221
10.3 满二叉树 222
10.4 相同、相等和同构 223
10.5 完全二叉树 225
10.6 二叉树遍历算法 227
10.7 表达式树 229
10.8 二叉树类BinaryTree 231
10.9 遍历算法的实现 237
10.10 森林 240
第11章 搜索树 252
11.1 多路搜索树 252
11.2 B-树 254
11.3 二叉搜索树 257
11.4 二叉搜索树的性能特点 258
11.5 AVL树 259
11.6 类AVLTree 260
12.2 自然映射 268
12.1 堆 268
第12章 堆和优先队列 268
12.3 堆的插入 269
12.4 堆的删除 270
12.5 PriorityQueue类 271
12.6 Java的Comparator接口 272
12.7 优先队列的一个直接实现 275
第13章 排序 289
13.1 Java中的Arrays.sort()方法 289
13.2 冒泡排序 290
13.3 选择排序 292
13.4 插入排序 293
13.5 SHELL排序 294
13.6 归并排序 296
13.7 快速排序 299
13.8 堆排序 302
13.9 比较排序的速度限制 306
13.10 基数排序 307
13.11 吊桶排序 309
14.1 Java的Map接口 325
第14章 表 325
14.2 HashMap类 326
14.3 Java的Hash代码 328
14.4 Hash表 329
14.5 Hash表的性能 331
14.6 冲突消解算法 332
14.7 独立链 335
14.8 应用 336
14.9 TreeMap类 339
15.1 数学集合 348
第15章 集合 348
15.2 Java集合接口 349
15.3 Java AbstractSet类 349
15.4 Java HashSet类 350
15.5 Java TreeSet类 353
第16章 图 358
16.1 简单图 358
16.2 图的术语 358
16.3 路径与回路 359
16.4 同构图 361
16.5 图的邻接矩阵 363
16.6 图的关联矩阵 364
16.7 图的邻接表 364
16.8 有向图 365
16.9 有向图的路径 367
16.10 加权有向图和加权图 367
16.11 欧拉路径、欧拉回路、哈密顿路径、哈密顿回路 369
16.12 DIJKSTRA算法 369
16.13 图的遍历算法 373
A.1 下取整与上取整函数 393
附录A 基础数学知识 393
A.2 对数 394
A.3 复杂性分类 395
A.4 第一数学归纳法 397
A.5 第二数学归纳法 398
A.6 等比级数 399
A.7 求和公式 400
A.8 调和数 400
A.9 Stirling公式 402
A.10 斐波那契数 403
A.11 黄金分割 404
A.12 欧几里德算法 405
A.13 Catalan数 406
附录B 从C++到Java 416
附录C Java开发环境 419
C.1 Windows的命令窗口 419
C.2 Visual Cafe 419
附录D 参考文献 424