我想对android.location.Location
列表进行排序。排序应基于我的位置与列表中的位置的距离。所以我认为应该在搜索过程中计算距离。所以我决定使用插入排序。
这是正确的选择吗?
非常感谢
答案 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是列表中的项目数]意味着如果要排序的列表是反向排序列表,则必须遍历整个列表对于列表中的每个对象,以便对其进行排序。除非您有非常大的列表,否则这似乎不是问题。
如果您不打算使用非常大的列表进行排序,插入排序可以很好地适应您的情况。您可以查看的其他一些排序包括选择排序,冒泡排序,快速排序或合并排序。