Pau*_*nta 15 algorithm complexity-theory
到目前为止,我主要集中在如何正确设计代码,使其尽可能可读和尽可能可维护.所以我总是选择了解编程的更高层次细节,例如类交互,API设计等.
我从未真正发现的算法特别有趣.因此,即使我可以为我的程序设计一个好的设计,即使我能够提出解决特定问题的解决方案,但它很少是最有效的.
是否有一种特殊的方式来思考可以帮助您提出尽可能高效的解决方案的问题,或者在实践和/或记忆方面是否简单?
此外,您可以推荐哪些在线资源,教您针对不同问题的各种高效算法?
Fre*_*Foo 12
数据占主导地位.如果围绕正确的抽象数据结构(ADT)设计程序,通常会得到一个简洁的设计,算法非常自然地遵循,当缺乏性能时,您应该能够"插入"更高效的算法.
数学和逻辑的强大背景在这里有所帮助,因为它允许您将程序高度可视化为函数,集合,图形,序列等之间的交互.然后,您可以决定是否需要对集合进行排序(平衡BST, O(LG n)的操作)或否(哈希表,O(1)的操作),需要支撑在序列(向量状或列表等)等什么样的操作
如果你想学习一些算法,可以得到一本好书,如Cormen等.并尝试实现主要数据结构:
int字符串或字符串)