算法与数据结构:解决代码性能瓶颈的底层逻辑

如果你负责的系统随着数据量增加而响应变慢,或者在面试中被追问“为什么这里用 HashMap 而不用 List"感到无从回答,这门课能帮你补齐计算机科学的底层逻辑。很多职场代码之所以难维护,往往是因为忽略了数据结构本身的特性,导致后续优化成本极高。这门课不讲空洞的计算机理论,而是直接通过代码实战,让你理解不同算法在真实场景中的表现,解决“代码能跑但跑得太慢”的痛点。

学习门槛与核心路径规划

课程以 Java 为教学语言,因此建议使用者至少具备基础的 Java 语法知识,了解类、方法、循环及集合的基本用法。若连变量定义都不熟悉,建议先补充基础语法再开始。课程结构循序渐进,建议严格按照时间顺序学习:先掌握第 1 周的线性查找法,理解最基础的遍历逻辑;紧接着学习第 2 周的选择与插入排序,重点对比两种排序策略在不同数据规模下的效率差异。这两个章节是构建后续复杂算法能力的基石,切勿跳跃式学习。

学完独立产出与资料配合策略

学完本系列内容后,你应能独立手写常见的查找与排序算法,并能熟练分析代码的时间复杂度,从而在开发初期预判潜在的性能风险。资料包中的视频是讲解核心思路,但真正的能力提升在于动手。建议采用“暂停 - 复现 - 调优”的学习法:观看视频讲解后,立刻暂停并独立编写代码实现;随后重点研读作业分析与性能测试部分,尝试用不同的实现思路(如优化插入排序)来降低复杂度。通过对比不同版本代码的运行时间,你会深刻理解算法优化的实际意义,而非死记硬背结论。这套组合拳能让你从“调包侠”转变为能掌控代码质量的开发者。

课程目录

第 1 部分1 条
  • 第1周 线性查找法
第1章欢迎大家来到算法与数据结构的世界5 集
  • 1-1 欢迎大家来到算法与数据结构的世界.mp4 52.95M
  • 1-2 学习算法和数据结构到底有没有用?.mp4 133.77M
  • 1-3 更多课程学习注意事项.mp4 25.01M
  • 1-4 课程编程环境的搭建.mp4 71.25M
  • 1-5 JDK 的国内下载链接 .pdf 130.00kb
第2章线性查找法10 集
  • 2-1 什么是算法.mp4 29.49M
  • 2-10 本章小结.mp4 4.13M
  • 2-2 最简单的算法:线性查找法.mp4 8.73M
  • 2-3 实现线性查找法.mp4 97.30M
  • 2-4 使用泛型.mp4 71.71M
  • 2-5 使用自定义类测试我们的算法.mp4 76.84M
  • 2-6 循环不变量.mp4 41.69M
  • 2-7 简单的复杂度分析.mp4 56.82M
  • 2-8 常见的时间复杂度.mp4 47.33M
  • 2-9 测试算法性能.mp4 83.84M
  • 第2周 排序基础
第1章选择排序法7 集
  • 1-1 最简单的排序算法:选择排序法.mp4 30.23M
  • 1-2 实现选择排序法.mp4 65.34M
  • 1-3 使用带约束的泛型.mp4 41.11M
  • 1-4 使用 Comparable 接口.mp4 74.40M
  • 1-5 选择排序法的复杂度分析.mp4 204.13M
  • 1-6 一个作业:换个角度实现选择排序法.mp4 4.84M
  • 1-7 换个角度实现选择排序法,作业分析.pdf 109.92kb
第2章插入排序法7 集
  • 2-1 插入排序法.mp4 28.51M
  • 2-2 实现插入排序法.mp4 80.40M
  • 2-3 插入排序法的一个小优化.mp4 110.61M
  • 2-4 插入排序法的特性.mp4 77.24M
  • 2-5 一个作业:换个角度实现插入排序法.mp4 4.43M
  • 2-6 换个角度实现插入排序法,作业分析.jpg 462.23kb
  • 2-7 本章小结.mp4 6.58M
  • 第3周 数据结构基础:动态数组,栈和队列
第1章数据结构基础:不要小瞧数组10 集
  • 1-1 为什么要学习数据结构.mp4 40.06M
  • 1-10 均摊复杂度和防止复杂度的震荡.mp4 47.87M
  • 1-2 使用 Java 中的数组.mp4 32.15M
  • 1-3 二次封装属于我们自己的数组.mp4 51.01M
  • 1-4 向数组中添加元素.mp4 98.19M
  • 1-5 数组中查询元素和修改元素.mp4 58.54M
  • 1-6 数组中的包含,搜索和删除.mp4 93.74M
  • 1-7 泛型类.mp4 134.91M
  • 1-8 动态数组.mp4 95.28M
  • 1-9 简单的复杂度分析.mp4 25.77M
第2章栈和队列14 集
  • 2-1 栈和栈的应用:撤销操作和系统栈.mp4 21.91M
  • 2-10 作业解析:不浪费一个空间的循环队列.jpg 426.86kb
  • 2-11 作业解析:没有 size 成员变量的循环队列.jpg 451.08kb
  • 2-12 作业:双端队列.mp4 4.52M
  • 2-13 作业解析:实现双端队列.jpg 440.68kb
  • 2-14 Java 程序员,别用 Stack.jpg 552.92kb
  • 2-2 栈的基本实现.mp4 118.68M
  • 2-3 栈的另一个应用:括号匹配.mp4 94.81M
  • 2-4 关于 Leetcode 的更多说明.mp4 96.20M
  • 2-5 数组队列.mp4 99.35M
  • 2-6 循环队列.mp4 44.43M
  • 2-7 循环队列的实现.mp4 98.43M
  • 2-8 数组队列和循环队列的比较.mp4 83.82M
  • 2-9 作业:换个方式实现队列?.mp4 2.91M
