算法是程序的灵魂,为什么有些程序可以在海量数据计算时,依然保持高速计算,大家可能会说: 程序使用了内存计算框架(比如Spark)和缓存技术(比如Redis等),那再深入的思考一下,这些计算框架和缓存技术又是怎样被技术高手设计出来的呢? 拿实际工作经历来说, 在Unix下开发服务器程序,功能是要支持上千万人同时在线, 在上线前,做内测,一切OK,可上线后,服务器就支撑不住了, 公司的CTO对代码进行优化,再次上线,坚如磐石。那一瞬间,你就能感受到程序是有灵魂的,就是算法。如果你不想永远都是代码工人,那就花时间来研究下数据结构和算法吧. 本课程是使用Scala语言来讲解数据结构和算法,内容包括: 稀疏数组、单向队列、环形队列、单向链表、双向链表、环形链表、约瑟夫问题、栈、表达式的转换与求值、递归与回溯、迷宫问题、冒泡排序、选择排序、插入排序、快速排序、归并排序、排序速度分析、二分查找、散列、哈希表、二叉树、二叉树与数组转换、二叉排序树(BST)、其它二叉树介绍(AVL 线索二叉树 赫夫曼树)。通过学习,学员能掌握主流数据结构的实现机制,开阔编程思路,提高优化程序的能力。
视频目录 01.数据结构和算法基本介绍02.数据结构和算法几个实际问题03.稀疏数组介绍04.稀疏数组压缩实现05.稀疏数组解压实现06.队列介绍07.单向队列实现08.单向队列问题分析09.环形队列(1)10.环形队列(2)11.链表说明和应用场景12.单向链表-人员管理系统说明13.单向链表-添加和遍历14.单向链表-有序插入节点15.单向链表-修改节点16.单向链表-删除节点17.双向链表基本介绍18.双向链表的实现19.链表的经典应用-约瑟夫问题20.约瑟夫问题-形成环形和遍历21.约瑟夫问题-算法思路分析22.约瑟夫问题-算法的实现23.栈的基本介绍24.栈的基本使用25.使用栈计算表达式的思路26.编写数栈和符号栈27.完成单数表达式运算(1)28.完成单数表达式运算(2)29.完成多位数表达式运算30.温故知新31.递归的应用(迷宫回溯)32.递归的机制分析33.递归能解决的问题34.迷宫解决思路和创建地图35.递归回溯解决迷宫问题36.迷宫问题小结37.冒泡排序38.选择排序分析和实现39.插入排序的思路分析40.插入排序的实现41.快速排序思路分析42.快速排序代码实现43.归并排序的思路分析44.归并排序的实现和分析45.查找的基本介绍46.二分查找实现和分析47.二分查找大量相同值48.二分查找的小结49.哈希(散列)表的概述50.哈希(散列)表实现机制分析51.哈希(散列)表的添加52.哈希(散列)表的遍历53.哈希(散列)表的查找54.哈希(散列)表的小结55.二叉树能解决的问题56.树常用术语57.满二叉树和完全二叉树58.二叉树的前序中序后序遍历59.二叉树的前序中序后序查找60.二叉树节点删除61.二叉树节点删除扩展提示62.顺序存储二叉树63.二叉排序树的介绍64.二叉排序树-创建和遍历65.二叉排序树-检索父子节点66.二叉排序树-删除叶子节点67.二叉排序树-删除非叶子节点(1)68.二叉排序树-删除非叶子节点(2)69.二叉排序树-删除无父节点的节点70.其它二叉树(AVL 赫夫曼树等)