在阅读关于稀疏向量的数据结构设计的一些材料时,作者做了如下声明。
可以使用哈希表 实现一个简单的索引到值映射。访问索引值比使用直接数组慢 访问,但不是很多。
为什么在使用哈希表时评估索引值会更慢?
此外,作者声明
哈希支持实现的问题在于迭代变得相对较慢 所有值按索引排序。 基于树结构或树的有序映射 类似的可以解决这个问题,因为它按顺序维护密钥。此功能的价格是访问时间较长 时间。
为什么在迭代所有值时,基于散列的实现会执行错误?这是因为评估指数的速度较慢吗?
树形结构如何帮助解决这类问题?
答案 0 :(得分:3)
由于计算开销,访问哈希表索引的速度稍慢 在哈希表中,如果您请求项目452345435,则表示它不在单元格452345435中...哈希表执行一系列计算以查找正确的单元格。这取决于实现 的 Hash table Performance analysis 强>
哈希表不存储已排序的数据。因此,如果您想以正确的顺序获取项目,则需要调用排序算法。
要解决此问题,您可以使用树或任何其他已排序的数据结构
但这会增加从O(1)(哈希表)到O(logn)的插入复杂性(插入树,排序数据库)。
那是因为每个索引都会被添加到两个数据结构中,复杂度将是O(1)+ O(logn)= O(logn)
它仍然只需要O(1)来检索数据,因为它足以从哈希表中请求它。