算法与数据结构
文章平均质量分 78
andrewlcgu
这个作者很懒,什么都没留下…
展开
-
匈牙利算法
转载: 百度文库匈牙利算法(Edmonds算法)步聚:(1)首先用(*)标记X中所有的非M顶点,然后交替进行步骤(2),(3)。(2)选取一个刚标记(用(*)或在步骤(3)中用(yi)标记)过的X中顶点,例如顶点xi,如果xi与y为同一非匹配边的两端点,且在本步骤中y尚未被标记过,则用(xi)去标记Y中顶点y。重复步骤(2),直至对刚标记过的X中顶点全部完成一遍上述过程。(3)转载 2011-10-28 11:14:02 · 530 阅读 · 0 评论 -
Floyd算法的总结
floyd算法是一个经典的动态规划算法。用通俗的语言来描述的话,首先我们的目标是寻找从点i到点j的最短路径。从动态规划的角度看问题,我们需要为这个目标重新做一个诠释(这个诠释正是动态规划最富创造力的精华所在),floyd算法加入了这个概念 Ak(i,j):表示从i到j中途不经过索引比k大的点的最短路径。 这个限制的重要之处在于,它将最短路径的概念做了限制,使得该限制有机会满足迭转载 2013-09-10 09:14:45 · 2889 阅读 · 0 评论 -
R树相关知识
R树R树在数据库等领域做出的功绩是非常显著的。它很好的解决了在高维空间搜索等问题。举个R树在现实领域中能够解决的例子吧:查找20英里以内所有的餐厅。如果没有R树你会怎么解决?一般情况下我们会把餐厅的坐标(x,y)分为两个字段存放在数据库中,一个字段记录经度,另一个字段记录纬度。这样的话我们就需要遍历所有的餐厅获取其位置信息,然后计算是否满足要求。如果一个地区有100家餐厅的话,我们就要转载 2012-10-20 19:46:28 · 1824 阅读 · 0 评论 -
平衡二叉树
平衡二叉树,是一种二叉排序树,其中每一个节点的左子树和右子树的高度差至多等于1。有两位俄罗斯数学家G.M.Adelson-Velskii和E.M.Landis在1962年共同发明一种解决平衡二叉树的算法,所以不少资料也称这样的平衡二叉树为AVL树。 平衡因子(Balance Factor):二叉树上结点的左子树深度减去右子树深度的值。那么平衡二叉树上所有节点的平衡因子只可能是:-原创 2013-02-26 10:51:13 · 713 阅读 · 0 评论 -
快速排序
快速排序(Quick Sort)是由图灵奖获得者Tony Hoare设计出来,被列为20世纪十大算法之一,以“快速”命名表明该算法在整体性能上是排序算法的王者。 核心思想是:通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的。一趟排序过程示意图如下。原创 2013-02-18 15:40:07 · 529 阅读 · 0 评论 -
归并排序
归并排序是利用归并的思想实现排序,这里只介绍2路归并排序,其思想是:假设初始待排序队列记录数为n,看成n个长度为1的子序列,然后两两合并,得到个长度为2或1的有序子序列,再两两合并,……, 如此重复直至得到长度为n的有序序列为止。示意图如下。 实现2路归并排序需要额外的与待排序序列大小相同的空间。给出两个有序子序列合并的代码: /** * 两个有序序列的归原创 2013-02-17 20:53:59 · 551 阅读 · 0 评论 -
二叉排序树
Binary Sort Tree 定义: 或者是一棵空树,或者是具有下列性质的二叉树: 1、若左子树不空,则左子树上所有节点的值均小于根节点的值; 2、若右子树不空,则右子树上所有节点的值均大于根节点的值; 3、左右子树分别是二叉排序树 查找操作 : 递归进行原创 2013-02-12 13:37:55 · 706 阅读 · 0 评论 -
Shell排序
Shell排序是DL. Shell于1959年针对直接插入排序算法改进提出的,属于插入排序的范畴,是对直接插入排序算法的改进。直接插入排序在基本有序时效率较高,并且在序列规模不是很大时效率也很高,Shell排序就是针对这两点进行改进。核心思想是:待排序列有n个元素,先取一个小于n的整数h1作为第一个增量,把待排序列以间隔h1分成若干子序列,子序列内使用插入排序;然后取第二个增量h2( h2 > .原创 2013-02-15 10:54:28 · 15226 阅读 · 1 评论 -
fibonacci查找
fibonacci查找是一种分治的方法,利用fibonacci数列对有序表进行有效的分割而实现查找的过程。其核心思想如下图:有序表的长度为F[k]-1,其中F为Fibonacci数列,若原有序表长度不等于某个F[k] - 1,则可以通过复制最后一个记录的key值使得长度等于F[k] - 1。取mid = low + F[k - 1] - 1, 因为Fibonacci中F[k-1] /原创 2013-02-11 22:54:41 · 1624 阅读 · 0 评论 -
二叉树递归和非递归遍历算法
package edu.cumt.jnotnull;import java.util.Stack;public class BinaryTree { protected Node root; public BinaryTree(Node root) { this.root = root; } public Node转载 2012-12-19 22:12:45 · 512 阅读 · 0 评论 -
堆排序
堆排序算法是Floyd和Willia在1964年共同发明的,同时也发明了“堆”这样的数据结构。 堆是具有下列性质的完全二叉树:每个节点的值都大于或者等于其左右孩子节点的值,称为大顶堆;或者每个节点的值都小于或等于其左右孩子节点的值,成为小顶堆。 如果按照层次遍历的方式编号,从1开始编号,根据完全二叉树的性质,则节点之间满足如下关系:原创 2013-02-17 17:51:00 · 112 阅读 · 0 评论