首页 体系课 算法与数据结构
算法与数据结构
慕课网算法名师Liuyubobobo,5年集大成之作
满足你从开始学编程到工作5年内的几乎所有算法学习需求
16 课程内容
30 个月 教学服务期限
60 小时 视频时长
2584 学习人数
100% 好评度
16 课程内容
30 个月 教学服务期限
70000 手敲代码
2 企业及项目
16+ 实操案例
2584 学习人数

优惠价 ¥999.00

7天未学可退 ¥1200

加购物车 立即购买

从0到工作5年,面试、进大厂、搭建知识体系、拓展技术上限
满足你对算法的大部分所需

为什么学算法已经是一个不应该问的问题了,从功利角度,大厂必考你必学;从长久角度,算法将决定你的技术上限

BoBo老师
5年磨课
萃取多门算法
课程的精华
从小白到"小牛"
小白友好型的
算法体系课程
有趣动画式讲解
让抽象的算法
生动形象
大量的算法
优化和真实的
性能测试
建立属于你自己
的算法和数据
结构库
波波老师5年慕课网算法
授课经验的集大成之作
同类课程中优势突出
从基础知识到知识体系
在非智能算法领域
你几乎已经不会再有问题
全程动画展示
精心制作的 ppt 动画
让你更加容易地
理解算法的流程
算法是需要不断优化的
带你更能实际看到不同算法
优化后的真实效果
将常用的算法与数据结构
搭建成一个“随取随用,
随用随查”的库
面向基础,从0开始,只需掌握Java基础
让波波老师带你成为算法与数据结构“小牛”

无论从知识体系还是实际应用上,这都是一门值得永久收藏的课程

能把算法与数据结构讲得深入浅出,讲得能直接在实际工作应用,5年专注算法教育的波波老师值得信赖

16+类
算法
16+
数据结构
10000+行
手写代码
20+
作业
20+
随课文档
算法基础知识
算法拓展与对比
算法实践
算法优化
采用基础——应用——优化的方式讲解,让你学到能实际应用的“算法与数据结构”

16周暴力算法集训,吃透这些,你就能自动建立“算法与数据结构”体系

包括但不限于以下知识点,详见课程内容安排

1
查找基础
线性查找法
创建泛型算法
循环不变量
算法性能测试
时间复杂度分析
2
排序基础
选择排序法
插入排序法
冒泡排序法
不同排序算法性能比较
O(n^2) 排序算法的作用
3
不要小瞧数组
什么是动态数组
数据结构的封装
数组的扩容和缩容
均摊时间复杂度分析
4
栈和队列
栈和栈的应用
队列和队列的应用
接口设计和抽象数据模型
循环队列的实现
双端队列的实现
5
动态数据
结构基础:链表
理解动态数据结构
玩转指针(引用)
使用虚拟头结点
借助链表理解递归
递归算法的调试和跟踪
6
归并排序
理解分治算法
深入理解递归机制
归并排序算法的优化
自顶向下和自底向上
递归算法的复杂度分析
快速求解逆序对个数
7
快速排序和
希尔排序
四个版本快速排序
在算法中使用随机
希尔排序算法原理
算法设计中的“超参数”
稳定排序
基于比较排序大总结
8
二分查找法
从二分查找看边界定义
如何书写正确的程序
二分查找浮点数
上界查询和下界查询
二分查找的模板
二分查找的大量应用举例
9
二分搜索树
深入理解树结构
树的前中后序遍历
树的层序遍历
DFS 和 BFS
集合和映射
10
堆和优先队列
堆的基本原理
使用数组表示树结构
heapify
堆排序
从堆到优先队列
更广义地理解队列
11
AVL树和红黑树
理解平衡树
左旋转右旋转维护平衡
手撕 AVL 树
2-3树和红黑树的等价性
手撕红黑树
12
线段树
并查集和字典树
线段树和区间查询问题
并查集解决集合查询问题
六个版本并查集逐步优化
路径压缩
字典树和模式匹配基础
13
哈希表和SQRT分解
哈希的基本思想
哈希函数的定义
链地址法
分块思想的应用
SQRT分解解决区间问题
14
非比较排序
计数排序法
桶排序
基数排序法
LSD 和 MSD
非比较排序总结
15
模式匹配算法
深入理解 KMP 算法
KMP 中的 LPS 数组
KMP 算法和状态机
状态机的基础应用
RK 算法
16
更多深入内容
B类树和数据库
外存相关算法和数据结构
在算法中使用随机
Knuth 洗牌算法
蓄水池抽样
更广阔的算法世界

