Presort指向最近的一对来实现O(nlogn)而不是O(nlog ^ 2n)

时间:2016-01-30 07:14:21

标签: algorithm sorting

在最近对算法中,据说根据x和y坐标预分频点可以帮助减少从O(nlog ^ 2n)到O(nlogn)的时间复杂度,但是怎么会发生呢?我认为预分配也需要O(nlogn)时间而不是O(n),所以方程仍然是T(n)= 2T(n / 2)+ O(nlogn)。

任何人都可以展示如何完成预分配以达到O(n)吗?或者我对此有任何误解吗?

1 个答案:

答案 0 :(得分:0)

根据these steps,不确定你称之为“预先”,但算法是 O(n log(n))

  1. 首先,根据 x 坐标进行排序。

  2. 递归地,分为两个类似大小的集合,除以 x m 值。

    一个。求解每个左右子集到 x m

    湾对于左边的每个点,找到包含右边点的有界矩形中的最近点(参见上面链接中的详细信息);对于右边的点也一样。

    ℃。返回b中找到的最小距离的最小值。

  3. 步骤1是 O(n log(n)。步骤2由 T(n)= 2 T(n / 2)+Θ(n)给出