寻找最近点对
目录
题目:在一个 n≥2 个点的集合 Q 中寻找距离最近的点对
问题分析
首先很容易想到暴力破解的方法,但是需要 O( n2 ) 的时间复杂度,所以考虑使用分治法,但将复杂度降为 O(nlogn) 还需要一些优化。 (关于运行时间的递归式为 T(n) = 2T( n2 ) + O(n))。
分治法
思路:把点集分为两半,最近点对可能全部属于左半点集,或者右半点集,或者一个属于左半点集,一个属于右半点集。所以最终结果为这三种情况的最小值。
分治法一般分为三个步骤:
- 分解:将 n 个点按照横坐标排序,并按照 1~n 编号,分成两部分:1~ ⌊n2⌋ 、 ⌈n2