Algorithm 列表按键1排序,随机访问按键2排序

Algorithm 列表按键1排序,随机访问按键2排序,algorithm,data-structures,sortedlist,b-tree,Algorithm,Data Structures,Sortedlist,B Tree,我有一个toules{key1,key2}列表,使用B+树按照key1排序。此结构驻留在辅助内存(HDD)中。我想实现一个算法,它要求列表按键1排序,但也要求使用键2随机访问列表。我不需要整个算法列表,我根据需要从磁盘获取块,这样B+树就可以很好地处理所有发生的插入和删除操作 我已经绞尽脑汁一周了,我认为唯一的方法是使用第二个结构(如第二个B树)和键2,但这将使更新树所需的空间和时间翻了一番 我对哈希表了解不多,但我不认为我可以用它们将一个键映射到某个值,对吗 你知道有一种结构可以让我在不加倍数

我有一个toules{key1,key2}列表,使用B+树按照key1排序。此结构驻留在辅助内存(HDD)中。我想实现一个算法,它要求列表按键1排序,但也要求使用键2随机访问列表。我不需要整个算法列表,我根据需要从磁盘获取块,这样B+树就可以很好地处理所有发生的插入和删除操作

我已经绞尽脑汁一周了,我认为唯一的方法是使用第二个结构(如第二个B树)和键2,但这将使更新树所需的空间和时间翻了一番

我对哈希表了解不多,但我不认为我可以用它们将一个键映射到某个值,对吗

你知道有一种结构可以让我在不加倍数据的情况下随机访问key2吗

或者,我可以使用一种不需要随机访问的替代算法,但我想把它作为最后的解决方案


提前感谢

如果您关心速度,我认为最好的方法是构建一个指向键2的哈希表。哈希表在插入和查找上通常比B树更快。 您不需要将所有数据翻倍,只需在现有结构中将哈希表指向key2即可

更新:如果尚未使用哈希表,请阅读: