图书介绍

数据结构与算法分析 Java版PDF|Epub|txt|kindle电子书版本下载

数据结构与算法分析 Java版
  • (美)Clifford A.Shaffer著;张铭,刘晓丹译 著
  • 出版社: 北京:电子工业出版社
  • ISBN:7505364979
  • 出版时间:2001
  • 标注页数:322页
  • 文件大小:17MB
  • 文件页数:336页
  • 主题词:

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

数据结构与算法分析 Java版PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第一部分 预备知识2

第1章 数据结构和算法2

1.1 数据结构的原则2

1.1.1 学习数据结构的必要性2

1.1.2 代价与效益3

1.1.3 本书的目的4

1.2 抽象数据类型和数据结构4

1.3 问题、算法和程序6

1.4 算法的效率8

1.5 深入学习导读8

1.6 习题9

2.1 集合11

第2章 数学预备知识11

2.2 常用数学术语12

2.3 对数13

2.4 递归14

2.5 级数求和与递归16

2.6 数学证明方法17

2.6.1 反证法18

2.6.2 数学归纳法18

2.7 评估20

2.8 深入学习导读21

2.9 习题22

第3章 算法分析25

3.1 概述25

3.2 最佳、最差和平均情况28

3.3 换一台更快的计算机,还是换一种更快的算法29

3.4 渐进分析31

3.4.1 上限31

3.4.2 下限32

3.4.3 Θ表示法33

3.4.4 化简法则33

3.5 程序运行时间的计算34

3.6 问题的分析37

3.7 多参数问题38

3.8 空间代价39

3.9 实际操作中的一些因素41

3.10 深入学习导读42

3.11 习题43

3.12 项目设计45

第二部分 基本数据结构48

第4章 线性表、栈和队列48

4.1 线性表48

4.1.1 顺序表的表示法50

4.1.2 链表53

4.1.3 线性表实现方法的比较62

4.1.4 元素的表示63

4.1.5 双链表63

4.1.6 循环链表66

4.2 栈67

4.2.1 顺序栈67

4.2.2 链式栈69

4.2.4 递归的实现70

4.2.3 顺序栈与链式栈的比较70

4.3.1 顺序队列73

4.3 队列73

4.3.2 链式队列76

4.3.3 顺序队列与链式队列的比较77

4.4 习题77

4.5 项目设计79

第5章 二叉树80

5.1 定义及主要特性80

5.1.1 满二叉树定理82

5.1.2 二叉树的抽象数据类型83

5.3 二叉树的实现84

5.3.1 使用指针实现二叉树84

5.2 周游二叉树84

5.3.2 空间开销88

5.3.3 使用数组实现完全二叉树89

5.4 Huffman编码树90

5.4.1 建立Huffman编码树91

5.4.2 Huffman编码及其用法94

5.5 二叉检索树96

5.6 堆与优先队列102

5.7 深入学习导读107

5.8 习题108

5.9 项目设计109

第6章 树111

6.1 树的定义与术语111

6.1.2 树的周游112

6.1.1 树结点的ADT(抽象数据类型)112

6.2 父指针表示法113

6.3 树的实现118

6.3.1 子结点表表示法118

6.3.2 左子结点/右兄弟结点表示法119

6.3.3 动态结点表示法120

6.3.4 动态“左子结点/右兄弟结点”表示法121

6.4 K叉树121

6.5 树的顺序表示法122

6.6 深入学习导读124

6.7 习题124

6.8 项目设计125

7.1 术语和表示法127

第7章 图127

7.2 图的实现129

7.3 图的周游136

7.3.1 深度优先搜索137

7.3.2 广度优先搜索139

7.3.3 拓扑排序139

7.4 最短路径问题142

7.4.1 单源最短路径142

7.4.2 每对顶点间的最短路径145

7.5 最小支撑树147

7.5.1 Prim算法147

7.5.2 Kruskal算法149

7.6 深入学习导读151

7.7 习题152

7.8 项目设计153

第三部分 排序和检索156

第8章 内排序156

8.1 排序的术语及记号156

8.2 三种代价为Θ(n2)的排序方法157

8.2.1 插入排序157

8.2.2 起泡排序158

8.2.3 选择排序159

8.2.4 交换排序算法的时间代价160

8.3 Shell排序161

8.4 快速排序163

8.5 归并排序168

8.6 堆排序171

8.7 分配排序和基数排序172

8.8 对各种排序算法的实验比较177

8.9 排序问题的下限178

8.10 深入学习导读181

8.11 习题181

8.12 项目设计184

第9章 文件管理和外排序185

9.1 主存储器和辅助存储器185

9.2 磁盘和磁带驱动器187

9.2.1 磁盘访问的代价190

9.3 缓冲区和缓冲池192

9.2.2 磁带192

9.4 程序员的文件视图194

9.5 外部排序195

9.6 外部排序的简单方法197

9.7 置换选择排序199

9.8 多路归并201

9.9 深入学习导读203

9.10 习题204

9.11 项目设计205

第10章 检索207

10.1 检索已排序的数组207

10.2 自组织线性表208

10.3 集合的检索211

10.4 散列方法212

10.4.1 散列函数213

10.4.2 开散列方法215

10.4.3 闭散列方法216

10.5 深入学习导读224

10.6 习题224

10.7 项目设计226

第11章 索引技术227

11.1 线性索引228

11.2 ISAM230

11.3 树形索引231

11.4 2-3树232

11.5 B树238

11.5.1 B+树239

11.5.2 B树分析244

11.6 深入学习导读245

11.7 习题245

11.8 项目设计246

第四部分 应用与高级话题250

第12章 线性表和数组高级技术250

12.1 跳跃表250

12.2 广义表254

12.3 矩阵的表示方法256

12.4 存储管理259

12.4.1 动态存储分配259

12.4.2 失败处理策略和无用单元收集266

12.5 深入学习导读269

12.6 习题269

12.7 项目设计271

第13章 高级树形结构272

13.1 Trie结构272

13.2 伸展树275

13.3 空间数据结构278

13.3.1 k-d树279

13.3.2 PR四分树282

13.3.3 其他空间数据结构284

13.4 深入学习导读285

13.5 习题286

13.6 项目设计286

第14章 分析技术288

14.1 求和技术288

14.2.1 估计上下限290

14.2 递归关系290

14.2.2 扩展递归291

14.2.3 分治法递归292

14.2.4 快速排序平均情况分析293

14.3 均摊分析294

14.4 深入学习导读296

14.5 习题296

14.6 项目设计298

第15章 计算的限制299

15.1 简介299

15.2 归约299

15.3 难解问题302

15.3.1 NP完全性303

15.4 不可解问题306

15.3.2 绕过NP完全性问题306

15.4.1 不可数性307

15.4.2 停机问题的不可解性309

15.4.3 确定程序行为是不可解的310

15.5 深入学习导读311

15.6 习题311

15.7 项目设计312

附录A C和Pascal程序员的Java导引313

A.1 例1:线性表的接口313

A.2 例2:基于数组的线性表实现314

A.3 例3:链表的实现316

参考文献319

热门推荐