数据结构
文章平均质量分 95
数据
knoci
Hello World!
展开
-
【数据结构】-线段树
线段树(Segment Tree)是一种数据结构,它主要用于维护区间信息(要求满足结合律),它可以实现 𝑂(log𝑛) 的区间修改,还可以同时支持多种操作(加、乘)。从数据结构的角度来说,线段树是用一个完全二叉树来存储对应于其每一个区间(segment)的数据。该二叉树的每一个结点中保存着相对应于这一个区间的信息。同时,线段树所使用的这个二叉树是用一个数组保存的,与堆(Heap)的实现方式相同。例如,给定一个长度为N的数组arr,其所对应的线段树TT的根结点代表整个数组所在的区间对应的信息,及。原创 2024-05-19 21:39:39 · 1664 阅读 · 1 评论 -
【数据结构】-AVL树
二叉排序树的形状取决于数据集,当二叉树的高度越小、结构越合理,搜索的性能就越好,时间复杂度 O(log2n)。G. M. Adelson-Velsky 和 E. M. Landis 在1962年的论文《An algorithm for the organization of information》中发表了一种名为AVL 树的数据结构,它就能很好地解决这个问题。AVL 树具有以下 2 个性质:左子树和右子树的深度之差的绝对值不超过 1;左子树和右子树通通都是 AVL 树。原创 2024-04-29 18:30:02 · 761 阅读 · 0 评论 -
【数据结构】-图以及图的存储结构
图(graph)是一种非线性数据结构,由顶点(vertex)和边(edge)组成。我们可以将图 𝐺 抽象地表示为一组顶点 𝑉 和一组边 𝐸 的集合。以下示例展示了一个包含 5 个顶点和 7 条边的图。如果将顶点看作节点,将边看作连接各个节点的引用(指针),我们就可以将图看作一种从链表拓展而来的数据结构。如图 9-1 所示,相较于线性关系(链表)和分治关系(树),网络关系(图)的自由度更高,因而更为复杂。原创 2024-04-28 20:38:51 · 803 阅读 · 0 评论 -
【数据结构】-二叉搜索树(BST)
如图所示,二叉搜索树(binary search tree)满足以下条件。对于根节点,左子树中所有节点的值 < 根节点的值 < 右子树中所有节点的值。任意节点的左、右子树也是二叉搜索树,即同样满足条件1.。二分搜索树有着高效的插入、删除、查询操作。平均时间的时间复杂度为 O(log n),最差情况为 O(n)。二分搜索树与堆不同,不一定是完全二叉树,底层不容易直接用数组表示故采用链表来实现二分搜索树。只有在高频添加、低频查找删除数据的场景下,数组比二叉搜索树的效率更高。查找元素插入元素。原创 2024-04-23 21:31:26 · 1121 阅读 · 0 评论 -
【数据结构】-二叉树的遍历
二叉树(binary tree)是一种非线性数据结构,代表“祖先”与“后代”之间的派生关系,体现了“一分为二”的分治逻辑。与链表类似,二叉树的基本单元是节点,每个节点包含值、左子节点引用和右子节点引用。/* 二叉树节点结构体 */int val;// 节点值int height;// 节点高度// 左子节点指针// 右子节点指针} TreeNode;/* 构造函数 */int/* 二叉树节点结构体 */ typedef struct TreeNode {int val;原创 2024-04-16 22:31:46 · 767 阅读 · 0 评论 -
【数据结构】-链表,队列,栈
其中使用QueueInfo存储当前队列的一些信息,data为动态申请的连续的队列空间,front指向队列头,rear为队列尾部,capacity为队列可容纳的大小。由于队列通常频繁的插入与删除,为了高效,一般使用固定长度的数组进行实现,并且可循环使用数组空间,所以要经常处理当前队列是否为满或为空。由于链表节点是在堆区动态申请的,其地址并不是连续的,因此无法进行随机访问,只有通过前一节点的next指针才能定位下一节点的地址。最后,当一个链表确定不再需要时,请不要忘记将其释放掉,并将链表首地址指向NULL。原创 2024-04-07 17:16:46 · 650 阅读 · 0 评论 -
【数据结构】-链表排序
我们从数组中选择一个元素,我们把这个元素称之为中轴元素吧,然后把数组中所有小于中轴元素的元素放在其左边, 所有大于或等于中轴元素的元素放在其右边,显然,此时中轴元素所处的位置的是有序的。从中轴元素那里开始把大的数组切割成两个小的数组(两个数组都不包含中轴元素),接着我们通过递归的方式,让中轴元素 左边的数组和右边的数组也重复同样的操作,直到数组的大小为1,此时每个元素都处于有序的位置。:首先,找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。原创 2024-04-11 21:39:22 · 1973 阅读 · 1 评论