![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 76
数据结构的入门学习
"派派"
这个作者很懒,什么都没留下…
展开
-
位图与布隆过滤器
先看一个问题,给40亿个不重复的,未排序的无符号整数。再给一个无符号整数,如何快速判断一个数是否在这40。方案:1.遍历,时间复杂度O(N)2.排序(O(NlogN)),利用二分查找: logN3.位图解决数据是否在给定的整形数据中,结果是在或者不在,刚好是两种状态,那么可以使用一个二进制比特位来代表数据是否存在的信息,如果二进制比特位为1,代表存在,为0代表不存在。看这张图:一个char类型的数据是8位,可以用这8个比特位来标识数据是否存在。原创 2022-10-06 20:21:09 · 310 阅读 · 2 评论 -
最小生成树与最短路径
图的最小生成树及最短路径算法详解原创 2023-02-02 14:20:38 · 2583 阅读 · 0 评论 -
图的存储与遍历
邻接矩阵(二维数组)即是:先用一 个数组将定点保存,然后采用矩阵来表示节点与节点之间的关系。矩阵可以存储0或者1来表示两个顶点之间是否连通,也可以存储权值。. 用邻接矩阵存储图是能够快速知道两个顶点是否连通,缺陷是如果顶点比较多,边比较少时,矩阵中存储了大量值为0的矩阵,比较浪费空间,并且要求两个节点之间的路径不是很好求。例如:上面的邻接矩阵中,如果两个顶点之间不连通的话,用无穷大来表示。上面的是有向图,无向图的矩阵是对称的。邻接表:使用数组表示顶点的集合,使用链表表示边的关系。原创 2023-02-01 09:36:27 · 656 阅读 · 0 评论 -
并查集的使用
什么是并查集?将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个 单元素集合,然后按一定的规律将归于同一组元素的集合合并。在这个过程中要反复用到查询某一 个元素归属于哪个集合的运算。适合于描述这类问题的抽象数据类型称为并查集(union-find set)。例如:一开始共有0-9,共10个数,将它们的下表初始化为-1,表示这10个数各不相关,都属于不同的集合。现在,将它们开始合并,假设是这样合并:1-将要合并的两个元素的值进行相加,将相加的值赋予其中一个元素。原创 2023-01-12 17:42:33 · 629 阅读 · 0 评论 -
可怕的红黑树
红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。如图:1.2.红黑树的性质1. 每个结点不是红色就是黑色2. 根节点是黑色的3. 如果一个节点是红色的,则它的两个孩子结点是黑色的4. 对于每个结点,从该结点到其所有后代叶结点的简单路径上,均 包含相同数目的黑色结点5. 每个叶子结点都是黑色的(此处的叶子结点指的是空结点)原创 2022-08-22 17:37:06 · 178 阅读 · 0 评论 -
AVL数的实现
前面已经介绍过了二叉搜索树,使用二叉搜索树可以缩短查找数据的时间,但如果数据是有序的序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。 为了更好的调整结点,会定义为三叉链2.2AVL数的插入分为两部分:当把结点插入之后,平衡因子也要相继做出调整。当插入一个新结点,该结点的平衡因子是0,若该节点是父亲结点的右子树,那么父亲结点的平衡因子要+1,若是左子树,则-1。(规定不是一定的)。 如果父亲结点的平衡因子发生变动, 1(父亲结点的平衡因子变为1或-1,说明以父亲原创 2022-08-11 12:10:03 · 232 阅读 · 0 评论 -
二叉搜索树的实现
搜索二叉树的实现原创 2022-07-31 11:28:30 · 488 阅读 · 0 评论 -
二叉树的4种非递归遍历
二叉树的4种非递归遍历,你知道吗?原创 2022-05-01 11:48:46 · 1838 阅读 · 4 评论 -
八大排序详解
实用的排序算法,考研找工作必备!原创 2022-04-23 17:21:26 · 755 阅读 · 3 评论 -
二叉数的实现(经典题型)
目录1.通过(前驱)遍历的数组构建二叉树2.二叉树的三种遍历1.前驱遍历2.中序遍历3.后序遍历3.基础题型1.求二叉树节点个数2.求二叉数叶子节点个数3.求二叉树第k层节点个数4.求二叉树的深度5.二叉树查找值为x的节点1.通过(前驱)遍历的数组构建二叉树typedef char BTDataType;typedef struct BinaryTreeNode{ struct BinaryTreeNode* left; struct B原创 2022-04-15 18:57:05 · 517 阅读 · 0 评论 -
单链表的实现
彻彻底底搞定单恋表的实现原创 2022-03-26 16:12:01 · 992 阅读 · 0 评论 -
顺序表的实现
目录1.构建基本框架2.打印和初始化的实现3.尾插,尾删,头插,头删及增容的实现4.指定位置的插入,删除,和查找,销毁的实现5.总结1.构建基本框架//头文件的包含#pragma once#include <stdio.h>#include <stdlib.h>#include <assert.h>typedef int SLDataType;// 动态的顺序表typedef struct SeqList{ SL原创 2022-03-26 14:51:50 · 515 阅读 · 0 评论 -
堆排序问题(TOP-K问题)
了解如何建堆,什么时候建大堆,小堆(建堆调整算法比较等),topk问题解析等.......原创 2022-04-08 21:28:43 · 1225 阅读 · 0 评论 -
队列及栈的实现及相关题型
明白栈与队列的实现,掌握相关题型原创 2022-04-05 16:23:24 · 777 阅读 · 0 评论 -
经典链表--题型详解
链表基础题,常见常用的几种思路原创 2022-04-04 16:50:40 · 1602 阅读 · 0 评论