zoukankan      html  css  js  c++  java
  • 【算法日积月累】0-写在前面的话

    【算法日积月累】0-写在前面的话

    我是一个半路出家的“程序员”,在我刚开始从事编码工作的头几年,我没有接触过“算法和数据结构”,觉得它们是只会在我找工作的时候用得到的知识。尽管有很多人跟我说过“算法和数据结构”无比重要,但万事“开头难”、“开头难”、“开头难”……

    终于有一天,我终于开始了,从此入坑。

    于是乎,我想写一个系列文章,记录一下我学习过的“算法与数据结构”的过程,如果有幸能够给一些朋友帮助,那我会感到很荣幸。

    如果你想在“程序员”的道路上走得更远的话,“算法与数据结构”是必学的,越早学习越好。

    我是谁?我是一个本科数学专业,其实数学一点都不好的程序员,如果你有更好的学习建议,欢迎指点、交流。

    参考资料

    先从“参考资料”说起吧,“算法和数据结构”是一门非常抽象的学科,就像非数学专业的学生学习数学一样,如果没有很形象、生动的学习资料,入门就会是一件非常痛苦的事情。因此,找好“参考资料”是关键。

    入门视频教程

    我的算法入门课程:慕课网 liuyubobobo 老师的《玩转算法》课程,这门课程我是在 2017 年 5 月的时候学习的,可以说通过这门课程的学习打开了我进入“算法与数据结构”学习的大门。 liuyubobobo 老师的讲解十分细致,配合了制作精美的动画,大大降低了抽象的算法的理解程度,如果你对“算法和数据结构”一无所知,强烈建议你看看这个老师的视频教程,不懂的地方多看几遍,看完要做笔记,要练习。 liuyubobobo 老师是用 C++ 语言讲解的这个课程,我当时只会 Java ,不过一点都不影响理解,正如 liuyubobobo 老师的介绍“算法与数据结构应该是与语言无关的”。

    我这个系列的文章,在开始的部分,基本会按照 liuyubobobo 老师课程的思路来,很多就是我学习这门课程的时候的笔记,只不过是我来来回回已经修改了好几遍了。现在发出来的版本,我使用了 Python 语言实现。人工智能、机器学习、深度学习、数据科学大行其道的今天,Python 又是如此简单、易用,我们没有理由不用 Python。

    我可以,相信聪明的你也一定可以。

    (说明:我在我的系列文章中出现的学习资料,不论是网络视频、书籍还是介绍算法的网站、刷题网站,都只是我自己的学习路径的真实介绍,没有广告的意思,我只是一个不知名的程序员,没有人会让我推荐的,事实上,聪明的你都可以无须付费获得它们、使用它们。)

    入门书籍

    我的算法入门书籍:《算法4》。

    image-20190112215955003

    这里的 4 是第 4 版的意思,是一本非常经典的外文读物,已经有中文译本了。这本书和《算法导论》一样厚,但比《算法导论》要生动很多,同时也是国外名校使用的一门非常经典的教材。

    这本书的特点:1、颜值特别高:红色的封面,里面的纸像打印值一样白,阅读的时候很舒服;2、结构很清晰,每一个算法都有代码实现,主要还是 Java,我当时只会 Java 语言,看这本书其实没有什么阻力;3、这本书还有配套的网站,你可以去这个网站上下载书中的代码。

    其实我之前介绍的 liuyubobobo 老师课程也大量参考和使用 《算法4》 这本书上的思路和例题。两者配合着看和学习,可以说是非常完美了。

    下面再说一说其它的书籍:

    1、《算法导论》:我是学习了《算法4》(当然没有看完)再去看《算法导论》的,很多地方其实都容易理解得多,《算法导论》有一点对初学者很不友好的地方,那就是所有的算法代码都是伪代码,但这毫不影响《算法导论》的地位,或许《算法导论》根本就不是给初学者看的。

    image-20190112220203368

    2、《算法图解》:这本书我是和《算法4》一起买来的,一本很小的书,用 Python 语言实现,看着玩,图中的插画很生动。

    image-20190112220129403

    3、《剑指 Offer》:

    image-20190112220240178

    4、邓俊辉老师《数据结构 C++ 语言版》

    image-20190113174114949

    其实最早认识邓老师是他的 mooc ,他制作的算法与数据结构 flash 动画是十分生动的,它的教材和课件风格是一致的,他在教学中还赋予了算法比较优雅的哲学含义。在内容上,涉及到了一些高级数据结构,例如红黑树、B 树等,如果理解高级数据结构有困难的话,可以看看他的 mooc 或教材。

    刷题网站

    LeetCode:国内外公认的刷题网站,想熟练掌握常用的算法和数据结构,刷题是必经之路。这个网站现在已经有中文版了,对于看英文比较吃力的朋友,例如我来说,是一个好消息。不过中文版里面的讨论的内容没有英文版多,所以,想要参考别人写的代码可以到中文版上看题目的翻译,到英文版里看别人的代码。

    顺便说说,我在刷题的过程中,找到了一些视频资源,可能大伙在刷题的时候也会搜索到它们的视频资源或者个人博客,它们是“Cspiration”、“花花酱”、“小 Q”、“小 Fu”等。

    LintCode

    传送门:LintCode

    这个网站可以作为 LeetCode 的补充,不过我看大家刷得比较多的还是 LeetCode。

    ACWING:这是我在 B 站上看到一个北大的研究生“大雪菜”做的直播,在上面可以刷一些 LeetCode 上没有的 《剑指 Offer》的题,“大雪菜”还会在直播里给你讲每道题的思路,这个网站上还有一些活动,激励里去刷题和分享,我觉得还是很不错的。

    总结

    学习《算法与数据结构》是一项工程,并不是一件特别轻松的事情,所以我觉得刚开始的时候,培养兴趣是很关键的,要让自己认识到学习《算法和数据结构》是十分有用的。然后贵在坚持!

  • 相关阅读:
    AngularJS Insert Update Delete Using PHP MySQL
    Simple task manager application using AngularJS PHP MySQL
    AngularJS MySQL and Bootstrap Shopping List Tutorial
    Starting out with Node.js and AngularJS
    AngularJS CRUD Example with PHP, MySQL and Material Design
    How to install KVM on Fedora 22
    Fake_AP模式下的Easy-Creds浅析
    河南公务员写古文辞职信
    AI
    政协委员:最大愿望是让小学生步行上学
  • 原文地址:https://www.cnblogs.com/liweiwei1419/p/10276102.html
Copyright © 2011-2022 走看看