我试图解决这个问题,我想出了一个解决方案如下,这是完全不同于“维基百科”算法我不明白我的解决方案有什么问题,也就是o(nlogn)。
输入:一组坐标沿X-Y轴。{(2,4),(5,3),(3,7),(4,2),(6,3)}
我的解决方案:
根据x坐标对给定集合排序。{(2,4),(3,7),(4,2),(5,3),(6,3)}。
复杂度o(o)
找到最小值{连续对之间的距离},我们称之为最小值。
复杂性O(n)
根据y坐标对给定集合排序{(4,2),(5,3),(6,3),(2,4),(3,7)}。复杂性O(nlog)
找到连续{ }之间的最小{距离},让我们称之为Mimiy.复杂性O(n)
min_d=min(min_x,min_y)产生min_d的对是距离最短的对。
这不对吗?我错过了什么?
最佳答案
是的,这是错误的。以集合{(0,0),(0,10),(10,0),(0.2,0.2)}为反例您的方法在任何一个顺序中都不会有(0,0)和(0.2,0.2)作为连续元素,因此也永远不会找到彼此最接近的两个点。
关于algorithm - 最接近的对点是不同的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34928538/