前几天看到StackExchange上的一枚提问帖,问:“算法在实际中的应用”,里面获得最多赞的回答确实非常棒。
http://cstheory.stackexchange.com/questions/19759/core-algorithms-deployed/19773#19773 作者罗列了一些在Linux和Chrome中的算法的实现,看完之后着实挺吃惊的。以前自己是十分惧怕算法这东西的,做的也多是业务层的东西(其实就是增删改查,做久了感觉也没有太多含量了,唯一留下的就是一些成就感)。做过几个小东西,用户量有三十多万,比如:
https://github.com/daimajia/AnimeTaste https://github.com/daimajia/EverMemo虽然一直知道,算法很重要,尤其再各种笔试,面试中。但是总是会找各种借口去逃避...一来没人督促自己,二来学算法本身就是个很曲折的过程。我想很多人都有一本买了没看过几页的《算法导论》,大家的初衷我想都是一样的,只不过一个人走不远,因而萌生了今天这个想法,一起来学算法:
大概想法是这样的:
每周我会找些主题,然后大家自己查资料,去理解,去亲手实现一些数据结构和算法,整个流程是从简单到复杂一步一步来的。
比如第一个主题可能是:二叉树查找树 -> AVL树 -> 红黑树 -> Treap树 -> 伸展树
同时大家也可以相互分享一些找到的这些数据结构和算法在真实中的应用或者更好的资料:
比如:
https://code.google.com/p/chromium/codesearch#chromium/src/v8/src/splay-tree.h https://www.byvoid.com/blog/splay-amusing也可能有一些主题是笔试类常见主题:比如字符串子串查找算法实现和优化
抑或是一些探讨类主题:Linux Diff的实现
为了督促大家能够按时学习完规定的算法,每周安排两个算法学习和实现任务,然后每个周天发给我,我会把大家的完成情况都记录下来,如果有两次没有完成规定的学习任务,那么我会很遗憾的把未完成学习计划的同志提出群邮件列表和微信群。
同时建立了一个仓储用来展示大家写的代码,通过学习其他人代码的来实现进步,而且在以后的项目中,如果遇到相同的数据结构就可以直接拿来用了,也是很方便的一件事情。
https://github.com/daimajia/Learn-Algorithm最后,加入方法:
http://tburl.in/9r0HIJJw (挑来挑去比较合适的一个团队管理工具,因为有团队分享功能,微信群二维码也在其中,大家进入后记着加入微信群)
最后的最后 !!!请一定要注意!!! 不要抱着试一试的心态加入这个团队,如果你每天都非常忙,就不要加进来了,因为这个学习小组不接受任何没有完成学习任务的理由。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/99684
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.