基于关系运算符的快速检索数据结构<,>,

时间:2012-09-18 05:10:47

标签: performance data-structures language-agnostic hashmap

像HashMap这样的数据结构会根据密钥的相等性来检索数据。

如果我想根据比较结果检索数据,我应该使用什么数据结构?

2 个答案:

答案 0 :(得分:1)

通常,您应该使用平衡二叉树。在C ++中,您可以通过std::map获得一个。在Java中,它被称为TreeMap。遗憾的是,Python在标准库中没有任何内容。

对于不寻常的情况,其他结构(如Splay Tree)甚至是简单的链接列表可能会更好。这取决于你的需求。

答案 1 :(得分:1)

正如已经回答的那样,平衡的树很好。

您没有提及有关插入速度或内存要求的任何信息。排序的数组也可以非常快速地进行搜索(二进制搜索),但插入速度很慢。

我假设正在讨论使用字符串进行索引。最快的查找是一个字典(在我的基准测试中,速度是C ++地图的两倍),但存储量很大。

使用字典,每个节点都有一个指针数组(指向节点):每个节点都有一个可能的字符串字符。要插入,您遍历字符串中的每个字符,并为该字符添加一个节点(如果尚不存在),遍历该节点并继续,直到您在字符串的末尾。然后,您将数据存储在该节点上。当您拥有部分完整的密钥时,此数据结构还可以为您提供构建单词完成列表的选项。