赞
踩
算法是与语言无关的,任何精通算法的程序员都应该能够将其转换为所选编程语言中的代码。 不幸的是,我所遇到的几个程序员谁是编程语言一样好真正 的Java或Python的像知道API和语言复杂的小细节,但有基本面算法与数据结构的知识很差。
只需要求他们实施任何流行的排序算法(如快速排序或合并排序) ,它们就会崩溃。 如果您希望他们知道更高级和复杂的算法,例如字符串算法 , 图形算法 , 树遍历或贪婪算法,请准备好进行面试,否则,您可能会感到意外。
有一次,我遇到了一个很好的核心Java高级开发人员职位候选人,他在Java, 多线程方面很出色,但是他的数据结构和算法技能实在不适合他的经验和才能。
当我问他时,为什么他不花时间在参加面试之前就精通算法和解决问题的能力? 他的借口是“那些算法仅用于面试,而从未真正用于实际编码中。 我在Java开发的6年中从未使用过它们 。”
他的观点是正确的,您无需使用Java实现哈希表,就此而言,您始终可以使用HashMap类或Dictionary在Python中使用,但他未能认识到在改进编程方面需要更长期的改进算法和数据结构技巧 。
算法是开发编程解决技能和编码意识的工具,这是将用户需求转换为代码行(也称为计算机程序)所必需的。
他们也无处不在,如果您使用Facebook,您是否想过他们如何轻松地找到您的朋友? 或Netflix如何推荐您要观看的电影? 这些只是机器学习算法的几个示例,正在将算法提高到另一个层次。
对于那些认为算法就是数据结构的人来说,另一个秘诀是给那些想要在Amazon , Google ,Facebook,Intel或Microsoft上工作的人使用 ,记住这是唯一永恒的技能,当然,除了UNIX , SQL和C之外。
编程语言来来去去,但是编程的核心,即算法和数据结构保持不变。
如果您知道哈希表的工作原理,则可以在任何编程语言中使用它们的实现,例如JDK中的HashMap , Python中的 Dictionary或C ++ boost库中的HashMap。
因此,如果您现在对算法的编程和实现很认真,因为算法和数据结构不是可选的,那么这里有一些学习算法的好书。
你们中有些人以前可能已经阅读过,但值得再次阅读。
1. Thomas H. Corman的算法简介
这是最流行的算法书籍之一,但请注意,它包含了大量理论。 本书的当前版本是第3版,我强烈建议每个程序员都应该将其放在书架上,但仅供参考和参考。
不可能一口气完成本书,有些人可能也很难阅读,但是不用担心,您可以将学习内容与在线课程相结合,例如“ 数据结构和算法:使用Java进行深度学习”以及这本书。
这就像两全其美,您可以通过在线课程快速学习基本的Algrotihsm,然后通过阅读本书进一步巩固该知识,这对您来说已经很有意义,因为您已经完成了一门课程。
我推荐这本书作为算法的第一本书的另一个原因是,由于它与语言无关,并且在此附有讲座,
2. Robert Sedgewick和Kevin Wayne的算法
长期以来,这一直是我首选的算法资源,但现在仍然如此,但是现在我比以前更少看到它了。 您将学到许多有关算法的背景知识,如今,即使本书的特定版本也适用于Java和C ++等不同的编程语言。
本书还提供了一些免费的Coursera在线课程, 算法第1部分和 算法第2部分 ,很好地补充了本书。 太好了 这也是我向Java程序员学习算法的最高推荐。
在Coursera上时,它还包含一些涵盖每个重要主题的数据结构和算法课程的最佳集合。 它们作为Coursera的“算法专业化”捆绑在一起。 如果您热衷于深入学习算法,那就是我建议您去的地方。
信不信由你,但是如果您已经知道一种编程语言,那么与其他语言相比,在该编程语言上看到一个算法示例也会减少学习难度。 您还可以在 这里 免费在线阅读本书的第四版
3. Steve S. Skiena的算法设计手册
这是另一本关于计算机算法的优秀书籍,它不仅涉及大量算法,还包含大量代码。 我特别喜欢这本书的地方是,他实际上给出了在实践中使用算法(或其变体)的示例。 它确实可以帮助您了解可以使用特定算法(或算法系列)的问题类别。
该代码使用C语言编写,但不是很深奥,很容易理解。 我也已经放学了一段时间,这帮助我在许多 图算法 。 我已经拥有这本书近十年了,但仍会不时看它
4. 面试算法
Adnan Aziz撰写的Algorithm for Interview是一本关于算法的必读书籍,其编写目的是牢记编程访谈 。
封面本身显示了如果您仔细看封面上的图像是用名人的缩略图绘制的话,这本书可能会多么有趣,并且本书解释了如何开发此类算法。 有趣,不是吗?
好吧,由于本书的方法和目标,我喜欢这本书,有时用不同的对象学习同一件事有助于更好地理解它。
5. 总结
简而言之,O'Reilly的算法是一本非常好的书,可以学习编程算法,尤其是对于Java程序员而言。 它描述算法时着重于实现它们, 而没有有关算法的经典书籍中使用的大量数学知识 。
所有算法都以模式形式表示,其动机是使用它们,提供高级概述的图片和伪代码以及工作代码(使用C , C ++ , Java和Ruby )。
他们还具有基准,以提供算法理论性能的证明。 简而言之,这是为程序员学习算法的最佳书籍之一。
6. Kleinberg&Tardos的算法设计
这实际上是继托马斯·科蒙(Thomas Cormon)的算法简介之后的第二本算法最好的书。 它并不是真正的算法介绍,更适合经验丰富的程序员。
对于熟悉基本算法的开发人员,更多的是关于算法设计的。 您应该先从《算法介绍》一书或Robert Sedgewick的《算法》开始,然后再继续读这本书。
顺便说一句,如果您愿意的话,还可以将您的学习与在线课程(如算法和数据结构 -Pluralsight的 第1部分和第2部分)结合起来。 在继续学习算法设计主题之前,这是一门很好的课程,可以熟悉基本的算法和数据结构。
7. 算法简介:一种创新方法
算法简介:一种创新方法Udi Manber撰写的另一本很棒的自学书籍,因为它充满了数百个问题和示例。
它旨在增强应试者的解决问题的能力和对算法设计原理的理解,从而帮助您发展问题解决和编码能力 。
8. 算法的设计与分析
这是计算机算法的又一佳作,应放在程序员的架子上。 阅读完Coursera的算法专业知识和入门书籍之一后,您可以阅读本书来学习算法的高级主题。
9. 数据结构和算法。 Aho,Ullman和Hopcroft
另一本关于算法和数据结构的入门书籍。 一本可爱而清晰的书,任何不喜欢在算法上大量使用数学的程序员都将喜欢这本书。
顺便说一句,如果您发现这本书很难读,这是我的一些读者抱怨的话,那么您也可以看看Aditya Bhargava的Grokking Algorithms ,这是针对初学者的算法中最简单,最有趣的书之一。
10. Python算法:掌握Python语言的基本算法
这本书是为Python程序员设计的。 Magnus Lie Hetland还是一本受欢迎的Python入门书籍《 Beginning Python》的作者 。
就像我告诉过的算法是语言独立的一样,学习python算法并不意味着您不能用Java或C ++实现它们,但是,如果您已经了解Python,那么这是一本学习计算机算法的好书。
这本书也非常关注 图算法 ,在解决实际问题中非常有用。
11. Groking算法
当我在博客上发布本文时,这本书并不是原始系列的一部分,但是在阅读本书之后,由于其简单性,我应该将其纳入列表。 这是我阅读的关于算法的最佳书籍之一,特别是从初学者的角度来看。
它使用了现代示例,例如Facebook如何存储用户名,以便在登录时可以轻松地搜索用户名。 这些示例在初学者中引起了更好的共鸣,并帮助他们理解了概念,例如为什么数组比搜索链接列表更好的选择。
Aditya的美术背景也使这本书成为视觉学习资源。 在本书中,您会发现很多有趣的要点图,它们可以帮助您更好,更快地学习概念。
这是一张不错的图,该书与清单中提到的其他算法书相称。
简而言之, 对于任何初学者来说 ,都是最好的算法书籍之一 。 它没有涵盖所有的数据结构和算法,但涵盖了所有内容,很好地解释了它们。
这就是每个程序员都应该阅读的10本算法书 。 我同意算法是一个复杂的主题,而且一次阅读也不容易理解它们,在这种情况下,我建议阅读同一本书两次。
另外,仅阅读还不够,请尝试以您喜欢的编程语言来实现它们。 编写自己的ArrayList,HashMap或基于树的Map实现不会受到任何伤害。
学习算法的效果不是立即可见的,但是随着时间的推移,您会发现思维,解决方案构建和代码质量有了细微的改进。
顺便说一句,如果您对在线算法课程感兴趣,建议您查看“ 数据结构和算法:使用Java进行深度学习”。 在乌迪米。 这不是免费的课程,但是您可以以每10天不到$ 15的价格购买Udemy的数次闪购,每隔几天发生一次
您可能喜欢的其他数据结构和算法文章
感谢您阅读本文,如果您喜欢这份书籍清单,那么您也将喜欢我收集的每本程序员应该读的10本书 ,这是有关编程,编码,软件开发技术以及最佳实践,计算机,编程的书籍清单。过去50年中一些出色的程序员/编码人员/开发人员的专业知识和经验。
最后,有两种类型的程序员,一种了解算法,另一种不了解。
PS —如果您更喜欢在线课程而不是书籍,或者您想同时阅读书籍和在线课程,那么您也可以查看我的5大在线课程以学习数据结构和算法 。 它包括有关Java,Python和JavaScript的课程,以方便学习。
From: https://hackernoon.com/10-data-structure-algorithms-books-every-programmer-should-read-d50487313127
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。