我没有找到这种数据结构,但是我不是该领域的专家。
该结构实现了一个集合,并且基本上是具有不变性的可比较元素的数组。不变式如下(递归定义):
长度为1的数组是合并数组。
长度为2 ^ n(对于n> 0)的数组是一个合并数组iff:
- 前半部分是合并数组,后半部分为空或
- 第一个数组已满并已排序,第二个数组是合并数组。
请注意,如果数组已满,则会对其进行排序。
要插入一个元素,我们有两种情况:
- 如果前半部分未满,请递归插入前半部分。
- 如果前半部分已满,则在后半部分中递归插入。
- 递归步骤后,如果整个数组已满,请合并两半(已排序),然后将其大小调整为其原始长度的两倍。
要查找元素,请在数组已满时使用二进制搜索将两半递归。(这应该是有效的,因为最多有上升的片段)。
该结构可以认为是mergesort的静态版本。
目前尚不清楚应该删除元素的方法。
编辑:提高我对结构的理解之后。
5
您定义了它,因此它存在。不过,我认为您必须解决一些问题。首先,不变式2使我感到困惑,因为它似乎不适用于您描述它们的中间状态。其次,删除元素后该怎么办?
—
拉斐尔
你梦见了一个数据结构,而不是梦想吧...
—
安德烈·鲍尔
@Raphael感谢您的评论,我根据您的想法改进了定义。我没有想到一种删除算法,我只是想检查一下这个结构是否在文献中,然后再花更多的时间(并且在Google中找不到任何东西)。在第一句话中,您可以定义上帝,但是上帝存在吗?:)
—
pbaren 2011年
@Andrej谢谢,英语不是我的母语。(我想也不是你的:)
—
pbaren 2011年
@Andrej:OP最初具有“ dreamt with ”,这几乎肯定不是这个意思。我将其更改为“ of”,而不是“ up”。两者在语法上都是正确的,但也都改变了含义。“ Of”是更有趣的发音选项
—
–AndrásSalamon