【问题标题】:Fast Retrieval Data Structure based on realtional operators as <, >,基于关系运算符的快速检索数据结构如 <, >,
【发布时间】:2012-09-18 05:10:47
【问题描述】:

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

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

【问题讨论】:

    标签: performance data-structures language-agnostic hashmap


    【解决方案1】:

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

    对于不寻常的情况,其他结构,例如展开树甚至简单的链表可能会更好。这取决于您的需求。

    【讨论】:

    • 如何使用 TreeMap 根据比较结果检索结果。
    【解决方案2】:

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

    不过,您没有提及任何有关插入速度或内存要求的信息。排序后的数组搜索速度也很快(二分搜索),但插入速度很慢。

    我假设正在谈论使用字符串进行索引。最快的查找是字典(在我的基准测试中,是 C++ 映射的两倍),但它的存储量很大。

    对于字典,每个节点都有一个指针数组(指向节点):每个可能的字符串字符都有一个指针。要插入,您遍历字符串中的每个字符,并为该字符添加一个节点(如果尚不存在),遍历该节点并继续,直到您位于字符串的末尾。然后,您将数据存储在该节点上。这个数据结构还有一个额外的好处,就是当你有一个部分完成的键时,你可以选择构建单词完成列表。

    【讨论】:

    • 听起来很像。不要与 Python 字典混淆,后者只是哈希映射。
    猜你喜欢
    • 1970-01-01
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 2018-10-12
    • 2015-11-10
    相关资源
    最近更新 更多