因此,到了夏天,我决定在学校开学前开始学习算法.我被告知课程节奏相当快,而且算法不是你应该掉以轻心的东西(我倾向于在学期期间完成所有的课程工作).
我们将要使用的这本书是Algorithms(第4版).无论如何,这是我的问题.
我几乎是通过这本书的第三部分,但我刚刚意识到我在做什么.例如,我会阅读并重新阅读我不太了解的部分.然后,如果我有足够的信心,我会尝试从头脑中重现相同的算法.但通过这样做,我的代码看起来几乎完全像书中的那些......在java中.
我不能说我只是在代码后记忆代码 - 我理解这些概念并帮助我编写这些算法 - 但我觉得我只能在java中实现这些算法.我应该注意到我现在只知道java.
tldr:我正在学习算法,好像我正在学习弹吉他 - 重复之后重复.但通过这样做,我觉得我更加注重我只能在java中实现这些.如果您使用的书籍是特定于语言的,那么您究竟会如何学习算法?
提前致谢.
你正在学习Java,所以用Java编写它们.特别是如果Java是你的第一语言.暂时不要混淆自己,因为你正在尝试同时学习两件事:如何在Java中编程,以及如何编程.你正在学习一门新语言和一种思维方式.不要做太多,但现在添加另一种语言酱.
稍后,或者如果你有足够的信心可以同时使用另一种语言,那么学习另一种语言并尝试复制算法显然是有益的,而无需查看本书.
我们可以推荐您的是寻找算法的衍生物.已记录的已知变体,您可以在其中阅读变体的描述,以便您可以尝试从"基础"版本实现它,而无需阅读本书.
例如,如果您的书将您引入链接列表,您应该能够为双向链接列表或循环链接列表提出算法,而不必阅读超出所需结果的描述.或者有一些关于你明显误解的原始概念的东西.
我建议你甚至在向他们展示之前尝试实施本书中描述的算法.看Sedgewick算法的目的是看一个规范的实现,它被认为是一个标准的蓝图.如果您只是阅读实施前的部分(希望首先显示),那么请坐下来阅读本书,并试着弄清楚如何做到这一点.如果你根本不能做到这一点,那么你在书中走得太远,应该从头开始重新开始.