图书介绍

数据结构与算法分析 C++语言描述 第4版【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

数据结构与算法分析 C++语言描述 第4版
  • (美)M.A.韦斯(Mark Allen Weiss) 著
  • 出版社: 北京:电子工业出版社
  • ISBN:9787121290572
  • 出版时间:2016
  • 标注页数:496页
  • 文件大小:89MB
  • 文件页数:510页
  • 主题词:数据结构-高等学校-教材;算法分析-高等学校-教材;C语言-程序设计-高等学校-教材

PDF下载


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

下载说明

数据结构与算法分析 C++语言描述 第4版PDF格式电子书版下载

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

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

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

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

图书目录

第1章 程序设计:综述1

1.1 本书讨论的内容1

1.2 数学知识复习2

1.2.1 指数(exponent)2

1.2.2 对数(logarithm)2

1.2.3 级数(series)3

1.2.4 模运算(modular arithmetic)4

1.2.5 证明方法5

1.3 递归简论7

1.4 C++类10

1.4.1 基本的class语法10

1.4.2 构造函数的附加语法和访问函数11

1.4.3 接口与实现的分离13

1.4.4 vector类和string类16

1.5 C++细节17

1.5.1 指针(pointer)18

1.5.2 左值、右值和引用19

1.5.3 参数传递21

1.5.4 返回值传递23

1.5.5 std∷swap和std∷move25

1.5.6 五大函数:析构函数,拷贝构造函数,移动构造函数,拷贝赋值operator=,移动赋值operator=26

1.5.7 C风格数组和字符串30

1.6 模板31

1.6.1 函数模板31

1.6.2 类模板32

1.6.3 Object.Comparable和一个例子33

1.6.4 函数对象34

1.6.5 类模板的分离式编译37

1.7 使用矩阵37

1.7.1 数据成员、构造函数和基本访问函数38

1.7.2 operator[]38

1.7.3 五大函数39

小结39

练习39

参考文献41

第2章 算法分析42

2.1 数学基础42

2.2 模型44

2.3 要分析的问题44

2.4 运行时间计算47

2.4.1 一个简单的例子47

2.4.2 一般法则47

2.4.3 最大子序列和问题的求解49

2.4.4 运行时间中的对数54

2.4.5 最坏情形分析的局限性57

小结58

练习58

参考文献63

第3章 表、栈和队列64

3.1 抽象数据类型(ADT)64

3.2 表ADT64

3.2.1 表的简单数组实现65

3.2.2 简单链表65

3.3 STL中的vector和list67

3.3.1 迭代器68

3.3.2 例子:对表使用erase69

3.3.3 const iterators70

3.4 vector的实现72

3.5 list的实现76

3.6 栈ADT86

3.6.1 栈模型86

3.6.2 栈的实现86

3.6.3 应用87

3.7 队列ADT93

3.7.1 队列模型93

3.7.2 队列的数组实现93

3.7.3 队列的应用95

小结96

练习96

第4章 树100

4.1 预备知识100

4.1.1 树的实现101

4.1.2 树的遍历及应用102

4.2 二叉树105

4.2.1 实现105

4.2.2 一个例子——表达式树105

4.3 查找树ADT——二叉查找树108

4.3.1 contains110

4.3.2 fiindMin和fiindMax111

4.3.3 insert112

4.3.4 remove113

4.3.5 析构函数和拷贝构造函数115

4.3.6 平均情况分析115

4.4 AVL树118

4.4.1 单旋转119

4.4.2 双旋转121

4.5 伸展树128

4.5.1 一个简单的想法(不能直接使用)128

4.5.2 展开130

4.6 树的遍历134

4.7 B树135

4.8 标准库中的容器set和map140

4.8.1 集合容器set140

4.8.2 映射容器map141

4.8.3 set和map的实现142

4.8.4 使用多个map的示例142

小结147

练习147

参考文献153

第5章 散列155

5.1 一般想法155

5.2 散列函数155

5.3 分离链接法157

5.4 不用链表的散列表161

5.4.1 线性探测法161

5.4.2 平方探测法163

5.4.3 双散列166

5.5 再散列167

5.6 标准库中的散列表169

5.7 以最坏情形O(1)访问的散列表170

5.7.1 完美散列170

5.7.2 杜鹃散列172

5.7.3 跳房子散列181

5.8 通用散列184

5.9 可扩散列186

小结188

练习189

参考文献193

第6章 优先队列(堆)196

6.1 模型196

6.2 一些简单的实现197

6.3 二叉堆197

6.3.1 结构性质197

6.3.2 堆序性质198

6.3.3 基本的堆操作199

6.3.4 其他的堆操作203

6.4 优先队列的应用206

