In Lösung fehler?

Neue Frage »

Auf diesen Beitrag antworten »
neuling96 In Lösung fehler?

Ich glaube die Lösung scheint nicht so zu stimmen??

bei b hätte ich einen einwand
public void turn(int i){

for( int y=0; y<= (i+1)/2; y++){
int temp=a[y];
a[y]= a[i-y];
a[i-y]= temp;
}
}
 
Auf diesen Beitrag antworten »
eulerscheZahl

Die Musterlösung und dein Code machen fast das selbe.
MIt einem Unterschied: for( int y=0; y<= (i+1)/2; y++){
y geht zu weit, weshalb du bei ungeradem i die innersten Elemente doppelt tauschst.
Bsp.: i = 3
y = 0, 1, 2 wird getauscht mit 3, 2, 1, also erst 1<->2 und dann 2<->1.
Daher ist die Musterlösung korrekt, deine jedoch nicht.
Auf diesen Beitrag antworten »
neuling96

so müsste es gehen?

public static void turn(int i){
for( int y=0; y<i/2; y++){
int temp=a[y];
a[y]= a[i-y];
a[i-y]= temp;
}
}
Auf diesen Beitrag antworten »
neuling96

for( int y=0; y<=i/2; y++)
 
Auf diesen Beitrag antworten »
eulerscheZahl

Mit y<=i/2 tauschst du bei einer ungeraden Anzahl von Arrayelementen (=geradzahliges i) den mittleren Eintrag mit sich selbst. Das ist nicht falsch, aber unnötig. Das Minimum an Vertauschungen kriegst du mit y < (i+1)/2.
Auf diesen Beitrag antworten »
neuling96

stimmt smile

danke Wink
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »