【发布时间】:2014-06-26 22:27:53
【问题描述】:
我需要按距离对点列表进行排序。
所以例如
input : [[1,2],[5,10],[2,4]...]
output : [[1,2],[2,4],[5,10]...]
(假设在几何上 [1,2] 和 [2,4] 是最近的,而 [2,4] 和 [5,10] 是最近的。
我需要它们对其进行排序,以便它们按距离排序,即在几何图上,点 a 最接近点 b ,点 b 最接近 c 等等。
有什么想法吗?
编辑:代码示例
public class Point
{
public double X {get;set;}
public double Y {get;set;}
}
List<Point> points = new List<Point>();
假设我的积分列表是按随机顺序填充的(不是按几何距离)。 所以积分看起来像......
点~[[1,2],[5,10],[2,4]...]
现在我的图表控件只取第一个和第二个点并在它们之间画一条线。这意味着它不关心它的几何顺序。 如果我只是提供上面的“点”列表,它会在每个点之间画线,从图表的角度来看,它看起来不正确,因为它们是“之字形”。
为了确保图表控件绘制一条直线(& 而不是之字形),我必须以正确的顺序传递点,这看起来像 ...
destination points ~ [[1,2],[2,4],[5,10]...]
所以我的问题是如何实现这一点。
注意:此处不能更改图表控件。
谢谢
【问题讨论】:
-
能否请您发布一个带有输入和输出的明确示例?提前谢谢你。
-
哪一个会指向a?
-
对于投票否决,请告诉我我在这里错过了哪些研究工作。以便我纠正它们!
-
创建一个返回距离的方法(here),然后将该方法用于
List.Sort或Array.Sort。 -
@user25018 这不是排序。这是一个旅行推销员问题。