Guten Tag,
ich hab eine Frage zu meinem Code. Es geht darum, dass ich Permutationen dieser Art:
[ 4 1 2 3 ] feld[0]
[ 1 2 3 4 ] feld[1]
[ 4 3 2 1 ] feld[2]
[ 3 1 2 4 ] feld[3]
[ 4 3 1 2 ] feld[4]
[ 2 1 3 4 ] feld[5]
[ 4 1 3 2 ] feld[6]
[ 1 4 2 3 ] feld[7]
sortieren muss. Dabei gibt es diese Kriterien: Falls die Differenz vom Feld 0 Wert 1 - Wert 4 > als die Different Wert 1 - Wert4 vom darauffolgenden Feld. Bsp.: feld[0] < feld[1], da 1(4-3) < 3(4-1). Dabei wird der Betrag beachtet. Falls diese Differenz kleiner ist, werden die einzelnen Feldindexe vergleiche, sprich feld[1].wert (1) < feld[2].wert (1).
sortiert würde es dann so aussehen:
[ 3 1 2 4 ] feld[0]
[ 4 1 2 3 ] feld[1]
[ 1 4 2 3 ] feld[2]
[ 2 1 3 4 ] feld[3]
[ 4 1 3 2 ] feld[4]
[ 4 3 1 2 ] feld[5]
[ 1 2 3 4 ] feld[6]
[ 4 3 2 1 ] feld[7]
Dieses Feld soll nun mithilfe von Insertionsort mit der Schrittweite 3 sortiert werde. Meine Methode für den Insertionsort sieht bislang so aus :
Ich bin jetzt davon ausgegangen, dass es mir das Feld bereits nach Differenzen sortiert zurückgibt, was jedoch nicht der Fall ist. Ich hoffe Ihr könnt mir weiterhelfen.MfG
ich hab eine Frage zu meinem Code. Es geht darum, dass ich Permutationen dieser Art:
[ 4 1 2 3 ] feld[0]
[ 1 2 3 4 ] feld[1]
[ 4 3 2 1 ] feld[2]
[ 3 1 2 4 ] feld[3]
[ 4 3 1 2 ] feld[4]
[ 2 1 3 4 ] feld[5]
[ 4 1 3 2 ] feld[6]
[ 1 4 2 3 ] feld[7]
sortieren muss. Dabei gibt es diese Kriterien: Falls die Differenz vom Feld 0 Wert 1 - Wert 4 > als die Different Wert 1 - Wert4 vom darauffolgenden Feld. Bsp.: feld[0] < feld[1], da 1(4-3) < 3(4-1). Dabei wird der Betrag beachtet. Falls diese Differenz kleiner ist, werden die einzelnen Feldindexe vergleiche, sprich feld[1].wert (1) < feld[2].wert (1).
sortiert würde es dann so aussehen:
[ 3 1 2 4 ] feld[0]
[ 4 1 2 3 ] feld[1]
[ 1 4 2 3 ] feld[2]
[ 2 1 3 4 ] feld[3]
[ 4 1 3 2 ] feld[4]
[ 4 3 1 2 ] feld[5]
[ 1 2 3 4 ] feld[6]
[ 4 3 2 1 ] feld[7]
Dieses Feld soll nun mithilfe von Insertionsort mit der Schrittweite 3 sortiert werde. Meine Methode für den Insertionsort sieht bislang so aus :
Code:
public int insertionsort(permutation[] feld, int schrittweite) {
int count = 0;
for (int i = schrittweite; i<feld.length-1; i++) {
count++;
permutation neu = feld[i];
System.out.println(i);
int k = i;
System.out.println("K: " + k);
System.out.println("schrittweite: "+ schrittweite);
while(Math.abs(feld[i].wert(1)-feld[i].wert(4)) < Math.abs(feld[i-schrittweite].wert(1) -feld[i-schrittweite].wert(4))) {
feld[k] = feld[k-schrittweite];
k = k-schrittweite;
System.out.println("k-schrittweite: " + (k-schrittweite));
}
feld[k] = neu;
}
return count;
}
Ich bin jetzt davon ausgegangen, dass es mir das Feld bereits nach Differenzen sortiert zurückgibt, was jedoch nicht der Fall ist. Ich hoffe Ihr könnt mir weiterhelfen.MfG
Zuletzt bearbeitet: