第9周
堆,优先队列和堆排序
我们将学习一个特殊的树结构:堆。学习后我们将看到数组也可以表示树结构。同时我们还会引出另外一种高级排序算法:堆排序。最后,我们将使用堆组建一种应用极其广泛的重要数据结构:优先队列,并拓展对队列的认识
课程安排:
1、数组也可以表示树结构
2、堆的基本操作
3、Sift Up 和 Sift Down
4、Heapify
5、堆排序
6、优先队列
7、优先队列的应用
8、广义队列
第10周
冒泡排序,希尔排序和排序算法大总结
我们将再学习两个排序算法:冒泡排序和希尔排序法。其中希尔排序法是一种重要的排序方法,插入排序法的优势如何被应用乃至改造成一个全新的高效算法。同时进行一个大总结更加系统地梳理和排序算法相关的系列概念。
课程安排:
1、冒泡排序的基本思想
2、冒泡排序的优化
3、希尔排序的基本思想
4、希尔排序的优化
5、什么是增量序列
6、基于比较的排序算法总结
7、稳定排序
第11周
线段树,Trie 和并查集
我们将学习三种应用在不同场合的树结构:线段树,Trie 和并查集。学习后将看到不同的数据结构拥有解决不同问题的能力,了解如何根据问题不同的问题,选择合适的数据结构。
课程安排:
1、线段树的基本操作
2、区间查询问题
3、Trie 树的基本操作
4、使用 Trie 解决模式匹配问题
5、并查集的基本原理
6、不断优化六个版本的并查集
7、并查集的应用
第12周
AVL 树和红黑树
我们将学习两种高级的二分搜索树结构:AVL 树和红黑树。理解二分搜索树的局限性,接触平衡树的概念。我们还会学习一种树结构:2-3 树,看到 2-3 树和红黑树的等价性也是后续我们学习 B 类树的基础
课程安排:
1、什么是平衡树
2、左旋转和右旋转
3、AVL 树
4、2-3 树
5、2-3 树和红黑树的等价性
6、红黑树保持平衡的基本操作
7、红黑树的添加操作实现
8、二分搜索树,AVL 树和红黑树的性能对比
9、词频统计应用
10、使用真实数据测试不同底层封装的集合和映射结构
第13周
哈希表和 SQRT 分解
我们将首先学习哈希表这种重要的数据结构深入理解哈希的概念,并使用链地址法设计出属于我们自己的哈希表结构。同时将学习到分块这一概念并接触另外一个经典的使用分块的思想解决区间问题的数据结构:SQRT 分解
课程安排:
1、哈希的基本思想
2、哈希函数的设计
3、链地址法
4、Java 中的哈希表
5、分块思想
6、SQRT 分解
7、使用 SQRT 分解处理区间问题