![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 88
黑T毒物
这个作者很懒,什么都没留下…
展开
-
【数据结构】红黑树
目录红黑树的概念:红黑树的插入操作:情况一:情况二:情况三:红黑树与AVL树的比较:红黑树的概念:红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色属性,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩 倍,因而是接近平衡的。红黑树需要满足以下特性:1.每个结点不是红色就是黑色2. 根节点是黑色的3. 如果一个节点是红色的,则它的两个孩子结点是黑色的4...原创 2021-02-27 21:47:56 · 188 阅读 · 0 评论 -
【数据结构】快速排序
快速排序:快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法,其基本思想为:任取待排序元素序列中 的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。快速排序可以让时间复杂度达到O(log(N)* N);快速排序自从Hoare提出后还衍生出了...原创 2020-03-29 14:32:12 · 182 阅读 · 1 评论 -
【数据结构】希尔排序
直接插入排序:当插入第i(i>=1)个元素时,前面的array[0],array[1],…,array[i-1]已经排好序,此时用array[i]的排序码与 array[i-1],array[i-2],…的排序码顺序进行比较,找到插入位置即将array[i]插入,原来位置上的元素顺序后移直接插入排序实现:void sort(int* a , int n){ for(int end ...原创 2020-03-19 21:57:03 · 106 阅读 · 0 评论 -
【数据结构】二叉堆的概念 及其调整
堆的定义:堆通常是一个可以被看做一棵完全二叉树的数组对象。二叉堆满足如下性质: 堆中某个节点的值总是不大于或不小于其父节点的值;堆总是一棵完全二叉树。 将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。堆的存储:#define Elementtype inttypedef struct MaxHeap{ Elementtype *...原创 2020-02-26 16:51:56 · 190 阅读 · 0 评论 -
【数据结构】无头和有头单链表基本操作的实现与比较(C语言)
typedef int DataType;typedef struct SListNode{//结点 struct SListNode* next; DataType data;}SListNode,*PListNode;int main(){ PListNode Phead;}区别:(1)尾插操作:因为如果链表为空,无头链表需要对头指针Phead进行赋值所以传参时,需要...原创 2019-12-27 11:04:02 · 424 阅读 · 0 评论 -
【数据结构】平衡二叉树的概念及其实现
什么是平衡二叉树?对于二叉搜索树,节点的不同插入次序,将导致不同的深度和查找效率。这样就出现了一个问题。如何设计二叉树的结构可以让查找效率更高呢?如果一棵树它的左右子树都一样。既左右子树的高度和节点的数量都一样这样的树,查找效率就最高可是这个都一样的要求太高了。我们把标准再降低一点就有了平衡二叉树。平衡因子:BF(T)=HL- HR;其中HL,HR分别代表数T的左右子树的高度。平衡二叉树(A...原创 2020-02-20 13:23:31 · 538 阅读 · 0 评论 -
【数据结构】二叉树的概念及实现
二叉树的定义:二叉树T一个有穷的节点集合,这个集合可以为空,若不为空,则它由根节点和一个称为左子树TL 和 右子树TR的两个完全不相交的二叉树组成。二叉树的顺序存储分析:完全二叉树:若设二叉树的深度为h,除第h层外,其他各层(1~h-1)的节点数都达到最大个数,第h层所有节点都连续集中在最左边,这就是完全二叉树满二叉树:除最后一层无任何子节点外,每一层上的所有结点都有两个子结点。满二叉...原创 2020-02-16 16:22:44 · 160 阅读 · 0 评论 -
【数据结构】二叉搜索树的概念和常见操作
什么是二叉搜索树?我们把一般的查找操作分为两类,静态查找和动态查找。在静态查找中有一种很快的查找方法(二分查找时间复杂度为O( log(n) )。它之所以可以将时间复杂度降的这么低,是因为在查找之前对数据进行了顺序的排序。在查找时查找的顺序是固定的,是一个判定树一样的结构。把一个线性的查找过程转换成了一个类似树的查找过程。查找效率就是树的高度。从此我们得到启示:在查找时为什么不能把数据直接用二叉...原创 2020-02-16 14:35:56 · 181 阅读 · 0 评论 -
【数据结构】队列的定义及实现(c语言)
队列的定义:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列的顺序存储实现:队列的顺序存储通常由一个一维数组,一个记录队头的变量front,一个记录队尾的变量rear和一个记录队列大小的变量 MaxSize组成。结构如下:#...原创 2020-02-03 19:29:26 · 978 阅读 · 0 评论