V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
b0644170fc
V2EX  ›  程序员

关于算法的学习

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

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

    很多人练算法主要是为了面试,尤其是美国公司面试算法的很多。确实理论上你不用看太多,稍微看看可以去 leetcode 先捡 easy 的做。easy 的能做完我觉得其实就比大部分,至少 70%的人要好了吧。向链表反转,求交点这种都是以前面试经常会问到的题目。
    zetary
        5
    zetary  
       2019-06-26 20:54:51 +08:00   ❤️ 1
    别人做研究的也不是一天提一个算法, 很多算法是在漫长的岁月中一点点被提出来的, 而且研究者通常要做理论分析, 当你去做分析的时候你会有意识地去避免复杂度高的操作, 这样子也能提供一点基本的想法吧. 学的话慢慢来没关系的, 熟悉了就好了.
    ayyll
        6
    ayyll  
       2019-06-27 02:04:34 +08:00 via Android
    多刷 dp 最好和别人一块 你会知道什么叫智商碾压
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2982 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 13:22 · PVG 21:22 · LAX 05:22 · JFK 08:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.