「极简数据结构」课程

12,791 阅读5分钟

“极简数据结构”将通过简单明了的视频讲解,让学习者在最短时间内学会正确使用数据结构而不纠缠过多细节,迅速进入实战体验,并为后续深入学习“算法三部曲”(《算法导论》《算法设计指南》《算法》)打下良好的基础。

旧版视频已经全部更新完,新版已转到网易云课堂重新录制并连载,新旧两版共有800多人学习。视频都会像软件那样快速迭代,不断完善更新,并且提供完整的版本,将来会出纸质书版本。另外,我们还会不定期更新番外篇,讲解经典数据结构面试题。

课程链接:(study.163.com/course/intr…)

每讲视频基本都在20分钟以内,短小精悍,希望以不那么硬核的内容也能让大家体会到算法和数据结构之美。新版目录:

  • 预备知识
  1. Cornell笔记
  2. 开发环境
  3. 课程大纲
  • 第1章: 语言基础
  1. C++输入输出
  2. string的简单使用
  3. 引用
  4. 数组和向量
  5. 对角线问题
  6. 排序之王sort
  7. 二分查找算法
  8. 数组二分查找
  9. 向量二分查找
  10. 3n + 1问题
  • 第2章: 抽象之妙
  1. 抽象数据类型
  2. 线性查找
  3. 查找问题
  4. 初识集合
  5. 再谈集合
  6. 次序统计量
  7. 有序向量与无序向量
  8. 以集合描述算法
  9. STL容器一览
  • 第3章: 性能分析
  1. 时空之谜
  2. 运行时间
  3. 量级
  4. 渐近记号
  5. 常见运行时间
  6. 量级鸿沟
  7. 求和分析
  8. 抽象数据类型性能
  9. 数据结构选用
  • 第4章: 向量与链表
  1. 向量用法
  2. 容量之妙
  3. 自然数映射与下标
  4. 部分和
  5. 字符统计
  6. 初识链表
  7. 链表操作
  8. 结点链接
  9. 单链实例
  10. 就地逆置
  11. 连续放入
  • 第5章: 栈与队列
  1. 时间次序
  2. 进制转换
  3. 循环队列
  4. 基数排序
  5. 电话号码排序
  6. 括号匹配
  7. 迷宫问题
  8. DFS求解迷宫
  9. BFS求解迷宫
  • 第6章: 集合
  1. 二叉树
  2. 二叉树遍历
  3. 递归构造二叉树
  4. 二叉查找树
  5. 遍历结果重构二叉树
  6. 集合性能分析
  7. 迭代器遍历时间
  8. 不相交集
  9. 合并查找
  • 第7章: 字典
  1. 初识字典
  2. 字典用法
  3. 位向量
  4. 结链法
  5. 探查序列
  6. 开放式定址法
  7. 字典性能调优
  8. 自定义散列
  • 第8章: 映射
  1. 映射用法
  2. 双向映射
  3. 计数排序
  4. 转置
  5. 桶排序
  6. 直方图排序
  7. trie
  • 第9章: 排序
  1. 插入排序
  2. 两路归并
  3. 归并排序
  4. 排序下界
  5. 划分
  6. 快速排序
  7. 快速选择
  • 第10章: 优先级队列
  1. 响应优先
  2. 上浮操作
  3. 下沉操作
  4. 堆排序
  5. 建堆算法
  6. 离散事件仿真
  7. Huffman编码
  8. 多路归并
  • 番外篇

待定


旧版共80讲视频,目录如下:

  • 第1章:语言基础
  1. C++输入输出
  2. string的简单使用
  3. 数组和向量
  4. 对角线问题
  5. 数组和向量的排序
  6. 二分查找原理
  7. 数组二分查找
  8. 向量二分查找
  9. 3n + 1问题
  • 第2章:抽象之妙
  1. 抽象数据类型
  2. 查找问题的抽象数据类型视角
  3. 初识集合
  4. 次序统计量
  5. 有序向量与无序向量
  6. 以集合描述算法
  7. STL容器一览
  • 第3章:性能分析
  1. 时空之谜
  2. 程序运行时间
  3. 量级
  4. 常见运行时间
  5. 运行时间的差异
  6. 抽象数据类型的性能
  7. 抽象数据类型选用
  • 第4章:向量与链表
  1. 向量用法
  2. 容量之妙
  3. 自然数映射与下标
  4. 初识链表
  5. 链表操作
  6. 结点链接
  7. 单链实例
  8. 就地逆置
  9. 连续放入
  • 第5章:栈与队列
  1. 栈与队列
  2. 进制转换
  3. 循环队列
  4. 基数排序
  5. 电话号码排序
  6. 括号匹配
  7. 迷宫问题
  8. DFS求解迷宫
  9. BFS求解迷宫
  • 第6章:树/集合
  1. 二叉树
  2. 树的存储
  3. 二叉树遍历
  4. 二叉树递归构造
  5. 二叉查找树
  6. 遍历结果重构二叉树
  7. 集合性能分析
  8. 迭代器遍历时间
  9. 不相交集
  • 第7章:散列/字典
  1. 初识字典
  2. 字典用法
  3. 位向量与bool向量
  4. 结链法
  5. 探查序列
  6. 开放式定址法
  7. 字典性能调优
  8. 自定义散列
  • 第8章:键值映射
  1. 映射用法
  2. 双向映射
  3. 计数排序
  4. 转置
  5. 桶排序
  6. 直方图排序
  7. trie
  • 第9章:堆/优先级队列
  1. 响应优先
  2. 上浮操作
  3. 下沉操作
  4. 堆排序
  5. 建堆算法
  6. 离散事件仿真
  7. Huffman编码
  8. 多路归并
  • 第10章:排序
  1. 插入排序
  2. 两路归并
  3. 归并排序
  4. 排序下界
  5. 划分
  6. 快速排序
  7. 次序统计量

“极简数据结构”秉承现代数据结构教学理念,我们着眼于以抽象数据类型为纲,快速提升学习者的动手能力。为此,我们借助C++丰富而强悍的标准模板库STL,辅以简短的可执行代码展示常见数据结构的极致算法性能。为减轻学习负担,我们采用接近于Python的现代C++语法,使用一个最小化的C++语言子集,并从输入输出开始讲述,确保具备C语言知识的学习者能够无缝过渡,以最低基础入门。

我们以最传统但学习效果最好的书写形式讲解,但是配备了最潮的数字化设备:

  • iPad Pro 12.9”
  • Apple Pencil
  • Notability
  • Apogee HypeMic

全手写同步录制从而打造出完全不同的视听效果。 本系列课程适合采用Cornell笔记法:

Cornell笔记体系学算法