最近找实习,经过了很多次面试和笔试,基本每次都有数据结构的题出现,这门课对于学习任何语言,都是不可或缺的。

幸运的是💩,学校对我这一届没开这门课,所以开始找课程学习,最后选择了郝斌老师的课。自勉。

视频链接:https://www.bilibili.com/video/BV11s41167h6

代码仓库:暂时留空


定义

我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中, 以及在此基础上为实现某个功能(比如查找某个元素, 删除某个元素, 对所有元素进行排序)而执行的相应操作, 这个相应的操作也叫做算法。

举例说明:储存15个学生的信息时, 可以直接使用数组来使用, 但是当需要储存1w个学生的信息时候, 内存中没有这么多连续空间可以被使用,这时候就需要用到链表, 即链表的优点是将内存中不连续的零散空间利用起来

如果遇到人事结构,有上属和下属的关系,可以使用来实现。

数据结构 = 个体 + 个体的关系

算法 = 对存储数据的操作

算法

解题的方法和步骤

衡量算法的标准

  1. 时间复杂度:大概程序要执行的次数,而非执行的时间
  2. 空间复杂度:算法执行过程中大概所占用的最大内存
  3. 难易程度
  4. 健壮性

数据结构的地位

程序 = 数据的存储 + 数据的操作 + 可以被计算机执行的语言

高级程序员 = 数据结构 + 算法 + 数学思想 + 流程控制 +逻辑思维

学习目标

数据结构

  1. 基础数据结构(典型数据结构):栈,队列,树,链表
  2. 排序:冒泡,选择,快速,归并
  3. 查找/搜索:折半查找
  4. 高级数据结构

算法

  1. 贪心算法
  2. 分治法
  3. 动态规划
  4. 回溯法
说点什么
支持Markdown语法
好耶,沙发还空着ヾ(≧▽≦*)o
Loading...