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

前端也要学算法

  •  3
     
  •   barretlee ·
    barretlee · 2016-05-24 13:55:19 +08:00 · 7500 次点击
    这是一个创建于 3107 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在复习一些基本算法,参考书是《算法(第四版)》,复习过程中会把书中的所有的算法用 JavaScript 实现一遍,感兴趣的同学可以在这里 Follow 我的脚步: https://github.com/barretlee/algorithms ,每天空闲时间写几个, issue 中同步。

    第 1 条附言  ·  2016-05-24 15:47:55 +08:00
    有同学说算法跟语言没有关系,书上的代码是 java 写的,而我估计后续三四年都不太可能用上 java 语言,所以肯定不会用 java 来验证我是否消化了这些算法,用自己熟悉的语言实现一遍,主要是为了巩固。

    我没有系统地学习过算法,了解的都是大学学的那点基础算法。 Leetcode 直接去刷题,暂时还不太适合我。
    第 2 条附言  ·  2016-05-24 19:02:19 +08:00

    学习过程中的思考和实践放在 issues 中,欢迎过来讨论和指正,算法我还是个渣渣,不过有了个开始,就会持续学下去~

    第 3 条附言  ·  2016-05-24 23:45:28 +08:00

    如果你是算法初学者,强烈推荐这个「算法可视化」工具(http://jasonpark.me/AlgorithmVisualizer/ ),很清晰地绘制了每一个基础算法的原理和运作流程。仓库地址:https://github.com/parkjs814/AlgorithmVisualizer

    23 条回复    2016-05-26 10:21:56 +08:00
    horizon
        1
    horizon  
       2016-05-24 14:14:30 +08:00
    中文版还是英文版啊?
    想买英文版但是怕看不懂=。=
    murmur
        2
    murmur  
       2016-05-24 14:23:44 +08:00
    算法用 js 写不如用 java 写 这个是一个思路跟语言无关但是和明显 java 更适合一些。。感觉上,数据结构常见的不就 c 版和 java 版么
    jsonline
        3
    jsonline  
       2016-05-24 14:27:40 +08:00 via Android
    这跟哪种语言有关系吗?
    cxbig
        4
    cxbig  
       2016-05-24 14:28:19 +08:00
    @murmur LZ 的标题误导了你,用 JS 练习写算法最后还是放后端比较实际,前端一般都不会放太重的运算。
    wizardoz
        5
    wizardoz  
       2016-05-24 14:29:30 +08:00
    跟语言有关系,但是不是在于学算法上,而是在语言的熟练程度上。
    用一种自己常用的语言去实现自己第一次学习的算法,可能会对语言有新的发现。
    wxx199101046
        6
    wxx199101046  
       2016-05-24 14:51:03 +08:00
    建议楼主直接 leetcode 刷题
    flowfire
        7
    flowfire  
       2016-05-24 15:14:20 +08:00
    @murmur 昨天刚买了一本 ES6 看,现在 js 已经和 java 几乎是一毛一样的东西了
    连 class , extend , super()都有了。。。
    wujunze
        8
    wujunze  
       2016-05-24 15:18:04 +08:00
    算法跟编程语言木有太大关系
    就像你吃饭是用勺子 还是叉子 筷子
    warDoggie
        9
    warDoggie  
       2016-05-24 16:10:05 +08:00
    支持楼主,已 star
    上个月想用 js 刷 leetCode 有点刷不动
    最近也在用 python 实现算法第四版里面的例子,共勉

    @flowfire 底层继承机制还是差蛮多的。单说学习思想,其实动态语言刷起来比静态语言还舒服些。虽然刷题多数时间都在托腮发呆,并不差编写效率。(T ^ T)

    @murmur 最常见 c 和 java 是因为受众最多啊,本身不限于语言的东西,用大家都能看懂的语言表达比较适合做教程嘛。
    lovedebug
        10
    lovedebug  
       2016-05-24 16:14:14 +08:00
    @flowfire JS 的继承和 Java 差距很大的,只是看起来像是面向对象,其实还是原型继承而且坑很多,目前还有问题。
    fhefh
        11
    fhefh  
       2016-05-24 17:15:17 +08:00
    follow
    可以建立一个 slack 嘿嘿
    barretlee
        12
    barretlee  
    OP
       2016-05-24 18:03:27 +08:00
    @fhefh 主要还是学习过程中的一些心得和实战记录, issue 管理应该够了;)
    starcraft
        13
    starcraft  
       2016-05-24 18:24:42 +08:00 via iPhone
    我觉得学习的时候,拿 c/c++实现算法四更有意义,哪怕 python 都行,没必要为了前端去用 js 。
    barretlee
        14
    barretlee  
    OP
       2016-05-24 18:59:48 +08:00
    @starcraft 为什么使用这些语言意义更大呢? Leetcode 也是支持用 JavaScript 来答题的。
    fuyufjh
        15
    fuyufjh  
       2016-05-24 20:28:44 +08:00
    刷算法只用 C++
    morning
        16
    morning  
       2016-05-24 20:37:50 +08:00
    正好刚开始看这本,已 star
    Balthild
        17
    Balthild  
       2016-05-24 23:08:37 +08:00 via Android
    话说我第一眼竟看成了学习 基 本 法……
    Wangxf
        18
    Wangxf  
       2016-05-24 23:32:01 +08:00
    @Balthild 蛤蛤,+1
    xiaoshangmin
        19
    xiaoshangmin  
       2016-05-24 23:51:25 +08:00 via iPhone
    从来没学过算法
    fszaer
        20
    fszaer  
       2016-05-25 09:32:47 +08:00
    @barretlee 我赞同 lz 观点,算法本身语言无关,用 js 实现并没有什么问题,比如我大多数时候在 leetcode 我都会用 js 跟 c 实现一遍,其实算法逻辑通了之后,就是语言熟练度的问题了。

    @murmur

    我认为数据结构算法以 c 版和 java 版只能说明这两个更加大众化,应用得广,受众面大而已,比如国内科班教 c/c++跟 java 的占到绝大多数。将语言设定为这两个能面向最多的读者。毕竟这类书籍一开始发售的时候有许多语言还很小众, js 大概还是个玩具。选择 c 和 java 做描述实现的语言是多方面的考量,但是这不意味着这俩个就更合适描述算法。
    flowfire
        21
    flowfire  
       2016-05-25 11:29:56 +08:00
    @lovedebug js 能搞成现在这样我已经很感动了。。。。至少 ES6 解决了 callback hell 的问题。。。。
    fhefh
        22
    fhefh  
       2016-05-25 22:31:39 +08:00   ❤️ 1
    这个也不错
    http://visualgo.net/
    barretlee
        23
    barretlee  
    OP
       2016-05-26 10:21:56 +08:00
    @fhefh 嗯,已经收藏,不过这样的可视化过程只是促进理解,在这里总结了一份: https://github.com/barretlee/algorithms/issues/7
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3273 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 13:02 · PVG 21:02 · LAX 05:02 · JFK 08:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.