图书介绍

算法学习与应用从入门到精通2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

算法学习与应用从入门到精通
  • 张玲玲编著 著
  • 出版社: 北京:人民邮电出版社
  • ISBN:7115418852
  • 出版时间:2016
  • 标注页数:489页
  • 文件大小:97MB
  • 文件页数:506页
  • 主题词:

PDF下载


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

下载说明

算法学习与应用从入门到精通PDF格式电子书版下载

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

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

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

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

图书目录

第1章 算法是程序的灵魂1

1.1 算法的基础2

1.1.1 算法的特征2

1.1.2 何为算法2

1.2 计算机中的算法3

1.2.1 认识计算机中的算法3

1.2.2 为什么说算法是程序的灵魂4

1.3 在计算机中表示算法的方法4

1.3.1 用流程图来表示算法4

1.3.2 用N-S流程图来表示算法6

1.3.3 用计算机语言表示算法6

1.4 技术解惑6

第2章 常用的算法思想8

2.1 枚举算法思想9

2.1.1 枚举算法基础9

2.1.2 实战演练——百钱买百鸡9

2.1.3 实战演练——解决“填写运算符”问题10

2.2 递推算法思想12

2.2.1 递推算法基础12

2.2.2 实践演练——解决“斐波那契数列”问题12

2.2.3 实践演练——解决“银行存款”问题14

2.3 递归算法思想15

2.3.1 递归算法基础15

2.3.2 实践演练——解决“汉诺塔”问题16

2.3.3 实践演练——解决“阶乘”问题18

2.4 分治算法思想19

2.4.1 分治算法基础19

2.4.2 实践演练——解决“大数相乘”问题19

2.4.3 实践演练——欧洲冠军杯比赛日程安排21

2.5 贪心算法思想23

2.5.1 贪心算法基础23

2.5.2 实践演练——解决“装箱”问题24

2.5.3 实践演练——解决“找零方案”问题26

2.6 试探法算法思想27

2.6.1 试探法算法基础27

2.6.2 实践演练——解决“八皇后”问题28

2.6.3 实践演练——体彩29选7彩票组合29

2.7 迭代算法30

2.7.1 迭代算法基础30

2.7.2 实践演练——解决“求平方根”问题31

2.8 模拟算法思想32

2.8.1 模拟算法的思路32

2.8.2 实践演练——解决“猜数字游戏”问题32

2.8.3 实践演练——解决“掷骰子游戏”问题33

2.9 技术解惑34

2.9.1 衡量算法的标准是什么34

2.9.2 在什么时候选择使用枚举法36

2.9.3 递推和递归有什么差异36

2.9.4 总结分治法能解决什么类型的问题37

2.9.5 分治算法的机理是什么37

2.9.6 为什么说贪婪算法并不是最优解决问题的方案37

2.9.7 回溯算法会影响算法效率吗38

2.9.8 递归算法与迭代算法有什么区别38

第3章 线性表、队列和栈39

3.1 线性表详解40

3.1.1 线性表的特性40

3.1.2 顺序表操作41

3.1.3 实践演练——顺序表操作函数44

3.1.4 实践演练——操作顺序表45

3.1.5 链表操作48

3.1.6 实践演练——定义链表操作函数51

3.1.7 实践演练——操作链表52

3.2 先进先出的队列详解53

3.2.1 什么是队列54

3.2.2 链队列和循环队列55

3.2.3 队列的基本操作55

3.2.4 队列的链式存储55

3.2.5 实践演练——完整的顺序队列的操作56

3.2.6 实践演练——完整的循环队列的操作57

3.2.7 实践演练——实现一个排号程序59

3.3 后进先出栈60

3.3.1 什么是栈61

3.3.2 栈的基本分类61

3.3.3 实践演练——栈操作函数63

3.3.4 实践演练——测试栈操作64

3.4 技术解惑65

3.4.1 线性表插入操作的时间复杂度是多少65

3.4.2 线性表删除操作的时间复杂度是多少65

3.4.3 线性表按值查找操作的时间复杂度是多少66

3.4.4 线性表链接存储(单链表)操作的11种算法是什么66

3.4.5 堆和栈的区别是什么70

第4章 树71

4.1 树基础72

4.1.1 什么是树72

4.1.2 树的相关概念72

4.2 二叉树详解73

