数据结构
Griplan
这个作者很懒,什么都没留下…
展开
-
寒假训练 拓补排序 hihoCoder 1515 分数调查 带权并查集初见
题面:样例输入输出:input10 5 3 1 2 10 2 3 10 4 5 -10 5 6 -10 2 5 10 1 10 1 5 3 5output-1 20 0思路:带权并查集,原始并查集是通过不断地找爹来看祖宗是谁,换句话说只知道两者有关系但不知道有什么关系,如果引入权值的话,也就能更细化地处理一些情况,比如我比我爷爷大几岁这样。而引入权值又有一个问题,我比我爸小3岁,我爸比我爷小三岁,那比较我和我爷爷时候,要一点一点这样查么,时间复杂度原创 2021-01-23 01:02:28 · 95 阅读 · 0 评论 -
HDU - 2612 Find a Way bfs及理解
题目Pass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Ningbo one year, yifenfei have many people to meet. Especially a good friend Merceki.Yifenfei’s home is at the ...原创 2020-05-07 20:06:34 · 185 阅读 · 0 评论 -
差分数组 理解
如果要把数组区间[l,r]加上一个数,朴素做法可能一个for循环加上,但如果区间加操作多了,时间复杂度就跟不上了,所以引入差分数组,不对原始数组操作,操作延伸出的差分数组,下面是实现过程和理解原数组a[maxn],差分数组p[maxn],令p[i]=a[i]-a[i-1],其中差分序列p第一个数和原数组a第一个数相等,这样,我们要得到原数组,就累加,举例如下a[1]=f[1]=a[1]-0 a[2]=f[1]+f[2]=a[1]+(a[2]-a[1])=a[2]a[3]=f[1]+f[2]原创 2021-01-21 17:02:02 · 138 阅读 · 0 评论 -
陈越数据结构第三讲树(上)二叉树的遍历
1 递归遍历 A B C D F G I E H1.1 先序遍历过程:访问根节点->先序遍历左子树->先序遍历后子树遍历顺序:A (B D F E) (C G H I)遍历代码:void PreorderTraversal( BinTree BT ){ if( BT ) { printf("%d ",原创 2020-09-03 21:57:57 · 213 阅读 · 0 评论 -
陈越数据结构第三讲树(上)二叉树及存储结构
二叉树相关1.数据对象集一个有穷的节点集合。若不为空,则由根节点和其左右二叉树组成。2.操作集1.Boolean IsEmpty(BinTree BT)2.void Traversal(BinTree BT)3.BinTree CreatBinTree()3.遍历方法void PreOrderTraversal(BinTree BT):先序 根->左->右void InOrderTraversal(BinTree BT):中序 左->根->右void PostOr原创 2020-09-02 23:37:42 · 127 阅读 · 0 评论 -
陈越数据结构第三讲树(上) 树与树的表示
1 树的起源树的起源:思想跟二分搜索有点关系,为了更快速的查找数据,同时可能要插入删除数据,所以有了一些树特有的结构和函数。2 树的定义及术语定义:树(Tree)是n(n>=0)个结点的有限集。n=0时称为空树。在任意一棵非空树中:(1)有且仅有一个特定的称为根(root)的结点。(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,…,Tm, 其中每一个集合本身又是一棵树,并且称为根的子树注意点:(1)子树是不相交的(2)除了根节原创 2020-09-02 22:48:58 · 116 阅读 · 0 评论 -
陈越数据结构第四讲笔记_树(中)二叉搜索树
问题为什么要组织这样一种数据结构?这种数据结构怎么查找数据?插入新数据怎么维持树?定义空树或非空树且满足一下三点1.左子树所有键值小于根节点2.右子树所有键值大于根节点3.左右子树都是二叉搜索树二叉搜索树特别函数1.Position Find(ElementType X,BinTree BST):在树中查找元素X返回所在节点的地址2.Position FindMin(BinTree BST):返回最小元素所在节点的地址3.Position FindMax(BinTree BST):返原创 2020-09-02 17:12:06 · 117 阅读 · 0 评论 -
陈越数据结构第四讲笔记_树(中)二叉平衡树
#定义##平衡二叉树定义:平衡二叉树是空树或者任一子树左右子树高度差的绝对值小于等于1。##平衡因子:Balance Factor,简称BF=Hl-Hr,即左子树高度-右子树高度。##层数h和节点数nh关系:给定节点数n最高为O(log2n)nh=n(h-1)+n(h-2)+1nh=f(h+2)-1 斐波那契h=O(log2n)#平衡二叉树的调整##发现者:新插入元素后变得不平衡的离新插节点最近的为发现者,新插元素叫做麻烦节点##RR:麻烦节点在发现者右子树的右边,叫做RR插入,需要RR旋原创 2020-09-01 02:51:30 · 148 阅读 · 0 评论 -
陈越数据结构第二讲笔记_线性表及其实现
2.1定义:由同类型数据元素构成的有序序列的线性结构,元素个数为线性表的长度,起始点 为表头,结束点为表尾。数据对象:n个元素构成的有序序列操作集:1List MakeEmpty() 初始化一个空线性表2elementType FindKth(int K,List L)返回线性表L位序为k的元素,类型为elementtype3int Find(ElementType X,List L)返回线性表L位序为k的元素第一次出现的位置4void Insert(ElementType X,int原创 2020-08-16 01:01:58 · 136 阅读 · 0 评论 -
陈越数据结构第一讲笔记
第一讲基本概念:1.1测试程序用时,clock():捕捉程序从开始到clock()被调用的时间,单位是clock tick,头文件为 eg.clock_t start,stop; start=clock(); MyFunction(); stop=clock(); double time=(double)(stop-start)/CLK_TCKCLK_TCK为机器时钟每秒走的时钟打点数,即clock tick,不同机器此常数不一样。1.2算法大On上界,大Ωn下界,大cta n既是上界又原创 2020-08-15 21:08:51 · 188 阅读 · 0 评论