算法和数据结构

问题描述:

我目前正在通过我的第一个算法和数据结构类的一半。不幸的是,我的老师不太好,我们使用的在线图书的描述非常模糊(http://people.cs.vt.edu/~shaffer/Book/)到目前为止,我已经设法维持一个A,主要是由于运气和常识,但它开始获得很多现在我们正在处理排序,搜索以及更高级的数据结构,比如图形。算法和数据结构

我想知道是否有任何网上资源,可以帮助我更好地学习这个主题,你会推荐。我明白了解这个话题的重要性,特别是在编写高效的代码和面试工作时,我愿意接受任何有助于我更好地学习和理解算法和数据结构的建议。

+0

http://stackoverflow.com/questions/3665370/book-to-learn-advance-concepts-in-data-structures-and-algorithms这些AREN”不一定是高级的,要么 – dfb 2011-03-31 19:02:46

+0

我会信任任何来自MIT的东西。我一定会在后面详细介绍一下。谢谢! – lessthanjacob 2011-03-31 19:22:51

我见过的学习算法和数据结构的最好的书是麻省理工学院简介算法。无论您的水平如何,对您都有好处,适合初学者,中级和高级学习者。

让自己Skiena的The Algorithm Design Manual。这是一本很棒的书,真正帮助我理解算法和数据结构。

你可能不会喜欢我的回答,但我期望你能做的最有效的事情就是处理你的态度。你经常会发现你在找什么。所以如果你把你的教师视为不合标准,而你的书就毫无价值;你会得到很少的。如果你看看你的教练的长处,并从书中得到你想要的,你会走得很远。我浏览了你的文本,对我来说似乎并不那么模糊。绝对要看其他答案中提供的参考资料,但也应该对课程有积极意义。

+3

肯定的态度可能是一个问题,但这个人也可能有一个问题。我记得我的第一个数据结构和算法类(起初有点难以掌握)。我的老师有很强的俄语口音,并且给了我们以前给他们的作业,让他们在CS学习中比我们学习时间提高4-5年。这很痛苦。我从书本和同行那里学到了这个学期,而不是从老师那里学到的东西。 – 2011-03-31 19:14:11

+0

我完全可以看到你的观点。我通常不会责怪我在老师的课堂上做什么,但是这个话题似乎需要大量的深入解释,而我的教授似乎并没有这样做。这经常让我自己和大多数其他同学感到困惑。 – lessthanjacob 2011-03-31 19:21:22

我发现幻灯片位于:http://www.heppenstall.ca/academics/doc/242/是非常有帮助的。它们涵盖了广泛的数据结构和基本算法,并包含有用的图片以帮助了解正在发生的事情。

我不知道谁是第一个创建各种幻灯片,或者可能会维护最新版本 - 他们似乎已经找到了许多不同学校的服务器,并且至少有PDF和PPT格式。

就我个人而言,我总是发现学习东西的最好方法就是尝试构建它。无论是算法,新设计模式还是数据结构,在代码中创建事物的过程一直是我学习得最好的方式。

+0

但是如果我没有编程经验来做到这一点呢?我是计算机科学专业的第二年,对C++和C有很好的把握。你认为我还能够构建这些东西吗? – lessthanjacob 2011-03-31 19:28:30

+0

@SkankinJake ...查看我上面的链接...仅仅学了一个学期的C++之后,我可以毫无困难地阅读那本书...阅读完后,我可以编写自己的许多实现STL数据结构没有太大困难。不是说我的STL比我的STL好(如果有合适的容器可用,我仍建议你使用),但只是说,你会明白它们是如何工作的。与算法相比,本书强调数据结构,因此您可能需要为此找到其他补充材料。 – Jason 2011-03-31 20:02:44

+0

我一定会给你一个阅读。谢谢。 – lessthanjacob 2011-03-31 20:12:21

我特别喜欢这本书:Data Structures with C++ Using STL by Ford and Topp。

它们包含了相当多的源代码(所有这些代码都可以从他们的网站上下载),并且很好地引导读者通过对STL中实现的许多数据结构进行彻底的坚果实施,以及STL中不存在的一对数据结构(如图)。您将从更基本的数据类型中获得对每个数据结构的内部组成的很好的理解,以及您需要自己构建某些东西的足够通用的引用,您将会很好地了解这些数据结构数据结构可以由更简单的数据类型(一般意义上来说,也就是说,这些想法可以转换为任何其他语言)创建和编写,以及它们应该如何在现实世界中应用。

它不是STL本身的参考,因为它是STL数据结构如何实现的参考(尽管采用更简单的形式......您不必担心分配器,以及STL代码中的许多其他辅助工具,可能会使初学者难以阅读和理解)。

希望这有助于

杰森