4.2.1 二叉树的定义73

4.2.2 二叉树的性质74

4.2.3 二叉树存储75

4.2.4 操作二叉树77

4.2.5 遍历二叉树79

4.2.6 线索二叉树82

4.2.7 实践演练——测试二叉树操作函数85

4.2.8 实践演练——C++的二叉树操作87

4.2.9 实践演练——实现各种线索二叉树的操作89

4.2.10 实践演练——测试线索二叉树的操作91

4.3 霍夫曼树92

4.3.1 霍夫曼树基础93

4.3.2 实践演练——实现各种霍夫曼树操作95

4.3.3 实践演练——测试霍夫曼树的操作97

4.3.4 总结霍夫曼编码的算法实现98

4.4 技术解惑100

4.4.1 树和二叉树的差别是什么100

4.4.2 二叉树和链表的效率谁更牛100

4.4.3 如何打印二叉树中的所有路径100

第5章 图101

5.1 图的起源102

5.2 图的相关概念103

5.3 存储结构105

5.3.1 表示顶点之间相邻关系的邻接矩阵106

5.3.2 邻接表107

5.3.3 十字链表108

5.3.4 实践演练——创建一个邻接矩阵109

5.3.5 实践演练——测试霍夫曼树的操作111

5.4 图的遍历112

5.4.1 深度优先搜索113

5.4.2 广度优先搜索114

5.4.3 实践演练——求一条包含图中所有顶点的简单路径117

5.4.4 实践演练——求距v0的各顶点中最短路径长度最长的一个顶点118

5.4.5 实践演练——实现图的遍历操作方法118

5.4.6 实践演练——实现图的遍历操作120

5.5 图的连通性120

5.5.1 无向图连通分量121

5.5.2 最小生成树121

5.5.3 实践演练——创建一个最小生成树123

5.5.4 实践演练——调用最小生成树函数实现操作123

5.5.5 关键路径124

5.6 寻求最短路径128

5.6.1 求某一顶点到其他各顶点的最短路径128

5.6.2 任意一对顶点间的最短路129

5.6.3 实践演练——创建最短路径算法函数131

5.6.4 实践演练——调用最短路径算法实现测试132

5.7 技术解惑132

5.7.1 几种最短路径算法的比较132

5.7.2 邻接矩阵与邻接表的对比134

5.7.3 如何表示有向图的十字链表存储135

5.7.4 比较深度优先算法和广度优先算法135

第6章 查找算法136

6.1 几个相关概念137

6.2 基于线性表的查找法137

6.2.1 顺序查找法137

6.2.2 实践演练——实现顺序查找算法138

6.2.3 实践演练——改进的顺序查找算法139

6.2.4 折半查找法140

6.2.5 实践演练——使用折半查找算法查找数据140

6.2.6 实践演练——查找10个已排好序的数141

6.2.7 分块查找法142

6.3 基于树的查找法143

6.3.1 二叉排序树143

6.3.2 实践演练——将数据插入到二叉树节点中147

6.3.3 实践演练——删除二叉树中一个节点148

6.3.4 平衡二叉排序树150

6.4 哈希法155

6.4.1 哈希法的基本思想155

6.4.2 构造哈希函数155

6.4.3 处理冲突156

6.4.4 哈希表的查找过程157

6.5 索引查找158

6.5.1 索引查找的过程158

6.5.2 实践演练——索引查找法查找指定的关键字158

6.5.3 实践演练——实现索引查找并插入一个新关键字160

6.6 技术解惑161

6.6.1 分析查找算法的性能161

6.6.2 演示对二叉树的完整操作162

6.6.3 分析哈希法的性能164

第7章 内部排序算法166

7.1 排序基础167

7.1.1 排序的目的和过程167

7.1.2 内部排序与外部排序167

7.1.3 稳定排序与不稳定排序167

7.2 插入排序算法168

7.2.1 直接插入排序168

7.2.2 实践演练——编写直接插入排序算法169

7.2.3 实践演练——插入排序算法对数据进行排序处理169

7.2.4 折半插入排序170

7.2.5 表插入排序170

7.2.6 希尔排序171

7.2.7 实践演练——使用希尔排序算法对数据进行排序处理172

7.2.8 实践演练——使用希尔排序处理数组173

7.3 交换类排序法174

