【发布时间】:2011-03-12 14:05:16
【问题描述】:
到目前为止,我主要集中在如何正确设计代码,使其尽可能可读和可维护。所以我一直选择学习更高层次的编程细节,比如类交互、API设计等。
我从未真正觉得特别有趣的算法。结果,即使我可以为我的程序提出一个好的设计,即使我可以为给定的问题提出一个解决方案,它也很少是最有效的。
是否有一种特殊的思考问题的方式可以帮助您想出尽可能有效的解决方案,或者只是练习和/或记忆的简单问题?
另外,您可以推荐哪些在线资源来教您针对不同问题的各种有效算法?
【问题讨论】:
-
更多细节:我不是在谈论设计模式、如何遍历树以及其他常见的东西。我正在寻找的一个例子是:你有一个数字列表,你知道其中只有一个是唯一的(其他的都出现了两次)。您必须确定 O(n) 中的唯一数字:您使用 XOR 操作。
-
这是解决 Project Euler 式问题的好方法,但您在日常工作中遇到过这种问题吗?
-
@larsmans 我意识到这不是你在现实世界场景中遇到的东西,但肯定(以某种不同的形式)它有用途(对吗?)。当只涉及逻辑时,我认为自己能够编写其他高效的程序,但我并不擅长有效地解决这类抽象问题。 (我在读高中,我没有工作。:))
-
啊哈。嗯,一些更“异国情调”的算法确实不时出现(鸽巢排序、Boyer-Moore 多数投票、字符串搜索的东西),但我坚持我的观点,即数据结构更为重要。如果有任何书籍或教程教你没有数据结构的算法,那么它可能不值得一读。
标签: algorithm complexity-theory