批量上传,套装书可能不全,下单前咨询在线客服! 正版书 !!!
¥ 53.54 4.9折 ¥ 109 全新
库存3件
作者李峰
出版社电子工业出版社
ISBN9787121422416
出版时间2022-01
装帧平装
开本其他
定价109元
货号29361085
上书时间2024-10-20
随着计算机编程人员的不断增多,公司面试要求也越来越高,而算法无疑是面试官喜欢考察的内容之一,学好算法是面试者或程序员应具备的基本能力;在面试的过程中,面试官通常也会考查面试者的编程能力。现在流行的编程语言无疑是Python,本书不仅帮助初学者掌握算法,而且通过Python语言进行实战演练,让读者在理解算法的同时掌握Python,提升读者的综合竞争力。
我也是从学生时代一路走来的,深知算法对编程者的重要性,也知道对于一名普通的初学者来说,算法入门是多么不容易。算法并不神秘,算法就在我们身边,我们的吃喝住行样样离不开算法,我们吃的饭菜的烹饪顺序,喝的饮料的配方,房子里使用的扫地机器人的扫地路径,开车规划的短路线等,都充斥着大量美妙的算法。算法种类繁多,给人“乱花渐欲迷人眼”的感觉,让很多初学者望而却步,其实算法本质上是有规律可循的,掌握这些规律,就会有一种“初极狭,才通人,复行数十步,豁然开朗”的感觉。我愿意把自己对算法的理解和掌握的规律分享给读者,希望读者通过本书能对算法也有一种“豁然开朗”的感觉,真正体会到算法的美妙。
本书描述的都是算法中的一些经典问题、经典解法,读者在学习的时候往往会惊叹这些算法设计得巧妙,会思考这些算法是怎么被想到的。其实这些算法都经过了严格的数学证明,但是证明过程对于初学者来说很难理解,如果深挖下去,不但会花费很多时间,而且还会把自己绕进去。本书从实际出发,省略掉令人乏味的数学证明,通过形象生动的图解演示整个算法过程,目的是让读者形象地了解算法的整个运行过程,加深记忆。再遇到类似问题,读者可以像求解数学题一样,触类旁通,用已经掌握和学习了的经典算法解决遇到的新问题。求解问题流程如下图所示。
求解问题流程
本书不仅描述算法的流程,而且还配以大量的Python实战演练,因为算法的设计和实现不应该被分割。有些面试者在面试的时候,可以将算法的原理讲得头头是道,但是一旦面试官让其将算法通过程序实现出来,就会出现无法下笔或者实现出来的程序和自己设计的算法不一致的情况。这主要是因为算法从设计到实现还需要一个大量训练的过程,如果只是训练算法的设计而忽略了算法的实现,那么对于程序员来说就相当于跛着脚走路,所以我建议初学者在理解算法以后要进行大量的实际编程,在编程中领悟算法。本书基于以上观点,在介绍完算法以后,会配以可执行的程序,通过程序的实际结果来验证算法的正确与否,让读者在理解算法的同时进行实战训练,加深对算法的理解,填补算法设计和算法实现之间的沟壑。
本书主要讲解了7种常用的算法,分别是贪心算法、分而治之算法、树算法、图算法、动态规划、回溯法和分支限界法。
本书的目的是帮助初学者掌握编程中的基础算法,并通过Python语言进行实战演练,通过即学即练的方式掌握这些经典算法,让读者真正体会算法的美妙,成为读者学习算法的领路人。本书分为8章,涵盖的主要内容有算法之美,通过生活中的例子学习算法;贪心算法,选择当前的方案;分而治之算法,将复杂的问题拆分为简单的问题;树算法,围绕树结构的各种算法;图算法,围绕图结构的各种算法;动态规划,一种求解问题的强大工具;回溯法,深度优先遍历问题的解空间;分支限界法,广度优先遍历问题的解空间。
李峰,本硕均就读于西北工业大学计算机学院,曾在韩国成均馆大学交流半年,CSDN博客专家,现就职于腾讯科技有限公司任高级工程师,工作期间,技术成果丰硕,多次获奖。
喜欢电影的人可能看过《加勒比海盗》这部电影,在电影中每个海盗都想获得无尽的财宝。我们假设一种场景,一伙海盗在岛上发现了一个沙矿,这座沙矿可以生产三种沙子:沙子A、沙子B和沙子C。三种沙子有不同的质量和价值,沙子B质量,价值也,沙子C质量小,价值也,沙子A的价值和质量在沙子B和沙子C之间。海盗的小船有承重限制,所有沙子的质量已经超过小船承重的极限,超过承重极限船就会浮不起来,所以不可能把所有沙子都装到船上。如果你是这伙海盗的首领,你想在不沉船的情况下,获得总价值的沙子,你会怎么装载呢?
你是这伙海盗的首领,带着大家辛辛苦苦、冒着生命的危险来到这座小岛上,找到了可以带来财富的沙子。但是你也不知道怎么用小船装沙子才能赚更多的钱,这时候你在内部开了一个会议集思广益,看看手下人有没有好的想法。
海盗甲:老大,我们首先应该选择质量小的沙子C装到船上,装完沙子C以后,再把质量次小的沙子A装到船上,后用沙子B装满小船,这样岛上只剩下沙子B啦,沙子A和沙子C都被我们装完了,赚的钱应该多。
海盗乙个站起来反对:老大,我觉得海盗甲说的不对,我们应该先装价值的沙子B,装完沙子B以后,再装价值次高的沙子A,直到小船装满,这样岛上只剩下价值的沙子C,价值的沙子A和沙子B都被我们装上船了,赚的钱肯定比海盗甲的方案多。
海盗丙推了推眼镜,轻轻说道:老大,他俩说的都不对,海盗甲只考虑了质量,没有考虑沙子的价值,海盗乙只考虑了沙子的价值,没有考虑沙子的质量,我认为选择沙子应该既考虑质量又考虑价值,我们应该首先选择单位价值的沙子,然后选择单位价值次高的沙子,这样赚的钱才会是多的。
听了三个小弟的建议,你也不知道谁的建议才是正确的,看着手下人都在等着你决定怎么搬沙子,你才发现做海盗还是要有知识、懂算法才行。海盗丙看出了你的心思,又推了推眼镜说道:老大,不要担心,你先听听我的分析,再来做决定。
海盗丙推了推眼镜继续说道:在这座小岛上,一共就有三种沙子,分别是沙子A、沙子B和沙子C,其质量分别是20、30、10,对应的价值分别为60、120、50,沙子B虽然价值,但是质量也,沙子C质量小,价值也。我们的小船可以装沙子的质量是50。因为沙子的种类也不是很多,我们直接分析就好了。下面我们按照海盗甲的思路来进行装载。
(1)因为小船的承重是50,首先我们把质量小的沙子C全部装到船上,沙子C的全部质量是10,装完沙子C以后,小船还能装载质量为40的沙子;
(2)然后把质量次小的沙子A全部装到船上,沙子A的全部质量是20,装完沙子A以后,小船还能承重20;
(3)后用沙子B装满小船,沙子B的总质量是30,装满小船以后,小岛上还剩下质量为10的沙子B,海盗甲的装载策略如图2.27所示。
图2.27 海盗甲的装载策略
通过海盗甲的方案,我们装在船上的沙子价值多少呢?船上沙子C的价值为50,沙子A的价值为60,沙子B总质量是30,船上只装了20,所以船上沙子B的价值是80。因此,按照海盗甲的方案,船上沙子的总价值是190。接下来我们按照海盗乙的策略来进行装载。
(1)因为小船的承重是50,首先我们把价值的沙子B全部装到船上,沙子B的全部质量是30,装完沙子B以后,小船还能装载质量为20的沙子;
(2)然后把价值次高的沙子A全部装到船上,沙子A的全部质量是20,装完沙子A以后,小船也装满了;
(3)因为小船装满了,价值的沙子C一丁点也没有装上船,海盗乙的装载策略如图2.28所示。
图2.28 海盗乙的装载策略
通过海盗乙的方案,我们装在船上的沙子价值多少呢?沙子B全部装上了船,所以沙子B总的价值为120,沙子A也全部装上了船,所以沙子A总的价值为60。因此,按照海盗乙的方案,船上沙子的总价值是180,比海盗甲的方案还少了10。后我们按照海盗丙的思路来进行装载。海盗丙的装载思路是按照单位价值的沙子进行依次装载,沙子A的总质量是20,总价值是60,所以单位价值是3;沙子B的总质量是30,总价值是120,所以单位价值是4;沙子C的总质量是10,总价值是50,所以单位价值是5。按照单位价值进行贪心,首先装载沙子C,然后装载沙子B,后装载沙子A。
(1)因为小船的承重是50,首先我们把单位价值的沙子C全部装到船上,沙子C的全部质量是10,装完沙子C以后,小船还能装载质量为40的沙子;
(2)然后把单位价值次高的沙子B全部装到船上,沙子B的全部质量是30,装完沙子B以后,小船还能装载质量为10的沙子;
(3)后用沙子A装满小船,沙子A的总质量是20,装完小船以后,小岛上还剩下质量为10的沙子A,海盗丙的装载策略如图2.29所示。
图2.29 海盗丙的装载策略
通过海盗丙的方案,我们装在船上的沙子价值多少呢?沙子C全部装上了船,所以沙子C总的价值为50,沙子B也全部装上了船,所以沙子B总的价值为120,沙子A总质量是20,船上只装了10,所以船上沙子A的价值是30。因此,按照海盗丙的方案,船上沙子的总价值是200,价值比海盗甲和海盗乙的方案都高一些。
海盗丙骄傲地对老大说:老大,三个方案都分析完了,海盗甲的方案价值是190,海盗乙的方案价值是180,我的方案价值是200,选哪个方案一目了然了吧!
听了海盗丙的分析,你满意地点点头,决定就按照海盗丙的方案来进行装船
从零开始学算法(基于Python)
全新保定
¥ 71.94
从零开始学算法(基于Python)
全新广州
¥ 63.31
从零开始学算法(基于Python)
全新广州
¥ 65.31
从零开始学算法(基于Python)
全新广州
¥ 63.31
从零开始学算法(基于Python)
全新广州
¥ 63.31
从零开始学算法(基于Python)
全新广州
¥ 65.31
从零开始学算法(基于Python)
全新廊坊
¥ 43.60
从零开始学算法(基于Python)
全新廊坊
¥ 43.60
从零开始学算法(基于Python)(
全新北京
¥ 65.48
从零开始学算法(基于Python)
全新南昌
¥ 52.04
— 没有更多了 —
以下为对购买帮助不大的评价