用于在范围列表中查找点的数据结构是什么?

时间:2016-05-01 19:15:43

标签: search data-structures collections range point

我试图为此用例找到正确的数据结构,但显然没有正确的搜索术语。

我有以下结构的许多副本:

struct Item {
  var start: Int
  var end: Int
  var type: Int
}

Item中表示的范围不重叠且连续。

我需要能够:

  • 查询给定Item索引中存在Int
  • 的内容
  • 从找到的Item
  • 前进/后退

Item的集合将定期更新,作为完整的重建或附加到最后。中间集合插入可能非常罕见,无法从头开始重建。

任何人都可以请我指出一个合适的结构或正确的术语,让我继续研究自己吗?

1 个答案:

答案 0 :(得分:0)

如果项目不重叠且连续,则不需要结束(如下次启动所暗示的那样),并且您可以使用您用于排序数据的任何数据结构,例如:树木或清单。

在一般情况下(=有重叠),你可能会使用interval tree