如何解决我制作算法的困难?

Stu*_*rks 11 algorithm

首先,抱歉,但我的英语不是很好.

我在编程课程的第三学期,我不能"得到它".

我通过了以前的考试,因为我的学习成绩是我同事的三倍.而且,现在在我的数据结构课程中,当教授要求我们制作列表算法时(例如),我的同事们开始编写代码而我(或者是"我"?),即使在看完它之后,也可以'明白.

我发现它很难受到痛苦.我花了1个小时来理解简单的算法.

所以问题是:任何人都可以向我推荐书籍或东西,这会让我更像是程序员吗?我的意思是,"正常"的人,在一个给定的问题之后,似乎立即在他们的头脑中制作图片并且明星编写代码.

atk*_*atk 12

你可能想把一个哲学课介绍给逻辑.它与您使用计算机完全相同,但在不同的环境中.


Ore*_*n A 7

我认为有两种方法可以学习编写算法:1.自己尝试(然后用"正确的"答案进行复习).当然,你应该从简单的开始.2.实现其他算法(代码).从算法到代码,反过来让您对算法的创建有一种很好的"感觉".

但是我能给你的最佳建议(你可以用上面两种方法来获取) - 尝试非常擅长一些算法.如果你能记住,写作并且甚至只是理解一些基本算法 - 你就是正确的方法.

无论如何,我认为学习算法主要是练习而不是"抽象知识",所以准备好弄脏你的手......

祝你好运!


Lan*_*dei 7

我发现掌握数据结构最重要的技能是"可视化"它们.如果您对数据结构没有清晰的了解,那么一切都会模糊不清.例如,采取堆栈(单链表).它可能有助于将其视为一堆板块或波兰人(每个人的双手放在他面前的人的肩膀上).

或者是一个双重链表:想象一下,一排人抓住了左右邻居的腰带.现在你可以想象你必须做些什么来移除一个人:它的左邻居需要抓住右邻居的腰带,右邻居需要抓住左邻居的腰带.然后你可以"删除"那个人(或者垃圾收集器在Java等中为你做这个)

第二个重要技能是理解递归.您总是需要一个基本案例,通常涉及空列表或空节点.在递归方法中遵循算法时,请检查它是否正确,但不要在该方法中跟随递归调用.这会让你发疯并导致一无所获.假设递归调用总是"做正确的事".如果您当前的方法是正确的,那么基本情况也就完成了.一旦你理解了这一点,你就会理解递归.


fun*_*oom 6

如果它有帮助,您可能想要用您的母语尝试书籍.如果您的理解与您的英语理解有任何差距,那将为您增加额外的难度.

其次,算法只是实现某些目标的一系列步骤.尝试专注于像排序算法这样简单的事情,它们既有趣又易学.希望有所帮助.