【发布时间】:2016-09-23 16:46:03
【问题描述】:
我不知道如何实现一个特殊的哈希表。 这个想法是哈希表给出了一个近似值 匹配。所以一个完美的哈希表(比如在 java.util 中找到的) 只是给出一个地图,这样:
Hashtable h = new Hashtable();
...
x = h.get(y);
如果 x 是将映射 h 应用于参数 y 的结果, 即基本上在数学中它将是一个函数 即 x = h(y)。现在对于近似匹配,a 快速给我的数据结构:
x = h(k) where k=max { z<=y | h(z)!=null }
问题是 k 可能离给定的 y 很远。例如 y 可能是 2000,下一个占用的 slot k 可能是 1000。有些 线性搜索会很昂贵,数据结构应该可以完成这项工作 更快速。
我知道如何用树(*)来做,但是用散列的东西,可以吗? 也工作?或者也许结合一些树和哈希属性在寻找 数据结构?一些倾向于 O(1) 访问的数据结构?
再见
(*) 您可以使用按 y 排序的树,并在 y 下方或等于 y 下找到下一个。
【问题讨论】: