我不知道用于此问题的数据结构。我希望结构具有:
实际系统是:
我有一堆对象,每个对象都有一个唯一的id。我的程序需要接收id的请求并返回相关对象。
每当它收到我想要的请求时:搜索结构以查看它是否在那里。如果是,请退货。如果不是,请将其从磁盘加载到内存中(将其放入结构中,以便下次请求时不必使用磁盘)然后将其返回。
我正在使用C.
这是一个similar question,但我不确定它有多相关。
答案 0 :(得分:11)
在你的情况下,Hash table可能是一个非常好的解决方案 - 即使它存在切割时它不在O(1)中:它是一个非常有效的解决方案。
答案 1 :(得分:2)
唯一适合它的结构是...... C数组。
SomeObject arr[MAX_NUM_OBJECTS]
以快速有效的方式处理这个问题
答案 2 :(得分:1)
为什么不把它们全部放在一个文件中,mmap文件,让操作系统处理缓存?
答案 3 :(得分:0)
取决于数据量和密钥数量。哈希表适用于难以比较的大量数据(字符串,复杂数据结构等)。对于具有整数键的较小数据集,通常可以使用简单的红黑树获得更好的性能。这是因为好的哈希函数需要时间来执行。
实际上,这些都不符合你的要求。 O(1)访问只能在完美的哈希(并且没有哈希是完美的)和数组中真正实现。同时O(1)插入只能在队列,出列,堆栈,链表和完美哈希中进行(同样,没有哈希是完美的)。
为了给你一个更好的答案,我们真的需要知道你想要完成什么。有关您使用数据结构的更多信息将有助于