开发人员应该完全了解哪些算法和数据结构?[关闭]


24

我想成为一名成功的企业Java开发人员。我应该精通哪些算法和数据结构?您会推荐什么书给我?

要成为一名成功的Java开发人员,我是否需要了解所有高级算法,例如CLRS中给出的算法?

您可以按优先级从高到低的顺序列出我应该学习的主题吗?

我必须知道:

  • 正在搜寻?
  • 排序?
  • 图/树?

等等?


1
@jonsca:会员营销啊?;)
Chankey Pathak 2011年

不,嗯,SE这样改变了链接,但我发现并不是每个人都知道这些缩写:)
jonsca 2011年

Answers:


17

Cormen的算法概论是一些基础理论基础的好书。

就是说,大多数算法和数据结构已经由其他人进行了编码,测试和优化,因此没有理由再次重新实现它们。要成为一名成功的Java开发人员,您需要完全了解The Collections Framework


3
但是,您确实需要知道算法所涉及的成本:例如,广度优先搜索将找到最短的路径,同时会占用大量空间。
Frank Shearar 2010年

同意,尽管仅仅获得大O表示法的精神还有很长的路要走。
Joonas Pulakka 2010年

8

如果您想成为任何类型的程序员,则需要详细了解所有基本数据结构(堆栈,队列,数组,链表,哈希表,树等)。如果您发现自己处于一个没有任何收集框架来为您完成工作的世界中,那么至少可以为您自己实现其中的任何一个。

关于算法,在我看来,它们是工作的更多工具,而您的数据结构是基本的构建基块。我认为了解如何实现您可能遇到的每种算法的细节并不重要。您需要做的就是评估算法在给定目的下的运行情况。有时,深度优先搜索与广度优先搜索之间的差异或对数据执行的排序类型可能会对代码的性能或总体成功产生很大的影响,因此知道如何判断这一点非常重要。


0

除了其他答案,我想补充一点,对算法的研究不仅是为了了解众所周知的技术(仍然很重要),而且还能够了解设计过程中的思维过程。解决您在现实生活中遇到的问题的方法,不一定是众所周知的。


0

我现在正在学习Java。

我想成为一名成功的企业开发人员。那么我应该精通哪些算法和数据结构?你会推荐我什么书?

要成为一名成功的Java开发人员,我是否需要了解所有高级算法,例如CLRS中给出的算法?

您能给我推荐一些我应该按优先级从高到低排序的主题的列表吗?

告诉我一些我必须知道的主题的名称。像搜索,排序,图,树等?

您渴望扩展和提高您的编程技能,这是很好的。但是,重要的是不要将算法视为要记忆的事物的目录。要成为一名优秀的开发人员(使用Java或其他方法),您需要了解的是理解算法分析。

通过学习一些选定的数据结构和算法,学习分析它们在时间和空间(内存)方面的性能,可以了解到这一点。搜索,排序,图形,树,堆,堆栈以及所有这些好东西。这还应遵循一些计算理论和离散数学的基础知识(即使在Java领域中,我们也从未直接使用这两个主题,因为它们的好处是间接的。)

将学习算法分析(不同于算法和数据结构的“记忆”)与学习编程语言(在您的情况下为Java)分开。

乔治·海涅曼(George T. Heineman),加里·波利斯(Gary Pollice)和斯坦利·塞科(Stanley Selkow)的“简明算法”是一个好的开始。Sanjoy Dasgupta,Christos Papadimitriou和Umesh Vazirani撰写的“算法”是另一本很好的本科教材。

最好的想法是在学习本科,3000级算法课程之前,先学习9-12学分的编程课程。除非我提到的两本书是自学的,否则可能是一个不错的选择(不过,自学可能并不适合每个人。)

祝好运!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.