【liuyubobobo-算法与数据结构】第一章 课程概述


持续学习&持续更新中…

守破离


【liuyubobobo-算法与数据结构】第一章 课程概述

    • 为什么要学习算法
    • 算法无处不在
    • 如何学算法
    • 课程简介
        • 学习要求
        • 学习路径
        • 学习方法
    • 数据结构的重要性
    • 算法思想
    • 每个细分领域都是算法
    • 体会算法之美
    • 参考

任何时候学习算法都不晚,而且越早越好,这么多年,你听说过技术过时,什么时候听说过算法过时,不仅没有过时,因为机器学习、大数据的要求,算法变得越来越重要了。

对算法的学习,会逐渐培养你理清逻辑的习惯,对每一个变量作用的深刻理解,也能让你写出越来越优雅的代码

为什么要学习算法

  • 为了IT企业面试
  • 算法在计算机行业中是至关重要的。可以说,在计算机中,算法无处不在

算法无处不在

  • 编程语言的编译器
  • 常见的工具:搜索引擎、推荐算法
  • PS、压缩文件技术、数据库…也大量使用了算法
  • 影视特效——制作电影、动画片也离不开算法(物体的运动、灯光、反射折射…)
  • 平常玩的游戏(小游戏:迷宫、扫雷、BluePath…)(大型游戏:英雄联盟、CF…)
  • 计算机视觉算法、人脸识别、机器学习、深度学习、AR…
  • 程序(软件)的性能优化
  • 我们每天都在接触算法,以至于我们都没有意识到它的存在。
  • 学好算法,才能创造出更有意义的事物。

【liuyubobobo-算法与数据结构】第一章 课程概述_第1张图片

如何学算法

算法的学习曲线相对陡峭,是需要积累的。

学习算法有点像学习数学,不是很快就能看到效果的,但是,如果我们从最基础的地方开始积累,一点一点地向着自己的目标前进,相信我们最终都能体会到算法之美,进而在计算机科学这个伟大的领域大放异彩

课程简介

学习要求

  • 需要掌握最基础的编程语言知识

  • 编程语言:C++

算法其实是不依赖任何语言的,是和语言无关的。

算法是一种思想。

  • 了解数组、链表、堆、栈等线性结构

  • 对基本算法知识有常识性了解:如递归、遍历、算法复杂度…

学习路径

  • 第1步: 线性(排序)

  • 第2步: 树形结构

  • 第3步: 图形结构

学习方法

想要编写出代码实现出某个算法或数据结构。

重要的是拿出笔和纸等工具,来对其写写画画,想通想懂它们,理解它们背后的过程和背后的逻辑,彻底理解它们背后的算法思想

一旦把算法想明白了,编码实现它并不难。

白板编程考察的是大家算法思想的基本功。

数据结构的重要性

I will, in fact, claim that the difference between a bad programmer and a good one is whether he considers his code or his data structres more important. Bad programmers worry about the code. Good programmers worry about data structures and their relationships.
—— Linus Torvalds(creator of Linux)

优秀的programmer和平庸的programmer之间的区别:数据结构的使用。

算法和数据结构是不可分割的。

程序 = 数据结构 + 算法 (Algorithms + Data Structures = Programs)

面试中,很多问题看起来是算法问题,但其实本质上还是一个数据结构问题,考察的还是你数据结构的掌握程度。

当我们将数据结构的基础打牢之后,面对更加复杂更加精巧的算法问题时可能才会有思路。

算法思想

分治算法——归并排序、快速排序…

贪心算法——最小生成树…

动态规划——最短路径…

递归搜索——树形结构…

每个细分领域都是算法

不积跬步无以至千里

【liuyubobobo-算法与数据结构】第一章 课程概述_第2张图片

体会算法之美

Computer programming is an art, because it applies accumulated knowledge to the world, because it requires skill and ingenuity, and especially because it produces objects of beauty. A programmer who subconsciously views himself as an artist will enjoy what he does and will do it better.
——Donald Knuth

计算机编程本身是美的,这些美主要体现在使用精巧的合适的算法来解决相应的问题。

目标:计算机科学家、软件工程师、艺术家

参考

liuyubobobo: 算法与数据结构-综合提升 C++版.

课程代码仓库: 算法与数据结构-综合提升 C++版.


本文完,感谢您的关注支持!


你可能感兴趣的:(#,数据结构&算法,算法,数据结构)