用于设计高速缓存的数据结构,具有高效的插入,删除和最高值的检索

时间:2009-08-15 19:48:37

标签: algorithm data-structures

我必须实现具有正常缓存操作的缓存,以及从缓存中快速检索最大元素的功能。

您能否建议实施此数据结构?

我在考虑使用哈希映射和列表来维护最小元素。

建议更复杂的其他方法。

2 个答案:

答案 0 :(得分:6)

堆非常适合快速检索max元素。

答案 1 :(得分:4)

有一种结构我称之为指数旁视列表,操作系统经常使用它来跟踪内存的空闲块。你从一些基本大小N(大约8字节和操作系统的页面大小)开始,然后构建一个列表的数组(或堆栈):

[list N]
[list N*2]
[list N*4]
[list N*8]
...

等等达到最大值。要维护它们,只需获取新条目(S)的大小,然后使用LOG2(S / N)作为列表数组的偏移量,以确定将新块添加到哪个列表。当您需要释放(或返回)最大块时,只需从最高大小的列表向下扫描,直到找到第一个非空列表,然后扫描该列表中最大的块。