大小:16.26M
更新时间:23-08-30
系统:Pc
《算法笔记》内容包括:C/C++快速入门、入门模拟、算法初步、数学问题、C++标准模板库(STL)、数据结构专题(二章)、搜索专题、图算法专题、动态规划专题、字符串专题、专题扩展。《算法笔记》印有二维码,用来实时更新、补充内容及发布勘误的。本书可作为计算机专业研究生入学考试复试上机、各类算法等级考试(如PAT、CSP等)的辅导书,也可作为“数据结构”科目的考研教材及辅导书内容的补充。《算法笔记》还是学习C语言、数据结构与算法的入门辅导书,非常适合零基础的学习者对经典算法进行学习。
《算法笔记》希望让一个C语言零基础的读者能很好地进入本书的学习,因此在第2章设置了C语言的入门详解,使读者不必因自己不会C语言而有所担心,并且在对C语言的讲解中融入了部分C++的特性内容,这样读者会更容易书写顺手的代码。第3~5章是入门部分,其中介绍了一些算法思想和数学问题,读者可从中学习到一些基础但非常重要的算法思想,并培养基本的思维能力和代码能力。第6章介绍了C++标准模板库(STL)的常用内容和algorithm头文件下的常用函数,以帮助读者节省写代码的时间。第7~12章是进阶部分,其中介绍了各类经典数据结构、图算法以及较为进阶的重要算法,以使读者对经典算法和数据结构有较为深入的学习。第13章补充了一些上面没有介绍的内容,以帮助读者拓宽视野。
前言
第1章 如何使用本书 1
1.1 本书的基本内容 1
1.2 如何选择编程语言和编译器 1
1.3 在线评测系统 2
1.4 常见的评测结果 3
1.5 如何高效地做题 4
第2章 C/C++快速入门 5
2.1 基本数据类型 7
2.1.1 变量的定义 7
2.1.2 变量类型 7
2.1.3 强制类型转换 11
2.1.4 符号常量和const常量 12
2.1.5 运算符 14
2.2 顺序结构 17
2.2.1 赋值表达式 17
2.2.2 使用scanf和printf输入/输出 18
2.2.3 使用getchar和putchar输入/输出字符 23
2.2.4 注释 24
2.2.5 typedef 24
2.2.6 常用math函数 25
2.3 选择结构 28
2.3.1 if语句 28
2.3.2 if语句的嵌套 31
2.3.3 switch语句 32
2.4 循环结构 34
2.4.1 while语句 34
2.4.2 do while语句 35
2.4.3 for语句 36
2.4.4 break和continue语句 38
2.5 数组 39
2.5.1 一维数组 39
2.5.2 冒泡排序 41
2.5.3 二维数组 43
2.5.4 memset——对数组中每一个元素赋相同的值 46
2.5.5 字符数组 47
2.5.6 string.h头文件 50
2.5.7 sscanf与sprintf 53
2.6 函数 55
2.6.1 函数的定义 55
2.6.2 再谈main函数 58
2.6.3 以数组作为函数参数 58
2.6.4 函数的嵌套调用 59
2.6.5 函数的递归调用 60
2.7 指针 61
2.7.1 什么是指针 61
2.7.2 指针变量 62
2.7.3 指针与数组 63
2.7.4 使用指针变量作为函数参数 65
2.7.5 引用 68
2.8 结构体(struct)的使用 70
2.8.1 结构体的定义 70
2.8.2 访问结构体内的元素 71
2.8.3 结构体的初始化 72
2.9 补充 74
2.9.1 cin与cout 74
2.9.2 浮点数的比较 75
2.9.3 复杂度 78
2.10 黑盒测试 80
2.10.1 单点测试 80
2.10.2 多点测试 80
第3章 入门篇(1)——入门模拟 85
3.1 简单模拟 85
3.2 查找元素 87
3.3 图形输出 89
3.4 日期处理 91
3.5 进制转换 93
3.6 字符串处理 95
第4章 入门篇(2)——算法初步 99
4.1 排序 99
4.1.1 选择排序 99
4.1.2 插入排序 100
4.1.3 排序题与sort函数的应用 101
4.2 散列 106
4.2.1 散列的定义与整数散列 106
4.2.2 字符串hash初步 109
4.3 递归 111
4.3.1 分治 111
4.3.2 递归 112
4.4 贪心 118
4.4.1 简单贪心 118
4.4.2 区间贪心 122
4.5 二分 124
4.5.1 二分查找 124
4.5.2 二分法拓展 131
4.5.3 快速幂 134
4.6 two pointers 137
4.6.1 什么是two pointers 137
4.6.2 归并排序 139
4.6.3 快速排序 142
4.7 其他高效技巧与算法 146
4.7.1 打表 146
4.7.2 活用递推 147
4.7.3 随机选择算法 149
第5章 入门篇(3)——数学问题 152
5.1 简单数学 152
5.2 最大公约数与最小公倍数 154
5.2.1 最大公约数 154
5.2.2 最小公倍数 156
5.3 分数的四则运算 156
5.3.1 分数的表示和化简 157
5.3.2 分数的四则运算 157
5.3.3 分数的输出 159
5.4 素数 159
5.4.1 素数的判断 160
5.4.2 素数表的获取 160
5.5 质因子分解 165
5.6 大整数运算 170
5.6.1 大整数的存储 170
5.6.2 大整数的四则运算 171
5.7 扩展欧几里得算法 176
5.8 组合数 181
5.8.1 关于n!的一个问题 181
5.8.2 组合数的计算 183
第6章 C++标准模板库(STL)介绍 191
6.1 vector的常见用法详解 191
6.2 set的常见用法详解 197
6.3 string的常见用法详解 202
6.4 map的常用用法详解 213
6.5 queue的常见用法详解 218
6.6 priority_queue的常见用法详解 221
6.7 stack的常见用法详解 227
6.8 pair的常见用法详解 230
6.9 algorithm头文件下的常用函数 232
6.9.1 max()、min()和abs() 232
6.9.2 swap() 233
6.9.3 reverse() 233
6.9.4 next_permutation() 234
6.9.5 fill() 235
6.9.6 sort() 235
6.9.7 lower_bound()和upper_bound() 242
第7章 提高篇(1)——数据结构专题(1) 245
7.1 栈的应用 245
7.2 队列的应用 251
7.3 链表处理 253
7.3.1 链表的概念 253
7.3.2 使用malloc函数或new运算符为链表结点分配内存空间 254
7.3.3 链表的基本操作 256
7.3.4 静态链表 260
第8章 提高篇(2)——搜索专题 269
8.1 深度优先搜索(DFS) 269
8.2 广度优先搜索(BFS) 274
第9章 提高篇(3)——数据结构专题(2) 283
9.1 树与二叉树 283
9.1.1 树的定义与性质 283
9.1.2 二叉树的递归定义 284
9.1.3 二叉树的存储结构与基本操作 285
9.2 二叉树的遍历 289
9.2.1 先序遍历 289
9.2.2 中序遍历 290
9.2.3 后序遍历 291
9.2.4 层序遍历 292
9.2.5 二叉树的静态实现 298
9.3 树的遍历 302
9.3.1 树的静态写法 302
9.3.2 树的先根遍历 303
9.3.3 树的层序遍历 303
9.3.4 从树的遍历看DFS与BFS 304
9.4 二叉查找树(BST) 310
9.4.1 二叉查找树的定义 310
9.4.2 二叉查找树的基本操作 310
9.4.3 二叉查找树的性质 314
9.5 平衡二叉树(AVL树) 319
9.5.1 平衡二叉树的定义 319
9.5.2 平衡二叉树的基本操作 320
9.6 并查集 328
9.6.1 并查集的定义 328
9.6.2 并查集的基本操作 328
9.6.3 路径压缩 330
9.7 堆 335
9.7.1 堆的定义与基本操作 335
9.7.2 堆排序 339
9.8 哈夫曼树 342
9.8.1 哈夫曼树 342
9.8.2 哈弗曼编码 345
第10章 提高篇(4)——图算法专题 347
10.1 图的定义和相关术语 347
10.2 图的存储 348
10.2.1 邻接矩阵 348
10.2.2 邻接表 348
10.3 图的遍历 350
10.3.1 采用深度优先搜索(DFS)法遍历图 350
10.3.2 采用广度优先搜索(BFS)法遍历图 359
10.4 最短路径 367
10.4.1 Dijkstra算法 367
10.4.2 Bellman-Ford算法和SPFA算法 391
10.4.3 Floyd算法 398
10.5 最小生成树 400
10.5.1 最小生成树及其性质 400
10.5.2 prim算法 401
10.5.3 kruskal算法 409
10.6 拓扑排序 414
10.6.1 有向无环图 414
10.6.2 拓扑排序 415
10.7 关键路径 417
10.7.1 AOV网和AOE网 417
10.7.2 最长路径 419
10.7.3 关键路径 419
第11章 提高篇(5)——动态规划专题 425
11.1 动态规划的递归写法和递推写法 425
11.1.1 什么是动态规划 425
11.1.2 动态规划的递归写法 425
11.1.3 动态规划的递推写法 426
11.2 最大连续子序列和 429
11.3 最长不下降子序列(LIS) 432
11.4 最长公共子序列(LCS) 434
11.5 最长回文子串 436
11.6 DAG最长路 439
11.7 背包问题 442
11.7.1 多阶段动态规划问题 442
11.7.2 01背包问题 443
11.7.3 完全背包问题 446
11.8 总结 447
第12章 提高篇(6)——字符串专题 449
12.1 字符串hash进阶 449
12.2 KMP算法 455
12.2.1 next数组 456
12.2.2 KMP算法 458
12.2.3 从有限状态自动机的角度看待KMP算法 463
第13章 专题扩展 465
13.1 分块思想 465
13.2 树状数组(BIT) 470
13.2.1 lowbit运算 470
13.2.2 树状数组及其应用 470
参考文献 481
1、下载并解压,得出pdf文件
2、如果打不开本文件,请务必下载pdf阅读器
3、安装后,在打开解压得出的pdf文件
4、双击进行阅读
应用信息
同类热门
热门标签
网友评论1人参与,1条评论
最新排行
不上班的23种活法pdf版6.47M 不上班的23种活法是一款介绍各种各样的自由职业的图书,作者唐华山,由北京出版社发行。全书为广大网友提供23种活法供参考,选取了自由职业中最具普遍意义的23个方向,并对其进行了具体分析和阐述,包括职业综述、必备素养、现身说法、经验分享、测试、相关链接
查看
11g329-1/2/3图集12.02Mpdf高清完整版 11g329图集全套是一个包含了11g329-1、11g329-2和11g329-3的国家建筑标准设计图集,也是建筑物抗震构造详图的pdf高清完整版,由中国建筑标准设计研究院编制,中华人民共和国住房和城乡建设部发行,可以适用于多层和高层钢筋混凝土房
查看
oracle sql高级编程64.34M莫顿pdf扫描版 oracle sql高级编程是一本Oracle SQL高级编程手册,由资深Oracle专家莫顿、Kerry Osborne、Robyn Sands和Jared Still编著。本书内容丰富翔实,通过作者多年的软件开发和教学培训经验,与大家分享了掌握
查看
Linux系统命令及Shell脚本实践指南pdf52.87M王军高清扫描版 linux系统命令及shell脚本实践指南是一本linux系统及Shel脚本开发教材,由王军编著。本书是根据作者多年来Linux环境运维管理工作的经验编著而成,内容丰富,且注重实践讲解。全书采用理论联系实际的写作方式,从系统管理出发,深入剖析Lin
查看
艺用人体解剖学pdf24.66M历晓东扫描版 艺用人体解剖学pdf是由上海人民美术出版社的历晓东老师推出的一般人体艺术解析著作。该著作充分吸收了国内外艺术家的探索及经验,打破了传统思维的桎梏,以超人的智慧创造了全新的人体形象。能够独立解决用户对人体构造遇到的瓶颈,高效、实用! 艺用
查看
dslr数码单反摄影圣经111.74Mpdf高清版 数码单反相机已经成为专业摄影师以及广大摄影爱好者最得力的工具,但并不是每一个朋友都了解自己的相机,不熟悉相机的功能,拿着数码单反相机当傻瓜相机用,这样未免大材小用了。要想用好数码单反相机,必须熟练掌握它的功能和原理。dslr数码单反摄影圣经是目前最
查看
网络安全评估从漏洞到补丁75.24Mpdf扫描版 网络安全评估从漏洞到补丁是一本网络安全指导书籍,由美国网络安全专家Steve Manzuik编著,张建标编译。全书主要将漏洞管理技术融入到业务管理中,只有将黑客所实施的威胁与对组织造成的风险联系到一起时,这些知识才是有价值的,而本书就是要介绍完成这
查看
计算机组成与设计硬件软件接口第五版149.19Mpdf扫描完整版 计算机组成与设计硬件软件接口第五版,简称为计算机组成与设计第五版,是一本介绍计算机体系结构的教材,由美戴维A.帕特森,约翰L.亨尼斯编著,王党辉,康继昌,安建峰等翻译,机械工业出版社出版。全书非常详细的介绍了软件和硬件之间的关系,并且还提供了丰富的
查看
htc t320e使用说明书3.62MPDF中文版 htc t320e使用说明书是一款高清的pdf中文版电子书,详细的介绍了htc t320e one v手机的使用技巧,包括手机的安装,主屏幕介绍,个性化设置,文本的输入,网络连接操作,账户与同步,图片与视频,如何收听新浪微笑博等等,是htc手机用户
查看
第1楼 云南省昆明市电信 网友