算法和数据结构

6

我目前正在上我的第一门算法和数据结构课程,但不幸的是,我的老师讲得不太好,我们使用的在线书籍在描述方面非常模糊 (http://people.cs.vt.edu/~shaffer/Book/)。到目前为止,我通过运气和常识维持着A的成绩,但现在因为我们要处理排序、搜索和更高级的数据结构(如图形结构),所以难度开始加大。

我想知道是否有任何在线资源可以帮助我更好地学习这个主题,并且您推荐哪些?我理解深入掌握这个话题的重要性,尤其是编写高效代码和面试时,所以我愿意接受任何可以帮助我更好地学习和理解算法和数据结构的建议。


这些并不一定是高级的,也可能适合初学者。推荐的书籍是《算法导论》和《编程珠玑》。 - dfb
7个回答

7

我会相信来自麻省理工学院的任何东西。我一定会稍后认真查看这个。谢谢! - lessthanjacob

3
您可能不会喜欢我的回答,但我认为您能做的最有效的事情就是调整自己的态度。你通常会找到你想要的东西。所以如果你把你的教练视为次等和你的书籍毫无价值;你将得到很少的收获。如果你寻找你的教练的优点并从书中获取你能得到的内容,你会走得更远。我浏览了一下你的文本,对我来说它似乎并不那么模糊。当然,一定要查看其他答案中提供的参考资料,但也要对课程持积极态度。

4
态度确实可能是问题,但这个人也有一定的观点。我记得上我的第一门数据结构和算法课程时(这是一个比较难以理解的学科),我的老师有着非常浓重的俄罗斯口音,并且给我们布置了那些他曾经给比我们高出4-5年计算机科学学历的学生做的作业。这很痛苦。那个学期我从书本和同学那里学到了知识,而不是从老师那里。 - anthonyvd
我完全理解你的观点。通常情况下,我不会把自己在课堂上的表现归咎于老师,但是这个话题似乎需要深入的解释,而我的教授似乎没有做到。这经常让我和大部分同学感到困惑。 - lessthanjacob

2
我特别喜欢这本书:Data Structures with C++ Using STL,作者是Ford和Topp。他们包含了相当多的源代码(所有代码均可从其网站下载),并很好地引导读者通过深入实现许多在STL中实现的数据结构以及一些不在STL中的数据结构(如图形)。您将对每个数据结构的内部组成有很好的理解,同时还有一个通用的参考,如果您需要自己构建某些东西,您将非常清楚这些数据结构可以如何从更简单的数据类型(以通用的方式...即这些想法可以转移到任何其他语言)创建和组合,并且它们应该如何在实际环境中应用。
这不仅仅是STL本身的参考资料,而是关于STL中的数据结构是如何实现的(虽然以更简单的形式...您不必担心分配器和STL代码中的许多其他辅助工具,这可能会使初学者难以阅读和理解)。
希望这能帮到您,
Jason

1

强烈推荐Skiena的算法设计手册。这是一本非常棒的书籍,帮助我理解算法和数据结构。


1

个人而言,我一直认为学习任何东西最好的方法就是尝试去构建它。无论是算法、新的设计模式还是数据结构,通过在代码中创建这些东西的过程总是让我学得最好。


但是如果我没有编程经验怎么办?我是一名大二计算机科学专业学生,对C++和C有很好的掌握。您认为我仍然能够构建这些东西吗? - lessthanjacob
@SkankinJake ... 点击上面的链接...我只学了一个学期C++,就能轻松读懂那本书了...在读完之后,我能够很容易地编写自己的STL数据结构实现。虽然我的实现不如STL(如果有合适的容器,我仍然建议使用STL),但是你会理解它们是如何工作的。相比算法,该书非常重视数据结构,因此您可能需要找其他辅助材料来补充这方面的知识。 - Jason
我会确保阅读那个。谢谢。 - lessthanjacob
你不需要完美地构建它们 =) - 没关系。尝试将抽象概念转化为具体实现的经验将帮助你理解这些概念。即使作为一名有几年经验的专业开发人员,我仍然创建小型测试应用程序来学习新的概念。 - Nathanael

0
我见过的最好的学习算法和数据结构的书是《MIT算法导论》。无论你的水平如何,它都适合你,无论是初学者、中级学习者还是高级学习者。

0

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

我不知道谁最先创建了这些幻灯片,也不知道谁可能在维护最新版本--它们似乎已经传播到许多不同学校的服务器上,并且以至少PDF和PPT格式提供。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接