Feld in umgekehrte Reihenfolge bringen

Status
Nicht offen für weitere Antworten.
J

Java-Anfänger

Gast
Hi!

Ich soll eine Methode schreiben, die ein Feld in die umgekehrte Reienfolge bringt, ohne ein weiteres Feld zu erzeugen. Also aus z.B a b c d => d c b a; Gibt es einen java.util.Array Befehl? Oder wie löse ich dies am elegantesten??

Vielen Dank im Voraus :lol:
 

mic_checker

Top Contributor
ich glaub er meint jetzt keinen Sortieralgo oder (u.U. kommt es einem Sortieren gleich aber nicht immer) ?

So weit ich dich verstanden hab,willst du folgendes:

Feld a ursprünglich:

[a0] [a1] [a2] [a3] [a4]

-> Nachher:

[a4] [a3] [a2] [a1] [a0]

Hast du schon nen Ansatz?

Ist eigentlich nicht so schwer, wenn man sich obiges Schema mal genauer anguckt....
 
S

stev.glasow

Gast
stimmt sortiren ist quatsch, aber wie man das ohne ein weiters Feld machen soll weiß ich auch nicht.
 
S

stev.glasow

Gast
eigentlich lösen wir heir keine Hausaufgaben:
aber was hälts davon, habs nicht getestet:

Code:
int[] arr ={1,2,3};
        
        for(int i = 0; i < arr.length; i++){
            int tmp = arr[i];
            arr[i] = arr[arr.length - 1 - i];
            arr[arr.length - 1 - i] = tmp;
        }

[edit]
ah ne stuss was mach ich, der code sollte nicht gehen, aber da hast du mal nen Ansatz :)
 

mic_checker

Top Contributor
Also ich hab nen Ansatz:

a[0] a[1] a[2] a[3]

Im obigen Beispiel würde die Vorgehensweise so aussehn:

Hilfsvariable = a[3]
a[3] = a[0]
a[0] = Hilfsvariable
....
Hilfsvariable = a[2]
a[2] = a[1]
a[1] = Hilfsvariable
....

Wenn du es so machst musst du nur von hinten das array nach vorne durchlaufen und ne andere zählvariable noch deklarieren (die von 0....array.length-1 zählt).
Dann brauchst du auch nicht das ganze Array zu durchlaufen, nach 2 Durchläufen bist fertig.
 
S

stev.glasow

Gast
Das das ne Hausaufgabe ist sollen die das bestimmt selber austüffeln.
 

Bleiglanz

Gesperrter Benutzer
hatten wir doch schon mal, zwei Variablen tauschen ohne Hilfsvariable
Code:
int[] arr = new int[]{0,1,2,3,4,5,6,7};
for(int i=0, n=arr.length;i<n/2; i++) {
	arr[i] = arr[n-i-1] + 0 * (arr[n-i-1]=arr[i]);
}
 

kopfsalat

Bekanntes Mitglied
Alternative ohne Hilfsvariable (mit 3-fachem XOR) ;-)

Code:
int[] arr = new int[]{0,1,2,3,4,5,6,7};
for(int i=0, n=arr.length;i<n/2; i++) {
   arr[i]     = arr[n-i-1] ^ arr[i];
   arr[n-i-1] = arr[n-i-1] ^ arr[i];
   arr[i]     = arr[n-i-1] ^ arr[i];
}
 

mic_checker

Top Contributor
Prinzipiell gehts auch ohne Hilfsvariable, aber ich denke als Anfänger ist die andere Variante verständlicher.
Selbst wenn die Methode reverse() vorhanden ist, ich denke es ist ne nette kleine Fingerübung das selber zu machen.
Eigentlich sollte das ganze bisher gepostete reichen um das zu realisieren....
 
J

Java-Anfänger

Gast
Hi! Vielen Dank, für eure Anregungen. War keine Hausaufgabe, aber ihr habt mir sehr geholfen. Ist ja doch wirklich nicht so schwer wie ich am Anfang gedacht habe. Vielen Dank + Gruß
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben