我想学习使用一些非常基本的简单教程的算法。那里有没有?我听说过递归和东西,我想要擅长它。任何帮助将不胜感激。
答案 0 :(得分:12)
我首先来看看EternallyConfuzzled,其中包含基本数据结构的精彩教程和算法,包括链表和二叉搜索树,排序和搜索算法。如果你想在此之后了解更多,我会推荐以下书籍,以增加复杂性,完整性和所需的数学知识:
答案 1 :(得分:8)
如果您想学习算法,this book是最佳选择。
(来源:mcgraw-hill.com)
答案 2 :(得分:6)
麻省理工学院的OCW有video lectures他们的算法课程。该教授是“算法入门”一书的作者之一,另一张海报建议。
它假定了离散数学的基本知识。
答案 3 :(得分:4)
TopCoder有一些好algorithm tutorials。
答案 4 :(得分:4)
如果您对教程感兴趣,请避免使用上面推荐的CLRS书籍。它需要严格的理论方法来研究算法,这与教程方法非常不同。
您可以通过执行来学习算法。因此,找到一个提供算法问题的资源和解决它们的指导。如果您需要教科书,请查看算法设计手册,该手册也有在线Algorithm Repository。 如果您更喜欢在线课程,Udacity提供基于python的算法课程,而Coursera提供general和Java-based课程。
由于重要的部分是练习算法,你可以跳过视频课程,只是解决挑战。其他答案表明,一旦您擅长算法,您就可以练习具有挑战性的网站。在开始时,您需要更多指导,因此请找到提供算法挑战并帮助解决问题的资源。我为此目的创建了Learneroo。您可以从 Recursion Tutorial 开始学习递归的基础知识。
答案 5 :(得分:3)
递归真的不是算法。由于您没有任何具体的内容,您感兴趣我建议您阅读wikipedia's List of alorithms或其他人建议您抓一本书。
答案 6 :(得分:2)
我会从Stony Brook Algorithm Repository开始。该网站对不同类型的算法有一些非常好的解释,并且它引用了它使用的书籍和其他资源,因此您可以了解可用的内容。
答案 7 :(得分:1)
我建议你从排序算法开始。阅读相关的wikipedia page,跳过O(n log n)内容,并专注于插入排序,合并排序和快速排序等实现。熟悉binary searching。另外,了解一些基本的data structures,例如向量,链表,堆栈,它们的实现以及它们有用的内容。 (通常情况下,解决问题的算法与合适的数据结构一起使用。)一旦您对不同的算法和数据结构充满信心,就可以深入研究更完整的论文,例如book by Cormen et al.
至于递归,它本身不是算法。相反,它是一种算法用于解决问题的技术,当后者可以自然地分解成子问题时。分解问题,分别解决子问题然后合并他们的解决方案以获得原始问题的解决方案的技术被称为“除以等分”或“分而治之”。 (递归也是大多数编程语言的相关特性,它基本上意味着“自称为”的函数。)
“递归算法”中引用最多,最简单,最无用的例子是计算阶乘的例子。不介意。相反,请阅读Tower of Hanoi问题,它承认一个简单而优雅的递归解决方案,并再次研究一些排序算法,因为其中许多算法确实是递归的。
答案 8 :(得分:1)
对于那些评论说xyz不简单的人,我要指出算法并不是一个简单的话题。您至少需要大学入门级数学来理解概念以及在适当的抽象层次上推理计算的能力。如果您找到“Algorithmics for Dummies”一书,请不要浪费您的钱!
答案 9 :(得分:1)
答案 10 :(得分:1)
在topcoder问题中解决问题是获取算法的一种非常好的方法。仅阅读理论无济于事
答案 11 :(得分:1)
Khan学院开设了一个关于算法的优秀互动自学课程 - https://www.khanacademy.org/computing/computer-science/algorithms。
答案 12 :(得分:0)
递归是一种语言特征,而不是“算法”本身。所有递归都可以用适当的数据结构(如堆栈)替换。
我建议你拿一本书。算法的问题在于它是一个相对进步的主题。你首先需要学习简单的搜索才能学习排序,你需要先排序才能做最小的生成树等。一本书会正确地订购这些,如果文本没有给你足够的信息,互联网是一个很好的下一个步。尝试使用亚马逊并查看新用户的评论。
确保在尝试实现这一目标之前先学习一种实现语言,直到你理解了语言是如何工作的,然后很难找出逻辑中的错误而不是对给定序列中发生的错误的误解。命令。
答案 13 :(得分:0)
USA Computing Olympiad有一个很好的算法training site,到目前为止,任何人都可以注册,而且它几乎都是类似格式的。读一点,做运动,多读,做运动等。
答案 14 :(得分:0)
我最喜欢的算法问题列表之一是Project Euler,它们非常多样化,你可以多次解决同样的问题进行优化,你会发现很多社区(C ++,C#,Python,..等)发布每个问题的基准
非常有趣,极客乐趣
答案 15 :(得分:0)
在SPOJ等各个网站上解决问题。并阅读有关算法导论的书籍,还有一些在线课程。