学习有效期:永久观看
学习时长:3053分钟
学习计划:51天
难度:低
CTO/CIO/技术副总裁/总工程师
讲师介绍:张长志技术全才、擅长领域:区块链、大数据、Java等。10余年软件研发及企业培训经验,曾为多家大型企业提供企业内训如中石化,中国联通,中国移动等知名企业。拥有丰富的企业应用软件开发经验、深厚的软件架构设计理论基础及实践能力。项目开发历程:基于大数据技术推荐系统 ,医疗保险大数据分析与统计推断,H5跨平台APP,携程酒店APP,Go语言实现Storm和ZK类似框架。
本教程为授权出品
课程介绍:
1.算法是程序的灵魂,优秀的程序在对海量数据处理时,依然保持高速计算,就需要高效的数据结构和算法支撑。
2.网上数据结构和算法的课程不少,但存在两个问题:
1)授课方式单一,大多是照着代码念一遍,数据结构和算法本身就比较难理解,对基础好的学员来说,还好一点,对基础不好的学生来说,基本上就是听天书了
2)说是讲数据结构和算法,但大多是挂羊头卖狗肉,算法讲的很少。 本课程针对上述问题,有针对性的进行了升级
3)授课方式采用图解+算法游戏的方式,让课程生动有趣好理解
4)系统全面的讲解了数据结构和算法, 除常用数据结构和算法外,还包括程序员常用10大算法:二分查找算法(非递归)、分治算法、动态规划算法、KMP算法、贪心算法、普里姆算法、克鲁斯卡尔算法、迪杰斯特拉算法、弗洛伊德算法、马踏棋盘算法。可以解决面试遇到的最短路径、最小生成树、最小连通图、动态规划等问题及衍生出的面试题,让你秒杀其他面试小伙伴
3.如果你不想永远都是代码工人,就需要花时间来研究下数据结构和算法。
教程内容:
本教程是使用Java来讲解数据结构和算法,考虑到数据结构和算法较难,授课采用图解加算法游戏的方式。内容包括: 稀疏数组、单向队列、环形队列、单向链表、双向链表、环形链表、约瑟夫问题、栈、前缀、中缀、后缀表达式、中缀表达式转换为后缀表达式、递归与回溯、迷宫问题、八皇后问题、算法的时间复杂度、冒泡排序、选择排序、插入排序、快速排序、归并排序、希尔排序、基数排序(桶排序)、堆排序、排序速度分析、二分查找、插值查找、斐波那契查找、散列、哈希表、二叉树、二叉树与数组转换、二叉排序树(BST)、AVL树、线索二叉树、赫夫曼树、赫夫曼编码、多路查找树(B树B+树和B*树)、图、图的DFS算法和BFS、程序员常用10大算法、二分查找算法(非递归)、分治算法、动态规划算法、KMP算法、贪心算法、普里姆算法、克鲁斯卡尔算法、迪杰斯特拉算法、弗洛伊德算法马踏棋盘算法。
学习目标:
通过学习,学员能掌握主流数据结构和算法的实现机制,开阔编程思路,提高优化程序的能力。
1.001-几个经典的算法面试题(1) |
2.002-几个经典的算法面试题(2) |
3.003-内容介绍和授课方式 |
4.004-数据结构和算法的关系 |
5.005-编程中实际遇到的几个问题 |
6.006-线性结构和非线性结构 |
7.007-稀疏数组的应用场景 |
8.008-稀疏数组转换的思路分析 |
9.009-稀疏数组的代码实现 |
10.010-队列的应用场景和介绍 |
11.011-数组模拟队列的思路分析 |
12.012-数组模拟队列代码实现(1) |
13.013-数组模拟队列代码实现(2) |
14.014-数组模拟环形队列思路分析图 |
15.015-数组模拟环形队列实现 |
16.016-单链表介绍和内存布局 |
17.017-单链表创建和遍历的分析实现 |
18.018-单链表按顺序插入节点 |
19.019-单链表节点的修改 |
20.020-单链表节点的删除和小结 |
21.021-单链表新浪面试题 |
22.022-单链表腾讯面试题 |
23.023-单链表百度面试题 |
24.024-双向链表增删改查分析图解 |
25.025-双向链表增删改查代码实现 |
26.026-双向链表功能测试和小结 |
27.027-环形链表介绍和约瑟夫问题 |
28.028-约瑟夫问题分析图解和实现(1) |
29.029-约瑟夫问题分析图解和实现(2) |
30.030-栈的应用场景和介绍 |
31.031-栈的思路分析和代码实现 |
32.032-栈的功能测试和小结 |
33.033-栈实现综合计算器-思路分析(1) |
34.034-栈实现综合计算器-代码实现(2) |
35.035-栈实现综合计算器-代码实现(3) |
36.036-前缀 中缀 后缀表达式规则 |
37.037-逆波兰计算器分析和实现(1) |
38.038-逆波兰计算器分析和实现(2) |
39.039-中缀转后缀表达式思路分析 |
40.040-中缀转后缀表达式代码实现(1) |
41.041-中缀转后缀表达式代码实现(2) |
42.042-完整版逆波兰计算器和小结 |
43.043-递归应用场景和调用机制 |
44.044-递归能解决的问题和规则 |
45.045-迷宫回溯问题分析和实现(1) |
46.046-迷宫回溯问题分析和实现(2) |
47.047-八皇后问题分析和实现(1) |
48.048-八皇后问题分析和实现(2) |
49.049-八皇后问题分析和实现(3) |
50.050-排序算法介绍和分类 |
51.051-时间频度介绍和特点 |
52.052-时间复杂度计算和举例说明 |
53.053-平均和最坏时间复杂度介绍 |
54.054-冒泡排序算法思路图解 |
55.055-冒泡排序算法代码实现 |
56.056-冒泡排序算法优化和总结 |
57.057-选择排序算法思路图解 |
58.058-选择排序算法代码实现 |
59.059-选择排序算法速度测试 |
60.060-插入排序算法思路图解 |
61.061-插入排序算法代码实现 |
62.062-插入排序算法速度测试 |
63.063-希尔排序算法思路图解 |
64.064-希尔排序[交换式]算法实现 |
65.065-希尔排序[移位式]算法实现 |
66.066-快速排序算法思路图解 |
67.067-快速排序算法代码实现 |
68.068-快速排序算法速度测试 |
69.069-归并排序算法思路图解 |
70.070-归并排序算法代码实现 |
71.071-归并排序算法速度测试 |
72.072-基数排序算法思路图解 |
73.073-基数排序算法代码实现(1) |
74.074-基数排序算法代码实现(2) |
75.075-基数排序算法注意事项 |
76.076-排序算法时间复杂度比较 |
77.077-线性查找分析和实现 |
78.078-二分查找算法思路图解 |
79.079-二分查找算法代码实现 |
80.080-二分查找算法功能完善 |
81.081-插值查找算法工作原理 |
82.082-插值查找算法代码实现 |
83.083-斐波那契查找算法原理 |
84.084-斐波那契查找代码实现 |
85.085-斐波那契查找算法小结 |
86.086-哈希表的介绍和内存布局 |
87.087-哈希表实现思路图解 |
88.088-哈希表代码实现(1) |
89.089-哈希表代码实现(2) |
90.090-数组 链表 树存储方式分析 |
91.091-二叉树的概念和常用术语 |
92.092-前序中序后序遍历二叉树图解 |
93.093-前序中序后序遍历代码实现(1) |
94.094-前序中序后序遍历代码实现(2) |
95.095-前序中序后序查找思路图解 |
96.096-前序中序后序查找代码实现(1) |
97.097-前序中序后序查找代码实现(2) |
98.098-二叉树删除结点思路图解 |
99.099-二叉树删除结点代码实现 |
100.100-顺序存储二叉树思路图解 |
101.101-顺序存储二叉树代码实现 |
102.102-线索化二叉树的介绍 |
103.103-线索化二叉树思路图解 |
104.104-线索化二叉树代码实现1 |
105.105-线索化二叉树代码实现2 |
106.106-遍历线索化二叉树实现 |
107.107-大顶堆和小顶堆图解说明 |
108.108-堆排序的思路图解 |
109.109-堆排序的代码实现1 |
110.110-堆排序的代码实现2 |
111.111-堆排序的速度测试和小结 |
112.112-赫夫曼树的基本介绍 |
113.113-赫夫曼树创建步骤图解 |
114.114-赫夫曼树创建代码实现 |
115.115-变长编码的举例说明 |
116.116-赫夫曼编码的原理图解 |
117.117-数据压缩-创建赫夫曼树思路 |
118.118-数据压缩-创建赫夫曼树实现 |
119.119-数据压缩-生成赫夫曼编码表 |
120.120-数据压缩-赫夫曼编码字节数组 |
121.121-数据压缩-赫夫曼字节数组封装 |
122.122-数据解压-字节转二进制字符串 |
123.123-数据解压-赫夫曼解码 |
124.124-使用赫夫曼编码压缩文件 |
125.125-使用赫夫曼编码解压文件 |
126.126-赫夫曼编码注意事项 |
127.127-二叉排序树(BST)的介绍 |
128.128-二叉排序树(BST)创建和遍历 |
129.129-二叉排序树删除结点思路图解 |
130.130-二叉排序树删除叶子结点(1) |
131.131-二叉排序树删除叶子结点(2) |
132.132-BST删除有一颗子树的结点 |
133.133-BST删除有二颗子树的结点 |
134.134-BST删除结点的注意事项 |
135.135-平衡二叉树(AVL树)介绍 |
136.136-AVL树左旋转思路图解 |
137.137-AVL树高度求解 |
138.138-AVL树左旋转代码实现 |
139.139-AVL树右旋转图解和实现 |
140.140-AVL树双旋转图解和实现 |
141.141-平衡二叉树(AVL树)小结 |
142.142-多叉树原理图解 |
143.143-2-3树原理图解 |
144.144-B树和B加树原理图解 |
145.145-B星树和多路查找树小结 |
146.146-图的基本介绍和存储形式 |
147.147-图的创建图解和代码实现 |
148.148-图的深度优先(DFS)算法图解 |
149.149-图的深度优先(DFS)代码实现 |
150.150-图的广度优先(BFS)算法图解 |
151.151-图的广度优先(BFS)代码实现 |
152.152-DFS和BFS比较及图小结 |
153.153-二分查找非递归算法分析实现 |
154.154-分治算法的设计模式 |
155.155-分治算法解决汉诺塔问题 |
156.156-动态规划算法基本介绍 |
157.157-动态规划算法解决背包问题1 |
158.158-动态规划算法解决背包问题2 |
159.159-动态规划算法解决背包问题3 |
160.160-暴力匹配算法解决字串匹配问题 |
161.161-KMP算法解决字串匹配思路图解 |
162.162-KMP算法解决字串匹配代码实现 |
163.163-动态规划算法和KMP算法小结 |
164.164-贪心算法的基本介绍 |
165.165-贪心算法解决集合覆盖思路图解 |
166.166-贪心算法解决集合覆盖代码实现 |
167.167-贪心算法解决集合覆盖注意事项 |
168.168-普利姆算法(Prim)和MST介绍 |
169.169-Prim算法解决修路问题思路图解 |
170.170-Prim算法解决修路问题生成图 |
171.171-Prim算法解决修路问题代码实现 |
172.172-克鲁斯卡尔((Kruskal)算法图解 |
173.173-Kruskal算法解决公交问题(1) |
174.174-Kruskal算法解决公交问题(2) |
175.175-Kruskal算法解决公交问题(3) |
176.176-Kruskal算法解决公交问题(4) |
177.177-Kruskal算法解决公交问题小结 |
178.178-迪杰斯特拉(Dijkstra)算法基本介绍 |
179.179-Dijkstra算法思路图解 |
180.180-Dijkstra算法解决最短路径问题(1) |
181.181-Dijkstra算法解决最短路径问题(2) |
182.182-Dijkstra算法解决最短路径问题(3) |
183.183-Dijkstra算法解决最短路径问题(4) |
184.184-Dijkstra算法解决最短路径问题(5) |
185.185-弗洛伊德(Floyd)算法基本介绍 |
186.186-弗洛伊德(Floyd)算法思路图解 |
187.187-Floyd算法解决最短路径问题(1) |
188.188-Floyd算法解决最短路径问题(2) |
189.189-骑士周游问题和游戏说明 |
190.190-骑士周游问题思路图解 |
191.191-骑士周游回溯算法代码实现(1) |
192.192-骑士周游回溯算法代码实现(2) |
193.193-骑士周游回溯算法代码实现(3) |
194.194-骑士周游回溯算法用贪心算法优化 |
195.195-结束语(卖油翁和老黄牛) |
技术专家系统讲解传授编程思路与实战。
专属社群随时沟通与讲师答疑,扫清学习障碍,自学编程不再难。
超实用资料,覆盖核心知识,关键编程技能,方便练习巩固。(部分讲师考虑到版权问题,暂未上传附件,敬请谅解)
企业常见开发实战案例,带你掌握Python在工作中的不同运用场景。
2019Python开发者大会视频免费观看,送你一个近距离感受互联网大佬的机会。
满足不同场景,开发编程语言系统学习需求,不受空间、地域限制。
【完善的技术体系】
技术成长循序渐进,帮助用户轻松掌握
掌握Java知识,扎实编码能力
【清晰的课程脉络】
浓缩大牛多年经验,全方位构建出系统化的技术知识脉络,同时注重实战操作。
【仿佛在大厂实习般的课程设计】
课程内容全面提升技术能力,系统学习大厂技术方法论,可复用在日后工作中。
1.掌握数据结构和算法
2.系统全面的讲解了数据结构和算法, 除常用数据结构和算法外,还包括程序员常用10大算法
3.通过学习,学员能掌握主流数据结构和算法的实现机制,开阔编程思路,提高优化程序的能力。