所以在这个夏天,我决定不妨在开学前开始学习算法。有人告诉我类(class)节奏相当快,算法不是你应该掉以轻心的东西(我倾向于在学期的所有类(class)作业中都这样做 lol)。
我们要用的书是这本Algorithms (4th Edition) . 无论如何,这是我的问题。
我几乎已经读完这本书的第三遍了,但我刚刚意识到我在做什么。例如,我会反复阅读我不太理解的部分。然后,如果我有足够的信心,我会尝试用我的头脑在 Java 中重现相同的算法。但是通过这样做,我的代码看起来几乎和书中的代码一模一样……在 Java 中。
我不能说我只是一个接一个地记住代码——我确实理解这些概念,它们帮助我编写这些算法——但我觉得我只能在 java 中实现这些算法。我应该注意,我目前只知道 java。
tldr:我学习算法就像学习弹吉他一样——一个接一个地重复。但是通过这样做,我觉得我更加固定,我只能在 java 中实现这些。如果您使用的是特定语言的书,您将如何学习算法?
提前致谢。
最佳答案
不要迷惑自己
您正在学习 Java,因此请用 Java 编写它们。尤其是当 Java 是您的第一语言时。现在不要混淆自己,因为您正在尝试同时学习两件事:如何用 Java 编程,以及如何编程。 您正在学习一门新语言和一种思维方式。不要做太多,但暂时添加另一种语言。
多样化
以后,或者如果您有足够的信心可以同时学习另一种语言,那么学习另一种语言并尝试在不看书的情况下复制算法显然是有益的。
复制和扩展
我们可以建议您寻找算法的衍生物。已知的变体,已记录在案,您可以在其中阅读变体的描述,这样您就可以尝试从“基本”版本实现它,而无需阅读本书。
例如,如果您的书向您介绍了链表,您应该能够想出双向链表或循环链表的算法,而无需阅读对预期结果的描述。或者您明显误解了原始概念的某些内容。
先尝试,再阅读
我什至建议您实际上尝试在书中描述的算法向您展示之前实现它们。查看 Sedgewick 算法的目的是查看规范的实现,这被认为是标准蓝图。如果您只是阅读了导致实现的部分(希望首先显示),那么只需坐下来阅读本书,并尝试弄清楚如何做到这一点。如果您根本做不到这一点,那么您就太超前了,应该回溯并从头开始。
关于java - 使用特定语言学习算法的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11042696/