算法基础:Python和C#语言实现(原书第2版) txt 书籍 免费 网盘下载地址
算法基础:Python和C#语言实现(原书第2版)txt电子书网盘下载地址一
- 文件名
- [百度网盘 下载] 算法基础:Python和C#语言实现(原书第2版) txt格式电子书
- [阿里云盘 下载] 算法基础:Python和C#语言实现(原书第2版) txt格式电子书
- [腾讯微云 下载] 算法基础:Python和C#语言实现(原书第2版) txt格式电子书
- [坚果云 下载] 算法基础:Python和C#语言实现(原书第2版) txt格式电子书
- [迅雷下载 下载] 算法基础:Python和C#语言实现(原书第2版) txt格式电子书
- [华为网盘 下载] 算法基础:Python和C#语言实现(原书第2版) txt格式电子书
- [天翼云盘 下载] 算法基础:Python和C#语言实现(原书第2版) txt格式电子书
- [360云盘 下载] 算法基础:Python和C#语言实现(原书第2版) txt格式电子书
- [夸克网盘 下载] 算法基础:Python和C#语言实现(原书第2版) txt格式电子书
- [115网盘 下载] 算法基础:Python和C#语言实现(原书第2版) txt格式电子书
- [蓝奏云 下载] 算法基础:Python和C#语言实现(原书第2版) txt格式电子书
- [城通网盘 下载] 算法基础:Python和C#语言实现(原书第2版) txt格式电子书
- [本地下载 下载] 算法基础:Python和C#语言实现(原书第2版) txt格式电子书
算法基础:Python和C#语言实现(原书第2版)txt电子书网盘下载地址二
- 文件名
- [百度网盘 下载] 算法基础:Python和C#语言实现(原书第2版) txt格式电子书
- [阿里云盘 下载] 算法基础:Python和C#语言实现(原书第2版) txt格式电子书
- [腾讯微云 下载] 算法基础:Python和C#语言实现(原书第2版) txt格式电子书
- [坚果云 下载] 算法基础:Python和C#语言实现(原书第2版) txt格式电子书
- [迅雷下载 下载] 算法基础:Python和C#语言实现(原书第2版) txt格式电子书
- [华为网盘 下载] 算法基础:Python和C#语言实现(原书第2版) txt格式电子书
- [天翼云盘 下载] 算法基础:Python和C#语言实现(原书第2版) txt格式电子书
- [360云盘 下载] 算法基础:Python和C#语言实现(原书第2版) txt格式电子书
- [夸克网盘 下载] 算法基础:Python和C#语言实现(原书第2版) txt格式电子书
- [115网盘 下载] 算法基础:Python和C#语言实现(原书第2版) txt格式电子书
- [蓝奏云 下载] 算法基础:Python和C#语言实现(原书第2版) txt格式电子书
- [城通网盘 下载] 算法基础:Python和C#语言实现(原书第2版) txt格式电子书
- [本地下载 下载] 算法基础:Python和C#语言实现(原书第2版) txt格式电子书
寄语:
新增Python代码示例,全面涵盖经典算法、问题求解技巧和面试指南,在理解算法性能的基础上学会解决新问题
内容简介:
本书第2版进行了全面修订与更新,更加易于学习。书中描述了那些重要且经典的算法,并且说明了不同算法的适用情境。跟随作者的讲解,读者将学会分析既有算法,进而理解算法背后的原理。同时,读者也将学习创建新的算法,以适应未来的新需求。这些有用的算法包括:操作常用数据结构的方法,高级数据结构,网络算法,以及数值算法。此外,书中还包含通用的问题求解技巧。除了描述算法,作者还详细介绍了如何分析算法的性能。书中提供大量练习,读者可以自己探索修改算法的方法,以便将其应用于新的情境。
书籍目录:
出版者的话
译者序
前言
作者简介
第1章 算法基础 1
1.1 方法 1
1.2 算法和数据结构 2
1.3 伪代码 2
1.4 算法的特点 4
1.4.1 大O符号 5
1.4.2 常用的运行时间函数 7
1.4.3 运行时间函数的可视化比较 11
1.5 实际考虑 12
1.6 本章小结 13
1.7 练习题 14
第2章 数值算法 16
2.1 数据随机化 16
2.1.1 随机数生成器 16
2.1.2 随机化数组 20
2.1.3 生成非均匀分布 21
2.1.4 随机行走 22
2.2 查找公约数 25
2.2.1 计算公约数 25
2.2.2 公约数算法的扩展应用 27
2.3 计算乘幂 28
2.4 处理素数 29
2.4.1 查找素数因子 29
2.4.2 查找素数 31
2.4.3 素性检验 32
2.5 计算数值积分 33
2.5.1 矩形法则 34
2.5.2 梯形法则 34
2.5.3 自适应积分算法 35
2.5.4 蒙特卡罗积分法 37
2.6 方程求解 38
2.7 高斯消元法 40
2.7.1 前向消元 40
2.7.2 后向代换 41
2.7.3 算法实现 42
2.8 小二乘法拟合 42
2.8.1 线性小二乘法 43
2.8.2 多项式小二乘法 44
2.9 本章小结 45
2.10 练习题 46
第3章 链表 48
3.1 基本概念 48
3.2 单向链表 49
3.2.1 遍历链表 49
3.2.2 查找节点 49
3.2.3 使用哨兵 50
3.2.4 在顶部添加节点 51
3.2.5 在尾部添加节点 51
3.2.6 在指定节点后插入节点 52
3.2.7 删除节点 52
3.3 双向链表 53
3.4 有序链表 54
3.5 自组织链表 55
3.5.1 前移方法 56
3.5.2 交换方法 56
3.5.3 计数方法 56
3.5.4 混合方法 56
3.5.5 伪代码 57
3.6 链表算法 57
3.6.1 复制链表 58
3.6.2 插入排序 58
3.6.3 选择排序 60
3.7 多线链表 61
3.8 循环链表 61
3.8.1 标记节点 62
3.8.2 使用哈希表 63
3.8.3 链表回溯 64
3.8.4 链表反转 65
3.8.5 龟兔赛跑算法 66
3.8.6 双向链表中的环路 68
3.9 本章小结 68
3.10 练习题 68
第4章 数组 70
4.1 基本概念 70
4.2 一维数组 72
4.2.1 查找数组元素 72
4.2.2 查找值、小值和平均值 72
4.2.3 查找中值 73
4.2.4 查找众数 74
4.2.5 插入数组元素 76
4.2.6 删除数组元素 77
4.3 非零数组下界 77
4.3.1 二维数组 78
4.3.2 高维数组 78
4.4 三角形数组 81
4.5 稀疏数组 83
4.5.1 查找行或列 84
4.5.2 获取元素的值 85
4.5.3 设置元素的值 86
4.5.4 删除数组元素 87
4.6 矩阵 89
4.7 本章小结 91
4.8 练习题 91
第5章 堆栈和队列 93
5.1 堆栈 93
5.1.1 链表堆栈 94
5.1.2 数组堆栈 95
5.1.3 双堆栈 96
5.1.4 堆栈算法 97
5.2 队列 101
5.2.1 链表队列 101
5.2.2 数组队列 102
5.2.3 特殊队列 104
5.3 二项堆 105
5.3.1 二项树的定义 105
5.3.2 二项堆的定义 106
5.3.3 合并树 107
5.3.4 合并堆 108
5.3.5 入队操作 111
5.3.6 出队操作 111
5.3.7 运行时间分析 112
5.4 本章小结 113
5.5 练习题 113
第6章 排序 115
6.1 O(N 2)算法 115
6.1.1 数组的插入排序算法 115
6.1.2 数组的选择排序算法 116
6.1.3 冒泡排序算法 117
6.2 O(NlogN)算法 119
6.2.1 堆排序算法 120
6.2.2 快速排序算法 124
6.2.3 合并排序算法 130
6.3 小于O(NlogN)的算法 132
6.3.1 计数排序算法 132
6.3.2 鸽巢排序算法 133
6.3.3 桶排序算法 135
6.4 本章小结 136
6.5 练习题 137
第7章 查找 139
7.1 线性查找算法 139
7.2 二分查找算法 140
7.3 插值查找算法 141
7.4 多数投票算法 142
7.5 本章小结 143
7.6 练习题 144
第8章 哈希表 145
8.1 哈希表的基本概念 145
8.2 链接哈希表 146
8.3 开放寻址哈希表 147
8.3.1 删除数据项 148
8.3.2 线性探测 149
8.3.3 二次探测 150
8.3.4 伪随机探测 151
8.3.5 双重哈希 151
8.3.6 有序哈希 152
8.4 本章小结 154
8.5 练习题 154
第9章 递归 156
9.1 基本算法 156
9.1.1 阶乘 156
9.1.2 斐波那契数 158
9.1.3 棒料切割问题 159
9.1.4 汉诺塔 161
9.2 图形算法 163
9.2.1 科赫曲线 163
9.2.2 希尔伯特曲线 165
9.2.3 谢尔宾斯基曲线 166
9.2.4 垫圈图案 168
9.2.5 天际线问题 168
9.3 回溯算法 172
9.3.1 八皇后问题 173
9.3.2 骑士巡游问题 175
9.4 组合与排列 177
9.4.1 基于循环的组合 178
9.4.2 允许重复项的组合 179
9.4.3 不允许重复项的组合 180
9.4.4 允许重复项的排列 181
9.4.5 不允许重复项的排列 182
9.4.6 轮询调度算法 183
9.5 递归的删除 188
9.5.1 尾部递归的删除 188
9.5.2 动态规划 189
9.5.3 自底向上编程 190
9.5.4 删除递归的通用方法 191
9.6 本章小结 193
9.7 练习题 194
第10章 树 196
10.1 有关树的术语 196
10.2 二叉树的性质 198
10.3 树的表示 200
10.3.1 构建常规树 200
10.3.2 构建完全树 203
10.4 树的遍历 203
10.4.1 前序遍历 204
10.4.2 中序遍历 206
10.4.3 后序遍历 206
10.4.4 广度优先遍历 207
10.4.5 遍历的应用 207
10.4.6 遍历的运行时间分析 208
10.5 有序树 208
10.5.1 添加节点 209
10.5.2 查找节点 210
10.5.3 删除节点 211
10.6 小共同祖先 212
10.6.1 在有序树中查找小共同祖先 212
10.6.2 使用指向父节点的指针 213
10.6.3 使用指向父节点的指针和深度字段 214
10.6.4 常规树 214
10.6.5 欧拉环游 216
10.6.6 所有节点对的小共同祖先 217
10.7 线索树 217
10.7.1 构建线索树 218
10.7.2 线索树的应用 220
10.8 特殊的树算法 221
10.8.1 动物游戏 221
10.8.2 表达式求值 223
10.9 区间树 224
10.9.1 构建区间树 225
10.9.2 与点相交 226
10.9.3 与区间相交 226
10.9.4 四叉树 228
10.9.5 字符串树 231
10.10 本章小结 235
10.11 练习题 235
第11章 平衡树 239
11.1 AVL树 239
11.1.1 添加值 239
11.1.2 删除值 240
11.2 2-3树 241
11.2.1 添加值 242
11.2.2 删除值 242
11.3 B树 244
11.3.1 添加值 245
11.3.2 删除值 245
11.4 平衡树的变种 246
11.4.1 自顶向下的B树 246
11.4.2 B 树 247
11.5 本章小结 248
11.6 练习题 248
第12章 决策树 250
12.1 搜索博弈树 250
12.1.1 极小极大算法 251
12.1.2 初始移动和响应 254
12.1.3 博弈树启发式算法 254
12.2 搜索常规决策树 255
12.2.1 优化问题 256
12.2.2 穷举搜索 257
12.2.3 分支定界搜索 258
12.2.4 决策树启发式算法 259
12.2.5 其他决策树问题 264
12.3 群集智能 267
12.3.1 蚁群优化算法 268
12.3.2 蜂群算法 268
12.3.3 群集仿真 269
12.4 本章小结 270
12.5 练习题 271
第13章 基本网络算法 274
13.1 有关网络的术语 274
13.2 网络的表示 276
13.3 遍历 278
13.3.1 深度优先遍历 278
13.3.2 广度优先遍历 280
13.3.3 连通性测试 281
13.3.4 生成树 282
13.3.5 小生成树 283
13.3.6 欧几里得小生成树 284
13.3.7 构建迷宫 284
13.4 强连通组件 285
13.4.1 Kosaraju算法 285
13.4.2 关于Kosaraju算法的讨论 286
13.5 查找路径 288
13.5.1 查找任意路径 288
13.5.2 标签设置短路径 289
13.5.3 标签修正短路径 291
13.5.4 所有节点对的短路径 292
13.6 传递性 295
13.6.1 传递闭包 295
13.6.2 传递归约 296
13.7 短路径算法的改进 298
13.7.1 形状点 298
13.7.2 提前终止 299
13.7.3 双向搜索 299
13.7.4 优先搜索 299
13.7.5 转弯惩罚和禁行 299
13.8 本章小结 302
13.9 练习题 302
第14章 高级网络算法 304
14.1 拓扑排序 304
14.2 回路检测 306
14.3 地图着色 307
14.3.1 双色地图 307
14.3.2 三色地图 308
14.3.3 四色地图 309
14.3.4 五色地图 309
14.3.5 其他地图着色算法 312
14.4 流量 312
14.4.1 工作分配 314
14.4.2 小流量切割 314
14.5 网络克隆 316
14.5.1 字典 316
14.5.2 克隆引用 317
14.6 节点团 318
14.6.1 暴力破解方法 318
14.6.2 Bron-Kerbosch算法 319
14.6.3 查找三角形节点团 323
14.7 社区检测 324
14.7.1 极大节点团 325
14.7.2 Girvan-Newman算法 325
14.7.3 派系过滤法 326
14.8 欧拉路径和欧拉回路 326
14.8.1 暴力破解方法 327
14.8.2 弗莱里算法 327
14.8.3 Hierholzer算法 327
14.9 本章小结 328
14.10 练习题 329
第15章 字符串算法 331
15.1 匹配括号 331
15.1.1 算术表达式求值 332
作者介绍:
---作者简介---
罗德·斯蒂芬斯(Rod Stephens) 连续15年被评为Microsoft Visual Basic有价值专家(MVP),长期在ITT Technical Institute教授编程入门课程。他已经撰写了超过30本技术书籍,这些书被翻译成多种语言在世界范围内出版。他还撰写了超过250篇杂志文章,内容涵盖C#、Visual Basic、Delphi和Java等。
---译者简介---
余青松 华东师范大学高级工程师。1990年毕业于华东师范大学并留校任教。编著计算机相关教材30余本,在国内外学术期刊和学术会议上发表科技论文近百篇。
江红 华东师范大学副教授,博士。1994年毕业于复旦大学计算机系。曾荣获上海市教学成果一等奖、华东师范大学教学成果一等奖、华东师范大学优秀任课教师奖等荣誉。
出版社信息:
暂无出版社相关信息,正在全力查找中!
书籍摘录:
暂无相关书籍摘录,正在全力查找中!
在线阅读/听书/购买/PDF下载地址:
在线阅读地址:算法基础:Python和C#语言实现(原书第2版)在线阅读
原文赏析:
暂无原文赏析,正在全力查找中!
其它内容:
前言
算法是高效率编程的秘诀。算法用于描述如何排序记录、搜索数据项、计算诸如素数因子之类的数值、寻找街道路网中两点之间的短路径,以及通过通信网络确定所允许的信息流。好算法和坏算法之间的区别在于:面对同一个问题,使用好算法可能意味着几秒就可以解决问题,而使用坏算法则需要几小时的时间,甚至永远解决不了问题。
研究算法有助于我们建立一个解决特定问题的实用方法工具包,同时可以帮助我们了解在不同的情况下哪些算法更有效,这样我们就可以选择适合某个特定程序的算法。一个算法可能在一组数据上性能表现优越,但对于其他数据则性能表现糟糕。因此,了解如何选择适合特定场景的算法十分关键。
更为重要的是,通过研究算法,我们可以学习解决问题的通用技巧并将其应用于其他问题,即使我们了解的所有算法中并不存在任何一个适合当前场景的算法。这些技巧可以让我们以不同的方式看待新问题,这样我们就可以创建属于自己的特定算法来解决问题,同时满足意想不到的需求。
学习和研究算法除了可以帮助我们解决实际工作中遇到的问题外,还可以帮助我们找到称心如意的职位。许多大型科技公司,例如微软、谷歌、雅虎、IBM,都希望程序员能够理解算法,并掌握相关的问题求解技术。在面试时,一些公司还会重点考察求职者的算法编程和解决逻辑问题的能力。
当然,好的面试官并不期望应聘者能够解决所有的难题。事实上,当应聘者没能解决难题的时候,他们可能会更好地了解应聘者。好的面试官并不是想知道应聘者提供的答案,而是想看看应聘者如何处理一个不熟悉的问题。他们想看看应聘者在面试时是否会就此放弃并提出这个问题不适用于工作面试。或者,应聘者可以分析问题,并提出一个合理的推理路线,使用算法方法来解决问题。“天哪,我不知道。也许我会上网搜索”是一个糟糕的回答,而“似乎递归的分而治之方法可能奏效”是一个不错的回答。
本书是一本易于阅读的计算机算法入门教程,阐述了许多重要的经典算法,并指出不同算法所适用的场景。本书阐述了如何通过分析算法来理解算法的性能,重要的是,本书将教授用于帮助读者自行创建新算法的技能。
本书描述的一些实用算法包括:
数值算法,例如随机化、因子分解、素数问题、数值积分。
常见数据结构的操作方法,例如数组、链表、树、网络。
高级数据结构的用法,例如堆、平衡树、B树。
排序和查找。
网络算法,例如短路径、生成树、拓扑排序、流量计算。
本书阐述的通用问题求解技巧包括:
暴力算法或者穷举搜索算法
分而治之法
回溯法
递归法
分支定界法
贪婪算法和爬山算法
成本算法
限制范围
启发式算法
为了帮助读者掌握算法,本书提供了练习题。读者可以借助这些练习题来探索如何修改算法以适用于新的场景。练习也有助于读者掌握算法中的主要技术。
后,本书还提供了读者在面试中可能遇到的一些算法问题的处理技巧。算法技巧可以帮助读者解决众多面试难题。即使读者不能使用算法技巧来解决每一个难题,也至少证明读者熟悉解决某些问题的方法。
为什么要研究算法
研究算法主要有以下几个原因。首先,算法提供了有用的工具,我们可以使用这些工具来解决特定的问题,例如排序或者查找短路径。即使我们所采用的程序设计语言中包含直接采用某种算法来处理任务的工具,理解这些工具的工作原理也会有帮助。例如,理解数组和列表排序算法的工作原理,将有助于我们决定在程序中采用哪些适合的数据结构。
其次,算法也教授我们一些方法,以及如何将这些方法应用到其他具有相同数据结构的问题上。算法提供了一系列可以应用于其他问题的技术,如递归、分而治之、蒙特卡罗模拟、链表数据结构、网络遍历等,它们广泛适用于各种各样的问题。
再次,研究算法可以锻炼我们的大脑,这或许是重要的原因。就像力量训练可以帮助足球运动员或者棒球运动员锻炼肌肉一样,研究算法可以培养我们解决问题的能力。职业运动员在比赛中可能不需要仰卧举重,类似地,程序员可能不需要在项目中实现简单的排序算法。然而,无论是参加体育比赛还是编写程序,多加练习都有助于提高我们的能力。
后,研究算法具有很强的趣味性,可以使人获得满足感,有时还会令人喜出望外。当我将一堆数据存储到程序中,并渲染出一个真实的三维场景时,结果总是令我惊喜连连。即使经过几十年的研究,当一个特别复杂的算法产生了正确的结果时,我仍然能感受到胜利的喜悦。当所有的程序片段能够完美地结合起来解决一个特别具有挑战性的问题时,我感觉至少世界上有些事情是正确并且值得的。
算法的选择
本书选取的每一种算法都是基于以下一个或者多个原因:
该算法非常有用,经验丰富的程序员应该理解该算法的工作原理,以及如何在程序中正确使用该算法。
该算法展示了重要的算法编程技术,该技术可以应用于其他问题的求解过程。
该算法通常会被计算机科学专业的学生研究,因此该算法或其使用的技术可能会出现在技术面试中。
通过阅读本书并完成章末练习,读者将在算法技术方面打下良好的基础,并学会解决自己面临的程序设计问题。
读者对象
本书主要面向三类读者:专业程序员、正在为工作面试做准备的程序员、学习程序设计的学生。
专业程序员会发现,本书中描述的算法和技术有助于他们解决在工作中遇到的问题。即使读者遇到的问题不能使用本书中的算法直接解决,研究这些算法也会给读者提供全新的视角,从而帮助读者洞察问题,找到新的解决方案。
正在为工作面试做准备的程序员可以使用本书学习算法技巧。读者参加的面试中可能不会包括本书中描述的任何一个具体问题,但有可能包括十分相似的问题,因此读者可以使用在本书中学到的技巧来解决问题。即使不能完整地求解一个问题,但是只要读者能发现某个数据结构与算法中使用的数据结构相似,就可以提出类似的策略,这样也可以得到一定程度的加分。
基于前面阐述的原因,所有学习程序设计的学生都应该学习算法。本书阐述的基本都是简单、优雅和强大的算法,但这些算法并不都是十分常见的,所以读者自己并不一定会有什么偶然的机会去发现这些算法。递归法、分而治之法、分支定界法,以及如何使用众所周知的数据结构,对于任何对程序设计感兴趣的人而言都是不可或缺的知识。
注意:就我个人而言,我研究算法纯粹是为了享受!算法对我而言就等同于填字游戏或者数独游戏。我非常享受成功实现一个复杂的算法并观察其运行结果所带来的成就感!
在聚会上,算法也是不错的开场白:“对于标签设置和标签修正短路径算法,请问您有何高见呢?”
如何充分利用本书
读者可以通过阅读本书来了解一些新的算法和技术,但是要想真正掌握这些算法,则需要切实使用它们。读者需要使用某种程序设计语言来实现算法。同时,还需要对算法进行试验和修正,并在旧问题上尝试算法的新变体。关于如何使用本书中的算法,本书中的练习题和面试问题可以为读者提供一些新方法。
为了充分利用本书,强烈建议读者使用喜欢的程序设计语言实现尽可能多的算法,甚至采用多种程序设计语言实现算法,以了解不同程序设计语言对算法运行结果的影响。读者应该完成本书中的练习题,至少需要撰写解决练习题的纲要。理想的情况是使用某种程序设计语言实现这些算法。书中的每一道练习题都有其被选中的原因,在仔细研究这些问题之前,读者可能不会意识到这一点。这些练习题可能会引导读者走上正确之路,路上趣味无穷,但限于篇幅,本书无法展开阐述。
后,建议读者查阅一些互联网上的面试题,并尝试解决这些问题。在很多面试中,面试者并不需要真正给出解决方案,但是至少应该提出解题思路。当然,如果读者有足够的时间来给出解决方案,将会有更大的收获。
学习算法是一项需要实际动手操作的实践活动。读者应该勇于放下书本,使用编译器编写一些实际的代码!
本书网站
本书有两个网站:Wiley出版社的官网和作者本人的网站。这两个网站都包含本书的源代码。
本书Wiley出版社的官网地址为www.wiley.com/go/essentialalgorithms2e。读者也可以访问www.wiley.com,然后按书名或者书号(ISBN 978-1-119-57599-3)搜索本书并获取所有源代码。
C#程序采用帕斯卡命名法的大小写命名约定。例如,第9章练习题4中展示汉诺塔问题图形解决方案的程序名为GraphicalTowerOfHanoi。与之对应的Python程序则使用下划线小写命名规范,其对应的程序名为graphical_tower_of_hanoi.py。
本书作者的网站地址为http://www.CSharpHelper.com/algorithms2e.html。
本书的组织结构
以下简要介绍本书的内容。
第1章阐述了分析算法时必须理解的基础概念,讨论了算法和数据结构之间的区别,引入了大O符号,并描述了各种实际考虑比理论运行时间计算更重要的情形。
第2章阐述了处理数值的几种算法,这些算法用于随机化数值和数组、计算公约数和小公倍数、执行快速指数运算、判断一个数值是否是素数等。其中一些算法还涉及有关自适应数值积分算法和蒙特卡罗模拟的重要技术。
第3章阐述了链表数据结构,这些灵活的结构可以用来存储结构随时间增长、收缩和变化的列表。这些基本概念对于构建其他链接数据结构(例如树和网络)也很重要。
第4章阐述了特殊的数组算法和数据结构,例如三角矩阵和稀疏数组,它们可以节省程序时间和内存。
第5章阐述了让程序以先进先出(FIFO)或者后进先出(LIFO)的顺序存储和检索数据项的算法与数据结构。这些数据结构在其他算法中很有用,可以用于模拟真实场景,例如商店的结账队列。
第6章阐述了排序算法,展示了各种实用的算法技术。不同的排序算法适用于不同类型的数据,并且具有不同的理论运行时间,所以理解这些排序算法非常有好处。这些算法也是已知的具有精确理论性能边界的算法,因此特别值得研究。
第7章阐述了可以用来对排序列表进行搜索的算法,演示了二分查找算法和插值查找算法等重要技术。
第8章阐述了哈希表的数据结构。哈希表数据结构使用额外的内存,使程序能够非常快速地定位特定的数据项。哈希表充分展示了在许多项目中非常重要的时间和空间权衡策略。
第9章阐述递归算法,即自己调用自己的算法。有些问题具有自然递归属性,因此递归技术可以简化问题的求解。不幸的是,递归有时会导致问题,因此本章还描述了在必要时如何避免使用递归。
第10章阐述了高度递归的树数据结构,这些结构对于存储、操作和研究分层数据非常有用。树还可以在特殊场景中使用,例如求解算术表达式。
第11章阐述了随着时间的推移如何保持树的平衡性。通常,树结构会变得又高又细,这会破坏树算法的性能。平衡树通过确保树不会增长得太高和太细来解决这个问题。
第12章阐述试图解决可建模为一系列决策问题的算法。这些算法经常用于求解非常困难的问题,所以往往只给出近似解而非解。然而,这些算法具有很大的灵活性,因而可以被应用于各种各样的问题。
第13章阐述了基本网络算法,例如访问网络中的所有节点、检测网络中的回路、创建生成树和通过网络查找路径。
第14章阐述了高级网络算法,例如用于安排相关任务的拓扑排序、图着色、网络克隆、为员工分配工作等。
第15章阐述了操作字符串的算法,其中一些算法(例如搜索子字符串)内置于大多数程序设计语言中,不需要定制编程就可以直接使用。其他算法(例如括号匹配和查找字符串之间的差异)则需要一些额外的工作,同时也涉及一些有用的技术。
第16章阐述了如何对信息进行加密和解密,涵盖加密的基础知识,并描述了几种有趣的加密技术,例如维吉尼亚加密算法、分组加密算法和公开密钥加密算法。本章不涉及现代加密算法的所有细节,例如数据加密标准(DES)和高级加密标准(AES),因为这些加密算法更适合在专门讨论加密的书籍中阐述。
第17章阐述了计算机科学中重要的两类问题:P问题(可以在确定的多项式时间内解决的问题)和NP问题(可以在不确定的多项式时间内解决的问题)。本章描述了这两类计算复杂性问题,并给出了验证一个问题属于P问题还是NP问题的方法,以及计算机科学中深刻的问题—P问题是否等价于NP问题。
第18章阐述了在多个处理器上运行的算法。几乎所有的现代计算机都包含多个处理器,而且未来的计算机将包含更多的处理器,因此这些算法对于充分发挥计算机的潜能是不可或缺的。
第19章阐述了一些技巧和技术,可以用于攻克程序员面试过程中所遇到的难题。本章还包括一个网站列表,其中包含大量的面试题,读者可以用来练习。
附录包含各章末尾练习题的参考答案。
此外,为了帮助读者从书中获取更多的知识,并更好地理解书中的内容,本书设计了以下几种模块。
精彩的附加资料
包含额外的信息和主题。
警告:包含与上下文直接相关的信息,提醒读者必须牢记。
注意:包含与当前讨论内容相关的注解、技巧和提示等。
阅读本书的准备工作
为了阅读本书并理解算法,读者不需要任何特殊装备,只是可能需要眼镜和咖啡。然而,如果读者希望真正掌握本书的内容,则需要在实际的程序设计语言环境中实现尽可能多的算法。读者选择使用哪种程序设计语言并不重要。无论使用哪种程序设计语言实现算法细节,都将帮助读者更好地理解算法,以及掌握使用该特定语言所需的特定处理方法。
当然,如果读者打算使用某种程序设计语言实现算法,则需要一台计算机和相应的开发环境。
本书配套网站中包含一些示例代码,读者可以下载源代码,并使用Visual Studio 2017执行C#代码,或者使用Python 3.7执行Python代码。如果读者想运行这些程序,则需要在计算机上安装C# 2017或者Python 3.7,然后就可以正常运行这些程序了。
运行任何版本的Visual Studio都需要有一台速度较快的现代化计算机,并且配有大容量的硬盘和内存。例如,500GB的硬盘对我来说绰绰有余,况且硬盘的价格相对而言比较便宜,建议读者为自己的计算机购买并配置大一点的硬盘。
当然,读者可以在配置较低的系统上运行Visual Studio。但是,使用低配的计算机可能会使运行速度非常缓慢,其体验会令人沮丧。Visual Studio需要占用较多的内存,所以如果读者的计算机性能存在问题,可以考虑扩展内存容量。
使用免费的Visual Studio Community Edition可以运行本书提供的C#程序,因此不需要安装其他昂贵的Visual Studio版本。读者可以通过以下网址获取更多的信息并免费下载Visual Studio:https://visualstudio.microsoft.com/downloads。
读者可以通过以下网址下载Python:https://www.python.org/downloads/。Python 3.7或者更高版本应该能够运行本书的Python示例程序。除了在本地系统上安装Python外,还可以在云中运行。例如,Google Colaboratory(https://colab.research.google.com)是一个免费的环境,该云环境允许用户在任何Android设备上运行Python程序。
本书构建示例程序的系统环境是Windows 10,因此如果读者在其他平台(例如Linux、OS X或者云)上运行Python,可能会存在一些差异。遗憾的是,如果读者在其他平台环境中遇到问题,我就爱莫能助了,只能靠读者自己来解决问题。
算法的运行
精彩短评:
-
作者: 祖农 发布时间:2016-05-29 17:16:31
闲的。。。
-
作者: . 发布时间:2024-01-02 14:42:05
其实这种书还是最好还是国图印一下,把图的质量提高一些。
-
作者: 豆豆 发布时间:2012-12-10 23:15:35
亲爱的桂花姐姐~永远年轻!
-
作者: 小明玛丽 发布时间:2018-01-01 20:16:52
2018第一本书,一口气读完,剧情流畅,构思巧妙,看似平淡又深入人心
-
作者: 无明 发布时间:2023-03-05 17:03:23
主要是c#呀。。。
-
作者: 雨非 发布时间:2023-06-16 18:49:17
比较经典的基础算法!有配套的pyhon和C#代码。值得阅读。
深度书评:
-
Paris is a Movable Feast
作者:菠萝菠萝蜜 发布时间:2008-12-30 16:20:59
这本书对于大致表面介绍巴黎甚至整个法国的艺术形态是本不错的大众图书,而且以中国文人的眼光看法国的艺术不会过于肤浅和俗套,但冯骥才毕竟是个中国作家,只花了一个月的时间在巴黎旅游,是以观光的心态看巴黎的艺术品,对于法国社会、历史、艺术不能深入分析,给我们的是巴黎印象,就像一张张照片,是平面的,静止的,而不像电影,是立体的,流动的。
-
沉溺于曹先生笔下那一抹宁静温馨
作者:静以修…身 发布时间:2017-09-25 13:33:38
如若不是深夜困意袭上心头,眼神飘忽不定,神情恍恍惚惚,我定将这美文一口气阅读个彻底,愿沉浸在这宁静祥和的水乡世界不复醒:
这一方水乡与茫茫沧海为邻,船行如织;
有沧桑古树蔽天,长幼皆乘凉于此;
泥泞道路纵横交错,行人迈着轻缓的步履往来于耕田之间。
夜色朦胧却也隐藏不住皓月之明,万千星光点缀的天空犹如梦幻仙境。
春水初生、春林初盛、春风十里。逃之夭夭,灼灼其华。沉寂已久的绿生植物随着普洒大地的春意茁壮成长。
瞭望塔上那曲曲折折的小路散发诱人的荧荧之光;想于塔顶仰望皓月当空,池中星星点点的蓝色波光粼粼;与翘翘撒奔穿梭于金灿灿的麦田里,凝神倾听梅纹心中的雕塑艺术。
夏初:看麦芒迎风摇曳起起伏伏、烈日当空中闪烁耀眼金光。
顽童相约在与人齐高的麦地,舒展双臂,笑面戏微风,蹦跳结合着追逐嬉闹;青年壮力佝偻腰脊,手握一牙弯月镰刀,此起彼伏间收割麦子。殷实的农家妇女挎来一篮午饭、一罐清凉水,一手紧握白毛巾轻轻擦试丈夫脸上的滚滚汗珠。女知青们缓缓起身,反转手腕抵在细腰间,默默凝望着无边的麦地。
收麦,碾粒,翻土,平地,蓄水,插秧……炎炎的夏日就在这样的生活节奏中缓缓流逝,虽然疲惫不堪却无比充实,每个人都忙忙碌碌起来,彼此鼓励,相互竞争,共同在这一年之中丰收的时节收获辛勤劳作的累累硕果。
秋风瑟瑟徐过,凉意袭来,人心却依旧暖暖相映。
校园里朗朗读书声不绝于耳,缓缓的飘出窗外,飘向远方。广袤的田野上那一架风车随风舞动着几扇扇蓬,时而急促,时而缓慢,平静无风时就悄无声息的守候这片土地。
寒冬数九来的让人猝不及防。
呼的狂风大作,风起云涌,阴云蔽日,顿时雨雪交加,冷风啸啸。放眼望去,那片被万千颜色点缀的土地一夜间只剩下亮盈盈的白色,刺的人们睁不开眼。人们紧握双襟、重重叠叠的粗布围巾将脑壳围了个严严实实,恨不得把双眼也隐藏在里面,不让刺冷寒风有一点细缝透过,侵及皮肤。如若不是必要的出行,乡人便在那爿房屋里升起暖暖的火炉,双手倾斜着尽可能的贴近火焰边缘,时不时的揉搓着冻的略微僵硬的脸庞。
爆竹声中一岁除,随着“嘭”的一声打破这了分寂静,紧接着各地的鞭炮声连成一片响彻云端,冰雪在这浓浓的年意面前也黯然融化。最先冲出宅门束缚的顽童们竞相追逐,左一提礼品,右一提礼品,一路连蹦带跳,身体不由的摇摇摆摆,他们带着新年最真诚的祝福来到亲友长辈面前,嬉笑间吃着糖果。长辈们望着这些青春涌现,活力四射的少年,短短的感叹青春韶华易逝后,对这样的年轻一辈寄与无限的期盼,随之开怀大笑。
这一派不可名状的水乡世界多么的令我向往!
曹先生一直努力用自己的笔墨去塑造那种祥和柔美的乡村世界,给我们展现那种朴实无华的古典美。
虽然此书提名为《细米》可我却觉得主角一直是梅纹。视线怎么也离不开她,她温柔的清新脱俗的气质使得众人都围绕着她。
流年似水,悄然而逝。梅纹欣赏了细米心中的雕塑和绘画艺术;沉浸于瞭望塔上“昙花一现”的景色;体验到了躬耕生活的苦不堪言;于三尺讲台育桃李、用一支粉笔谱春秋;悲痛其父母突然离世;凭借一身韧劲和坚强重拾农具;最终回归校园将孩子们领向求知求学的理想道路上。梅纹从一个羞赧的娇小姑娘成长为了独立自强的梅老师。
文中细米台词少的屈指可数,经常阅读到别人问他去哪,他却毫不理会,谁叫他是那么害羞呢。越是不让他刻就越是要刻;吩咐他送香瓜给红藕,他便要撑的个肚皮圆滚…他那执扭的性子着实让我捧腹大笑
网站评分
-
书籍多样性:9分
-
书籍信息完全性:6分
-
网站更新速度:5分
-
使用便利性:8分
-
书籍清晰度:3分
-
书籍格式兼容性:4分
-
是否包含广告:5分
-
加载速度:9分
-
安全性:5分
-
稳定性:3分
-
搜索功能:5分
-
下载便捷性:7分
下载点评
- 字体合适(382+)
- 图文清晰(312+)
- 内容完整(621+)
- 强烈推荐(248+)
- 推荐购买(417+)
- 还行吧(275+)
下载评价
-
网友 孔***旋:
( 2024-11-14 09:10:16 )
很好。顶一个希望越来越好,一直支持。
-
网友 陈***秋:
( 2024-10-24 18:29:22 )
不错,图文清晰,无错版,可以入手。
-
网友 马***偲:
( 2024-11-12 11:01:42 )
好 很好 非常好 无比的好 史上最好的
-
网友 索***宸:
( 2024-11-05 14:55:09 )
书的质量很好。资源多
-
网友 益***琴:
( 2024-11-09 01:55:35 )
好书都要花钱,如果要学习,建议买实体书;如果只是娱乐,看看这个网站,对你来说,是很好的选择。
-
网友 蓬***之:
( 2024-10-25 10:44:04 )
好棒good
-
网友 冷***洁:
( 2024-11-12 03:10:50 )
不错,用着很方便
-
网友 通***蕊:
( 2024-11-06 10:47:32 )
五颗星、五颗星,大赞还觉得不错!~~
-
网友 谭***然:
( 2024-10-21 17:24:41 )
如果不要钱就好了
喜欢"算法基础:Python和C#语言实现(原书第2版)"的人也看了
-
源义经 电子书 mobi pdf txt word 2024 下载
-
类风湿关节炎门诊百问百答 电子书 mobi pdf txt word 2024 下载
-
涂装设备通用技术条件(第三部分:涂层) 电子书 mobi pdf txt word 2024 下载
-
全国监理工程师执业资格考试历年试题精析与冲刺试卷 电子书 mobi pdf txt word 2024 下载
-
思维导图法图像创意 电子书 mobi pdf txt word 2024 下载
-
Supply Chain Excellence 电子书 mobi pdf txt word 2024 下载
-
漫画图解中国式沟通智慧全3册 人际沟通图解社交礼仪回话技术职场酒桌面试谈判演讲社交为人处世高情商说话技术沟通智慧正版书籍 电子书 mobi pdf txt word 2024 下载
-
建筑工程资料管理——建设工程资料员读本 电子书 mobi pdf txt word 2024 下载
-
护佑心灵之窗--眼睛/健康中国跟我学护理全媒体科普丛书 电子书 mobi pdf txt word 2024 下载
-
星钻公主涂色书(红钻公主) 电子书 mobi pdf txt word 2024 下载
- 2022版初中一本涂书 化学 初中通用初中知识点考点基础知识大全状元笔记七八九年级中考提分辅导资料 电子书 mobi pdf txt word 2024 下载
- “小萝卜头”的故事(拼音版套装) 电子书 mobi pdf txt word 2024 下载
- 健康芬芳 花果茶 阿朵 编著 成都时代出版社【正版】 电子书 mobi pdf txt word 2024 下载
- 给孩子讲《民法典》 电子书 mobi pdf txt word 2024 下载
- 吃在北京指南名典 电子书 mobi pdf txt word 2024 下载
- 中层管理者工作压力与工作满意度关系研究——工作—家庭冲突的视角 电子书 mobi pdf txt word 2024 下载
- 2011 银行业从业资格考试 讲义 真题 预测三合一 个人贷款 电子书 mobi pdf txt word 2024 下载
- 全2册 十二生肖的故事二十四节气书彩图注音版儿童故事书绘本6-9岁读物一二三年级课外书小学生阅读幼儿园宝宝亲子早教睡前故事 电子书 mobi pdf txt word 2024 下载
- 超高压远距离输电 电子书 mobi pdf txt word 2024 下载
- 继承法原理 电子书 mobi pdf txt word 2024 下载
- 血管内皮细胞药理与临床 电子书 mobi pdf txt word 2024 下载
- 2016考研政治冲刺必背36计 电子书 mobi pdf txt word 2024 下载
- 黑格尔精神现象学句读(第10卷) 电子书 mobi pdf txt word 2024 下载
- 律师笔记——律政生涯法案写真 张洪 律师成长法律实务案例 走向大律师 电子书 mobi pdf txt word 2024 下载
- 供应链管理:重资产到轻资产的解决方案 电子书 mobi pdf txt word 2024 下载
- 2020春教材帮 初中 九年级下册 数学 RJ(人教版)初中同步--天星教育 电子书 mobi pdf txt word 2024 下载
- 9787030425805 电子书 mobi pdf txt word 2024 下载
- 水晶头骨之谜【正版】 电子书 mobi pdf txt word 2024 下载
- 全地面起重机伸缩臂架稳定性研究 电子书 mobi pdf txt word 2024 下载
- 晶体位错理论基础(第二卷)杨顺华 凝聚态物理学丛书 科学出版社 电子书 mobi pdf txt word 2024 下载
书籍真实打分
故事情节:4分
人物塑造:9分
主题深度:7分
文字风格:5分
语言运用:7分
文笔流畅:3分
思想传递:8分
知识深度:5分
知识广度:7分
实用性:7分
章节划分:4分
结构布局:7分
新颖与独特:5分
情感共鸣:6分
引人入胜:6分
现实相关:4分
沉浸感:3分
事实准确性:3分
文化贡献:8分