![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
Ethan1994
爱篮球的程序员~
展开
-
并查集
[简介]在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。在数据量过大时,只能用并查集来描述。并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。并查集的相关介绍参见并查集详解。 其核心函数如下:#define原创 2015-07-19 14:35:49 · 348 阅读 · 0 评论 -
树状数组
树状数组在对数组进行修改和查询时,可在O(log(n))O(log(n))的时间内完成。其具体构造过程见博文彻底弄懂二维树状数组下面是一维树状数组核心的三个函数:#define MAX 32010 int tree[MAX]; //定义树状数组int lowbit(int x){ //返回x对应的二进制最右边的第一个1的位置 return x&(-x); }void ad原创 2015-07-18 16:41:02 · 319 阅读 · 0 评论 -
线段树
[简介]线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。 使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O(logN)O(logN)。而未优化的空间复杂度为2N,因此有时需要离散化让空间压缩。线段树的数据结构可根据题目的需要而进行设计,并没有一个统一的标准,其中一种较为常见的是由于二叉树的父节点编号n与左儿子编号原创 2015-07-20 20:40:51 · 398 阅读 · 0 评论