学习算法和数据结构基础知识

时间:2010-02-20 08:16:48

标签: algorithm data-structures

你能推荐我一本书或(更好!)一个有很多关于数据结构的问题练习的网站?

我已经回答了Euler项目的问题,但这些问题都是有趣的,但不常见的算法。我几乎没用过一棵简单的树。也许有一个网站有类似的练习:嘿,你需要计算一下:....用树做它。现在用拉链做吧。上传你的C(Haskell,Lisp,甚至是Pascal或Fortress go)解决方案。哦,你的解决方案太慢了!

当你尝试学习非常常见的,基本的东西时,自我教育是非常困难的。如何在不参加课程或其他任何事情的情况下帮助自己?

10 个答案:

答案 0 :(得分:24)

Introduction to Algorithms, Third Edition, by Cormen, Leiserson, Rivest and Stein是算法和数据结构的一个很好的介绍。每章末尾都有很多练习。大多数都很简单,但有一些更难。

答案 1 :(得分:20)

国家技术强化学习计划(NPTel)NPTEL Youtube channel的视频讲座。这些由印度的七个IIT和IISc班加罗尔实施,由印度政府MHRD资助。

更多engineering lectures

答案 2 :(得分:15)

非常棒的免费电子书 - «Data Structures and Algorithms»。包含伪代码和显式形式的通用算法的实现。此外,非常好,可理解的方案和图形。

甚至Jon Skeet mentioned that在他的博客中。 : - )

此外,这不到100页的书(你可能知道很多程序员don't read some books)。

答案 3 :(得分:10)

是重复的。

我推荐麻省理工学院开放课件网站here。 “电气工程与计算机科学”部分有一些算法课程。

6.006 - Introduction to Algorithms
6.046J - Introduction to Algorithms (SMA 5503)

我推荐后者。材料在网站上。最好从YouTube here访问这些视频 - 搜索“mit算法”。 textbook得到了很好的尊重。第三版刚出来,第二版与课程相匹配。第一版也作为Dr Dobbs Algorithms and Data Structures CD ROM的一部分加入。

Niklaus Wirth有一本算法和数据结构书可从他的personal site下载。我有Modula 2打印版本,虽然它不是Cormen(或aho hopcroft ullman等)的替代品,但它是一本好书。

答案 4 :(得分:4)

除了前面提到的Cormen,Leiserson和Rivest之外,Peter Brass还有一本非常新的书,"Advanced Data Structures"。它在C中有相对丑陋的示例代码,作者对性能有点狂热(例如,他不使用递归),但该书的理论内容是辉煌和独特的,它几乎不与Cormen相交。我希望它成为经典。

答案 5 :(得分:3)

如果您想练习,可以查看http://www.topcoder.com,提出的算法挑战。

答案 6 :(得分:3)

http://www.youtube.com/watch?v=QMV45tHCYNI

CS 61B:数据结构 - 2006年秋季

导师:Jonathan Shewchuk

基本动态数据结构,包括线性列表,队列,树和其他链接结构;数组字符串和哈希表。存储管理。软件工程的基本原理。抽象数据类型。用于排序和搜索的算法。 Java编程语言简介。

你也可以阅读本书的算法..

http://www.amazon.com/Data-Structures-Algorithms-Made-Easy/dp/1466304162

答案 7 :(得分:2)

如果您想要学习算法的启发性替代方案,您可以尝试:Rabhi F., Lapalme G. Algorithms.. a functional programming approach

  

作者挑战更传统   教学算法的方法   使用函数式编程   上下文,用Haskell作为   实施语言。这导致   更小,更清晰,更优雅   使程序员能够运行的程序   了解算法本身   更快,并使用它   理解探索替代方案   解决方案。强调重点   程序开发而不是程序开发   算法的数学性质,   这本书使用了一系列   实用的编程实例   在读者中解决问题   可以轻松转移的技能   到其他语言范式。到其他语言范例。

对于有(硬)练习的网站,您总是可以尝试解决,我建议:spoj

答案 8 :(得分:1)

最后一本带有练习的好教科书似乎是最好的方法。

答案 9 :(得分:1)

除了非常好的教科书算法简介,第三版,Cormen,Leiserson,Rivest和Stein 之外,我强烈建议您观看在线提供的视频讲座麻省理工学院的Leiserson 。如果你有这本书和讲座,就像你在麻省理工学院学习一样; - )

http://videolectures.net/mit6046jf05_introduction_algorithms/