Data structures 最佳的数据结构,有效地允许拉取所有范围(最小值、最大值),从而使值>;=最小值和值<;=最大值?

Data structures 最佳的数据结构,有效地允许拉取所有范围(最小值、最大值),从而使值>;=最小值和值<;=最大值?,data-structures,Data Structures,假设我有一组最小值和最大值。我想要一个数据结构,在给定外部值的情况下,它将最有效地为我提供(min,max)对,其中value>=min,value一种可能的方法是将(min,max)放在一个数组中,并按思维排序 然后使用二进制搜索在数组中找到满足条件的区域,然后进行搜索。我认为答案可能是这样的。给定一个点或一组点,它允许您有效地拉满意的间隔。当然,唯一需要注意的是,初始数据结构的构造效率不高,但这在任何索引等中都是不可避免的。您所描述的问题也称为“刺穿查询”。它在图形编程教科书中有很好的描述,

假设我有一组最小值和最大值。我想要一个数据结构,在给定外部值的情况下,它将最有效地为我提供(min,max)对,其中value>=min,value一种可能的方法是将(min,max)放在一个数组中,并按思维排序
然后使用二进制搜索在数组中找到满足条件的区域,然后进行搜索。

我认为答案可能是这样的。给定一个点或一组点,它允许您有效地拉满意的间隔。当然,唯一需要注意的是,初始数据结构的构造效率不高,但这在任何索引等中都是不可避免的。

您所描述的问题也称为“刺穿查询”。它在图形编程教科书中有很好的描述,这是一个非常相关的问题


此外,上的维基百科页面可能会有所帮助。这些树是通常用于解决此问题的数据结构。

查询可以通过以下方法解决:

外部树是对(x,y)的值x的搜索树。这些对(x,y)存储在叶节点中。外部树的每个节点V都包含一个指向y索引搜索树y的指针,其中包含V的所有子树对


要解决范围查询([Value,infinity)=RangeX,RangeY),请在外部搜索树中搜索最左边的xmin满足值正在使用哪种类型的数据值?int?doubles?floats?strings?列表不能在O(n)
foreach(pair)中执行此操作吗检查最大值和最小值;按下回答键;
EvilTeach:这些将是整数或长整数。nonnb:我没有使用RDBMS,否则我会这么做……事实上,问题是我不能使用RDBMS,我正在尝试实现索引将提供的速度提升。Marnix:例如,在不重叠的情况下,您将获得显著的速度通过使用BST来提升,因为您将转到O(ln(n)),而且数据集相当大。我在这里追求最高效率。理想情况下,创建索引或数据结构只是在开始时的开销,这会让后面的操作运行得更快。范围的大小是否有限制。我考虑过这种方法,但想知道是否有办法避免对n min满足条件的数组。这似乎是正确的解决方案。间隔树wiki准确地描述了您的需求