首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >学习高效算法

学习高效算法
EN

Stack Overflow用户
提问于 2011-03-12 22:05:17
回答 5查看 2.8K关注 0票数 18

到目前为止,我主要集中在如何正确地设计代码,使其尽可能地可读性和可维护性。因此,我总是选择学习更高层次的编程细节,例如类交互、API设计等。

我从来没有真正觉得算法特别有趣。因此,即使我能为我的程序想出一个好的设计,即使我能想出一个给定问题的解决方案,它也很少是最有效的。

有没有一种特殊的思考问题的方式,可以帮助你找到尽可能有效的解决方案,或者这只是一个简单的练习和/或记忆的问题?

另外,你可以推荐哪些在线资源来教你针对不同问题的各种有效算法?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-03-12 22:10:17

数据为主。如果你围绕正确的抽象数据结构(ADT)设计你的程序,你通常会得到一个干净的设计,算法很自然地遵循,当性能不足时,你应该能够“插入”更有效的算法。

强大的数学和逻辑背景在这里很有帮助,因为它允许你在高层次上可视化你的程序,如函数,集合,图,序列等之间的交互。然后你决定集合是否需要排序(平衡的BST,O(lg n)操作)或不需要(哈希表,O(1)操作),序列上需要支持哪些操作(类向量或类列表),等等。

如果你想学习一些算法,可以买一本好书,比如Cormen et al。并尝试实现主要的数据结构:

  • 二进制搜索树
  • 通用二进制搜索树(不仅适用于int或字符串)
  • 散列阵列
票数 12
EN

Stack Overflow用户

发布于 2011-03-12 22:08:22

Introduction To Algorithms是一本很棒的书,可以让你思考不同算法/数据结构的效率。

这本书的作者还在麻省理工学院教授一门算法课程。你可以在here上找到大多数演讲

票数 7
EN

Stack Overflow用户

发布于 2011-03-12 22:15:13

我要说的是,要想出好的算法(这实际上是好的设计IMHO的一部分),你必须发展一种思维方式。这最好通过学习算法设计来实现。我所说的学习不仅仅是了解教科书中涵盖的所有常见算法,而是真正了解它们是如何以及为什么工作的,并能够将其中包含的基本思想应用于您试图解决的实际问题。

我建议读一本关于算法的好书(我最喜欢的是CLRS)。对于在线资源,我推荐TopCoder Algorithm Tutorials中的系列文章。

我不明白你为什么要把练习和记忆相提并论。死记硬背对你一点帮助都没有(你可能已经知道这一点),但练习是必不可少的。如果你不能应用你学到的东西,那就不是真正的学习。你可以在各种在线编程竞赛/益智网站上练习,比如SPOJProject EulerPythonChallenge

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5282969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档