《算法学习指南》[92M]百度网盘|pdf下载|亲测有效
《算法学习指南》[92M]百度网盘|pdf下载|亲测有效

算法学习指南 pdf下载

出版社 人民邮电出版社京东自营官方旗舰店
出版年 2022-10
页数 390页
装帧 精装
评分 9.1(豆瓣)
8.99¥ 10.99¥

内容简介

本篇主要提供算法学习指南电子书的pdf版本下载,本电子书下载方式为百度网盘方式,点击以上按钮下单完成后即会通过邮件和网页的方式发货,有问题请联系邮箱ebook666@outlook.com

产品特色


编辑推荐

(1)对关键算法、数据结构与数据类型进行详实的描述,有效提高用各种语言编写代码的质量。
(2)在解释算法的工作原理时,像讲故事一样娓娓道来,并提供大量的实验数据,对不同算法的运行时间性能进行比较。
(3)所提供的算法实现,采用的是实际代码而不是伪代码,读者可以直接运行这些代码,切身感受算法的行为和性能。
(4)书中描述算法的Python 代码并没有使用任何复杂的语法结构,因此对Python 稍有了解甚至不了解的读者(当然至少要熟悉一种其他编程语言),在阅读本书的代码时应该也不会感到困难。

内容简介

在编写代码时,每位软件专业人士都需要对算法有充分的理解。在这本实用性极强的著作中,作者对一些关键的算法进行了详实的描述,可以有效地提高用各种语言编写代码的质量。软件开发人员、测试人员和维护人员可以在本书中学会如何使用算法,以创造性的方式解决计算性问题。

本书各章内容前后衔接紧密,环环相扣,用醒目的图表有条不紊地展示了一些核心概念,并对书中介绍的每种算法的性能进行了分析。在每一章的最后,读者需要应用在该章所学习的知识,解决一个新颖的具有挑战性的问题,就像在参加技术面试。

在本书中,读者将会:
学习计算机科学和软件工程中非常重要且基本的算法;
学习高效解决问题的常用策略,包括分治法、动态规划等;
使用大O表示法对代码进行分析,评估它的时间复杂度;
在算法中使用现有的Python程序库和数据结构解决问题;
理解重要算法的主要步骤。

作者简介

乔治.海涅曼(George T. Heineman)是一位计算机科学教授,在软件工程和算法领域有超过20 年的教学经验。他是《算法技术手册》(第2版)的作者,也是很多O’Reily视频培训课程的讲师,其中包括“Exploring Algorithms in Python”和“Working with Algorithms in Python”。他终身爱好逻辑题和数学智力题,他是Sujiken智力游戏(数独的一种变型)和Trexagon 智力游戏的发明者。

精彩书评

【推荐序——Zvi Galil,佐治亚理工学院计算机系荣誉主任,Frederick G. Storey 计算项目负责人】

算法是计算机科学的核心,对于信息时代的发展是至关重要的。它们驱动着搜索引擎,对每天数以十亿计的互联网搜索请求做出响应,并在人们通过互联网进行通信时提供隐私保护。从定制广告到在线价格查询的许多领域中,算法在消费者面前不断展现它们的身影。新媒体中涌现了许多对什么是算法以及算法可以做什么的讨论。

STEM(科学、技术、工程、数学)的快速发展推动了全球经济的可持续增长和革新的新浪潮。但是,还没有足够多的计算机科学家去发现医学、工程学甚至政府部门所需要的算法并对它们进行应用。我们需要让更多的人知道如何把算法应用于自己的领域和解决学科内的各种问题。

读者并不需要完成计算机科学专业4 年的学习才能开始学习算法。遗憾的是,关于算法的大多数在线材料和教科书都是为大学毕业生而设计的,重点介绍数学证明和计算机科学的概念。算法教科书很容易让人心怀畏惧,因为它们讨论了众多不同的算法,其中包含无数的变型和高度特定的案例。读者往往还没有读完这类教科书的第1 章就打起了退堂鼓。

使用这类教科书类似于通过阅读一本完整的字典来提高英语拼写能力。如果有一本专门的参考书,总结了容易拼错的100 个英语单词,并解释了这些单词的组成规则(或特例),显然能够带来更大的帮助。类似地,要在自己的工作中使用算法的不同背景和经验的人们需要这样一本更重视他们需求的参考书。

