Question

Supposons que j'ai une collection de points (PointCollection). Ce que je veux faire est de trouver la valeur minimale des coordonnées X et Y entre ces points. Il est évident que l'on pourrait effectuer une itération sur la collecte et l'étape consistant à vérifier des coordonnées par étape.

Je me demande s'il y a une solution plus rapide et plus efficace.

Avez-vous des idées?

Merci

Était-ce utile?

La solution

rapide à taper? Peut-être:

var xMin = points.Min(p => p.X);
var yMin = points.Min(p => p.Y);

Mais cette volonté exécuter plus lent qu'une seule boucle de foreach:

bool first = true;
foreach(var point in points) {
    if(first) {
        xMin = point.X;
        yMin = point.Y;
        first = false;
    } else {
        if(point.X < xMin) xMin = point.X;
        if(point.Y < yMin) yMin = point.Y;
    }
}

Autres conseils

Pour obtenir les plus bas et les positions x y séparement, utilisez

var lowestX = pointCollection.Min( p => p.X );
var lowestY = pointCollection.Min( p => p.Y );

Si vous voulez celui avec la position la plus basse combiné X et Y, utilisez

var lowest = pointCollection.Min( p => p.X + p.Y );
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top