Servus Community,
Das Beispiel ist eigentlich total einfach aber irgendwie klappt mein Code nicht.
Rein theorethisch würde es ja auch genügen die Athleten nach dem Gewicht zu sortieren und den schwersten gegen den 2tschwersten,....,den 2. leichtesten, gegen den leichtesten antreten zu lassen. Aber ich wollte auf Nummer sicher gehen und alle Paare durch probieren bzw. durch tauschen. Aber irgendwo ist ein Fehler
Das Beispiel ist eigentlich total einfach aber irgendwie klappt mein Code nicht.
Rein theorethisch würde es ja auch genügen die Athleten nach dem Gewicht zu sortieren und den schwersten gegen den 2tschwersten,....,den 2. leichtesten, gegen den leichtesten antreten zu lassen. Aber ich wollte auf Nummer sicher gehen und alle Paare durch probieren bzw. durch tauschen. Aber irgendwo ist ein Fehler
Code:
double geringsterUnterschied = Double.MAX_VALUE;
Ich wäre euch wieder dankbar für Anregungen
mfg El Hadji
double unterschiede = 0;
Teilnehmer [] sortiert = new Teilnehmer [dieTeilnehmer.length];
Teilnehmer[][] beste = new Teilnehmer [dieTeilnehmer.length / 2][2];
for(int i = 0; i < dieTeilnehmer.length-1; i++)
{
for(int j = 1; j < dieTeilnehmer.length; j++)
{
unterschiede = 0;
Teilnehmer merk = dieTeilnehmer[j];
dieTeilnehmer[j] = dieTeilnehmer[j-1];
dieTeilnehmer[j-1] = merk;
for(int k = 0; k < dieTeilnehmer.length-2; k++)
{
unterschiede += Math.sqrt((dieTeilnehmer[k].getGewicht()-dieTeilnehmer[k+1].getGewicht())*(dieTeilnehmer[k].getGewicht()-dieTeilnehmer[k+1].getGewicht()));
k++;
}
if(unterschiede <geringsterUnterschied)
{
geringsterUnterschied = unterschiede;
for(int z = 0; z < dieTeilnehmer.length; z++)
{
sortiert[z] = dieTeilnehmer[z];
}
}
}
}
for(int i = 0; i < beste.length; i++)
{
for (int j =0; j <2; j++)
{
beste[i][j] = sortiert[2*i+j];
}
}
return beste;
}
}