算法导论学习笔记
文章平均质量分 86
qq_29864971
这个作者很懒,什么都没留下…
展开
-
算法导论学习笔记—Strassen算法的Java实现
Strassen算法 Strassen算法的核心思想是令递归树稍微不那么茂盛,相比于简单的“分而治之”的矩阵递归计算,其递归的分支由8条减少到7条。其时间复杂度为O(n的lg7次方)。虽然,它的算法中需要新增10个(n/2 * n/2)的中间矩阵S1-S10。每次子矩阵的加减运算会增加O(n平方/4)的时间消耗,所以代码在执行S1-S10时,这部分的时间复杂度为10*O(n平方/4),但原创 2017-11-29 16:27:28 · 393 阅读 · 0 评论 -
最大二叉堆的Java实现
二叉堆的介绍二叉堆是完全二元树或者是近似完全二元树,按照数据的排列方式可以分为两种:最大堆和最小堆。最大堆:父结点的键值总是大于或等于任何一个子节点的键值;最小堆:父结点的键值总是小于或等于任何一个子节点的键值。二叉堆一般都通过"数组"来实现,下面是数组实现的最大堆和最小堆的示意图: 二叉堆的图文解析图文解析是以"最大堆"来进行介绍的。最大堆的核心内容是"添加"和"原创 2017-12-08 21:13:06 · 342 阅读 · 0 评论 -
判断N维矩阵是否是Monge矩阵的Java实现
Monge阵列的概念 在一个m*n的矩阵中,任意选中两行两列,其交叉点的4个元素会构成一个二维矩阵,并且在该矩阵中:(左上+右下)利用“分而治之”思想遍历n*n维矩阵(n为2的幂) 首先,将一个n*n维矩阵拆成4个子矩阵:A11,A12,A21,A22 其次,判断每个子矩阵是否为Monge矩阵 然后,判断越过“垂直中线”的二维矩阵是否是Monge矩阵原创 2017-12-01 15:17:44 · 561 阅读 · 0 评论 -
算法导论学习笔记—红黑树最全的Java实现
红黑树(red-black-tree)是许多“平衡”搜索树的一种,它可以保证在最坏情况下基本动态集合操作的时间复杂度为O(lgn)。除遍历外,其余的方法的时间复杂度都为O(lgn),如INSERT, SEARCH, MAXIMUM, MINIMUM, DELETE等。本章 将依次介绍一些比较重要的方法,并赋予其Java代码的实现。详细的红黑树理论,可以参考《算法导论》中P174-192。注原创 2018-01-24 15:24:31 · 436 阅读 · 0 评论 -
B树的java实现
1. B树基本概念 关于B树的基本概念、定义可以参考这篇博客:http://blog.csdn.net/kalikrick/article/details/27980007,本文侧重于B树的java代码实现。1.1 B树性质B树T有如下性质: 1. 每个节点x有如下属性:x.n表示节点当前key的个数。x中key满足:x.key1 <= x.key2<= x.key...原创 2018-03-19 16:31:03 · 1400 阅读 · 1 评论