【发布时间】:2018-02-19 00:53:38
【问题描述】:
以下是常见的数据类型(即它有名称吗)?
与普通的Set 不同的是,它的独特之处在于它包含初始化时的“宇宙”,内存开销为O(C),最大内存开销为O(N/2)(仅当您删除every-other 时才会发生这种情况元素):
> s = new Structure(701)
s = Structure(0-700)
> s.remove(100)
s = Structure(0-99, 101-700)
> s.add(100)
s = Structure(0-700)
> s.remove(200)
s = Structure(0-199, 201-700)
> s.remove(202)
s = Structure(0-199, 201, 203-700)
> s.removeAll()
s = Structure()
这样的东西有标准名称吗?
【问题讨论】:
-
Range tree?此处的删除操作相当于范围树中的节点拆分 + 调整大小操作。
-
是什么让您认为如此具体的事物会有名字?这听起来像是对可以实现这一目标的实现的一种变相的无研究请求。
-
没有名字,但是关于如何实现这个的一些想法:stackoverflow.com/questions/39522165/…
-
@Dukeling 已经在 Scala 中实现了这个(我知道标准集合库中没有这样的东西)。只是想为我的类型取一个像样的名字(以前叫它
SparseRange)。 -
我称它为游程编码的位向量,因为它的语义是位向量,并且它的打印表示显示了连续的块。
标签: algorithm collections abstraction abstract-data-type