Algorithm 最近点对(线性1-D情况)算法

Algorithm 最近点对(线性1-D情况)算法,algorithm,computational-geometry,Algorithm,Computational Geometry,我正在辅导一个学生,她的一个作业是描述一维情况下最近点对的O(nlogn)算法。但限制是她不允许使用分而治之的方法。我从一位用户几年前发布的一个问题中了解到了二维情况。我将链接它,以防有人想看它:对于二维的情况(平面)- 然而,对于1-D的情况,我只能想到一个解决方案,包括检查线上的每个点,并将其与线左右最近的点进行比较。但是这个解决方案不是O(nlogn),因为检查每个点需要的时间与n成正比,而比较每个点需要的时间与2n成正比。如果不使用分而治之的方法,我不确定log(n)从何而来 由于某种原

我正在辅导一个学生,她的一个作业是描述一维情况下最近点对的O(nlogn)算法。但限制是她不允许使用分而治之的方法。我从一位用户几年前发布的一个问题中了解到了二维情况。我将链接它,以防有人想看它:对于二维的情况(平面)-

然而,对于1-D的情况,我只能想到一个解决方案,包括检查线上的每个点,并将其与线左右最近的点进行比较。但是这个解决方案不是O(nlogn),因为检查每个点需要的时间与n成正比,而比较每个点需要的时间与2n成正比。如果不使用分而治之的方法,我不确定log(n)从何而来


由于某种原因,我想不出一个解决办法。任何帮助都将不胜感激。

提示:如果分数是从左到右排列的,您会怎么做,复杂性如何?首先排序点的复杂性是什么?

在我看来,可以:

  • 将位置排序为-O(n日志n)
  • 查找有序位置之间的差异-O(n)
  • 找出最小的差异-O(n)
  • 最小的差异定义了两个最近的点
  • 总的结果是O(n logn)