最小代价生成树构造算法

prim方法:     首先,从n个顶点中任选一个顶点Vx加入到原来为空的生成树中;     然后,重复执行以下操作:从一个顶点在生成树中,而另一个顶点不在生成树中的那些边中,选取一条权值最小的边,并将这些边以及它所关联的目前还不在生成树中的那个顶点加入到生成树中。     当生成树中的顶点...

2019-01-17 10:45:10

阅读数 2

评论数 0

堆和优先权队列

堆:     最小堆--一个大小为n的最小堆是一棵包含n个结点的顺序存储的完全二叉树,该二叉树中每个结点的关键字值大于等于其双亲结点的关键字值。     完全二叉树的根称为堆顶,它的关键字值是整颗二叉树上最小的。    最大堆--类似定义。 如何将一棵顺序存储的完全二叉树调整成...

2019-01-17 10:44:59

阅读数 4

评论数 0

平衡二叉搜索树

1、平衡二叉树的性质    --平衡二叉搜索树是一种具有平衡性质的二叉搜索树:        平衡二叉搜索树中,任何一个节点的左、右子树高度相差不超过1    --平衡因子:        平衡二叉搜索树中,每个结点的平衡因子定义为该节点的左子树的高度减去右子树的高度    --平衡二叉搜索树的插...

2018-03-31 21:27:15

阅读数 41

评论数 0

搜索——搜索树

1、二叉搜索树    ---性质:每个结点的关键字,都大于其左子树中所有结点的关键字,而小于其右子树所有结点的关键字。        (若中序遍历一棵二叉搜索树,将得到一个以关键字值递增排列的有序序列)    ---搜索:        比较待搜索元素关键字x与根结点关键字;若x较小,进入左子树搜...

2018-03-28 15:08:22

阅读数 53

评论数 0

搜索——一些搜索方法

1、顺序搜索    ---无序表的顺序搜索:从前往后(从后往前)逐个比较;可以在顺序表上实现,也可以在链表上实现。for (i=0; i<n; i++) if(L[i]==x) return S...

2018-03-28 14:24:24

阅读数 52

评论数 0

搜索——基本概念

关键字:用来标识一个数据元素的某个数据项主关键字:可以唯一标识一个数据元素的关键字次关键字:不能唯一标识一个数据元素的关键字搜索成功:在数据结构中找到了关键字值等于给定值的元素搜索失败:在数据结构中找不到关键字值等于给定值的元素平均搜索长度:搜索过程中关键字值之间的平均比较次数内搜索:元素全在内存...

2018-03-28 13:55:34

阅读数 30

评论数 0

关键路径求法

关键路径概念:      在无回路的有向网络中,假设只有一个入度为0的顶点(称为源点)和一个出度为0的顶点(称为汇点),则从源点到汇点之间的最长的路径称为关键路径。AOE网:    无回路有向网络可以用来表示一个包含多项活动的工程计划:有向边表示一项活动,边上的权表示完成这项活动需要的时间;顶点表...

2018-03-26 13:15:05

阅读数 3921

评论数 2

单源最短路径-迪杰斯拉特算法

思路:    在网络中,从某个顶点Vx出发到达另外一个顶点Vi,往往有多条路径,其中,边的权值之和最小的路径称为最短路径,并称Vx为这条最短路径的源点,Vi为终点。    显然,边最少的路径不一定是最短路径。    求网络中从指定源点到其余各顶点的最短路径的问题,通常称为单源最短路径问题。迪杰斯拉...

2018-03-26 12:34:16

阅读数 98

评论数 0

背包问题

实例问题:    当物品件数为4,每件物品的质量分别为11、8、19和6,背包容量为29时,描述问题求解过程的状态树如图所示,图中每个结点只标注了代表当前放入背包中的物品总质量,没有标注当前背包的剩余容量。这个背包问题的最优解是x[1]=0,x[2]=1,x[3]=1,x[4]=0。它表示放入背包...

2018-03-25 18:30:54

阅读数 28

评论数 0

哈夫曼树和哈夫曼算法

1、最优二叉树    具有最小加权路径长度的二叉树2、哈夫曼算法    由哈夫曼给出,用于构造最优二叉树的算法3、哈夫曼树    用哈夫曼算法构造的最优二叉树4、哈夫曼算法    很熟,所以就略了5、函数CreateHfmTree的步骤:    -首先,构造n棵哈夫曼树的对象,每棵树只有一个权值为...

2018-03-25 18:26:49

阅读数 232

评论数 0

堆和优先权队列

