2.2分析算法分析算法的结果意味着预测算法需要的资源。虽然有时候关心内存、通讯或者计算机硬件,但是通常我们想度量的是时间。在分析算法之前,要有一个实现技术的模型,包括描述所用资源及其代价的模型。我们假定一种通用的单处理器计算模型—随机访问机(random-access machine,RAM)来作为...
分类:
编程语言 时间:
2015-07-17 13:35:57
阅读次数:
133
对一种数据结构的扩张过程可分为四步骤:
1)选择基础数据结构
2)确定要在基础数据结构中添加哪些信息
3)验证可用基础数据结构上的基本修改操作来维护这些新添加的信息
4)设计新的操作
动态顺序统计
动态顺序统计在红黑树的基础上添加x.size域,满足:x.size = x.left.size+x.right.size+1,扩张的结构如下:
操作:
1)检索具有给定秩的元...
分类:
编程语言 时间:
2015-07-17 10:11:34
阅读次数:
143
区间树是一种对动态集合进行维护的红黑树,具体设计如下:
step1:基础数据结构
我们选择的基础数据结构式红黑树,其中每个节点增加...
分类:
编程语言 时间:
2015-07-17 10:06:01
阅读次数:
442
这一节决策树其实是对前面的堆排序,快排等是最优的比较算法的证明, 首先说下《算法导论》上对决策树的定义:一棵决策树是一棵满二叉树(注意看下面解释),表示某排序算法作用于给定输入所做的所有比较,而控制结构,移动等都被忽略了。 注意:这里个人认为定义是错误的,决策树不是一棵满二叉树,连完全二叉树都不是。...
分类:
其他好文 时间:
2015-07-17 00:10:39
阅读次数:
242
二叉查找树具有如下性质:
x是二叉查找树中的一个节点,如果y是x左子树中的一个节点,则y.key ≤ x.key ; 如果 y 是 x 右子树中的一个节点,则 x.key ≥ y.key.
在二叉树上执行的基本操作的时间与树的高度成正比。当这棵树是完全二叉树时,这些操作的最坏情况运行时间为Θ(lgn);如果该树是含n个节点的线性链,则这些操作的最坏情况的运行时间为...
分类:
编程语言 时间:
2015-07-16 19:57:41
阅读次数:
157
红黑树(red-black tree)是一种“平衡”查找树,它能保证最坏情况下,基本的动态集操作时间为O(lgn).
性质:
1)每个节点要么是红的,要么是黑的
2)根节点和叶子节点(NIL)是黑色的
3)若一个节点是红色的,则他的两个孩子节点是黑色的
4)对于每一个节点x,从该节点到其子酸节点的所有路径上包含相同数目的黑节点(#black nodes = black-height(x)...
分类:
编程语言 时间:
2015-07-16 19:54:30
阅读次数:
141
2.3-1: 3 9 26 38 41 49 52 59 3 26 41 52 9 38 49 573 41 52 26 38 57 9 493 41 52 26 38 57 9 492.3-2:(归并排序)void mergeSort(int a[], int l, int r){ int...
分类:
编程语言 时间:
2015-07-16 00:40:14
阅读次数:
133
2.1插入排序 伪代码与真代码的区别在于,伪代码我们使用最简洁、最清晰的表示方法来说明给定的算法。这样的原则下,在伪代码中就会出现英语。 插入排序的特点:1、少量元素时,是一种有效的算法;2、直观想象:按顺序排扑克牌;3、是一种原址排序算法,即在同一个数组中完成排序工作。下面是伪代码: //INSE...
分类:
编程语言 时间:
2015-07-14 22:25:13
阅读次数:
145
前置阅读:jdk源码阅读-Map :http://www.cnblogs.com/ccode/p/4645683.html在前置阅读的文章里,已经提到HashMap是基于Hash表实现的,所以在讲解HashMap之前 ,有必要提前了解下Hash的原理。参考《算法导论》《算法》
分类:
其他好文 时间:
2015-07-14 17:27:18
阅读次数:
91
http://m.blog.csdn.net/blog/zhangzhengyi03539http://m.blog.csdn.net/blog/zhangzhengyi03539/46795831一、选择最大值或者最小值的最优算法对于长度为n的数组,已证找最大值或者最小值比较操作下界就是n-1。所...
分类:
编程语言 时间:
2015-07-14 13:12:56
阅读次数:
161