- 谢谢您的到来,一起加油吧,少年!
- bilibili点个关注叭
- 海鸟跟鱼相爱,只是一场意外
- Leave Out All The Rest
随笔分类 - 数据结构和算法
摘要:排序总览 什么是排序? 🔥**排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 ✍️排序的稳定性:**假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j
阅读全文
摘要:红黑树 概念和性质 红黑树的概念: 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。它是通过控制节点颜色的方式来控制这棵树的相对平衡,保证了没有一条路径会比其它路径长出两倍,红黑树是一种接近平衡的二叉树(说它是接近平衡因为它并没有像AVL树的平衡因子的
阅读全文
摘要:AVL树(平衡二叉树) 概念 二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。因此为了解决这个问题,两位俄罗斯的数学家发明了一种方法:当向二叉搜索树中插入新结点后,如果能保证每个结点的左右子树高度之差的绝对值不超过1(需要
阅读全文
摘要:二叉搜索树 概念 二叉搜索树又称为二叉排序树,因为这棵树的中序遍历是有序的。二叉搜索树总结起来有以下几个性质: 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右子树不为空,则右子树上所有节点的值都大于于根节点的值 它的左右子树都是二叉搜索树 这棵树中没有重复的元素 举个例子: 二
阅读全文
摘要:二叉树链式结构 前一篇博客介绍了二叉树的顺序结构,是通数组来存储的,这里我们通过创建链式结构来存储,在堆上申请空间,结构如下: template <class DateType> struct BinaryTreeNode { DateType data;//数据域 BinaryTreeNode*
阅读全文
摘要:堆排序 堆排序的前提 堆排序:是指利用堆这种数据结构所设计的一种排序算法。堆排序通过建大堆或者小堆来进行排序的算法。 举个例子:给定我们一个数组{2, 3,4, 2,4,7},我们可把这个数组在逻辑上看成是一种堆的结构,然后进行建堆,建大堆(或建小堆)我们就可以在堆顶选出一个最大(最小)的数,通过不
阅读全文
摘要:树的基本概念和结构 树的相关概念 **节点的度:**一个节点含有的子树的个数称为该节点的度; 如上图:A的为2 叶节点或终端节点:度为0的节点称为叶节点; 如上图:D、F、G、H为叶节点 **非终端节点或分支节点:**度不为0的节点; 如上图:A、B…等节点为分支节点 **双亲节点或父节点:**若一
阅读全文
摘要:栈 栈的概念和结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)加粗样式的原则。 入栈:从栈顶放入数据的操作。 出栈:从栈顶取出元素的操作。 栈的实现
阅读全文
摘要:带头双向链表的结构 看下面的图,就是我今天要给大家分享有结构——带头双向循环链表。这里的头是不存放任何数据的,就是一个哨兵卫的头结点。 用代码来表示每一个节点就是这样的: 数据域和指针域 两个指针,一个指向前驱结点,一个指向后继结点 给定两个构造函数,有参和无参,分别对结点的指针域和数据域进行初始化
阅读全文
摘要:单链表 **概念:**链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。 值得注意的是: 1.链表的在逻辑是连续的,物理上不一定是连续的; 2.现实中节点是从堆上申请的。 链表的实现 链表的单个结点的定义 就像这个图一样,一个空间用了存放数据(数
阅读全文
摘要:顺序的概念与结构 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。 一般分为两种:静态顺序表和动态顺序表 静态顺序表 #define N 100 typedef int SLDataType;//以便可以存储不同类型的数据 type
阅读全文