【发布时间】:2010-01-05 11:57:56
【问题描述】:
我不知道该问题使用什么数据结构。我希望结构具有:
- 恒定时间插入或删除。
- 按 id 进行恒定时间检索。
实际系统是:
我有一堆对象,每个对象都有一个唯一的 ID。我的程序将需要接收对 id 的请求并返回相关对象。
每当它收到我想要的请求时:搜索结构以查看它是否存在。如果是,请将其退回。如果不是,则将其从磁盘加载到内存中(将其放入结构中,以便下次请求时不必使用磁盘),然后将其返回。
我正在使用 C。
这是similar question,但我不确定它的相关性。
【问题讨论】:
-
我认为你不是第一个想要多合一廉价数据结构的人 :-) stackoverflow.com/questions/890357/…
-
这也不完全一样。
-
是的,那里请求“快速”而不是“O(1)”(并且还请求搜索)。这些问题都不会得到确切的解决方案,但您将接受此处与那里接受的答案完全相同。
-
数组要么没有 O(1) 查找,要么没有 O(1) 插入,这取决于你是否通过数组中的索引来计算(在这种情况下没有 O(1)插入),或者通过数组中对象的某些属性(在这种情况下没有 O(1) 查找)。如果“唯一 id”位于足够小的范围内,您可以将其用作索引并预先分配“所有内容的大数组”,那么在这种情况下,您可以通过索引进行 O(1) 读/写访问,而且你不需要插入。
标签: c performance data-structures