美文网首页算法简单学习
算法简单学习(一)—— 前言

算法简单学习(一)—— 前言

作者: 刀客传奇 | 来源:发表于2017-08-12 11:07 被阅读108次

    版本记录

    版本号 时间
    V1.0 2017.08.11

    前言

    将数据结构和算法比作计算机的基石毫不为过,追求程序的高效是每一个软件工程师的梦想。下面就是我对算法方面的基础知识理论与实践的总结。

    算法是干什么的

    当我们编写程序时,一般是实现一种先前设计好的、用来解决问题的方法。这种方法一般与使用的计算机无关,可能对多种计算机和多种语言同样适用,计算机里面算法(algorithm)用来描述适合用计算机程序实现的问题——解决方法。

    大部分算法的重点在于计算中涉及的数据的组织方法,按照这种创建的对象被称为数据结构(data structure),也是计算机科学中的研究对象。一般认为数据结构是算法的最终产品。想学好算法也要学习数据结构,简单的算法可能导致复杂的数据结构,复杂的算法也可能使用简单的数据结构。


    算法的重要性

    学习算法设计的主要原因是,设计原理赋予我们节省巨大开销的潜力,甚至可以完成那些原本无法完成的任务,足可见其重要性。当我们开发一个庞大的系统时,可以分解成很多的subTask,分解之后的算法是很好实现的,但是一定要选择好算法,不好的算法会额外消耗很多的资源。

    执行特定任务的算法选择是一个很复杂的过程,这里包括复杂的数学分析,甚至包含计算机科学的分支算法分析(analysis of algorithms),通过详细理性的科学分析,找到科学的实现方法。


    如何学习算法

    算法的学习是一个循序渐进的过程,这主要有两个方面的因素。

    • 其一是计算机相关基础知识是否扎实。
    • 其二是思维逻辑的强化和算法实践需要时间。

    如果要学习算法,找到合适的书籍是很重要的,比较推荐算法导论这本书,下面会给出这本书的链接大家可以买或者在网上找电子免费版。

    学习算法一般都是按照下面流程进行学习的:

    1. 基础数学知识储备要过硬

    学习算法数学一定要好,数学中与算法相关的有微积分线性代数概率论离散数学图论

    • 微积分:可以帮助你理解算法中时间复杂度、空间复杂度的概念。
    • 线性代数:帮助你理解矩阵算法中的图算法。
    • 概率论:帮助你理解随机算法,估计时间复杂度等。
    • 离散数学:离散数学里面有算法、计数和归纳等你需要知道的知识。
    • 图论:有关树、图和流的基础知识你都可以在这里找到。

    有了上面的数学知识做基础,我们才可以进入计算机方面算法的学习。

    2. 计算机相关知识要精通

    • 数据结构:它很重要,可以让你把树、图能用计算机语言表达出来。
    • C语言:C语言是国内大部分高校工科生接触的第一门计算机语言,上手也会比较快,要比C++更好的让人理解。

    3. 可以系统的啃算法了

    有前面数学和计算机相关的基础,下面可以系统的开始啃算法了,比较推荐的书籍就是算法导论算法设计。看算法导论看的头晕不知所云的时候,可以看这里。这里还有算法笔记

    在学习算法导论的时候还可以结合MIT的公开课进行学习。

    4. 真正的实践可以开始了

    有了前面对算法的系统学习,下面就可以实践了,我们平时可以在家里系统的实现一些小的算法,当然,如果你的项目里面经常用到很多大的算法,同事还有很多算法大牛的话,你的进步一定会快的飞起来,但是那是可遇不可求的事,毕竟自己如果技术不行,去的公司也十有八九也不会有技术大牛,总之,打铁还需自身硬,只有自己的技术到了一定层次,才会有机会和更高层次的人交流的机会。

    还有就是学习算法不能一蹴而就,一定是厚积薄发,贯穿整个编程的职业生涯,不能急躁,程序 = 算法 + 数据结构,刚开始起步很难,不要贪多,但是一定要学的扎实。


    几本推荐书籍

    1. 编程之美
    2. 数据结构与算法分析:C语言描述
    3. 算法设计与分析基础
    4. 算法引论
    5. 编程的本质(英文版)
    6. C语言接口与实现:创建可重用软件的技术 (这本书侧重算法的实现)
    7. 编程语言实现模式
    8. Algorithms on Strings, Trees, and Sequences: Computer Science and Computational Biology
    9. Writing Efficient Programs
    10. 算法导论(原书第2版)
    11.算法设计
    [12. 离散数学及其应用]
    [13. 图论]
    [14. Algorithms]

    这些书不用全部都读,比较经典的就是算法导论,大家可以根据自己算法学习阶段,选择适合自己的参考书。找到一个好的书,多读多练,不要贪多,但是一定要精通。

    后记

    后面我会持续和大家分享我的学习成果,希望对大家有所帮助,也希望大家能和我一起探讨其中的问题,指出我的不足,一起进步,未完,待续~~~

    相关文章

      网友评论

      • Yohohoho:www.coursera.org
        还可以关注下这个网站的数学和计算机课程,免费且有中文字幕
        Yohohoho:@刀客传奇 客气了,你的文章写得很好
        刀客传奇:谢谢分享,太感谢了

      本文标题:算法简单学习(一)—— 前言

      本文链接:https://www.haomeiwen.com/subject/bvfdrxtx.html