当前位置:首页 > 工业技术
妙趣横生的算法  C++语言实现
妙趣横生的算法  C++语言实现

妙趣横生的算法 C++语言实现PDF电子书下载

工业技术

  • 电子书积分:14 积分如何计算积分?
  • 作 者:胡浩等编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2014
  • ISBN:9787302367604
  • 页数:402 页
图书介绍:本书共分为四大部分:基础知识篇、基础算法篇、高级算法片和实用篇。基础知识篇讲解基本的数据结构知识,为学习算法打下基础;基础算法篇讲述算法的基本数学基础、排序算法和查找算法;高级算法篇讲述以图算法、动态规划、贪心算法为代表的高级算法的应用;实用篇主要运用前面所学的算法解决实际的趣味数学问题和面试问题。
《妙趣横生的算法 C++语言实现》目录

第1篇 基础知识篇 2

第1章 基础数据结构(教学视频:26分钟) 2

1.1 顺序表 2

1.1.1 顺序表的定义 2

1.1.2 顺序表的基本操作 3

1.1.3 实例应用与分析 6

1.2 链表 8

1.2.1 链表的定义 8

1.2.2 链表基本操作 10

1.2.3 双向链表 13

1.2.4 循环链表 17

1.2.5 实例应用与分析 20

1.3 栈 25

1.3.1 栈的定义 25

1.3.2 栈的基本操作 26

1.3.3 实例应用与分析 26

1.4 队列 30

1.4.1 队列的定义 30

1.4.2 队列的基本操作 31

1.4.3 实例应用与分析 31

1.5 散列表 36

1.5.1 散列表的定义 36

1.5.2 散列函数 36

1.5.3 基于散列的查找 37

1.5.4 实例应用与分析 39

第2章 树结构(教学视频:43分钟) 43

2.1 树结构简介 43

2.1.1 树的定义 43

2.1.2 树的逻辑表示 44

2.1.3 基本术语 44

2.1.4 树的性质 45

2.1.5 树的基本操作 45

2.1.6 树与森林 46

2.1.7 实例应用与分析 47

2.2 二叉树 49

2.2.1 二叉树的定义 50

2.2.2 二叉树的性质 51

2.2.3 二叉树的存储结构 51

2.2.4 二叉树的基本操作 54

2.2.5 实例应用与分析 64

2.3 线索二叉树 66

2.3.1 线索二叉树的定义 66

2.3.2 线索二叉树的基本操作 67

2.4 二叉查找树 70

2.4.1 二叉查找树的定义 70

2.4.2 二叉查找树的基本操作 71

2.4.3 实例应用与分析 74

2.5 红黑树 78

2.5.1 红黑树的定义 78

2.5.2 红黑树的基本操作 79

2.6 B树 89

2.6.1 B树的定义 89

2.6.2 B树的基本操作 91

第3章 图结构(教学视频:34分钟) 93

3.1 图结构简介 93

3.2 图的存储结构 94

3.2.1 邻接矩阵存储 94

3.2.2 邻接表存储 96

3.3 图的基本操作和图的遍历 97

3.3.1 图的基本操作 97

3.3.2 深度优先遍历 100

3.3.3 广度优先遍历 101

3.3.4 实例应用与分析 102

第2篇 基础算法篇 106

第4章 算法入门(教学视频:30分钟) 106

4.1 什么是算法 106

4.2 算法的数学基础 106

4.2.1 算法分析 106

4.2.2 函数增长率 108

4.3 基本算法思想 108

4.3.1 分治法 108

4.3.2 递归式 109

4.3.3 回溯法 110

4.3.4 穷举法 110

4.3.5 随机算法 111

4.4 基础算法应用实例 111

第5章 排序算法(教学视频:49分钟) 128

5.1 插入排序 128

5.1.1 算法描述 128

5.1.2 算法实现 129

5.1.3 应用实例与分析 131

5.2 冒泡排序 132

5.2.1 算法描述 132

5.2.2 算法实现 133

5.2.3 应用实例与分析 134

5.3 快速排序 136

5.3.1 算法描述 136

5.3.2 算法实现 137

5.3.3 应用实例与分析 139

5.4 归并排序 141

5.4.1 算法描述 141

5.4.2 算法实现 143

5.4.3 应用实例与分析 145

5.5 希尔排序 146

5.5.1 算法描述 146

5.5.2 算法实现 147

5.5.3 应用实例与分析 148

5.6 选择排序 149

5.6.1 算法描述 149

5.6.2 算法实现 150

5.6.3 应用实例与分析 151

5.7 堆排序 152

5.7.1 堆 152

5.7.2 堆排序算法描述 153

5.7.3 算法实现 154

5.7.4 应用实例与分析 155

5.8 计数排序 158

5.8.1 算法描述 158

5.8.2 算法实现 159

5.8.3 应用实例与分析 160

5.9 基数排序 162

5.9.1 算法描述 162

5.9.2 算法实现 163

5.9.3 应用实例与分析 165

5.10 桶排序 166

5.10.1 算法描述 166

5.10.2 算法实现 168

5.10.3 应用实例与分析 169

5.11 排序算法的比较和选择 172

5.11.1 排序算法的性能比较 172

5.11.2 排序算法的选择标准 172

第6章 查找算法(教学视频:22分钟) 174

