算法的基本思想是这个.
你有一组点P,你想找到P中两个点之间距离最短的点.
一个简单的蛮力方法将遍历P中的每一对,计算距离,然后取一个距离最短的一对.这是一个O(n²)算法.
但是,您所谈论的算法可能会更好.该想法首先根据坐标之一(例如x坐标)对所有点进行排序.现在,您的集合P实际上是一个排序的点列表,按其x坐标排序.该算法现在将其作为输入而不是一组点,而是一个排序的点列表.让我们调用算法ClosestPair(L),其中L是作为参数给出的点列表.
ClosestPair(L)现在以递归方式实现,如下所示:
如果您的意思是此算法,请执行以下操作:
递归包括与上面相同的步骤.例如,使用(1,2)和(1,11)的调用会: