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