持续学习&持续更新中…
守破离
【liuyubobobo-算法与数据结构】第一章 课程概述
- 任何时候学习算法都不晚,而且越早越好,这么多年,你听说过技术过时,什么时候听说过算法过时,不仅没有过时,因为机器学习、大数据的要求,算法变得越来越重要了。
- 对算法的学习,会逐渐培养你理清逻辑的习惯,对每一个变量作用的深刻理解,也能让你写出越来越优雅的代码
什么是算法
一系列解决问题的,清晰,可执行的计算机指令。
算法的5大特性
有限性
- 一个算法不应该是无限循环的,应该在有限的时间里可以执行完。
- 所谓的有限的时间,不代表这个时间一定会非常短。
- 比如我设计了一个算法,这个算法需要一万年、一亿年才能执行完,从原则上讲,它也是一个算法。只不过它消耗的时间太长,并不实用而已。
- 这样一个不实用的算法并非完全没有意义!
- 可以想象一下,有可能在现在我们需要一万年的时间才能执行完的算法,随着技术的发展(硬件技术、并行计算、量子计算…),使得在以后,同样的算法可能只需要一秒钟就可以执行完毕。这个算法此时就有意义了。
- 另外一点,很多时候我们研究算法,恰恰是从这样的一个看似不可行的算法出发,一步一步的优化它,最终得到一个可行得算法。
- 所以,对于一个看起来不可行的算法,它可能是有研究意义的。
确定性
- 每一个指令本身应该是含义唯一的,不能产生二义性。
可行性
- 算法中的每一步都应该是可行的。
输入
输出
-
并不像函数的输入输出那样,算法的输入输出是宏观的、抽象上的输入和输出。
- 对于一个算法来说,它肯定是有它操作的对象的。它所操作的这些对象就是这个算法的输入。
- 算法执行产生的效果、结果就是该算法的输出,是宏观抽象的输出。
为什么要学习算法
- 为了IT企业面试(无可厚非、但不仅仅、绝不止步于此)
- 算法在计算机行业中是至关重要的。可以说,在计算机中,算法无处不在
算法无处不在
- 编程语言的编译器(编译器如何理解程序?如何智能报告编译错误、逻辑错误?如何优化代码?…?)