Also die Aufgabe ist folgende:
Ich erstelle eine Methode, die ein Array bekommt, mit Koordinaten (sieht dann so aus: X1, Y1, X2, Y2...). Dann hab ich eine Methode die die Distanz zu einer gegeben Position berechnet und sie in einer ArrayList speichert.
Nun soll die Arraylist sortiert werden nach der geringsten Distanz zuerst, und die zugehörigen Koordinaten zu der Distanz in ein drittes Array abgespeichert werden. (Damit es also wieder so aussieht wie das Eingangsarray, nur diesmal nach Entfernung sortiert).
Soweit so gut.
Hab das mal implementiert, aber wenn ich nun bspw. ein Array der Länge 8 übergebe (also 4 Positionen) dann schreibt er bspw. die ersten beiden korrekt ins Array (auch richtig sortiert), und dann schreibt er den letzten EIntrag wieder und wieder in das Array bis es voll ist (Also so: 1,2,3,4,3,4,3,4....).
Ich steh da irgendwie auf dem Schlauch und krieg nich raus wo der Fehler is. Ich hoff einer kann mir helfen
PS.: Ja, ich weiß, die Variablen sind etwas krude bezeichnet, soll aber hier nicht der Punkt sein
Ich erstelle eine Methode, die ein Array bekommt, mit Koordinaten (sieht dann so aus: X1, Y1, X2, Y2...). Dann hab ich eine Methode die die Distanz zu einer gegeben Position berechnet und sie in einer ArrayList speichert.
Nun soll die Arraylist sortiert werden nach der geringsten Distanz zuerst, und die zugehörigen Koordinaten zu der Distanz in ein drittes Array abgespeichert werden. (Damit es also wieder so aussieht wie das Eingangsarray, nur diesmal nach Entfernung sortiert).
Soweit so gut.
Hab das mal implementiert, aber wenn ich nun bspw. ein Array der Länge 8 übergebe (also 4 Positionen) dann schreibt er bspw. die ersten beiden korrekt ins Array (auch richtig sortiert), und dann schreibt er den letzten EIntrag wieder und wieder in das Array bis es voll ist (Also so: 1,2,3,4,3,4,3,4....).
Ich steh da irgendwie auf dem Schlauch und krieg nich raus wo der Fehler is. Ich hoff einer kann mir helfen

Code:
int[] search(int[] a, int x, int y)
{
flagsInOrder = new int [a.length];
int nearestDist = 1000000000;
int b = a.length;
ArrayList<Integer> distancesAscending = new ArrayList<Integer>();
for(int coords = 0 ; coords < b; coords = coords+2)
{
nearestDist = getDistance( x, y, a[coords], a[coords+1] );
distancesAscending.add(nearestDist);
}
int tmp = 0;
for(int s = 0; s < b; s = s+2)
{
int tmpNearest = 1000000000;
for(int i = 0 ; i < distancesAscending.size(); i++ )
{
int c = distancesAscending.get(i);
if(c < tmpNearest )
{
tmpNearest = c;
tmp = i;
}
}
distancesAscending.remove(tmp);
flagsInOrder[s] = a[tmp +tmp];
flagsInOrder[s+1] = a[tmp+tmp+1];
}
return flagsInOrder;
}
PS.: Ja, ich weiß, die Variablen sind etwas krude bezeichnet, soll aber hier nicht der Punkt sein
