
Java课程-数据结构和算法
- 课程介绍
- 课程讲师
- 课程大纲
- 购买本课
- 学员评分
尚硅谷Java数据结构与java算法(Java数据结构与算法)
推荐理由
1、课程深入,非蜻蜓点水。
2、课程成体系,非星星点灯。
3、高效而愉快的学习。
4、数据结构和算法很重要,但是相对困难,该视频已经算是通俗易懂了。
5、采用应用场景->数据结构或算法->剖析原理->分析实现步骤(图解)->代码实现 的步骤讲解。 [比如:八皇后问题和动态规划算法]
6、课程目标:让大家掌握本质, 到达能在工作中灵活运用解决实际问题和优化程序的目的。
视频简介
视频内容
本教程是使用Java来讲解数据结构和算法,考虑到数据结构和算法较难,授课采用图解加算法游戏的方式。内容包括: 稀疏数组、单向队列、环形队列、单向链表、双向链表、环形链表、约瑟夫问题、栈、前缀、中缀、后缀表达式、中缀表达式转换为后缀表达式、递归与回溯、迷宫问题、八皇后问题、算法的时间复杂度、冒泡排序、选择排序、插入排序、快速排序、归并排序、希尔排序、基数排序(桶排序)、堆排序、排序速度分析、二分查找、插值查找、斐波那契查找、散列、哈希表、二叉树、二叉树与数组转换、二叉排序树(BST)、AVL树、线索二叉树、赫夫曼树、赫夫曼编码、多路查找树(B树B+树和B*树)、图、图的DFS算法和BFS、程序员常用10大算法、二分查找算法(非递归)、分治算法、动态规划算法、KMP算法、贪心算法、普里姆算法、克鲁斯卡尔算法、迪杰斯特拉算法、弗洛伊德算法马踏棋盘算法。
下面展示大纲目录和部分内容:
还有图解:
第1章 内容介绍和授课方式
1.1 数据结构和算法内容介绍
1.1.1 先看几个经典的算法面试题
1.1.2 数据结构和算法的重要性
1.1.3 本套数据结构和算法内容介绍
1.1.4 课程亮点和授课方
第2章 数据结构和算法概
2.1.1 数据结构和算法的关系
2.2 看几个实际编程中遇到的问题
2.2.1 问题一 字符串替换问题
2.2.2 一个五子棋程
2.2.3 约瑟夫(Josephu)问题(丢手帕问题)
2.2.4 其他常见算法问题
2.3 线性结构和非线性结构
2.3.1 线性结构
2.3.2 非线性结构
第3章 稀疏数组和队列
3.1 稀疏SPARSEARRAY数组
3.1.1 先看一个实际的需求
3.1.2 基本介绍
3.1.3 应用实例
3.1.4 课后练习
3.2 队列
3.2.1 队列的一个使用场景.
3.2.2 队列介绍.
3.2.3 数组模拟队列思路.
3.2.4 数组模拟环形队列.
第4章 链表
4.1 链表(LINKED LIsT)介绍
4.2 单链表的应用实例
4.3 单链表面试题(新浪、百度、腾讯).
4.4 双向链表应用实例
4.4.1 双向链表的操作分析和实现.
4.4.2 课堂作业和思路提示
4.5 单向环形链表应用场景.
4.6 单向环形链表介绍.
4.7 JOSEPHU问题.
4.8 JOSEPHU问题的代码实现.
第5章 栈
5.1 栈的一个实际需求.
5.2 栈的介绍.
5.3 栈的应用场景
5.4 栈的快速入门.
5.5 栈实现综合计算器(中缀表达式).
5.6 逆波兰计算器
5.7 中缀表达式转换为后缀表达式,
5.7.1 具体步骤如下:
5.7.2 举例说明:
5.7.3 代码实现中缀表达式转为后缀表达式
5.8 逆波兰计算器完整版
5.8.1 完整版的逆波兰计算器,功能包括
第6章 递归.
6.1 递归应用场景.
6.2 递归的概念... ...
6.3 递归调用机制.
6.4 递归能解决什么样的问题
6.5 递归需要遵守的重要规则
6.6 递归-迷宫问题.
6.6.1 迷宫问题
6.6.2 代码实现..
6.6.3 对迷宫问题的讨论.
6.7 递归-八皇后问题(回溯算法).
6.7.1 八皇后问题介绍.
6.7.2 八皇后问题算法思路分析.
6.7.3 八皇后问题算法代码实现.
第7章 排序算法.
7.1 排序算法的介绍.
7.2 排序的分类:
7.3 算法的时间复杂度.
7.3.1 度量一个程序(算法)执行时间的两种方法.
7.3.2 时间频度.
7.3.3 时间复杂度
7.3.4 常见的时间复杂度
7.3.5 平均时间复杂度和最坏时间复杂度.
7.4 算法的空间复杂度简介
7.4.1 基本介绍.
7.5 冒泡排序
7.5.1 基本介绍.
7.5.2 演示冒泡过程的例子(图解).
7.5.3 冒泡排序应用实例....
7.6 选择排序
7.6.1 基本介绍.
7.6.2 选择排序思想:.
7.6.3 选择排序思路分析图:
7.6.4 选择排序应用实例:
7.7 插入排序.
7.7.1 插入排序法介绍:
7.7.2 插入排序法思想:
7.7.3 插入排序思路图:.
7.7.4 插入排序法应用实例:
7.8 希尔排序.
7.8.1 简单插入排序存在的问题.
7.8.2 希尔排序法介绍.
7.8.3 希尔排序法基本思想.
7.8.4 希尔排序法的示意图
7.8.5 希尔排序法应用实例:
7.9 快速排序
7.9.1 快速排序法介绍:
7.9.2 快速排序法示意图:
7.9.3 快速排序法应用实例:
7.10 归并排序.
7.10.1 归并排序介绍:.
7.10.2 归并排序思想示意图1-基本思想..
7.10.3 归并排序思想示意图2-合并相邻有序子序列:
7.10.4 归并排序的应用实例:
7.11 基数排序
7.11.1 基数排序(桶排序)介绍:
7.11.2 基数排序基本思想
7.11.3 基数排序图文说明.
7.11.4 基数排序代码实现.
7.11.5 基数排序的说明..
7.12 常用排序算法总结和对比.
7.12.1 一张排序算法的比较图
7.12.2 相关术语解释:
第8章 查找算法.
8.1 查找算法介绍.
8.2 线性查找算法.
8.3 二分查找算法.
8.3.1 二分查找:
8.3.2 二分查找算法的思路.
8.3.3 二分查找的代码.
8.4 插值查找算法.
8.4.1 插值查找应用案例:
8.4.2 插值查找注意事项:
8.5 斐波那契(黄金分割法)查找算法.
8.5.1 斐波那契(黄金分割法)查找基本介绍:
8.5.2 斐波那契(黄金分割法)原理:
8.5.3 斐波那契查找应用案例:...
第9章 哈希表
9.1 哈希表(散列)-GOOGLE.上机题.
9.2 哈希表的基本介绍.
9.3 GOOGLE公司的一个上机题
第10章 树结构的基础部
10.1 二叉树.
10.1.1 为什么需要树这种数据结构.
10.1.2 树示意图.
10.1.3 二叉树的概念,
10.1.4 二叉树遍历的说明.
10.1.5 二叉树遍历应用实例(前序,中序,后序... . . ..
10.1.6 二叉树-查找指定节点
10.1.7 二叉树-删除节点
10.1.8 二叉树-删除节点.
10.2 顺序存储二叉树.
10.2.1 顺序存储二叉树的概念
10.2.2 顺序存储二叉树遍历.
10.2.3 顺序存储二叉树应用实例.
10.3 线索化二叉树.
10.3.1 先看一个问题.
10.3.2 线索二叉树基本介绍.
10.3.3 线索二叉树应用案例.
10.3.4 遍历线索化二叉树
10.3.5 线索化二叉树的课后作业:.
第11章 树结构实际应用.
11.1 堆排序.
11.1.1 堆排序基本介绍.
11.1.2 堆排序基本思想.
11.1.3 堆排序步骤图解说明.
11.1.4 堆排序代码实现
11.2 赫夫曼树.
11.2.1 基本介绍.
11.2.2 赫夫曼树几个重要概念和举例说明.
11.2.3 赫夫曼树创建思路图解
11.2.4 赫夫曼树的代码实现.
11.3 赫夫曼编码.
11.3.1 基本介绍,
11.3.2 原理剖析.
11.3.3 最佳实践数据压缩(创建赫夫曼树).
11.3.4 最佳实践-数据压缩(生成赫夫曼编码和赫夫曼编码后的数据)
11.3.5 最佳实践数据解压(使用赫夫曼编码解码).
11.3.6 最佳实践-文件压缩.
11.3.7 最佳实践-文件解压(文件恢复).
11.3.8 代码汇总,把前面所有的方法放在一-起.
11.3.9 赫夫曼编码压缩文件注意事项.
11.4 二叉排序树
11.4.1 先看一个需求
11.4.2 解决方案分析
11.4.3 二叉排序树介绍
11.4.4 二叉排序树创建和遍历.
11.4.5 二叉排序树的删除.
11.4.6 二叉排序树删除结点的代码实现
11.4.7 课后练习:完成老师代码,并使用第二种方式来解
11.5 平衡二叉树(AVL树)..
11.5.1 看一个案例(说明二叉排序树可能的问题...
11.5.2 基本介绍.
11.5.3 应用案例-单旋转(左旋转).
11.5.4 应用案例-单旋转(右旋转....
11.5.5 应用案例-双旋转.
第12章 多路查找树.
12.1 二叉树与B树.
12.1.1 二叉树的问题分析.
12.1.2 多叉树.
12.1.3 B树的基本介绍.
12.2 2-3 树.
12.2.12-3 树是最简单的B树结构,具有如下特点...
12.2.2 2-3 树应用案例.
12.2.3 其它说明.
12.3 B树、B+树和B*树....
12.3.1 B树的介绍,
12.3.2 B树的介绍,
12.3.3 B+树的介绍.
12.3.4 B*树的介绍,
第13章 图
13.1 图基本介绍.
13.1.1 为什么要有图.
13.1.2 图的举例说明.
13.1.3 图的常用概念.
13.2 图的表示方式.
13.2.1 邻接矩阵
13.2.2 邻接表
13.3 图的快速入门案例.
13.4 图的深度优先遍历介绍.
13.4.1 图遍历介绍
13.4.2 深度优先遍历基本思想
13.4.3 深度优先遍历算法步骤.
13.4.4 深度优先算法的代码实现.
13.5 图的广度优先遍历.
13.5.1 广度优先遍历基本思想.
13.5.2 广度优先遍历算法步骤
13.5.3 广度优先算法的图示.
13.6 广度优先算法的代码实现.
13.7 图的代码汇总...
13.8 图的深度优先VS广度优先.
第14章 程序员常用10种算法.
14.1 二分查找算法(非递归)
14.1.1 二分查找算法(非递归)介绍.
14.1.2 二分查找算法(非递归)代码实现
14.2 分治算法
14.2.1 分治算法介绍.
14.2.2 分治算法的基本步骤.
14.2.3 分治(Divide-and-Conquer(P))算法设计模式如下:
14.2.4 分治算法最佳实践-汉诺塔.
14.3 动态规划算法.
14.3.1 应用场景-背包问题.
14.3.2 动态规划算法介绍.
14.3.3 动态规划算法最佳实践-背包问题.
14.3.4 动态规划-背包问题的代码实现
14.4 KMP算法.
14.4.1 应用场景字符串匹配问题.
14.4.2 暴力匹配算法.
14.4.3 KMP算法介绍.
14.4.4 KMP算法最佳应用-字符串匹配问题.
14.5 贪心算法.
14.5.1 应用场景-集合覆盖问题.
14.5.2 贪心算法介绍.
14.5.3 贪心算法最佳应用-集合覆盖.
14.5.4 贪心算法注意事项和细节
14.6 普里姆算法.
14.6.1 应用场景-修路问题.
14.6.2 最小生成树.
14.6.3 普里姆算法介绍.
14.6.4 普里姆算法最佳实践(修路问题)
14.7 克鲁斯卡尔算法
14.7.1 应用场景-公交站问题.
14.7.2 克鲁斯卡尔算法介绍
14.7.3 克鲁斯卡尔算法图解说明.
3.1.1 克鲁斯卡尔算法图解
3.1.2 克鲁斯卡尔算法分析
3.1.3 如何判断是否构成回路-举例说明(如图)
3.1.4 克鲁斯卡尔算法的代码说明
14.7.4 克鲁斯卡尔最佳实践-公交站问题
14.8 迪杰斯特拉算法.
14.8.1 应用场景-最短路径问题.
14.8.2 迪杰斯特拉(Dijkstra)算法介绍
14.8.3 迪杰斯特拉(Dijkstra)算法过程
14.8.4 迪杰斯特拉(Dijkstra)算法最佳应用-最短路径
14.9 弗洛伊德算法.
14.9.1 弗洛伊德(Floyd)算法介绍
14.9.2 弗洛伊德(Floyd)算法图解分析
14.9.3 弗洛伊德(Floyd)算法最佳应用-最短路径
14.10 马踏棋盘算法.
14.10.1 马踏棋盘算法介绍和游戏演示.
14.10.2 马踏棋盘游戏代码实现.