对位置列表进行排序

时间:2011-08-03 13:52:33

标签: java android sorting

我想对android.location.Location列表进行排序。排序应基于我的位置与列表中的位置的距离。所以我认为应该在搜索过程中计算距离。所以我决定使用插入排序。

这是正确的选择吗?

非常感谢

2 个答案:

答案 0 :(得分:7)

如果是List个地点,我会选择Collections.sort +自定义Comparator

final Location myLocation = someLocation;

Collections.sort(locations, new Comparator<Location>() {
    @Override
    public int compare(Location o1, Location o2) {
        Float dist1 = o1.distanceTo(myLocation);
        Float dist2 = o2.distanceTo(myLocation);
        return dist1.compareTo(dist2);
    }
});

答案 1 :(得分:1)

如果列表中有很多位置,您可能需要考虑排序算法的时间复杂度。

插入排序的最坏情况Senario时间复杂度为O(n ^ 2)[n是列表中的项目数]意味着如果要排序的列表是反向排序列表,则必须遍历整个列表对于列表中的每个对象,以便对其进行排序。除非您有非常大的列表,否则这似乎不是问题。

如果您不打算使用非常大的列表进行排序,插入排序可以很好地适应您的情况。您可以查看的其他一些排序包括选择排序,冒泡排序,快速排序或合并排序。