堆    1、最小堆      一个大小为n的最小堆是一棵包含n个结点的顺序存储的完全二叉树,该二叉树中每个结点的关键字值大于等于其双亲结点的关键字值。      完全二叉树的根称为堆顶,它的关键字值是整棵二叉树上最小的。    2、最大堆      类似定义    3、如何将一颗顺序存储的完全二...

2018-03-25 13:24:38

阅读数 51

评论数 0

树和森林

树和森林的存储表示:    1、孩子兄弟链表示法    2、双亲表示法---孩子兄弟链表示法    ---双亲表示法    树的遍历:    1、前序遍历访问根节点从左往右前序遍历根的每一个子树    2、后序遍历从左往右后序遍历根的每一个子树访问根节点    3、层次遍历        从上往下...

2018-03-24 15:21:46

阅读数 56

评论数 0

树和二叉树的遍历

前序遍历(VLR):    a)访问根节点    b)前序遍历左子树    c)前序遍历右子树中序遍历(LVR):    a)中序遍历左子树    b)访问根节点    c)中序遍历右子树后序遍历(LRV):    a)后序遍历左子树    b)后序遍历右子树    c)访问根节点层次遍历:   ...

2018-03-24 14:32:02

阅读数 29

评论数 0

关于表达式(中缀表达式,后缀表达式)

后缀表达式的求值过程:从左到右逐个扫描后缀表达式中的每个字符,对所遇到的字符作如下处理:    a.遇到操作符,进栈    b.遇到运算符,从栈中弹出两个操作数,执行该运算符规定的运算,将结果进栈    c.遇到表达式结束符#,弹出栈顶元素,结束处理过程代码:#include&lt...

2018-03-21 22:40:32

阅读数 25

评论数 0

排序——归并排序

基本思想:    首先,将R[1]~R[n]看成n个长度为1的有序表,将相邻的有序表成对归并,得到n/2个长度为2的有序表;然后,再将这些有序表成对归并,得到n/4个长度为4的有序表,如此反复进行下去,得到一个长度为n的有序表。    (与前面介绍的几种排序方法不同,归并排序需要用到一个和R同类型...

2018-03-20 22:34:26

阅读数 24

评论数 0

图——prim算法

用途:构造无向连通网络最小代价生成树步骤:    首先,从n个顶点中任选一个顶点Vx加入到原来为空的生成树中;然后,重复执行以下操作:从一个顶点在生成树中,而另一个顶点不在生成树的那些边中,选取一条权值最小的边,并将这条边以及它所关联的目前还不在生成树中的那个顶点加入生成树中。    当生成树中的...

2018-03-17 23:08:34

阅读数 145

评论数 0

图——拓扑排序

思想:1、任选一个入度为0的点,并输出之2、从图中删除该顶点及其所有的边3、重复步骤1、2,直到所有顶点都已输出,或者直到剩下的图中再也没有入度为0的顶点为止,后者表示图中包含有有向回路。数据结构:1、采用邻接表表示图2、InDegree[i],保存顶点i的入度3、数组order保存所求得的一个拓...

2018-03-17 16:53:51

阅读数 31

评论数 0

图——图的遍历

图的两种表示方法:1、图的邻接矩阵2、图的邻接表图的两种遍历方法:1、深度优先搜索:    访问顶点v,并对v做已访问标记;依次从v的未访问的邻接点出发,对图进行深度优先搜索    (图中所有顶点,以及在遍历时经过的边(即从已访问的顶点到达未访问的顶点的边)构成的子图,称为图的深度优先搜索生成树)...

2018-03-16 22:09:25

阅读数 50

评论数 0

排序——快速排序

基本思想:    首先,从R[1]~R[n]中任取一个元素,以该元素的排序码为标准把n个元素分成左右两组,即左边一组中所有元素的排序码都不大于标准元素的排序码,右边一组中所有元素的排序码都不小于标准元素的排序码,并将该标准元素放到这两组的中间;然后,用同样的方法分别对这两组元素进行分组,如此反复进...

2018-03-15 16:33:38

阅读数 22

评论数 0

排序——冒泡排序

基本思想:    首先,在R[1]~R[n]范围内,依次比较两个相邻元素的排序码,若R[i]较大,则交换R[i]和R[i+1],否则就不交换(i=1,2,...),经过这样一遍处理(称为一趟冒泡),就把R[1]到R[n]中排序码最大的元素换到了R[n]中;然后,在R[1]~R[n-1]范围内,再进...

2018-03-15 15:07:29

阅读数 30

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