7.3.1 冒泡排序(相邻比序法)174

7.3.2 快速排序174

7.3.3 实践演练——用冒泡排序算法实现对数据的排序处理175

7.3.4 实践演练——使用快速排序算法177

7.4 选择类排序法178

7.4.1 直接选择排序178

7.4.2 树形选择排序179

7.4.3 堆排序179

7.4.4 实践演练——直接选择排序算法对数据的排序处理181

7.4.5 实践演练——堆排序算法实现排序处理182

7.5 归并排序183

7.5.1 归并排序思想183

7.5.2 两路归并算法的思路184

7.5.3 实现归并排序185

7.5.4 实践演练——用归并算法实现排序处理186

7.5.5 实践演练——使用归并排序算法求逆序对188

7.6 基数排序189

7.6.1 多关键字排序189

7.6.2 链式基数排序189

7.7 技术解惑192

7.7.1 插入排序算法的描述是什么192

7.7.2 希尔排序和插入排序谁更快192

7.7.3 快速排序的时间耗费是多少192

7.7.4 堆排序与直接选择排序的区别是什么193

7.7.5 归并排序的效率如何,应该如何选择193

7.7.6 综合比较各种排序方法193

第8章 外部排序算法195

8.1 外部信息概览196

8.1.1 磁带存储器196

8.1.2 磁盘存储器197

8.2 外部排序的基本方法198

8.2.1 磁盘排序198

8.2.2 磁带排序201

8.3 文件的基础知识204

8.4 文件组织方式205

8.4.1 顺序文件205

8.4.2 索引文件205

8.4.3 ISAM文件206

8.4.4 VSAM文件207

8.4.5 散列文件209

8.4.6 多关键字文件209

第9章 经典的数据结构问题211

9.1 约瑟夫环212

9.2 大整数运算214

9.2.1 数组实现大整数运算214

9.2.2 链表实现大整数运算220

9.3 计算机进制转换224

9.4 中序表达式转换为后序表达式227

第10章 解决数学问题231

10.1 最大公约数和最小公倍数232

10.2 哥德巴赫猜想233

10.3 完全数235

10.4 亲密数237

10.5 自守数238

10.6 方程求解239

10.6.1 用高斯消元法解方程组239

10.6.2 用二分法解非线性方程242

10.6.3 用牛顿迭代法解非线性方程243

10.7 矩阵运算244

10.8 实现n×n整数方阵的转置246

10.9 一元多项式运算247

10.9.1 一元多项式的加法运算247

10.9.2 一元多项式的减法运算250

第11章 解决趣味问题257

11.1 歌星大奖赛258

11.2 借书方案258

11.3 打鱼还是晒网259

11.4 捕鱼和分鱼260

11.5 出售金鱼261

11.6 平分七筐鱼262

11.7 绳子的长度和井深263

11.8 鸡兔同笼264

11.9 汉诺塔265

11.9.1 递归法266

11.9.2 非递归法267

11.10 马踏棋盘268

11.10.1 使用循环查找法269

11.10.2 使用递归法271

11.10.3 使用栈方法272

11.11 三色球问题275

11.12 新郎和新娘问题276

11.13 计算年龄278

第12章 解决图像问题279

12.1 “八皇后”问题280

12.1.1 使用递归法280

12.1.2 使用循环法282

12.2 生命游戏284

12.3 黑白棋问题287

12.4 “骑士迷宫”问题293

12.5 找出迷宫问题中的所有路径298

第13章 算法的经典问题300

13.1 存钱利息最大化301

13.2 背包问题303

13.2.1 使用动态规划法303

13.2.2 使用递归法307

13.3 农夫过河309

13.4 三色旗问题311

13.5 取石子313

13.6 停车场管理316

13.7 约瑟夫生死者游戏323

第14章 解决奥赛问题325

14.1 孪生素数问题326

14.2 百钱买百鸡问题327

14.3 马克思手稿中的数学题328

14.4 正整数分解质因数329

14.5 水仙花数330

14.6 素数330

14.6.1 求1000以内的所有素数331

14.6.2 求1000以内的回文素数332

14.6.3 求1000以内的平方回文数333

14.7 阶乘333

14.7.1 使用递归法334

14.7.2 实现大数的阶乘335

14.8 青蛙过河339

14.9 过河卒342

14.10 素数组合344

