Forums Neueste Beiträge
 

Sortierung - Algorithmen - Möglichkeiten - Input Liste(x,y) - Collection

29/06/2009 - 09:48 von Andreas Ott | Report spam
http://www.fileuploadx.de/564292

Guten Morgen,

ich habe es jetzt wie unten oder im oberen Link gelöst.
Die Frage ist einfach, geht es noch eleganter, gibt es
Sortiermechanismen in C#

Falls jemand noch einen Tipp hat herzlichen Dank im voraus.

Grüße Andreas


http://www1.minpic.de/bild_anzeigen...3&ende




public static void Case02(Collection<Point> PointVector)
{
Collection<double> vorkommendeXWerteVector = new
Collection<double>();
Collection<bool> suchrichtungVector = new Collection<bool>();

int k = 0;
double merkeX = -9999;

vorkommendeXWerteVector.Clear();
suchrichtungVector.Clear();

// ** jetzt die Spalten ermitteln
for (k = 0; k < PointVector.Count; k++)
{
if (merkeX != PointVector[k].X)
{
vorkommendeXWerteVector.Add(PointVector[k].X);
merkeX = PointVector[k].X;
}
}

// ** zu den Spalten die Richtungsumkehr ermitteln
bool toggle = false;
for (k = 0; k < (int)vorkommendeXWerteVector.Count; ++k)
{
suchrichtungVector.Add(toggle);
toggle = !toggle;
}


double x1;
double y1;

double x2;
double y2;
//((x1 < x2) || (x1 == x2 && y1 < y2));

Point tempPoint;
bool change = false;
for (int i = 0; i < PointVector.Count - 1; i++)
{
x1 = PointVector[i].X;
y1 = PointVector[i].Y;

x2 = PointVector[i + 1].X;
y2 = PointVector[i + 1].Y;

change = false;

if (x1 < x2 || x1 > x2)
{
}
else if (x1 == x2)
{
if (GetSuchrichtung(x1, vorkommendeXWerteVector,
suchrichtungVector) == true)
{
if ( y1 > y2 )
{
change = true;
}
}
else
{
if ( y1 < y2 )
{
change = true;
}
}
}
else
{

}

if ( change == true )
{
tempPoint = PointVector[i + 1];
PointVector[i + 1] = PointVector[i];
PointVector[i] = tempPoint;
}
}
}
 

Lesen sie die antworten

#1 Frank Dzaebel
29/06/2009 - 20:26 | Warnen spam
Hallo Andreas,

ich habe es jetzt wie unten oder im oberen Link gelöst.
Die Frage ist einfach, geht es noch eleganter, gibt es
Sortiermechanismen in C#



ja ;-) zum Beispiel:

var points = from p in PointVector orderby p.X, p.Y select p;
foreach (Point p in points)
Console.WriteLine("x={0} y={1}",p.X,p.Y);
____________________
Variante zum Verstàndnis:
var points = PointVector.OrderBy(x=>x.Y).OrderBy(y=>y.X);


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen