参考《算法导论第三版》 红黑树删除方法比较。 传统方法: RB-Delete(T, z) if ((T.Nil == z.left) || (T.Nil == z.right)) y = z else y = RB-Min(z.right) if (T.Nil != y.left) x = y.le ...
分类:
其他好文 时间:
2016-09-14 21:53:24
阅读次数:
160
很多笔试面试都喜欢考察快排,叫你手写一个也不是啥事。我很早之前就学了这个,对快速排序的过程是很清楚的。但是最近自己尝试手写,发现之前对算法的细节把握不够精准,很多地方甚至只是大脑中的一个映像,而没有理解其真正的本质意图。于是今天结合了《数据结构》(严蔚敏),和《算法导论》进行一番探究。 首先先给出快 ...
分类:
编程语言 时间:
2016-09-10 20:50:52
阅读次数:
225
编译原理就是什么? 编译原理是计算机必修的一门重要学科。编译原理及技术从本质上来讲就是一个算法问题而已,当然由于这个问题十分复杂,其解决算法也相对复杂。 我们学的数据结构与算法分析也是讲算法的,不过讲的基础算法,换句话说讲的是算法导论,而编译原理这门课程讲的就是比较专注解决一种的算法了。 学习编译原 ...
分类:
其他好文 时间:
2016-09-09 18:44:53
阅读次数:
124
编译原理就是将人能懂的编程语言,转换为机器能懂的语言,编译原理及技术从本质上来讲就是一个算法问题而已,当然由于这个问题十分复杂,其解决算法也相对复杂。我们学的数据结构与算法分析也是讲算法的,不过讲的基础算法,换句话说讲的是算法导论,而编译原理这门课程讲的就是比较专注解决一种的算法你现在觉得枯燥,我想 ...
分类:
其他好文 时间:
2016-09-09 18:31:54
阅读次数:
157
一、分治法(递归算法) 说明:许多算法在结构上是递归的,为了解决某一问题,算法需要一次或多次递归的调用自身以解决紧密相关的若干子问题,这些算法遵循分治法的思想:将原问题分解为几个规模较小但类似于原问题的子问题,递归的求解这些子问题然后在合并这些子问题的解来建立原问题的解。 分治模式在每层递归时都有三 ...
分类:
编程语言 时间:
2016-09-08 14:32:29
阅读次数:
262
这阵子看了两本算法书,《算法》和《算法导论》。 前一本读着很轻松,内容基本与大学数据结构课程重叠,示例代码用java编写,学习曲线平缓,对应用程序员来说,读它就挺好。 后一本我是边看麻省理工的《算法导论》公开课边读的,力不从心,因为我数学基础不好(详下),如果不看数学证明,其内容跟前一本就差不多了, ...
分类:
编程语言 时间:
2016-09-07 01:37:54
阅读次数:
205
一、性质分析
1.1 性质定义
红黑树是一种二叉查找树,但在每个节点上增加一个存储位表示节点的颜色[RED或BLACK]。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,确保没有一条路...
分类:
编程语言 时间:
2016-09-06 17:02:13
阅读次数:
339
一、插入排序法: 解释:检查第i个数字,如果在它的左边的数字比它大,进行交换,这个动作一直继续下去,直到这个数字的左边数字比它还要小,就可以停止了。插入排序法主要的回圈有两个变数:i和j,每一次执行这个回圈,就会将第i个数字放到左边恰当的位置去。 性能:算法适用于少量数据的排序,时间复杂度为O(n^ ...
分类:
编程语言 时间:
2016-09-05 23:37:11
阅读次数:
202
本文参考:Google、算法导论、STL源码剖析、计算机程序设计艺术。
推荐阅读:
Left-Leaning Red-Black Trees, Dagstuhl Workshop on Dat...
分类:
其他好文 时间:
2016-08-25 21:50:39
阅读次数:
198
最近做了一些拓展欧几里得的题目呢,嘛,从一开始的不会到现在有点感觉,总之把我的经验拿出来和大家分享一下吧。
普通的欧几里得是用于解决求两个数a,b的gcd的,但是我们知道,gcd是线性组合 { ax+by | x,y∈Z }里的最小正元素(什么?不知道怎么来的?好吧。。。算法导论里数论算法那一章有证明),假若我们能够把这个x和y找出来,那么可以用来解决很多问题。
...
分类:
其他好文 时间:
2016-08-22 15:01:30
阅读次数:
301