【问题标题】:understanding the benefit direct-address tables了解收益直接地址表
【发布时间】:2016-09-11 10:25:26
【问题描述】:

我正在努力理解直接地址表。根据下图(来源:Cormer's Introduction to Algorithms),您定义了一个大数组来存储对象。必须是存储对象的字段之一是整数类型。该整数定义了对象数组中的位置。它在这里被命名为key。

因此,如果您想执行搜索或删除,您只能使用密钥(但不能使用卫星数据)执行此操作。无法对卫星数据进行搜索。我并没有真正看到这种结构的好处,因为它限制了您只能基于键进行搜索,这些键始终是整数,而不是感兴趣的实际卫星数据。为了使这种数据结构有用,需要有一种方法可以从卫星数据中计算密钥,对吧?

【问题讨论】:

  • 键可以是任何东西,不必是整数。不过,它确实必须有一个哈希码。 “卫星”数据在设计上不可搜索,它是 map:key->value 的实现,您可以通过 key 快​​速访问,但不能通过 value 访问(此外,您可以有多个相同的值,但不能输入map,您可以在multimap 中同时拥有两者。如果您确实需要同时访问两者,则需要实现双向映射,这是一种不同的数据结构。

标签: algorithm search data-structures


【解决方案1】:

每个数据结构都是为特定目的而构建的,可以在某些操作的情况下发挥优势,同时对其他操作造成不利影响。

直接地址表允许快速访问给定键的值,或者换句话说,从键域到值(或内容)范围的映射。密钥可以是评论中提到的任何内容,但必须是“可散列的”。

它可以用于许多重要目的,例如在内存转换中,您希望将键值(偏移量)快速转换为实际地址。这将允许人们轻松地使用标签,如果有变化(新地址替换旧地址),则必须简单地修改转换机制,即。映射表(基于直接地址表)。

在其他几种情况下,这可能会很有用。

【讨论】:

    猜你喜欢
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    • 2017-04-07
    • 2016-10-20
    • 2012-05-14
    • 1970-01-01
    相关资源
    最近更新 更多