内含大量的算法实践、对比、优化,给你是思想与实用并重的算法能力

包括但不限于以下示例

算法是底层能力,在以下这些领域,算法都将倍增你的职业竞争力

以前,算法藏在技术后;现在,算法本身就是技术,所谓程序就是:算法+数据结构==程序

操作系统
数据库/分布式存储
文件压缩
任务调度、内存管理、文件管理
数据存储方式、SQL解析
压缩算法
图形学/图像学
人工智能
游戏引擎
图形渲染、人脸识别
推荐算法、搜索引擎
寻路算法、游戏智能

生动“动画式”讲解方式,让抽象的算法也能“一目了然”

有别于传统的算法课程,课程不按算法类别顺序讲解,将使用便于学习者理解的顺序进行讲解

示例一 : 左旋转
示例二 : 选择排序法
示例三 : QuickUnion

除了出色的视频内容,这里有伴你整个职业生涯的“成长社区”

学习时你能在这里获取答案,工作后你能在这里解决难题

由于课程类型与教学目标不同,学习服务会有不同,具体服务可在线咨询
问答专区
作业专区
笔记专区
资料专区
编程遇难点,名师来指点;疑难汇总一键查看,海量问答覆盖全面
多方位知识面,分层巩固吸收;学练测一体,一对一项目点评
脱离时空限制,随记随查很方便;总结课程重点,分享提升代码经验
横向拓展,超全配套教辅资源;纵向延伸,源码开放更助知识理解
了解更多

课程大纲及学习周期安排 (详细版)

阶段一: 算法与数据结构基础
  • 第1周
  • 第2周
  • 第3周
  • 第4周
线性查找法

开课第一周,我们将学习最简单的算法:线性查找法。在学习这样一个最简单的算法的过程中,我们也将接触诸多概念:循环不变量,复杂度分析,如何使用泛型让我们的算法更通用,以及简单的性能测试方式。

课程安排:
  1. 1、什么是算法
  2. 2、为什么要学习算法和数据结构
  3. 3、线性查找算法
  4. 4、使用泛型让算法更通用
  5. 5、自定义类测试算法
  6. 6、循环不变量
  7. 7、复杂度分析
  8. 8、常见算法复杂度举例
排序基础

在这一周,我们将接触两个最基础的排序算法:选择排序法和插入排序法。虽然这两个排序算法很简单,但在这一周,我们将巩固我们之前学习的知识,将循环不变量的思路和复杂度分析应用在这些算法中。

课程安排:
  1. 1、选择排序法
  2. 2、原地排序
  3. 3、使用泛型约束
  4. 4、Comparable 接口的使用
  5. 5、插入排序法
  6. 6、插入排序法的优化
  7. 7、排序算法的测试数据生成
  8. 8、排序算法的性能测试和比较
数据结构基础:动态数组,栈和队列

这一周,我们开始接触最基础的数据结构:线性数据结构。这些数据结构看似简单,但是通过对他们的学习,会接触很多新的概念,包括对静态数组的扩容和缩容;均摊复杂度分析;数据结构的接口设计;循环队列,等等。

课程安排:
  1. 1、理解静态数组和动态数组
  2. 2、如何封装属于自己的数据结构
  3. 3、动态数组的扩容和缩容
  4. 4、均摊复杂度分析
  5. 5、数据结构的接口设计
  6. 6、栈和栈的应用
  7. 7、队列和队列的应用
  8. 8、队列的优化:循环队列
  9. 9、双端队列
  10. 10、Java 语言中的设计问题讨论
动态数据结构基础:链表

在这一周,我们将接触最基础的动态数据结构:链表。在学习链表的过程中,我们将更深入透彻地理解程序设计中“引用”的概念,更会开始接触程序设计中最常用的一种逻辑搭建方式:递归

课程安排:
  1. 1、什么是链表
  2. 2、链表的更删改查
  3. 3、抽象数据接口
  4. 4、使用链表实现栈和队列
  5. 5、链表的性能问题
  6. 6、链表天然的递归结构
  7. 7、通过链表深入理解递归
  8. 8、经典链表相关的面试问题
