我的问题是选择一个事件驱动模拟的数据结构。
一些未来事件及其发生时间会被维护。N是固定的或至少有界的,范围从10到10000不等。每个事件都有一个唯一的ID,原则上可以通过这个ID检索到它,除了时间之外。
在循环中,以下操作发生: 下一个即将发生的事件被移除并执行,然后为随机未来时间生成相同类型的新事件以替换它。作为副作用,一些(<10)现有事件的发生时间会改变,并需要重新安排。这些待重新安排的事件的ID已知,但不知道它们的发生时间。
我想使用堆来快速获取最小元素,但我也需要快速重新排序任意元素,这些元素由ID访问。有一个名为BatHeap的工具,可以在O(log N)内找到元素并插入,但似乎不允许索引访问?
我更喜欢持久化的结构(部分是为了教育目的),但如果只有可变结构可以快速运行,我将使用它。
一些未来事件及其发生时间会被维护。N是固定的或至少有界的,范围从10到10000不等。每个事件都有一个唯一的ID,原则上可以通过这个ID检索到它,除了时间之外。
在循环中,以下操作发生: 下一个即将发生的事件被移除并执行,然后为随机未来时间生成相同类型的新事件以替换它。作为副作用,一些(<10)现有事件的发生时间会改变,并需要重新安排。这些待重新安排的事件的ID已知,但不知道它们的发生时间。
我想使用堆来快速获取最小元素,但我也需要快速重新排序任意元素,这些元素由ID访问。有一个名为BatHeap的工具,可以在O(log N)内找到元素并插入,但似乎不允许索引访问?
我更喜欢持久化的结构(部分是为了教育目的),但如果只有可变结构可以快速运行,我将使用它。
id
和time
,对吗?基本上,你想要优先考虑time
,并且将id
作为索引,这样正确吗? - Jackson Tale