public static void FindClosestPoints(Helfer.Point[] points, int k, InOut.Ergebnis erg) { Func <Helfer.Point, int> GetDistance = p => p.X * p.X + p.Y * p.Y; // Distance to origin squared PrioArrayQueue <Helfer.Point> prioQ = new PrioArrayQueue <Helfer.Point>(k, (p, p2) => GetDistance(p).CompareTo(GetDistance(p2)), true); foreach (Helfer.Point p in points) { prioQ.Enqueue(p); } Helfer.Point[] ergArr = new Helfer.Point[k]; for (int i = 0; i < ergArr.Length; i++) { ergArr[i] = prioQ.Dequeue(); } erg.Setze(ergArr); }
public Input(int k, int x, int y, string points) // "1,2;2,3" { this.k = k; this.p = new Helfer.Point(y, x); this.points = InOut.ConvertToList(points); }