我有一个大小可变的数组列表,每个数组都通过保持最小值和最大值来表示一个间隔。当数据密集时,可以假定一个间隔的最小值接近上一个间隔的最大值,但是它们从不重叠。
我想通过尽可能少的比较来确定一个点属于哪个间隔。我认为是一种幼稚的方法是先比较分钟,然后左转小于。否则,将其与最大值进行比较,如果更大则右移,否则我们找到了间隔。我想知道是否可以与每个间隔的中位数进行比较,然后左移或右移而不先与最小值和最大值进行比较。当搜索范围变为0时,我的理论是我可以将其与后继的最小值进行比较,以确定哪个间隔正确。因此,这就像一个急切的分支策略,可以避免每个时间间隔进行两次比较,但是我不确定是否存在有效的急切解决方案。
什么是最佳算法?我已经读了很多关于段树的文章(我认为这是最接近我的问题),但是还没有找到关于智能二进制搜索方法的可靠参考。
时间间隔不重叠,并且对时间间隔列表进行排序,使时间间隔min大于其前身的max。