it-swarm.cn

如何学习算法和数据结构?

这是 我的上一个问题 的继续,我在这里问是否有必要学习算法和数据结构。我觉得是的。

现在,我在这样的环境中工作:我永远不会有机会通过实验或实践或任何作业来学习它。什么是正确的方法,例如正确的书籍,正确的问题,正确的资源,我可以花六个月或一年或两年的时间来学习算法和数据结构?并且以一种可以将问题与数据结构和算法相关联的方式来塑造我的思想。

38
sushil bharwani

阅读。

不,真的,读。

阅读可能找到的有关算法和设计的所有内容。那里有很多很棒的书。 Sedgewick算法书籍很好。 Skiena的《算法设计手册》也不错。这些书和《神话人月》一道,跟随我一起去做每一份工作的每个书架。

然后询问。

与您尊敬的人交谈。问他们有哪些决策点,以及为什么要做出决定。好人总是可以告诉你“我选择X是因为在这些方面它要比A,B好。我本来可以选择C的,但由于这个原因,我觉得这是一个更好的选择”。

下一步,做

建立东西。构建您永远不会使用的东西。构建您永远不需要的东西。去写一个解决数独难题的程序。现在再去做一次。然后再次。用5种完全不同的方式构建它。构建一个生成Sudoku拼图并将其输入求解器的程序。查找哪个求解器最快。然后...

找出原因。

“什么”几乎从来都不重要。我的意思是,是的,完成手头的项目至关重要,但是最后,如果您知道“什么”而又不知道“为什么”,那么您可能一开始就不会做。您的简历上有一个要点。去拿一个饼干,祝贺自己。 “为什么”比“什么”重要得多。

从记录来看,数独就是一个例子。我花了大量的空闲时间来进行练习,并在Kongregate上找到了大量的逻辑难题,并且在此过程中学到了很多东西。

http://www.Amazon.com/Bundle-Algorithms-Parts-1-5-Fundamentals/dp/020172684X/(http://www.Amazon.com/Algorithm-Design -Manual-Steven-Skiena/dp/1848000693 /http://www.Amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/

40
Hounshell

演算法

我十二岁的时候在小组课上上了魔术课。魔术师的名字叫乔·卡罗塔。他曾经骗过我一次,我脱口而出:“你是怎么做到的?”从那以后,他说了那句话,一直困扰着我。

乔的回应是:“迈克尔,如果您真的想知道该技巧是如何完成的,则必须弄清楚自己将如何做。”

好吧,这当然不是我想听的,但这确实使我专注于解决问题。从我的角度来看,这是解决问题的方法。如果我第一次尝试解决问题时采取了17个步骤,而且真的很笨拙,那么好消息是我解决了问题。

然后,通过查看我开发的解决方案并寻找改进该解决方案的方法,我将学习如何精简最终结果。后来,在我的计算机编程生涯中,我发现此过程称为“逐步优化”。我认为今天他们称之为重构。

它起作用了,但是现在仍然起作用。

10
Michael Riley - AKA Gunny

在这里,以下链接将您重定向到最成功的DS和算法类)之一,即MIT我一直关注。

http://academicearth.org/courses/introduction-to-algorithms

希望您会喜欢这个视频系列。祝好运 !!!

9
Tharindu Rusira

查看您是否可以参加在线课程或获得辅导。失败的话, 这会在谷歌的快速搜索中弹出。 去年春天,我刚刚上了一堂课(有史以来,我第一次从EE转到软件),当时不太难拾起如果您了解指针很好。

2
Stephen Furlani

如果您不能上此课程,则建议您参阅《算法设计手册》。有一个免费的PDF 这里 ,但是如果您打算专业地进行编程,那本书是值得的。

2
Jason Baker

开始着手解决经典问题,例如 (在线领域 ),该站点可能看起来并不那么花哨,但是,这些都是经典的编程问题,需要当今使用的许多重要数据结构和算法。

解决方案可以采用多种编程语言提交,从C/C++到JavaScript,LISP,Smalltalk,汇编器以及40多种语言。因此,您可以完全专注于使用任何您喜欢的编程语言来解决问题。

1
Ernelli

[〜#〜] clrs [〜#〜]

到目前为止,这是我最喜欢的资源。我在大学计算机科学算法课程中使用了它,并最终在4年后购买了该书以自行阅读以准备攻读硕士学位。 Comp Sci课程。无论如何,这都不容易读懂,但是如果您努力理解所提供的一些数学/证明,然后以自己喜欢的语言实现伪代码,那是值得的。其他人提到的《算法设计手册》也是学习问题识别的好资源,但我发现CLRS对于纯净细节更胜一筹。

1
Kurtis

尝试报读数据结构和算法的本科课程,与其他概念一起学习始终是一件好事。

1
Martijn Verburg

您总是可以尝试这样的事情: http://codekata.pragprog.com/

通过思考而不是阅读,我总是学得更好。但是,您应该具有可用的文档/阅读材料来寻找答案。

0
RobotHumans

买这个 book ,借这个或偷这个!休息将:)

Rivest和Cormen的算法简介。一旦您对介绍中对Mergesort的解释有所了解,最初将很难遵循。一切向您展现美丽。

另外,如果您解决书中给出的问题,您会变得更好。即使从研究生毕业,我也从来没有想过要分开这本书。就是那样.

0
Venki