14.11 校验码问题346

14.12 老师排座位347

14.13 模拟立体图349

14.14 采药问题351

14.15 等价表达式问题352

14.16 购买年货问题355

第15章 常见算法应用实践358

15.1 实现Ping功能中的校验和算法359

15.2 24点游戏算法363

15.3 洗牌368

15.4 21点游戏370

15.5 2048游戏375

15.6 引用计数算法386

15.7 猫捉老鼠游戏388

第16章 俄罗斯方块游戏393

16.1 游戏功能描述394

16.2 游戏总体设计394

16.2.1 功能模块设计394

16.2.2 数据结构设计396

16.2.3 构成函数介绍397

16.3 游戏具体实现398

16.3.1 预处理398

16.3.2 主函数——递归算法400

16.3.3 初始化界面处理——分治算法401

16.3.4 时钟中断处理402

16.3.5 成绩、速度和帮助处理403

16.3.6 满行处理——碰撞检测算法403

16.3.7 方块显示和消除处理——分治算法405

16.3.8 游戏方块操作判断处理——枚举算法406

第17章 学生成绩管理系统409

17.1 系统总体描述410

17.1.1 开发目标和项目背景介绍410

17.1.2 系统功能模块410

17.2 系统总体设计411

17.2.1 功能模块设计411

17.2.2 数据结构设计413

17.2.3 构成函数介绍413

17.3 系统具体实现415

17.3.1 预处理415

17.3.2 主函数main——递归算法415

17.3.3 系统主菜单函数——模拟算法416

17.3.4 表格显示信息417

17.3.5 信息查找定位——分治算法417

17.3.6 格式化输入数据——递归、分治算法418

17.3.7 增加学生记录——试探算法418

17.3.8 查询学生记录——分治算法419

17.3.9 删除学生记录——分治、递归算法420

17.3.10 修改学生记录——递归、模拟算法421

17.3.11 插入学生记录——递推算法421

17.3.12 统计学生记录——分治算法423

17.3.13 排序处理——插入排序算法423

17.3.14 存储学生信息424

第18章 绘图板系统428

18.1 项目规划分析429

18.1.1 绘图板的核心技术429

18.1.2 功能描述429

18.1.3 总体设计429

18.2 设计数据结构430

18.2.1 设计数据结构430

18.2.2 规划系统函数430

18.3 具体编码432

18.3.1 预处理模块432

18.3.2 功能控制模块——递推、递归算法434

18.3.3 保存加载模块——递归算法435

18.3.4 鼠标控制模块——枚举、递归算法436

18.3.5 图形绘制模块——递归、分治、枚举、递推算法437

18.3.6 主函数模块——模拟、递归算法447

18.4 项目调试451

第19章 UDP传输系统452

19.1 项目规划分析453

19.1.1 功能描述453

19.1.2 功能模块设计453

19.1.3 系统流程图454

19.1.4 广播消息发送流程454

19.1.5 广播消息接收流程图455

19.1.6 多播消息接收流程图456

19.2 设计数据结构457

19.2.1 定义常量457

19.2.2 定义全局变量458

19.3 规划系统函数458

19.4 具体编码459

19.4.1 预处理460

19.4.2 初始化模块处理460

19.4.3 获取参数——枚举算法461

19.4.4 用户帮助模块——递归算法462

19.4.5 广播信息发送模块——试探算法463

19.4.6 广播信息接收模块——试探算法464

19.4.7 多播功能控制模块——试探算法465

19.4.8 多播消息发送模块——试探算法466

19.4.9 多播消息接收模块——试探算法467

19.4.10 主函数——递归算法467

19.5 项目调试468

第20章 推箱子游戏469

20.1 项目规划分析470

20.1.1 功能描述470

20.1.2 功能模块分析470

20.1.3 剖析执行流程470

20.2 设计数据结构472

20.3 规划系统函数472

20.4 具体编码475

20.4.1 预处理475

20.4.2 初始化模块——递归算法475

20.4.3 画图模块——试探算法478

20.4.4 移动箱子模块——试探、分治、递归、枚举算法479

20.4.5 移动小人模块——枚举、试探算法482

20.4.6 功能控制模块——递归、分治算法486

20.4.7 系统主函数——枚举、模拟、递归、试探算法487

20.5 项目调试488

热门推荐