Data structure
c123_sensing
这个作者很懒,什么都没留下…
展开
-
混合颜料-python
题目描述你就是一个画家!你现在想绘制一幅画,但是你现在没有足够颜色的颜料。为了让问题简单,我们用正整数表示不同颜色的颜料。你知道这幅画需要的n种颜色的颜料,你现在可以去商店购买一些颜料,但是商店不能保证能供应所有颜色的颜料,所以你需要自己混合一些颜料。混合两种不一样的颜色A和颜色B颜料可以产生(A XOR B)这种颜色的颜料(新产生的颜料也可以用作继续混合产生新的颜色,XOR表示异或操作)。本...原创 2018-08-22 14:58:12 · 382 阅读 · 0 评论 -
算法导论--最小生成树详解
1、什么是最小生成树现在假设有一个很实际的问题:我们要在n个城市中建立一个通信网络,则连通这n个城市需要布置n-1条通信线路,这个时候我们需要考虑如何在成本最低的情况下建立这个通信网? 于是我们就可以引入连通图来解决我们遇到的问题,n个城市就是图上的n个顶点,然后,边表示两个城市的通信线路,每条边上的权重就是我们搭建这条线路所需要的成本,所以现在我们有n个顶点的连通网可以建立不同的生成树,每...原创 2018-08-21 19:02:50 · 691 阅读 · 0 评论 -
后缀表达式
为了解释后缀表达式的好处,我们先来看看,计算机如何应用后缀表达式计算出最终的结果20的。后缀表达式:9 3 1-3*+ 10 2/+ 规则:从左到右遍历表达式的每个数字和符号,遇到是数字就进栈,遇到是符号,就将处于栈顶两个数字出栈,进行运算,运算结果进栈,一直到最终获得结果。 下面是详细的步骤:1. 初始化一个空栈。此桟用来对要运算的数字进出使用。2. 后缀表达式中前三个都是...原创 2018-08-21 11:19:22 · 5421 阅读 · 1 评论 -
无向带权图的最小生成树算法——Prim及Kruskal算法思路
边赋以权值的图称为网或带权图,带权图的生成树也是带权的,生成树T各边的权值总和称为该树的权。 最小生成树(MST):权值最小的生成树。 生成树和最小生成树的应用:要连通n个城市需要n-1条边线路。可以把边上的权值解释为线路的造价。则最小生成树表示使其造价最小的生成树。 构造网的最小生成树必须...转载 2018-08-21 09:43:38 · 1113 阅读 · 1 评论 -
无向连通网的最小生成树
任何一个无向连通图的最小生成树(8)。A.只有一棵B.有一棵或多棵C.一定有多棵D.可能不存在答案:B 无向连通图一定有最小生成树。 ...转载 2018-08-21 09:31:40 · 10070 阅读 · 0 评论 -
B-树详细分析及B树B-树B+树B*树概念
B- 树是为了磁盘或其它存储设备而设计的一种多叉(下面你会看到,相对于二叉,B树每个内结点有多个分支,即多叉)平衡查找树。B- 树又叫平衡多路查找树。一棵m阶的B 树 (m叉树)的特性如下:树中每个结点最多含有m个孩子(m>=2);除根...转载 2018-08-21 09:22:59 · 884 阅读 · 0 评论 -
B树、B-树、B+树、B*树
B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); &n转载 2018-08-21 09:19:28 · 116 阅读 · 0 评论 -
B-树和B+树
B树为什么要B树磁盘中有两个机械运动的部分,分别是盘片旋转和磁臂移动。盘片旋转就是我们市面上所提到的多少转每分钟,而磁盘移动则是在盘片旋转到指定位置以后,移动磁臂后开始进行数据的读写。那么这就存在一个定位到磁盘中的块的过程,而定位是磁盘的存取中花费时间比较大的一块,毕竟机械运动花费的时候要远远大于电子运动的时间。当大规模数据存储到磁盘中的时候,显然定位是一个非常花费时间的过程,但是我们可以通过B树...原创 2018-08-21 09:10:06 · 161 阅读 · 0 评论 -
树与树的表示、二叉树及其遍历、二叉搜索树、平衡二叉树、堆、哈夫曼树、集合及其运算
参考:浙大数据结构(陈越、何钦铭)课件1、树与树的表示什么是树?客观世界中许多事物存在层次关系人类社会家谱社会组织结构图书信息管理分层次组织在管理上具有更高的效率!数据管理的基本操作之一:查找(根据某个给定关键字K,从集合R 中找出关键字与K 相同的记录)。一个自然的问题就是,如何实现有效率的查找?静态查找:集合中记录是固定的,没有插入和删除操作,只有查找动态查找:集合中...转载 2018-08-23 16:28:39 · 454 阅读 · 0 评论 -
创建一颗最优二叉树(哈夫曼树)
哈夫曼树是带权路径最小的一种特殊二叉树,所以也称最优二叉树。 在这里不讨论基本概念如如何计算路径等,而只着重于树的创建,具体过程让我们举例而言。其基本的原理为:将所有节点一开始都视为森林,每次从森林中选取两个根节点权值最小的树合并为一棵新树,新树的根节点大小为两个子节点大小的和,并将这棵新树重新加入到森林中。 如此一来每一轮操作都可以简化为两个基本操作:合并两棵树、插入新树,直到森林中只剩...转载 2018-08-23 16:18:39 · 686 阅读 · 0 评论 -
二叉树基础知识总结
一、树的定义树是一种数据结构,它是由n(n>=1)个有限结点组成一个具有层次关系的集合。树具有的特点有:(1)每个结点有零个或多个子结点(2)没有父节点的结点称为根节点(3)每一个非根结点有且只有一个父节点(4)除了根结点外,每个子结点可以分为多个不相交的子树。 树的基本术语有:若一个结点有子树,那么该结点称为子树根的“双亲”,子树的根称为该结点的“孩...原创 2018-08-23 15:02:28 · 142 阅读 · 0 评论 -
数列还原-python
题目描述牛牛的作业薄上有一个长度为 n 的排列 A,这个排列包含了从1到n的n个数,但是因为一些原因,其中有一些位置(不超过 10 个)看不清了,但是牛牛记得这个数列顺序对的数量是 k,顺序对是指满足 i < j 且 A[i] < A[j] 的对数,请帮助牛牛计算出,符合这个要求的合法排列的数目。输入描述:每个输入包含一个测试用例。每个测试用例的第一行包含两个整数 n 和...原创 2018-08-22 17:14:26 · 367 阅读 · 0 评论 -
python中列表 的交集,并集,差集
1. 获取两个list 的交集:#方法一:a=[2,3,4,5]b=[2,5,8]tmp = [val for val in a if val in b]print tmp#[2, 5] #方法二print list(set(a).intersection(set(b)))2. 获取两个list 的并集print list(set(a).union(set(b))...原创 2018-08-22 15:22:07 · 1026 阅读 · 0 评论 -
java实现迷宫算法
回溯法是一种不断试探且及时纠正错误的搜索方法,下面的求解过程采用回溯法。从入口出发,按某一方向向前探索,若能走通(未走过的),即某处可以到达,则到达一个新点,否则试探下一个方向;若所有的方向均没有通路,则沿原路返回前一点,换下一个方向继续试探,直到所有可能的通路都搜索到,或找到一条通路,或无路可走又返回到入口点。这里可以用一个栈来实现,每走一步,将该位置压入栈中,若该点无路可走,则出栈返回上一位...转载 2019-04-25 15:34:51 · 3310 阅读 · 1 评论