第3章习题补充:栈和队列其他习题25 集
  • 3-1 作业:用栈实现队列和用队列实现栈.mp4 59.40M
  • 3-2 作业解析:用队列实现栈.jpg 519.93kb
  • 3-3 作业解析:用栈实现队列.jpg 419.73kb
  • 3-4 更多栈和队列的问题推荐.jpg 182.94kb
  • 第4周 动态数据结构基础:链表
  • 1-1 什么是链表.mp4 26.36M
  • 1-2 在链表中添加元素.mp4 42.82M
  • 1-3 使用链表的虚拟头结点.mp4 18.81M
  • 1-4 链表的遍历,查询和修改.mp4 32.67M
  • 1-5 从链表中删除元素.mp4 30.70M
  • 1-6 使用链表实现栈.mp4 30.54M
  • 1-7 带有尾指针的链表:使用链表实现队列.mp4 54.67M
  • 1-8 图文节-慕课网就业班.pdf 171.17kb
  • 2-1 Leetcode中和链表相关的问题.mp4 43.40M
  • 2-10 更多和链表相关的话题.mp4 14.49M
  • 2-2 测试自己的Leetcode链表代码.mp4 25.52M
  • 2-3 递归基础与递归的宏观语意.mp4 29.91M
  • 2-4 链表与递归.mp4 33.27M
  • 2-5 递归运行的机制:递归的微观解读.mp4 41.74M
  • 2-6 递归算法的调试.mp4 42.27M
  • 2-7 作业:链表的递归实现.mp4 2.44M
  • 2-9 链表添加元素递归方法的常见问题解析.mp4 32.83M
  • 3-1 链表最经典的问题:翻转链表.mp4 16.23M
  • 3-2 翻转链表的非递归实现.mp4 18.05M
  • 3-3 翻转链表的递归实现.mp4 23.86M
  • 3-4 更多链表问题推荐.mp4 16.48M
  • 第5周 归并排序法
第1章归并排序法8 集
  • 1-1 归并排序法的原理.mp4 23.66M
  • 1-2 归并过程.mp4 27.59M
  • 1-3 实现归并过程.mp4 88.76M
  • 1-4 实现归并排序法.mp4 69.32M
  • 1-5 归并排序法的微观解读.mp4 77.46M
  • 1-6 作业:在程序上调试跟踪归并排序法.mp4 26.03M
  • 1-7 在程序上调试跟踪归并排序法.jpg 512.85kb
  • 1-8 归并排序法的复杂度分析.mp4 68.63M
第2章更多关于归并排序法10 集
  • 2-1 在有序数组,让归并排序法成为 O(n) 算法.mp4 51.90M
  • 2-10 归并排序法小结.mp4 15.01M
  • 2-2 使用插入排序法优化归并排序法.mp4 71.09M
  • 2-3 归并排序法的内存操作优化.mp4 74.06M
  • 2-4 自底向上的归并排序.mp4 26.26M
  • 2-5 实现自底向上的归并排序.mp4 95.71M
  • 2-6 作业:使用插入排序法优化自底向上的归并排序.mp4 1.99M
  • 2-7 使用插入排序法,优化自底向上的归并排序.jpg 590.04kb
  • 2-8 数组的逆序对数量问题.mp4 26.32M
  • 2-9 快速求解数组的逆序对数量.mp4 92.61M
  • 第6周 快速排序法
第1章快速排序法10 集
  • 1-1 快速排序法的原理.mp4 28.24M
  • 1-10 作业解析:用算法生成一个特殊的测试用例.jpg 646.06kb
  • 1-2 Partition.mp4 28.38M
  • 1-3 第一版快速排序法.mp4 95.12M
  • 1-4 作业:深入理解快速排序的递归过程.mp4 6.09M
  • 1-5 作业解析:使用插入排序法优化快速排序.jpg 705.30kb
  • 1-6 第一版快速排序法的问题.mp4 33.75M
  • 1-7 为快速排序添加随机化.mp4 73.90M
  • 1-8 两个作业:深入玩转快速排序.mp4 21.55M
  • 1-9 作业解析:只创建一个 Random 类.jpg 601.04kb
第2章更多关于快速排序法12 集
  • 2-1 快速排序算法还有问题.mp4 27.80M
  • 2-10 和 Select K 相关的三个问题.jpg 478.97kb
  • 2-11 快速排序小结.mp4 16.16M
  • 2-2 双路快速排序法.mp4 26.66M
  • 2-3 实现双路快速排序法.mp4 73.49M
  • 2-4 快速排序算法的复杂度分析.mp4 29.97M
  • 2-5 三路快速排序法.mp4 26.10M
  • 2-6 实现三路快速排序法.mp4 92.42M
  • 2-7 作业:一道面试问题,Sort Colors.mp4 17.38M
  • 2-8 Leetcode 75:Sort Colors.jpg 618.55kb
  • 2-9 作业:Select K 问题.mp4 32.73M
  • 算法与数据结构体系课/
  • 1-1 欢迎大家来到算法与数据结构的世界.mp.mp4