Algorithm 需要关于设计算法的建议

Algorithm 需要关于设计算法的建议,algorithm,Algorithm,我正在设计一种算法,其工作原理如下: 假设有N个插槽,它们最初是空的,每个插槽 插槽的编号是唯一的 随着时间的推移,物品将到达并放入编号匹配的插槽中 项目编号。但是,假定物品到达的顺序为 随意的 同时,合并算法将定期执行,以合并相邻占用的时隙,这样,随着时间的推移,这些时隙将越来越“连接”,并最终成为一个大的占用时隙,此时算法终止 我的算法是串行的。合并部分在一定数量后定期激活 新的插槽已被占用。您可能正在寻找基于的插槽 从n集合开始,每个集合对应一个空槽,填充两个相邻槽后将它们“合并”[uni

我正在设计一种算法,其工作原理如下:

假设有N个插槽,它们最初是空的,每个插槽 插槽的编号是唯一的

随着时间的推移,物品将到达并放入编号匹配的插槽中 项目编号。但是,假定物品到达的顺序为 随意的

同时,合并算法将定期执行,以合并相邻占用的时隙,这样,随着时间的推移,这些时隙将越来越“连接”,并最终成为一个大的占用时隙,此时算法终止

我的算法是串行的。合并部分在一定数量后定期激活
新的插槽已被占用。

您可能正在寻找基于的插槽

n
集合开始,每个集合对应一个空槽,填充两个相邻槽后将它们“合并”[union]。这可以通过在每组的每个根中保持“最高”和“最低”字段来实现

一旦您输入了一个元素,您需要找到它的根[easy to do this data structure],并将其与
set[root.highest+1]
set[root.lower-1]
-如果它们都已“填充”

每次合并还必须修改root.highest和root.lowest字段,但一旦找到新根,就可以在
O(1)
中轻松完成


如果您实现,算法的初始化时间是
O(n)
[其中
n
是插槽数],每个插入操作是
O(alpha(n))
其中
alpha(n)
是逆的,是次对数。

插槽的容量是多少?此外,合并任何两个相邻的项目的标准是什么slots@Dzire,容量可以忽略,因为一个插槽将以一对一的方式与一个项目匹配。非常感谢您提供的信息,这看起来非常有希望。