我有一个Point列表,我想按邻居排序。

举个例子 :
列表初始化

(0,0); (1,0); (5,0); (6,0);
(0,1); (1,1); (5,1); (6,1);


清单排序

(0,0); (1,0); (0,1); (1,1);
(5,0); (6,0); (5,1); (6,1);


我怎样才能做到这一点 ?

list.sort(new Comparator<Point>() {
    @Override
    public int compare(Point p1, Point p2) {
        // Euclidian distance or something like that
        return ;
    }
});

最佳答案

您需要一种从一组点开始的算法。


如果集合中没有点,则停止。
制作一个新集合(当前对象),然后从原始集合中选择任意一点作为新集合中的第一个点。
从集合中删除选定的点,并将其添加到当前对象。
检查所选点的八个邻居中的每一个,以查看原始集合中是否有任何邻居。
对于找到的任何点,请从步骤3开始运行此算法(为此使用递归)。
如果没有邻居在原始集中,请返回到步骤1。

关于java - Java:对具有邻居的List <Point>进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23143735/

10-11 15:20
查看更多