阶段二: 递归无处不在
  • 第5周
  • 第6周
  • 第7周
  • 第8周
归并排序法

我们将学习第一个高级排序算法:归并排序法。将看到更通用的递归算法的设计方法,理解自顶向下和自底向上,理解分治。看到归并排序法的优化,接触 O(nlogn) 这一复杂度的分析方式,归并排序思想的实际应用

课程安排:
  1. 1、归并排序的算法思想
  2. 2、归并过程
  3. 3、复杂的递归算法运行机制解读
  4. 4、归并排序法的复杂度分析
  5. 5、归并排序法的优化
  6. 6、自顶向下和自底向上
  7. 7、使用归并排序法求逆序数对
快速排序法

本周,我们将学习第二个高级排序算法:快速排序法。将逐渐优化,完成四个版本的快速排序算法,并看到算法对不同数据表现出的差异。同时,也会简单介绍面对随机算法,我们的复杂度分析有何不同

课程安排:
  1. 1、快速排序算法的基本思想
  2. 2、随机化的快速排序算法
  3. 3、二路快排
  4. 4、三路快排
  5. 5、不同快速排序算法的性能比较
  6. 6、快排的复杂度分析
  7. 7、快排思想的实际应用
二分查找法

我们将学一个看似基础但“变化多端”的算法:二分搜索法 我们将探索基础二分搜索算法的递归和非递归写法理解循环不变量和如何处理边界问题等等,很多算法面试甚至竞赛问题,本质都是二分搜索问题

课程安排:
  1. 1.二分搜索法的基本思想
  2. 2.二分搜索的递归实现
  3. 3.二分搜索的非递归实现
  4. 4.深刻理解程序设计中的边界问题
  5. 5.二分搜索在浮点数据中的应用
  6. 6.使用二分搜索解决寻界问题
  7. 7.避免死循环
  8. 8.二分搜索的模板
  9. 9.使用二分搜索法的思路解决实际问题
二分搜索树

我们学习第一个基础树结构:二分搜索树。在学习二分搜索树的过程中,我们将大量使用递归,深入理解递归。同时我们会学习经典的数据遍历方式:DFS 和 BFS。还会接触两个最为常见的抽象数据类型:集合和映射

课程安排:
  1. 1.什么是树结构
  2. 2.在数据结构中使用递归
  3. 3.深度优先遍历
  4. 4.广度优先遍历
  5. 5.Hubbard Deletion
  6. 6.抽象数据结构:集合
  7. 7.抽象数据结构:映射
  8. 8.集合和映射的经典应用
阶段三: 算法与数据结构进阶
  • 第9周
  • 第10周
  • 第11周
  • 第12周
  • 第13周
堆,优先队列和堆排序

我们将学习一个特殊的树结构:堆。学习后我们将看到数组也可以表示树结构。同时我们还会引出另外一种高级排序算法:堆排序。最后,我们将使用堆组建一种应用极其广泛的重要数据结构:优先队列,并拓展对队列的认识

课程安排:
  1. 1、数组也可以表示树结构
  2. 2、堆的基本操作
  3. 3、Sift Up 和 Sift Down
  4. 4、Heapify
  5. 5、堆排序
  6. 6、优先队列
  7. 7、优先队列的应用
  8. 8、广义队列
冒泡排序,希尔排序和排序算法大总结

我们将再学习两个排序算法:冒泡排序和希尔排序法。其中希尔排序法是一种重要的排序方法,插入排序法的优势如何被应用乃至改造成一个全新的高效算法。同时进行一个大总结更加系统地梳理和排序算法相关的系列概念。

课程安排:
  1. 1、冒泡排序的基本思想
  2. 2、冒泡排序的优化
  3. 3、希尔排序的基本思想
  4. 4、希尔排序的优化
  5. 5、什么是增量序列
  6. 6、基于比较的排序算法总结
  7. 7、稳定排序
线段树,Trie 和并查集

我们将学习三种应用在不同场合的树结构:线段树,Trie 和并查集。学习后将看到不同的数据结构拥有解决不同问题的能力,了解如何根据问题不同的问题,选择合适的数据结构。

