将N个点放入n个区间的最佳算法是什么

时间:2016-10-28 04:25:53

标签: algorithm

假设我在区间[0,1]中有N个点并且我已经将这个单位区间划分为n个子区间,比如[0,x1),[x1,x2),...,[xn- 2,xn-1),[xn-1,1]然后我需要确定这N个点中的每一个属于哪个子区间。完成这项工作的最佳算法是什么?这些子间隔不均匀分布,但它们是已知的。 N是O(1百万),n是O(1 k)。

2 个答案:

答案 0 :(得分:1)

假设每个区间的下限,即0,x1,x2,x3 ....按顺序,保留数组中区间的第一个值(即下限),然后使用二进制搜索来定位更大的索引或者小于n所属的数字。

答案 1 :(得分:1)

IF点未排序,请按坐标对其进行排序。

对包含间隔列表的点列表进行合并(如MergeSort中的合并算法)。

复杂性为O(NlogN + N + n)(如果两个列表都已排序,则为O(N + n)

与@Mukul Varshney方法复杂度O(Nlogn)比较并为您的案例选择最佳变体