Algorithm 记忆重要的算法,如二进制搜索

Algorithm 记忆重要的算法,如二进制搜索,algorithm,Algorithm,你会记住诸如二进制搜索/快速排序之类的算法吗。如果是这样的话,你有什么诀窍吗?我绝不会冒险去记住这些-总是试着找到一个能处理它的库函数。找到理解这些算法的基本原理的方法总比记住它们好。例如,快速排序使用范例(这是一种解决某类问题的设计技术) Wiki是剖析新主题的一个很好的起点。你可以通过观看视频讲座(在这里找到这篇很好的帖子)和其他特定的材料,比如相关的研究论文,来深入挖掘 通过算例也可以更好地阐明算法 我希望这有帮助 干杯我不会死记硬背代码或伪代码,但我总能从记忆中编写二进制搜索和快速排序代

你会记住诸如二进制搜索/快速排序之类的算法吗。如果是这样的话,你有什么诀窍吗?

我绝不会冒险去记住这些-总是试着找到一个能处理它的库函数。

找到理解这些算法的基本原理的方法总比记住它们好。例如,快速排序使用范例(这是一种解决某类问题的设计技术)

Wiki是剖析新主题的一个很好的起点。你可以通过观看视频讲座(在这里找到这篇很好的帖子)和其他特定的材料,比如相关的研究论文,来深入挖掘

通过算例也可以更好地阐明算法

我希望这有帮助


干杯

我不会死记硬背代码或伪代码,但我总能从记忆中编写二进制搜索和快速排序代码,因为我知道逻辑是如何工作的。这来自于学习算法,我绝对推荐。

寻求理解而不是记忆。我发现它能帮助我通过一个算法的证明来获得正在发生的事情的内部运作,而这通常被证明是很好的记忆策略。

不,这就是互联网的用途。我宁愿要求页面具备这种知识,也不愿让它占用空间去做更有用的事情。

我认为记住重要算法和数据结构背后的概念是值得的。但在实现方面,我认为如果可能的话,应该使用库函数。当你写下算法时,很容易忘记边界情况——如果你做单元测试,很可能你没有想到它们。因此,即使像二进制搜索这样的简单算法也可能被破坏:

我清楚地记得乔恩·本特利(Jon Bentley)在芝加哥大学(CMU)的第一次算法讲座,他向我们所有即将获得博士学位的人提问。让学生编写一个二进制搜索,然后在全班面前剖析我们的一个实现。当然,它被破坏了,我们的大多数实现也是如此


从。本文的其余部分也是一个值得推荐的内容,但不是关于记忆算法。

你应该知道这些算法背后的一般原理,因为它们是编程的基础,它会让你深入了解它们应该在哪里使用。例如,您应该充分理解quick sort,以理解为什么在病理病例中它可以是O(N^2)


然而,记住足够的细节,以便能够在第一次尝试时就编写这些算法的生产质量实现,这是绝对没有意义的。这就是图书馆的用途。例如,如果您所记得的只是标准的3行快速排序版本,而您不记得如何实现一个不容易找到O(N^2)案例和排序的版本,那么这没有什么错。

在记住它们之后,它们并不是真正的“遗忘”。我看不出不记得要快速排序的细节,但是人们怎么会忘记二进制搜索是如何工作的呢?名称本身就是一条重要线索。+1:分而治之:许多算法的基本设计模式。在“不记忆”和“使用库函数”之间有一些中间立场,例如“在实现时查看参考”。