比起保持钥匙计数的简单哈希,多种或袋子提供的时间复杂性更好



java具有多键,而Smalltalk具有一个袋子类,据说它们是相同的功能:保持一组值,但允许多个值(每个值都有计数)。<<<<<<<<<<<<<<<</p>

,但似乎可以通过一张藏书表来实现多功能,该表可以保持键数(或者也许还有其他可能的实现)。

某些实施多组或袋子比上面的哈希提供了更好的时间复杂性?所需的操作可以是

  1. 插入项目
  2. 删除项目
  3. 获取集合中的最小值
  4. 获取集合中的最大值

特别是,我希望对于上面的四个操作中的每个操作中的每个操作,都可以比O(n)更好,可能是所有O(log n)或更好。(每当添加或从中添加值或删除值时,以某种分类的方式维护多式,上面的3和4才能为O(log n)。)

这取决于多速度是否由急速或排序集实现。

对于散布,插入/更新操作为o(1)(min和max as o(n)),但不利的一面是,标签不能使元素保持顺序。此外,这要求为每个元素存储,可以计算一个一致的哈希值。

对于一个排序的集合,所有操作均为o(log n),但随着元素按顺序保持顺序(因此,它在报告元素范围内是有效的)。这要求存储每个元素都是可比的(即在元素上存在订购)。

最新更新