我有一个根据key1使用B + Tree排序的touples {key1,key2}列表。该结构驻留在辅助存储器(HDD)中。我想实现一种算法,该算法需要在key1上排序的列表,但也需要使用key2随机访问列表。我不需要算法的整个列表,我根据需要从磁盘中获取块,因此B + Tree可以很好地处理所有发生的插入和删除。
我一直在敲我的头一周,我认为唯一的方法是使用第二个结构(例如第二个B树)和key2,但这会增加所需的已经很大的空间和更新所需的时间。树。
我对哈希表了解不多,但我不认为我可以用这些键将键映射到某个值,对吗?
您是否了解可以为我提供随机访问key2而不会使数据加倍的结构?
或者我可以使用不需要随机访问的替代算法,但我想将其留作最后的解决方案。
提前致谢
答案 0 :(得分:0)
我认为,如果您关心速度,最好的方法是构建一个指向key2的哈希表。 Hashtables在插入和查找方面通常比B树更快。 而且您不需要将所有数据加倍,只需将哈希表指向现有结构中的key2即可。
更新:如果您还没有使用哈希表,请阅读: