课程介绍
数据结构与算法是一门计算机专业的同学必学的基础课。所以从事软件开发的人多多少少都对数据结构与算法有些了解。
在绝大多数软件开发领域,都不需要对数据结构与算法知识有太多的了解,只懂得一些基础的原理和会一些基础的应用就可以应付日常开发了,但是,如果遇到如下的情况就必须对这方面知识有良好的掌握:
(1)在一些必须用数据结构和算法知识来解决问题的领域。
(2)希望应聘到一些必考数据结构与算法知识的公司去工作。
这门由王老师专门用C++语言讲述的数据结构与算法视频课的质量不必多说。
这五年来我与清华大学出版社合作出版了五本《C++新经典》系列书籍,在很大程度上填补了国内高质量C++书籍的空白。
这门《C++数据结构与算法》课程将使用C++风格实现代码,要求大家有C++基础,对指针的理解和运用要达到熟练的程度,此外,考虑到程序代码的通用性,范例都会优先考虑采用C++类模板来编写,所以需要大家对C++类模板的简单使用有所了解,不需要有C++11之后新标准C++知识。
本课程讲解的特点就是:简单好理解,细致,全面、辅以大量图形讲解。
以下给出这门课程的讲解大纲:
讲解内容一览
第1章 基本概念、算法复杂度、编程环境介绍
第2章 线性表
第3章 树
第4章 图
第5章 排序
第6章 跳表与哈希表
第7章 字符串
第8章 算法设计方法
第9章 高级实用算法
课程详细内容参考课程目录,常见的数据结构和算法知识都会详细讲解,在课程中绝大多数情况下会现场编写代码并解释这些代码的含义和用途,让大家学得系统又明白。
特别说明
老师已经出版的纸质书籍如下:
《C++新经典》:对应C语言和C++语言课程。
《C++新经典:对象模型》:对应C++ Object Model课程。
《C++新经典:Linux C++通信架构实战》:对应Linux C++ Server课程。
《C++新经典:设计模式》:对应C++ Design Pattern课程。
《C++新经典:模板与泛型编程》:对应C++ Templates课程。
大家如果需要视频相应的纸质书籍(避免了自己做笔记之苦),可以通过京东商城,当当商城等自行购买。
希望交流的同学,可以加王老师的微信:wangjw6517119,由王老师将你拉入微信群,这是个技术讨论群,欢迎大家在这里讨论技术问题,交流学习心得和学习方法。
遇到不懂的问题先百度,或者通过大模型DeepSeek、通义前问询问,不行就贴代码与大家进行讨论,咨询问题时不要问在不在,有没有人之类的无意义话语。
愿意和老师一起,终生学习的学友们,欢迎关注老师的公众号,公众号名:'程序员速成',学习虽然没有捷径,但老师的初衷是探索出一种让大家能够在尽可能短的时间内快速进步的学习方法,和大家抱团取暖,共同进步。
配套书籍内容介绍
与本视频教程配套的书籍名字为《C++新经典:数据结构与算法》,共660页,全彩色印刷。本书籍特点如下:
(1)大量的彩色绘图以及高质量彩色印刷使知识的表述直观且清晰。
(2)表述简单易懂、清晰、细致,再难的知识点都可以做到容易理解和掌握。
(3)提供完整、详实、可以编译运行的C++实现代码。很多教程都以理论为主,学术性太强以致难以理解且不提供代码或只提供代码片段、伪代码等。
本书用通俗易懂的描述配合图形以及高质量的C++实现源码详细讲解了常用的数据结构和算法知识,主要内容包括:
(1章)数据结构与算法基本概念、时间/空间复杂度表示法和分析法、编程环境搭建、程序调试方法介绍。
(2章)线性表。主要包括顺序表、各种链表(单、双、循环、静态)、栈(顺序、链式)、共享栈、普通和双端队列。
(3章)树。主要包括普通二叉树、线索二叉树、二叉查找树(平衡二叉树、红黑树)、哈夫曼树、多路查找树(B树、B+树)。
(4章)图。主要包括图的存储结构(邻接矩阵、邻接表、十字链表、邻接多重表、边集数组),图的深度优先和广度优先遍历、最小生成树(普利姆算法和克鲁斯卡尔算法)、最短路径(迪杰斯特拉算法和弗洛伊德算法)、拓扑排序、关键路径。
(5章)排序。主要包括插入类排序(直接插入排序、折半插入排序、2路插入排序、表插入排序、希尔排序)、交换类排序(冒泡排序、快速排序)、选择类排序(简单选择排序、树形选择排序、堆排序)、归并排序、桶思想的排序(计数排序、基数排序、桶排序)、各种排序方法的分类、复杂度、稳定性整理表。
(6章)跳表与哈希表。主要包括跳表的基本概念和基本操作、哈希表的基本概念和基本操作等。
(7章)字符串。主要包括字符串的顺序和链式存储结构、字符串的朴素模式匹配算法、字符串的KMP模式匹配算法。
(8章)算法设计方法。主要包括贪心算法(案例:分配问题、区间覆盖问题、股票买卖最佳时机问题)、分治算法(案例:最大数组连续子序列问题)、回溯算法(案例:组合问题、组合总和问题、分割字符串问题、n皇后问题)、动态规划算法(案例:斐波那契数列、爬楼梯、0-1背包、找出最长递增子序列、打家劫舍、零钱兑换、打家劫舍(递归写法))。
(9章)高级实用算法。包括A*寻路算法、用洪水填充算法实现通畅的随机地图。
书籍需要另外购买,有需要的学友请联系上述的王老师微信。