6.1 顺序查找 174

6.1.1 算法描述 174

6.1.2 算法实现 174

6.1.3 应用实例与分析 175

6.2 二分查找 176

6.2.1 算法描述 176

6.2.2 算法实现 176

6.2.3 实例应用与分析 177

6.3 二叉查找树 178

6.3.1 二叉查找树的定义 178

6.3.2 二叉查找树的基本操作回顾 180

6.3.3 实例应用与分析 183

6.4 分块查找 185

6.4.1 算法描述 185

6.4.2 算法实现 186

6.5 B树查找算法 187

6.5.1 算法描述 187

6.5.2 算法实现 188

6.5.3 扩展——B+树简介 188

6.6 哈希查找 189

6.6.1 算法描述 189

6.6.2 算法实现 190

6.6.3 实例应用及分析 192

第3篇 高级算法篇 196

第7章 高级图算法(教学视频:30分钟) 196

7.1 拓扑排序 196

7.1.1 算法描述 196

7.1.2 算法实现 197

7.1.3 实例分析与应用 201

7.2 最小生成树 205

7.2.1 算法描述 206

7.2.2 算法实现 206

7.3 单源最短路径 215

7.3.1 算法描述 215

7.3.2 算法实现 217

7.3.3 应用实例与分析 220

7.4 每对顶点间的最短路径 222

7.4.1 算法描述 222

7.4.2 算法实现 223

7.4.3 应用实例与分析 225

7.5 网络流 225

7.5.1 流网络 225

7.5.2 Ford-Fulkerson算法描述 227

7.5.3 Ford-Fulkerson算法的实现 230

第8章 动态规划(教学视频:17分钟) 232

8.1 动态规划基础 232

8.1.1 动态规划思想引例 233

8.1.2 动态规划理论基础 236

8.2 动态规划应用实例分析 237

8.2.1 矩阵链乘法问题 237

8.2.2 最长公共子序列问题 240

8.2.3 背包问题 242

8.2.4 求三角形最佳路径问题 246

8.2.5 计算划分方案种类数问题 247

8.2.6 设计竞赛题目问题 248

8.2.7 双人游戏策略问题 249

8.2.8 音乐CD最大曲目数问题 250

8.2.9 求Jerry最快到达的时间问题 251

8.2.10 陪审团人选问题 254

第9章 贪心算法(教学视频:21分钟) 257

9.1 贪心算法概述 257

9.1.1 算法描述 257

9.1.2 算法原理 263

9.2 应用实例与分析 264

9.2.1 活动选择问题 264

9.2.2 任务调度问题 268

9.2.3 闭区间不相交 269

9.2.4 会场安排问题 270

9.2.5 贪心算法在求最小生成树的应用 272

第10章 综合趣味算法(教学视频:34分钟) 281

10.1 矩阵运算 281

10.1.1 矩阵的性质 281

10.1.2 Strassen算法求矩阵乘积 285

10.2 字符串算法 289

10.2.1 朴素字符串匹配算法 289

10.2.2 Rabin-Karp算法 290

10.3 数论有关的基本算法 292

10.3.1 基本数论概念 292

10.3.2 求解最大公约数 293

10.3.3 寻找素数 294

10.3.4 整数的因子分解 297

第4篇 算法实战篇 304

第11章 数学趣题解决方法(教学视频:23分钟) 304

11.1 求两个数的最大公约数和最小公倍数 304

11.2 魔幻方阵的解法 305

11.3 广场该建多大 309

11.4 水仙花数 312

11.5 通向女友之路 313

11.6 八皇后问题 316

11.7 洗扑克问题 320

11.8 约瑟夫问题 321

11.9 格雷码 325

11.10 老鼠走迷宫 326

11.11 骑士走棋盘 329

11.12 三色球 331

11.13 汉诺塔问题 333

11.14 细胞的游戏 335

11.15 超长整数加法 339

11.16 阿姆斯壮数 342

11.17 筛选求素数 343

11.18 验证角谷猜想 344

11.19 找出说谎人 345

11.20 超级病毒 347

11.21 数字的分解 349

11.22 寻找完美数 350

11.23 二维矩阵转一维矩阵 353

11.24 求解低阶定积分 354

11.25 迭代法开平方运算 357

11.26 牛顿法解方程 358

11.27 求解微分方程 360

11.28 求解线性方程组 361

11.29 梯形法求解定积分 363

第12章 面试算法题精粹(教学视频:24分钟) 365

12.1 常见基础题精粹 365

12.2 常见算法编程题精粹 372

12.2.1 遍历一次求取单链表的中间点 372

12.2.2 实现单链表的排序 376

12.2.3 判断两棵树是否相等 378

12.2.4 寻找重复率最高的短信 378

12.2.5 实现strcpy()函数 382

12.2.6 字符串常见试题 383

12.2.7 实现循环移动 386

12.3 面试进阶问题 389

12.3.1 寻找变位词集合 389

12.3.2 咖啡罐问题 392

12.3.3 判断两个链表是否相交 395

12.3.4 寻找最大的“N”个数 396

12.3.5 蜗牛爬杆问题 398

12.3.6 判断单链表里是否有环 399

12.3.7 代码括弧的校验 399

12.3.8 查找数组中的最大值和最小值 401

相关图书
作者其它书籍
返回顶部