
算法
code_monky
这个作者很懒,什么都没留下…
展开
-
哈夫曼树
哈夫曼的构造算法:每次把权值最小的两颗二叉树合并typedef strcut TreeNode *HuffmanTree; struct TreeNode { int Weight; HuffmanTree Left, Right; }HuffmanTree Huffman( MinHeap H ) { int i; HuffmanTree T; BuildM原创 2016-07-29 23:04:34 · 415 阅读 · 0 评论 -
优先队列--C语言实现与Java例子
堆是用数组来组织的树结构,具有两个特性: 结构性:用数组表示的完全二叉树。 有序性:任一结点的关键字是其子树所有结点的最大值(or最小值)。 最大堆(MaxHeap):任一关键字是其子树所有结点的最大值。 最小堆(MinHeap):同理。堆的抽象数据类型描述:类型名称:最大堆(MaxHeap) 数据对象集:完全二原创 2016-07-28 00:07:41 · 789 阅读 · 0 评论 -
素数
素数的定义 只能被1和它本身整除的数叫素数。如2、3、5、7. 合数的定义 除了“1”和它本身以外,还能被其他数整除的数叫合数,如:4、6、8、9.在介绍质数、合数的概念时,我们都会追加一句:“1”既不是质数也不是合数。 有人要问,“1”也只能被1 和它本身整除,为什么不能算质数呢?而且“1”算作质数后,就不用再追加这么一句,岂不是更简单吗?原创 2016-08-01 17:07:22 · 942 阅读 · 1 评论 -
图的深度优先搜索(Depth First Search,DFS)
深度优先搜索的伪码描述:void DFS( Vertex V ){ visited[ V ] = true; for ( V的每个邻接点W ){ if( !visited[ W ] ){ DFS( W ); } } }从点V进入,将点V标识为已访问,visited[ V ] = true。然后对于V的每一个邻接点,对于每原创 2016-08-01 19:19:58 · 542 阅读 · 0 评论 -
图搜索算法之广度优先搜索(Breadth First Search,BFS)
图的广度优先搜索,类似于树的层次遍历。树的层次遍历,就是从根节点开始,一层一层的遍历各个结点。 具体的实现,是用一个队列,把根节点入队,然后根节点出队。根节点的左右两个孩子入队,然后按照左右顺序,弹出左孩子。 弹出左孩子时,将左孩子的两个孩子入队。以此类推。树是一种特殊的图,在图中实现广度优先搜索。在图中选定一个点,将这个点压入队列,将这个点弹出队列的时候,顺序的将与这个点直接相连的点一一压入队原创 2016-08-01 19:31:22 · 819 阅读 · 0 评论 -
图不连接时怎么完成遍历?
连通:如果从V到W存在一条(无向)路径,则称V和W是连通的。 路径:V到W的路径是一系列顶点{V,V1,V2,V3,….,Vn, W}的集合,其中任一对相邻的顶点间都有图中的边。路径的长度是路径中的边数(如果图为带权图,则是所有边的权重和)。如果V到W之间的所有顶点都不同,则称简单路径。 回路:起点等于终点的路径。 连通图:图中任意两顶点均连通。 连通分量:无向图的极大连通子图。 极大顶点数原创 2016-08-01 19:53:26 · 628 阅读 · 0 评论 -
图的最短路径算法
最短路径问题的抽象在网络中(带权图),求两个不同顶点之间的所有路径中,边的权值之和最小的那一条路径。 这条路径就是两点之间的最短路径(Shortest Path) 第一个顶点为源点(Source) 最后一个顶点为终点(Destination) 最短路径问题,其实不是一个问题,而是一套问题,这一套问题至少可以分为两大类: 单源最短路径问题:从某固定源点出发,求其到所有其他顶点的最短路径。 无权图 有原创 2016-08-01 20:38:02 · 537 阅读 · 0 评论