如何获得分区区间中值所属的分区

How to get partition where value belongs in partitioned interval?

本文关键字:分区 何获得 区间      更新时间:2023-10-16

我有一个区间,它被划分为许多较小的分区。

没有空格也没有重叠的间隔

E。g: (0;600)分为:

  1. (0;10>
  2. (10;25>
  3. (25;100>
  4. (100;125>
  5. (125;550>
  6. (550;600)

现在我有大量的值,我需要得到每个值的分区id。我可以存储一组值,将这个区间划分为更小的区间。但如果所有值都属于最后一个分区,则需要遍历整个数组。

所以我正在寻找任何更好的解决方案来存储这些间隔。我想要简单-最大150行长度的cca算法,我不想使用任何库,除了std.

由于分区中没有"空白",因此每个分区的末尾都是冗余的(它与下一个分区的开头相同)。

并且由于您已经对分区列表进行了排序,您可以简单地使用二进制搜索,并使用std::upper_bound

实际操作

编辑:

校正(upper_bound,不是lower_bound)。

你可以改进你的搜索算法。

将所有的范围放入数组中,然后使用二进制搜索算法搜索合适的范围。

它将花费O(logn),并且非常容易实现。