算法
文章平均质量分 77
summac
这个作者很懒,什么都没留下…
展开
-
一种寻找数组中和为最大的子数组的算法
import java.util.Arrays; /** * * * 一个寻找数组中和为最大的子数组的算法 * 《算法导论(第3版)》P38 * 算法思想:一个数组的最大子数组在该数组中的位置对于该数组的中点 * 来说有三种情况,1是在中点的左边,2是在右边,3是穿过中点。1,2两 * 种情况可以看成是有问题的一个子问题,利用递归的方法求解。第3种情 * 况可以在一个线性的时间原创 2015-06-16 11:21:39 · 434 阅读 · 0 评论 -
红黑树(Red-Black Tree)的学习
红黑树(Red-Black Tree)的学习记录 (算法导论第三版第13章) 红黑树是一种特殊的二叉搜索树,其中的每一个节点都会着一种颜色,红色或黑色,通过对某些性质的限定,可以保证二叉树是近似平衡的,即红黑树中没有一条路径会比其他路径长出2倍。 一棵红黑树应满足的性质: 1、 每个节点或是红色的,或是黑色的。 2、 根节点是黑色的。 3、 每个叶结点是黑色的。 4原创 2015-07-01 11:49:14 · 510 阅读 · 0 评论 -
Java实现的堆排序算法
Java实现的堆排序算法堆排序算法是对序列进行排序的众多算法之一。 堆排序算法的时间复杂度为O(nlgn),并且具有空间原址性:任何时候都只需要常数个额外的元素空间存储临时数据。 算法中涉及的基本概念: 1、二叉堆:一个近似的完全二叉树,树上的每一个节点对应数组中的一个元素。对应的规则为数组从左到右,二叉堆从上到下,同层从左到右。 2、最大堆:堆中的某个节点至多与父节点一样大的二叉堆。 算原创 2015-06-12 17:31:27 · 426 阅读 · 0 评论 -
动态规划
动态规划 应用动态规划方法求解的最优化问题应该具备的两个要素: 1、最优子结构 2、子问题重叠 最优子结构 如果一个问题的最优解包含其子问题的最优解,则称该问题具有最优子结构性质。动态规划方法要求问题具有这样性质,是因为在动态规划方法中,一个问题的最优解是通过组合子问题的最优解得到的。 确定一个问题是否具有最优子结构性质的方法: 1、一个问题是否可以划分原创 2015-07-08 11:39:12 · 496 阅读 · 0 评论 -
最长子序列(Longest-Common-Subsequence Problem)
最长子序列问题是应用动态规划解决的典型问题。 该问题符合动态规划算法求解问题的两个要素:最优子结构和子问题重叠。 最优子结构是指两个序列的子序列的最长子序列必然是原序列的某一个最长子序列的一部分。所以就可以根据子序列的解来组成原序列的解。 子问题重叠是指在最长子序列求解的过程中,会重复调用相同的子问题。 LCS问题的基本解题思想的描述: 给定的两个序列,有三种情况: 1、原创 2015-07-15 14:41:44 · 1060 阅读 · 0 评论