课程安排:
  1. 1、线段树的基本操作
  2. 2、区间查询问题
  3. 3、Trie 树的基本操作
  4. 4、使用 Trie 解决模式匹配问题
  5. 5、并查集的基本原理
  6. 6、不断优化六个版本的并查集
  7. 7、并查集的应用
AVL 树和红黑树

我们将学习两种高级的二分搜索树结构:AVL 树和红黑树。理解二分搜索树的局限性,接触平衡树的概念。我们还会学习一种树结构:2-3 树,看到 2-3 树和红黑树的等价性也是后续我们学习 B 类树的基础

课程安排:
  1. 1、什么是平衡树
  2. 2、左旋转和右旋转
  3. 3、AVL 树
  4. 4、2-3 树
  5. 5、2-3 树和红黑树的等价性
  6. 6、红黑树保持平衡的基本操作
  7. 7、红黑树的添加操作实现
  8. 8、二分搜索树,AVL 树和红黑树的性能对比
  9. 9、词频统计应用
  10. 10、使用真实数据测试不同底层封装的集合和映射结构
哈希表和 SQRT 分解

我们将首先学习哈希表这种重要的数据结构深入理解哈希的概念,并使用链地址法设计出属于我们自己的哈希表结构。同时将学习到分块这一概念并接触另外一个经典的使用分块的思想解决区间问题的数据结构:SQRT 分解

课程安排:
  1. 1、哈希的基本思想
  2. 2、哈希函数的设计
  3. 3、链地址法
  4. 4、Java 中的哈希表
  5. 5、分块思想
  6. 6、SQRT 分解
  7. 7、使用 SQRT 分解处理区间问题
阶段四: 更广阔的算法和数据结构世界
  • 第14周
  • 第15周
  • 第16周
非比较排序

在这一周,我们将看到:排序算法不一定基于比较,不进行元素的比较也可以对某类特殊的对象进行排序,即非比较排序算法。我们将学习计数排序法,桶排序法和基数排序法。

课程安排:
  1. 1、非比较排序
  2. 2、计数排序法
  3. 3、桶排序法
  4. 4、基数排序法
  5. 5、LSD 和 MSD
  6. 6、非比较排序的性能测试
  7. 7、非比较排序和比较排序的性能对比
模式匹配

我们将学习一类重要的算法:模式匹配。从基本的模式匹配出发,引出大名鼎鼎的 KMP 算法。对于 KMP 算法,我们会学习两种实现方式,并接触到计算机领域的一个重要的概念:状态机。

课程安排:
  1. 1.朴素模式匹配算法
  2. 2.KMP 算法
  3. 3.KMP 算法中的 LPS 数组
  4. 4.状态机
  5. 5.状态机的其他应用
  6. 6.滚动哈希
  7. 7.RK 算法
  8. 8.RK 算法的经典问题
随机算法,外存算法和更多

最后一周,我们将看到更广阔的算法和数据结构的世界。将探索随机算法的世界,学习 Knuth 洗牌算法和蓄水池抽样算法。探索外存算法和数据结构的世界,学习 B 类树等,以及更多在外存中处理问题的方式和思想

课程安排:
  1. 1.随机算法
  2. 2.Knuth 洗牌算法
  3. 3.Knuth 洗牌算法的应用
  4. 4.蓄水池抽样算法
  5. 5.B 类树
  6. 6.外排序
  7. 7.更多外存算法和数据结构
  8. 8.大规模数据处理方式
  9. 9.更广阔的算法和数据结构
算法大牛
Liuyubobobo
不谦虚的讲,在慕课网学过算法课程的同学没有不知道波波老师的,少年时,他曾是ACM亚洲区的获奖者,这已是很多人难以达到的高度,现在,他是公司创始人,从学生到创业者,多年来他未曾离开技术,尤其专注于算法,在慕课网5年的授课生涯中,他几乎获得了全部学员的好评,圈粉无数,如果你想解决自己的算法问题,他精心打磨的这门课程几乎可以解决非算法专业工程师5年内的所有问题,如果你想结识这样一位大牛,那课程就是你们最好的连接。
常见问题
课程特色
知识体系
学习收获
学习服务
课程大纲
返回顶部

学习咨询

选课、学习遇到问题?
扫码添加指导老师 1V1 帮助你!

扫码加顾问老师 立即咨询

意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师