算法导论
文章平均质量分 75
安卓笨笨鸟
无简洁
展开
-
算法导论——动态规划之最长公共子序列(LCS)和最长回文子序列(LPS)
有两个字符串A和B,假设为A=”abcbdab”,B=”bdcaba”;最长公共子序列(LCS)问题指的时找到A和B的一个公共的子串C,C的长度要是最长。 在这里我们很明显的发现最长子序列为”bcba” 用动态规划的思想来考虑这个问题: 若A={a1,a2,a3,…,am},B={b1,b2,b3,…,bn},Z={z1,z2,z3,…,zk}是A和B的任意LCS 1.如果am==bn,那么原创 2015-09-09 20:46:12 · 2052 阅读 · 0 评论 -
算法导论——(4)有序统计树(OrderStatisticTree,以红黑树为基本数据结构)
有序统计树是以红黑树为基本数据结构,增加了一个字段size,size表示以当前结点为树根的树上的节点数目,很明显有这样的关系根节点的size等于左孩子的size加上右孩子的size+1。 另外,如果之前有了解过有序统计量的相关知识,其中有一个操作便是查找排好顺序的列表中的某个特定索引的元素。那么有序统计树也是在红黑树的基础上加了这个操作。下面来分析OST(有序统计树)在红黑树上变化的部分。 1.原创 2015-08-20 20:14:31 · 2446 阅读 · 0 评论 -
算法导论——(2)二叉查找树的实现
正在学习算法导论,根据书上的伪代码和思想实现二叉查找树。 主要方法有: 1.查找最大关键字的结点 2.查找最小关键字的结点 3.查找特定关键字的结点 4.查找一个结点的后继结点(即按照中序遍历在该点后一个位置的点,这个点的键值是比该点键值大的最近的点)。 5.插入节点 6.删除结点每个方法的思想: 1.查找最大关键值的点: 根据二叉查找树的性质,关键字最大的点在树的最右边Entry原创 2015-08-16 19:02:48 · 560 阅读 · 0 评论 -
算法导论——(3)红黑树
红黑树是在二叉查找树的概念基础上提出的,所以它具备二叉查找树的所有性质,比如一棵子树的根节点的键值比他左子树上面的元素的键值都大,比他右子树上元素的键值都小。在二叉查找树的性质基础上给每个节点加了一个属性:颜色,树的结点属性(color,left,right,p,key).并附加了五条约束: 1.树的根节点颜色为黑色。 2.节点的颜色只能是黑色或者红色。(当然自己可以随意定颜色区分) 3.每个原创 2015-08-18 21:34:55 · 487 阅读 · 0 评论