Reverse-ein array in Java
Ich versuche ein array in umgekehrter 2 Möglichkeiten:
1) erstellen Sie ein neues array zurück, das war sehr einfach:
public static int[] reverse(int[] array) {
int[] reverseArray = new int[array.length];
for(int i = 0; i < reverseArray.length; i++) {
reverseArray[i] = array[array.length - i - 1];
}
return reverseArray;
}
2) Die zweite Methode, ich habe meine Antwort, aber ich verstehe eigentlich nicht, dass es sehr gut ist, macht es wirklich benutzen zu tauschen, was den Wert des Arrays in eine temporäre variable ist, dann ändert es und gibt es zurück auf die ursprüngliche variable:
public static int[] reverse2(int[] array)
{
for (int i=0; i < array.length / 2; i++)
{
int temp = array[i];
array[i] = array[array.length - i - 1];
array[array.length - i - 1] = temp;
}
return array;
}
Könnte mir das mal jemand erklären mit dem zweiten code?
Ich verstehe nicht, die division durch 2?
Was passiert, wenn die array-Größe ist schon merkwürdig oder?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die division durch 2 ist lediglich so dass Sie nur gehen durch die erste Hälfte des Arrays. Wenn Sie die swap-die ersten und letzten Elemente, die Sie nicht wollen, es wieder zu tun, wenn ich erreicht array.Länge. Wenn die Größe auch ist, es wird halt vor der zweiten Hälfte, wenn die Größe ist ungerade, es wird halt vor der center-position, die nicht geschaltet werden müssen sowieso. Hoffe, das hilft!
Stell dir dein array ist:
Die zweite Lösung, die du gepostet hast funktioniert wie folgt:
Wie Sie sehen können, müssen Sie nur durchqueren die Hälfte des Arrays für diese zu arbeiten (daher macht es besser als die erste Lösung, wo Sie brauchen, zu Durchlaufen die ganze Sache). Dies ist, wo die division durch zwei kommt; die Hälfte des Arrays entspricht nur benötigen, um zu überprüfen, Elemente bis zu
array.length /2
.Für eine gerade Anzahl von Elementen, wird es nicht die gleiche Sache, nur der Austausch der innerste-pair-Mädchen ebenso:
Die division durch 2 bedeutet nur, dass Sie nicht haben, um eine Schleife durch alle Elemente in dem array. Da Sie die Umkehrung des Arrays beim Durchlaufen der Schleife mit dem ersten element, es bedeutet, dass es sollte einfach nur vertauschen mit dem ersten element aus dem anderen Ende.
Grundsätzlich die division durch 2 ist nur zur Verringerung der Anzahl der Durchläufe der Schleife. Betrachten Sie es als eine Verbesserung der Leistung.
Die Schleife funktioniert immer noch gut, unabhängig davon, ob die Anzahl der array-Elemente gerade oder ungerade ist. Wenn die Anzahl der Elemente ungerade ist, wird die Schleife beendet, bevor das mittlere element.
Wird das array geteilt durch zwei, weil Sie swap-Positionen 0 und n 1 und n-1, etc. Wenn das array eine ungerade Anzahl von Werten, der Letzte Wert sollte direkt in der Mitte des Arrays und wird nicht ausgelagert werden müssen. Wir können Schleife über die array-Größe, geteilt durch n, weil nur n/2-swaps passieren müssen.
Einfache und schnelle...
Heraus gestellt werden -
Original-Array :[1, 2, -3, 4, 5, 34, 50]
50 34 5 4 -3 2 1
Dem durch 2 dividieren funktioniert nicht ganz. Es wird nur funktionieren, wenn Sie eine ungerade Anzahl von ganzen zahlen.
Zum Beispiel:
Gib mir eine ganze Zahl repräsentiert die Länge eines Arrays: 5
Geben Sie den Wert von 5(s)
Wert #0:
1
Wert #1:
2
Wert #2:
3
Wert #3:
4
Wert #4:
5
Ihre aktuelle array: 1 | 2 | 3 | 4 | 5 |
Array Umgekehrt: 5 | 4 | 3 | 2 | 1 | ERSTELLEN ERFOLGREICH (Gesamtzeit: 11 Sekunden)
Nun, wenn Sie in ein geraden Anzahl Integer, sagen wir mal 6, das ist, was passieren würde:
Gib mir eine ganze Zahl repräsentiert die Länge des Arrays: 6
Geben Sie 6 Wert(s)
Wert #0:
1
Wert #1:
2
Wert #2:
3
Wert #3:
4
Wert #4:
5
Wert #5:
6
Ihre aktuelle array: 1 | 2 | 3 | 4 | 5 | 6 |
Array Umgekehrt: 6 | 5 | 3 | 4 | 2 | 1 | ERSTELLEN ERFOLGREICH (Gesamtzeit: 5 Sekunden)
Source code:
/*
Schreiben Sie ein Programm, das den Benutzer auffordert eine Ganzzahl repräsentiert die Länge eines Arrays ist, dann fragt den Benutzer eingeben, dass viele Werte.
Speichern Sie diese Werte in ein array und Druck-array.
Dann drehen Sie die array-Elemente so, dass das erste element zum letzten element, das zweite element zum zweiten element zum letzten element, und so weiter, mit dem alten letzten element jetzt erstmal.
Nicht nur in umgekehrter Reihenfolge, in der Sie gedruckt sind, eigentlich ändern die Art, wie Sie im array gespeichert.
Erstellen Sie nicht ein zweites array; einfach ändern Sie die Reihenfolge der Elemente innerhalb des Arrays, die Sie haben.
(Tipp: Tauschen Sie Elemente, die müssen die Plätze wechseln.)
Wenn die Elemente, die vertauscht worden sind, drucken Sie das array wieder.
*/
Paket reversinganarray;
import java.util.Scanner;
public class ReversinganArray {
}
Habe ich gerade versucht zu verstehen, dieses problem selber...
i <= integer/2
, aber die OP hati < integer/2
. Das ist<
im Gegensatz zu<=
. Damit Ihr code nicht die Frage beantworten, in keiner Weise. Vielen Dank für deine Bemühungen, allerdings. (Auch beim posten von code, stellen Sie sicher, dass Sie das Markdown-syntax korrekt bei der Darstellung von code, d.h. Einzug, es die durch 4 Leerzeichen).