学习algorithm和数据结构基础知识
你可以推荐我一本书,或者(更好!)一个有许多难题和数据结构练习的网站吗?
我已经在回答项目欧拉问题,但这些问题是有趣的,但不常见的algorithm。 我甚至不用一棵简单的树。 也许有一个网站的练习如:嘿,你需要计算这个:…。 用树做。 现在用拉链做。 上传你的C(Haskell,Lisp,甚至是Pascal或Fortress去)解决scheme。 哦,你的解决scheme太慢了!
自学是非常困难的,那么你要学习非常普通的,基本的东西 。 我怎样才能帮助自己,而不参加课程或其他?
Cormen,Leiserson,Rivest和Stein的“algorithm导论”第3版是介绍algorithm和数据结构的很好的介绍。 每章末尾都有很多练习。 其中大部分都是简单的,但还有一些困难。
由NPTEL Youtube频道的国家技术强化学习计划(NPTel)进行video讲座。 这些由印度的七个IIT和IIScclass加罗尔进行,由印度Govt MHRD公司资助。
还有更多的工程讲座 。
真棒免费电子书 – « 数据结构和algorithm »。 包含以伪代码和显式forms实现的常用algorithm。 此外,相当不错,可理解的scheme和graphics。
甚至Jon Skeet在他的博客中也提到过。 🙂
此外,这是不到100页的书(你可能知道,很多程序员不读一些书 )。
这必须是重复的。
我会在这里推荐MIT开放课件网站。 在“电气工程与计算机科学”部分有一些algorithm课程。
6.006 - Introduction to Algorithms 6.046J - Introduction to Algorithms (SMA 5503)
我推荐后者。 材料在网站上。 这些video最好从YouTube上访问 – search“mit algorithms”。 教科书很受尊重。 第三版刚刚出版,第二版配套课程。 第一版也被包括在Dobbsalgorithm和数据结构光盘中 。
Niklaus Wirth有一本algorithm和数据结构书,可以从他的个人网站下载。 我有Modula 2打印版本,虽然它不是Cormen(或aho hopcroft ullman等)的替代品 ,但它是一本很好的书。
除了上述的Cormen,Leiserson和Rivest之外,Peter Brass还有一本非常新的书“Advanced Data Structures” 。 它在C语言中有比较难看的例子代码,作者对性能有些狂热(比如他没有使用recursion),但是这本书的理论内容是辉煌而独特的,与Cormen几乎没有交集。 我期待它成为一个经典。
如果你想练习,你可以看看http://www.topcoder.com ,他们提出了algorithm的挑战。
http://www.youtube.com/watch?v=QMV45tHCYNI
CS 61B:数据结构 – 2006年秋季
导师:乔纳森Shewchuk
基本的dynamic数据结构,包括线性列表,队列,树和其他链接结构; 数组string和哈希表。 存储pipe理。 软件工程的基本原理。 抽象数据types。 sorting和searchalgorithm。 Java编程语言介绍
你也可以阅读这本书的algorithm..
http://www.amazon.com/Data-Structures-Algorithms-Made-Easy/dp/1466304162
如果你想要一个学习algorithm的启发性select,你总是可以试试: Rabhi F.,Lapalme G. Algorithms ..一种函数式编程方法 。
作者通过使用函数式编程上下文来挑战更传统的教学algorithm,Haskell作为实现语言。 这导致更小,更清晰和更优雅的程序,使程序员能够更快地理解algorithm本身,并使用这种理解来探索替代解决scheme。 强调程序开发而不是algorithm的math属性,本书使用了一系列实用的编程实例在读者中发展解决问题的技巧,这些技巧可以很容易地转移到其他语言范例或其他语言范例中。
至于一个网站(硬)练习,你总是可以尝试解决,我build议: spoj 。
一个好的教科书,练习结束似乎是最好的方式去。
除了由Cormen,Leiserson,Rivest和Stein撰写的第三版“algorithm入门”(第三版)外 ,我还强烈build议您观看由麻省理工学院Leiserson提供的在线讲座video 。 如果你有这本书和讲座,就像你在麻省理工学院学习;-)
http://videolectures.net/mit6046jf05_introduction_algorithms/