关于向量数据结构设计的问题?

时间:2011-06-10 18:41:48

标签: algorithm data-structures hash tree

在阅读关于稀疏向量的数据结构设计的一些材料时,作者做了如下声明。

  

可以使用哈希表    实现一个简单的索引到值映射。访问索引值比使用直接数组慢    访问,但不是很多。

为什么在使用哈希表时评估索引值会更慢?

此外,作者声明

  

哈希支持实现的问题在于迭代变得相对较慢    所有值按索引排序。     基于树结构或树的有序映射    类似的可以解决这个问题,因为它按顺序维护密钥。此功能的价格是访问时间较长    时间。

为什么在迭代所有值时,基于散列的实现会执行错误?这是因为评估指数的速度较慢吗?

树形结构如何帮助解决这类问题?

1 个答案:

答案 0 :(得分:3)

由于计算开销,访问哈希表索引的速度稍慢 在哈希表中,如果您请求项目452345435,则表示它不在单元格452345435中...哈希表执行一系列计算以查找正确的单元格。这取决于实现 的 Hash table Performance analysis

哈希表不存储已排序的数据。因此,如果您想以正确的顺序获取项目,则需要调用排序算法。

要解决此问题,您可以使用树或任何其他已排序的数据结构 但这会增加从O(1)(哈希表)到O(logn)的插入复杂性(插入树,排序数据库)。
那是因为每个索引都会被添加到两个数据结构中,复杂度将是O(1)+ O(logn)= O(logn)

它仍然只需要O(1)来检索数据,因为它足以从哈希表中请求它。