文章目录
- 一、简介
- 二、实现代码
- 三、实现效果
- 参考资料
一、简介
给定一个平面上n个点的点集,问题是找出点集中最近的点对。这个问题经常出现在许多应用程序中,例如,在空中交通管制中,监视靠得太近的飞机,因为这可能发生碰撞。这里实现一种方式来获取这两个点,具体计算过程如下所述:
- 首先对点集根据x坐标进行排序操作,方便后面的分割操作。
- 在排序后的点集中找到中间点,基于此将给定的点集分成两半。
- 递归地找到两个子集中两个点最小距离,如下图所示。
- 从上面的3个步骤,我们得到了最小距离的上界d。现在我们需要考虑成对的情况一对中的一个点来自左半部分另一个点来自右半部分。考虑经过中间点的垂直线,求出x坐标比d更接近中间垂直线的所有点,且建立一个条带数组来所有这些符合条件的点。