6.4.1 选择问题206

6.4.2 事件模拟207

6.5 d堆208

6.6 左式堆209

6.6.1 左式堆的性质209

6.6.2 左式堆操作210

6.7 斜堆215

6.8 二项队列216

6.8.1 二项队列构建216

6.8.2 二项队列操作217

6.8.3 二项队列的实现219

6.9 标准库中的优先队列224

小结225

练习225

参考文献229

第7章 排序232

7.1 预备知识232

7.2 插入排序233

7.2.1 算法233

7.2.2 插入排序的STL实现233

7.2.3 插入排序的分析235

7.3 一些简单排序算法的下界235

7.4 希尔排序236

7.4.1 希尔排序的最坏情形分析237

7.5 堆排序239

7.5.1 堆排序的分析241

7.6 归并排序242

7.6.1 归并排序的分析245

7.7 快速排序247

7.7.1 选取枢纽元249

7.7.2 分割策略250

7.7.3 小数组252

7.7.4 实际的快速排序例程252

7.7.5 快速排序的分析254

7.7.6 选择问题的线性期望时间算法256

7.8 排序算法的一般下界258

7.8.1 决策树258

7.9 选择问题的决策树下界260

7.10 对手下界(adversary lower bounds)262

7.11 线性时间排序:桶式排序和基数排序265

7.12 外部排序269

7.12.1 为什么需要一些新的算法269

7.12.2 外部排序模型269

7.12.3 简单算法269

7.12.4 多路合并270

7.12.5 多相合并271

7.12.6 替换选择272

小结273

练习题273

参考文献278

第8章 不相交集类281

8.1 等价关系281

8.2 动态等价性问题281

8.3 基本数据结构283

8.4 灵巧求并算法286

8.5 路径压缩288

8.6 按秩求并和路径压缩的最坏情形289

8.6.1 缓慢增长的函数289

8.6.2 通过递归分解进行的分析290

8.6.3 一个O(M log *N)界295

8.6.4 一个O(Mα(M,N))界296

8.7 一个应用297

小结299

练习299

参考文献301

第9章 图论算法303

9.1 若干定义303

9.1.1 图的表示304

9.2 拓扑排序305

9.3 最短路径算法308

9.3.1 无权最短路径309

9.3.2 Dijkstra算法312

9.3.3 具有负边值的图317

9.3.4 无圈图318

9.3.5 所有顶点对间的最短路径320

9.3.6 最短路径的例320

9.4 网络流问题322

9.4.1 一个简单的最大流算法323

9.5 最小生成树326

9.5.1 Prim算法327

9.5.2 Kruskal算法329

9.6 深度优先搜索的应用330

9.6.1 无向图331

9.6.2 双连通性332

9.6.3 欧拉回路335

9.6.4 有向图338

9.6.5 查找强分支339

9.7 NP完全性介绍340

9.7.1 难与易341

9.7.2 NP类341

9.7.3 NP完全问题342

小结344

练习344

参考文献350

第10章 算法设计技巧353

10.1 贪婪算法353

10.1.1 一个简单的调度问题354

10.1.2 哈夫曼编码355

10.1.3 近似装箱问题359

10.2 分治算法366

10.2.1 分治算法的运行时间367

10.2.2 最近点问题369

10.2.3 选择问题371

10.2.4 一些算术问题的理论改进374

10.3 动态规划377

10.3.1 用表代替递归377

10.3.2 矩阵乘法的顺序安排379

10.3.3 最优二叉查找树382

10.3.4 所有点对最短路径384

10.4 随机化算法386

10.4.1 随机数发生器387

10.4.2 跳跃表392

10.4.3 素性测试393

10.5 回溯算法396

10.5.1 收费公路重建问题396

10.5.2 博弈400

小结405

练习406

参考文献413

第11章 摊还分析418

11.1 一个无关的智力问题418

11.2 二项队列419

11.3 斜堆423

11.4 斐波那契堆425

11.4.1 切除左式堆中的节点425

11.4.2 二项队列的懒惰合并427

11.4.3 斐波那契堆操作429

11.4.4 时间界的证明430

11.5 伸展树432

小结436

练习436

参考文献437

第12章 高级数据结构及其实现439

12.1 自顶向下伸展树439

12.2 红黑树445

12.2.1 自底向上的插入446

12.2.2 自顶向下红黑树447

12.2.3 自顶向下删除452

12.3 treap树453

12.4 后缀数组和后缀树456

12.4.1 后缀数组456

12.4.2 后缀树458

12.4.3 后缀数组和后缀树的线性时间构建461

12.5 k-d树471

12.6 配对堆474

小结479

练习479

参考文献483

附录A 类模板的分离式编译486

索引489

热门推荐