关于算法的学习

2019-06-26 17:52:58 +08:00
 b0644170fc
最近在学习算法,我发现智商太不够用了。比如最近看的一个字符串排序的算法”键索引计数法“,按照书本所说这已经是比较基础的算法了,可是我花了好几个小时才想明白,期间还各种百度。我觉得不太好理解的一个原因是因为书本上的语言太晦涩了,所以有点看不懂,后来找了一个代码看了下就容易明白了。
我在想,能创造出这个”键索引计数法“的人,真是厉害。他是怎么想出来的呢。如果是我的话,这辈子估计都想不出来这种算法。所以我觉得不我不可能创造一个算法,只能学别人创造出来的,感觉这样非常没有前途
大家对学习算法有什么看法和建议
2788 次点击
所在节点    程序员
6 条回复
Raisu
2019-06-26 18:18:19 +08:00
写上教科书的算法想不出来是正常的。
我第一本算法书就是 算法导论
ninechapter
2019-06-26 19:07:51 +08:00
算法的学习,70%靠实践,30%靠理论。通过积累一定的刷题量,可以完成实践和总结。建议在 lintcode 上面做算法题,有 2000 多道,按类别做上 3 个月,如二叉树、二分法、动归、图论这些,一定有质的飞跃。
Heartbleed
2019-06-26 19:16:36 +08:00
之前在学红黑树的时候就在感慨怎么会有人想出这种东西...
Oz2011
2019-06-26 20:51:53 +08:00
如果觉得自己智力不够,那放弃也没关系。算法导论里至少前面那些基本的数据结构 list stack array map set hash 要非常了解,还有各种操作的复杂度,算法导论我觉得至少要读到动态规划那。

其实复杂的算法在日常工作中也不是经常用到,也就是上面说的那些数据结构 要用的时候选择复杂度好的。工作我觉得就够了。

很多人练算法主要是为了面试,尤其是美国公司面试算法的很多。确实理论上你不用看太多,稍微看看可以去 leetcode 先捡 easy 的做。easy 的能做完我觉得其实就比大部分,至少 70%的人要好了吧。向链表反转,求交点这种都是以前面试经常会问到的题目。
zetary
2019-06-26 20:54:51 +08:00
别人做研究的也不是一天提一个算法, 很多算法是在漫长的岁月中一点点被提出来的, 而且研究者通常要做理论分析, 当你去做分析的时候你会有意识地去避免复杂度高的操作, 这样子也能提供一点基本的想法吧. 学的话慢慢来没关系的, 熟悉了就好了.
ayyll
2019-06-27 02:04:34 +08:00
多刷 dp 最好和别人一块 你会知道什么叫智商碾压

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/577739

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX