999.00 1200 优惠价

7天可退款

服务
系统学习
16周
教学服务
30个月
教学模式
学练一体化
课程证书
通过得证书

课程大纲及学习周期安排

坚持学习的路上,我们为你画好成长路标

阶段一:算法与数据结构基础

  • 第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.更广阔的算法和数据结构

评价 好评

  • "这是一门值得永久收藏的课程" 极力推荐的理由 1.内容通俗易懂---听完有一种算法也不过如此嘛, 再一细想, 其实是因为波波老师精确的语言表述和示例一直引导我们行驶在一条高速路上 2.由浅入深,环环相扣---最简单的数组开始,到构建复杂的数据结构没有一节脱节, 每一节都能看到波波老师对课程的用心编排 3.数据结构与数据结构之间不是孤立的---从细节到宏观,充分展现了数据结构与算法的魅力

  • 下定决心在慕课上买体系课程,没别的,因为自身学历和能力不足,很多基础知识,学校都没有教,比如算法与数据结构这些。尽管网上的一些资源丰富,但也很多都良莠不齐。 系统的学习一下基础知识,感觉还是很有必要的,bobo老师讲的非常不错,我是从零基础开始学(当然Java还是会的),也感觉能跟上,课程的逻辑清晰,浅显易懂。 感谢bobo老师和慕课网,能给我们带来这么优质的学习资源,希望能越来越好。彼此加油:)

  • 从非常基础的地方开始讲解,循序渐进,由浅入深,比直接在网上找到某个算法的最终代码去研究学到的更多。而且算法原理的动画做得非常好,基本上老师的动画原理讲完我就可以实现了。不一定非要是java的,我是前端,用js实现也是一样的。 唯一的缺点,我可太穷了,课程太贵了,但是值得拥有。

预售规则

1. 定金支付成功后,可在“我的订单”-“未支付”栏查看所要支付尾款的订单。
2. 尾款支付开启后,请在规定时间内支付尾款,若超出尾款支付时间,订单将自动关闭。请关注短信、慕课网平台及慕课网微信号等渠道推送的提醒消息。
3. 定金可在课程原价基础上抵扣页面显示金额,具体数额及计算方式见详情页。
4. 已支付定金但未在规定时间支付尾款的用户,定金不可退。
5. 如您对预售活动有其它疑问,请联系客服:kf@imooc.com。