本书对一些算法进行了通俗易懂的介绍,使读者可以提高自己的代码运行效率。本书所有的算法是用Python 描述的,它是特别流行的也是对用户特别友好的编程语言之一,其运用的范围涵盖了数据科学、生物信息和工程学等。本书对每个算法进行了详细的解释,并用大量的插图帮助读者理解算法本质。本书的代码是开源的,可以免费从所提供的代码库中获取。

本书将会讲述计算机科学中的基本算法和数据结构,帮助读者编写精华代码。如果读者正在寻找一份需要编程技巧的技术型工作,本书有可能帮助其在面试中表现优异。我希望本书能够激发读者进一步学习算法的兴趣。

目录

序 1
前言 3
第 1 章 解决问题 9
1.1 什么是算法? 9
1.2 在一个任意的列表中查找最大值 12
1.3 对关键操作进行计数 14
1.4 可以预测算法性能的模型 14
1.5 在一个随机列表中查找两个最大值 19
1.6 锦标赛算法 22
1.7 时间复杂度和空间复杂度 28
1.8 总结 29
1.9 挑战练习 30

第 2 章 分析算法 33
2.1 使用实验模型预测性能 34
2.2 乘法可以更快 36
2.3 性能分类 38
2.4 渐进性分析 39
2.5 对所有操作进行计数 42
2.6 对所有字节进行计数 43
2.7 关上一扇门,打开另一扇门 44
2.8 二分数组搜索 45
2.9 几乎和π 一样简单 46
2.10 一石二鸟 48
2.11 综述 52
2.12 曲线拟合与上下界的比较 53
2.13 总结 54
2.14 挑战练习 55

第3 章 更好的散列,更适意的人生 58
3.1 值与键相关联 58
3.2 散列函数和散列码 63
3.3 (key,value)对的可散列结构 64
3.4 使用线性探查法检测和解决冲突 65
3.5 用链表实现分离链表 70
3.6 从链表中删除一个数据项 73
3.7 评估 75
3.8 增长的散列表 78
3.9 分析动态散列表的性能 83
3.10 完美散列 84
3.11 对(key,value)对进行迭代 87
3.12 总结 88
3.13 挑战练习 89

第4 章 堆起来! 93
4.1 最大二叉堆 99
4.2 插入(value,priority)对 101
4.3 删除具有最高优先级的值 104
4.4 用数组表示二叉堆 106
4.5 实现上浮和下沉 107
4.6 总结 111
4.7 挑战练习 112

第5 章 深入浅出论排序! 115
5.1 交换排序 116
5.2 选择排序 117
5.3 平方时间级排序算法的剖析 119
5.4 分析插入排序和选择排序的性能 121
5.5 递归和分治法 122
5.6 归并排序 127
5.7 快速排序 131
5.8 堆排序 134
5.9 O(NlogN)等级算法的性能比较 136
5.10 Tim 排序 137
5.11 总结 140
5.12 挑战练习 140

第6 章 二叉树:掌上世界的无限可能 142
6.1 基础知识 142
6.2 二叉查找树 147
6.3 在二叉查找树中搜索值 152
6.4 从二叉查找树删除值 153
6.5 遍历二叉查找树 157
6.6 分析二叉查找树的性能 159
6.7 平衡二叉树 161
6.8 分析平衡二叉树的性能 168
6.9 使用二叉树作为(key,value)符号表 168
6.10 使用二叉树作为优先队列 169
6.11 总结 172
6.12 挑战练习 173

第7 章 图:连得上的才是好的! 176
7.1 图高效地存储了实用的信息 176
7.2 使用深度优先搜索解决迷宫问题 181
7.3 广度优先搜索提供了一种不同的搜索算法 186
7.4 有向图 193
7.5 具有边权重的图 200
7.6 迪杰斯特拉算法 202
7.7 全顶点对的最短路径 212
7.8 弗洛伊德-沃歇尔算法 215
7.9 总结 219
7.10 挑战练习 220

第8 章 综述 . 223
8.1 Python 的内置数据类型 225
8.2 在Python 中实现堆栈 227
8.3 在Python 中实现队列 228
8.4 堆和优先队列的实现 229
8.5 进一步的探索 229