算法简单学习

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

2017-08-12  本文已影响108人  刀客传奇

版本记录

版本号 时间
V1.0 2017.08.11

前言

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

算法是干什么的

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

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


算法的重要性

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

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


如何学习算法

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

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

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

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

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

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

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

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]

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

后记

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

上一篇下一篇

猜你喜欢

热点阅读