C++STL中的vector模板类非常好用,有效解决了数组大小固定的问题。 而vector本身是封装好的,一般使用时只需要知道vector提供的接口即可,而它的内部是怎样实现的一直没有去了解。 看了邓公的数据结构,收获颇多。 1.秩:一个元素的秩就是它的前驱元的个数(它的前面的元素的个数),各元素的 ...
分类:
编程语言 时间:
2019-01-27 19:05:42
阅读次数:
191
C++STL中的vector模板类非常好用,有效解决了数组大小固定的问题。 而vector本身是封装好的,一般使用时只需要知道vector提供的接口即可,而它的内部是怎样实现的一直没有去了解。 看了邓公的数据结构,收获颇多。 1.秩:一个元素的秩就是它的前驱元的个数(它的前面的元素的个数),各元素的 ...
分类:
编程语言 时间:
2019-01-23 01:24:28
阅读次数:
247
对一种数据结构的扩张过程可分为四步骤:
1)选择基础数据结构
2)确定要在基础数据结构中添加哪些信息
3)验证可用基础数据结构上的基本修改操作来维护这些新添加的信息
4)设计新的操作
动态顺序统计
动态顺序统计在红黑树的基础上添加x.size域,满足:x.size = x.left.size+x.right.size+1,扩张的结构如下:
操作:
1)检索具有给定秩的元...
分类:
编程语言 时间:
2015-07-17 10:11:34
阅读次数:
143
背景:假定集合 S 由 n 个元素组成,它们按照线性次序存放,于是我们就可以直接访问其中的第一个元素、第二个元素、第三个元素……。也就是说,通过[0, n-1]之间的每一个整数,都可以直接访问到唯一的元素 e,而这个整数就等于 S 中位于 e 之前的元素个数??在此,我们称之为该元素的秩( Rank)。不难看出,若元素 e 的秩为 r,则只要 e 的直接前驱(或直接后继)存在,其秩就是 r-1(或...
分类:
编程语言 时间:
2015-06-19 10:35:06
阅读次数:
151
本文的基础是红黑树 算法导论–红黑树通过在基础的数据结构中添加一些附加信息,来扩张一种标准的数据结构,然后编写新的操作来支持所需要的应用。下面是介绍在红黑树的基础上扩张的数据结构。1.动态顺序统计动态顺序统计可以在O(lgn)时间内确定任何的顺序统计量(即在n个元素的集合中,能在O(lgn)的时间内确定第i小的元素),同时也可以在O(lgn)的时间内计算一个元素的秩(即它在中序遍历下的位置顺序)...
分类:
编程语言 时间:
2015-05-20 16:26:45
阅读次数:
267
这一章节特别有意思。习题也比较多,但是很容易掌握。主要描述的就是在已知数据结构的基础上,通过增加或修改部分基础操作。来构造更加有效的新数据结构。14.1动态数据统计本节主要介绍如何修改红黑树,使得可以在O(lgn)时间内确定顺序统计量,如何在O(lgn)时间内确定一个元素的秩,即它在集合线性序中的位...
分类:
编程语言 时间:
2015-03-03 18:13:51
阅读次数:
137
算法导论读书笔记(16)目录动态顺序统计检索具有给定排序的元素确定一个元素的秩区间树步骤1:基础数据结构步骤2:附加信息步骤3:维护信息步骤4:设计新操作动态顺序统计之前介绍过
顺序统计 的概念。在一个无序的集合中,任意的顺序统计量都可以在 O ( n )时间内找到。而这里我们将介绍如何在 O ( ...
分类:
其他好文 时间:
2014-05-30 23:14:23
阅读次数:
338