数据结构与算法
工作了之后回过头看大学的数据结构和算法,不一样的理解与感悟;
我的视频课:https://edu.csdn.net/course/detail/27220
《面试之排序算法》,欢迎大家围观~
不死鸟JGC
BAT大厂架构师,深耕大前端领域多年,精Android/Vue/React Native/小程序等端上技术,擅长架构设计、性能优化、混合开发、项目管理。
展开
-
使用Master公式求解递归算法的时间复杂度
使用Master公式求解递归算法的时间复杂度原创 2021-02-24 16:44:39 · 402 阅读 · 2 评论 -
数据结构和算法文章目录(C语言 唐发根版)
数据结构和算法文章目录(C语言 唐发根版)原创 2019-10-23 15:06:55 · 2048 阅读 · 3 评论 -
数据结构和算法概念
一、介绍了数据结构和算法的基本概念。其中,数据结构部分介绍了逻辑结构和存储结构,算法部分介绍了算法的定义、性质以及算法的分析维度。二、介绍了频度统计法来计算算法的时间复杂度。原创 2018-11-20 13:48:26 · 773 阅读 · 0 评论 -
线性表(一)——基本概念
介绍了线性表中的基本概念,包括什么是线性关系以及线性表的基本操作。原创 2018-11-20 14:45:26 · 574 阅读 · 0 评论 -
线性表(二)——顺序存储结构
一、介绍了线性表的顺序存储结构的构造原理;二、介绍了基于顺序存储结构的线性表的定位、插入和删除操作的C语言实现,以及各个算法的时间复杂度。原创 2018-11-20 15:32:27 · 922 阅读 · 0 评论 -
线性表(三)——线性链表(单链表)
一、介绍了线性表的一种链式存储结构——单链表的C语言实现原理;二、介绍了单链表(线性链表)的基本操作的算法实现,包括求长度、创建单链表、插入结点、删除结点以及各个算法的时间复杂度。原创 2018-11-20 17:02:29 · 1453 阅读 · 0 评论 -
线性表(四)——循环链表
一、介绍了线性表的一种链式存储结构——循环链表的C语言实现原理; 二、介绍了如何求循环链表的长度算法;三、介绍了如何使用循环链表解决约瑟夫(JOSEPHU)问题。原创 2018-11-21 10:05:39 · 1346 阅读 · 0 评论 -
线性表(五)——双向链表
一、介绍了线性表的一种链式存储结构——双向链表的C语言实现原理; 二、介绍了双向链表的基本操作的算法实现,包括插入结点、删除结点以及各个算法的时间复杂度。原创 2018-11-21 11:15:57 · 532 阅读 · 0 评论 -
数组
一、介绍了一维数组和二维数组的顺序存储实现;二、介绍了特殊二维数组——矩阵的压缩存储,包括对称矩阵的压缩存储、对角矩阵的压缩存储;三、介绍了稀疏矩阵的三元组表表示方法;四、介绍了稀疏矩阵的十字链表表示方法。原创 2018-11-21 14:58:29 · 446 阅读 · 0 评论 -
堆栈
堆栈简称栈,是一种特殊的线性关系。只允许在一端进行插入操作和删除操作。本文主要介绍了如下内容:一、介绍了什么是堆栈以及堆栈的五种基本操作;二、介绍了堆栈的顺序存储结构和基本操作的C语言实现,其中还设计多栈共享连续空间问题。三、介绍了堆栈的链式存储结构和基本操作的C语言实现。原创 2018-11-22 14:00:32 · 4596 阅读 · 3 评论 -
队列
队列,简称队,是一种特殊的线性关系,只允许在一端进行插入操作,而在另一端进行删除操作。本文内容包括如下:一、介绍了什么是队列以及队列的五种基本操作; 二、介绍了队列的顺序存储结构和基本操作的C语言实现,其中还涉及队列假溢出问题以及使用循环队列解决假溢出问题;三、介绍了队列的链式存储结构和基本操作的C语言实现。原创 2018-11-22 14:35:57 · 295 阅读 · 0 评论 -
树
树是一种非线性的逻辑结构,本文介绍了如下内容:1、树的定义和特点;2、树的逻辑表示方式;3、树中的基本术语和性质;4、树的链式存储结构,包括多重链表结构(定长和不定长)、三重链表结构。原创 2019-01-14 11:35:25 · 511 阅读 · 0 评论 -
二叉树(一)——定义、性质、操作与存储结构
二叉树是一种特殊的树,也是一种非常重要的树。本文包括如下内容:1、二叉树的定义、基本形态和性质;2、二叉树的基本操作;3、二叉树的顺序存储结构,包括完全二叉树和非完全二叉树的顺序存储结构;4、二叉树的链式存储结构,包括二叉链表和三叉链表,其中二叉链表比较常用。原创 2019-01-14 13:39:22 · 418 阅读 · 0 评论 -
二叉树(二)——遍历
一、介绍了二叉树的四种遍历算法:1、前序遍历,2、中序遍历,3、后序遍历,4、按层遍历。二、介绍了使用链式存储结构和顺序存储结构的方式实现四种遍历算法。三、介绍了递归算法的优缺点,以及如何使用堆栈将递归算法改变为非递归算法。四、介绍了如何通过中序序列以及其他一种序列恢复二叉树。原创 2019-01-14 14:07:32 · 407 阅读 · 0 评论 -
二叉树(四)——二叉排序树
二叉排序树是我们经常使用的一种数据结构,它的每一颗子树的根节点永远大于左子树,永远小于右子树。本文介绍了二叉排序树的如下内容:1、定义;2、二叉排序树的建立算法和实现;3、二叉排序树的删除算法;4、二叉排序树的查找算法和实现;5、平均查找长度ASL的定义和计算方法。原创 2019-02-18 15:24:10 · 3249 阅读 · 0 评论 -
二叉树(三)——线索二叉树
利用二叉链表中空的指针域指出结点在某种遍历序列中的直接前驱或直接后继,指向前驱和后继的指针称为线索,加了线索的二叉树称为线索二叉树。本文介绍了线索二叉树的定义和实现原理,以及线索二叉树的应用。原创 2019-07-18 17:13:56 · 705 阅读 · 0 评论 -
二叉树(五)——哈夫曼树与哈夫曼编码
哈夫曼编码是能够使电文总长度最短的编码,哈夫曼编码的生成离不开哈夫曼树。本文围绕哈夫曼树和哈夫曼编码介绍了如下内容:1、什么叫树的带权路径长度WPL;2、哈夫曼树的定义与特点3、哈夫曼树如何构造;4、如何由哈夫曼树生成哈夫曼编码。原创 2019-07-19 15:20:56 · 678 阅读 · 0 评论 -
图(一)——基本概念和存储方式
图是一种非常重要的数据结构,本文介绍了图的基本概念和存储方式,涉及如下内容:1、图的定义;2、图的分类;3、图的基本术语:顶点的度、路径和路径长度、子图、图的连通、生成树;4、图的存储方式:邻接矩阵方式、邻接链表方式及其C语言实现原创 2019-07-22 11:23:54 · 572 阅读 · 0 评论 -
图(二)——图的遍历
本文介绍了图的两种遍历方式:深度优先遍历和广度优先遍历,分别介绍了他们的步骤和算法的时间复杂度。原创 2019-07-22 13:41:54 · 361 阅读 · 0 评论 -
图(三)——最小生成树
本文介绍了图的一个应用:求最小生成树问题,介绍了普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法。原创 2019-07-22 14:00:28 · 304 阅读 · 0 评论 -
图(四)——单源点最短路径问题:迪杰斯特拉(Dijkstra)算法
本文介绍了使用迪杰斯特拉(Dijkstra)算法解决图中的单源点最短路径问题,介绍了算法所使用的数据结构和具体步骤,并且通过图解说明了每一个步骤。原创 2019-07-23 10:45:53 · 3440 阅读 · 1 评论 -
图(五)——AOV网的拓扑排序与AOE网的关键路径
本文第一部分介绍了不带权值的AOV网,以及求AOV网络的拓扑排序的算法和步骤,AOV网络通过拓扑排序判断是否存在回路;本文第二部分介绍了带权值的AOE网,以及求AOE网络的关键路径的算法和步骤。原创 2019-07-23 13:46:35 · 4295 阅读 · 1 评论 -
文件(一)——基本概念和操作
本文介绍了文件这种数据结构中的基本概念,包括文件的基本术语、文件的逻辑结构和物理结构,其中按照文件的物理结构,文件可以分为顺序文件、索引文件和散列文件,本文还介绍了文件的基本操作。原创 2019-08-05 10:30:18 · 619 阅读 · 0 评论 -
文件(二)——顺序文件及其基本操作
本文主要介绍了顺序文件的基本概念及其查找操作,主要包括连续顺序文件的顺序查找和二分查找,以及链接顺序文件的查找。原创 2019-08-05 13:37:42 · 2923 阅读 · 0 评论 -
文件(三)——索引文件及其基本操作
本文介绍了索引文件及其基本分类,包括稠密索引文件和非稠密索引分块文件。原创 2019-08-06 13:55:02 · 10810 阅读 · 0 评论 -
文件(四)——B-树和B+树
B-树就是我们平常说的B树,它在文件系统中很有用,多用于实现索引查找。本文着重介绍了B-树的特点和B-树的查找、插入算法,其中通过图示演示了结点分裂的处理过程。本文还介绍了B+树,及其与B-树的对比。原创 2019-08-06 15:31:16 · 519 阅读 · 0 评论 -
文件(五)——散列(Hash)文件及其基本操作
本文介绍了散列文件及其操作,包括散列文件相关的基本概念,散列函数的构造方法,以及冲突的处理方法。原创 2019-08-06 16:59:09 · 6636 阅读 · 0 评论 -
内排序(一)——插入排序
本文介绍了排序的基本概念,包括外排序、内排序以及排序的性能分析、稳定性等。同时,本文介绍了插入排序的基本思想和算法实现,以及基于插入排序的改进算法——折半插入排序算法。原创 2019-08-07 14:01:26 · 401 阅读 · 0 评论 -
内排序(二)——选择排序
本文介绍了选择排序的核心思想和实现,并通过图示分析了选择排序的每趟过程,最后分析了选择排序的性能。原创 2019-08-07 14:13:14 · 390 阅读 · 0 评论 -
内排序(三 )——冒泡排序
本文介绍了冒泡排序的核心思想和实现,并通过图示分析了冒泡排序的每趟过程,最后分析了冒泡排序的性能。原创 2019-08-07 15:57:15 · 543 阅读 · 0 评论 -
内排序(四)——谢尔(Shell)排序
本文介绍了谢尔排序的核心思想和实现,并通过图示分析了谢尔排序的每趟过程,最后分析了谢尔排序的性能。原创 2019-08-07 16:22:24 · 438 阅读 · 0 评论 -
内排序(五)——快速排序
本文介绍了快速排序的核心思想和实现,并通过图示分析了快速排序的每趟过程,最后分析了快速排序的性能。原创 2019-08-08 11:16:12 · 380 阅读 · 0 评论 -
内排序(六)——堆积排序
本文介绍了堆积排序的核心思想和实现,并通过图示分析了堆积排序的每趟过程,最后分析了堆积排序的性能。原创 2019-08-08 13:57:37 · 656 阅读 · 0 评论 -
内排序(七)——二路并归排序
本文介绍了二路并归排序的核心思想和实现,并通过图示分析了并归排序的每趟过程,最后分析了并归排序的性能。原创 2019-08-08 14:38:05 · 431 阅读 · 0 评论 -
普利姆算法(prim)求最小生成树(MST)过程详解
本文详细介绍了普利姆算法(prim)求最小生成树(MST)的算法过程。原创 2019-10-23 10:41:22 · 25409 阅读 · 2 评论 -
克鲁斯卡尔算法(Kruskal)求最小生成树(MST)过程详解
本文介绍了克鲁斯卡尔算法(Kruskal)求最小生成树(MST)的详细过程。原创 2019-10-23 11:13:24 · 17305 阅读 · 2 评论