Java: Plätze in einem Array tauschen?
Hallo,
ich soll ein Programm schreiben, dass abhängig von einer Variable die Plätze getauscht werden. Wenn die Variable also den Wert 1 soll die erste und letzte Stelle tauschen. Bei 2 erste/letzte und zweite/vorletzte. Und immer so weiter...
Das war mein Ansatz der nicht funktioniert hat:
2 Antworten
achtung pseudocode
bei 50 items , also 0-49 willst du
0 <-> 49 , 1<->48 ,2<->47, 23<->25 , 24 kann nicht getauscht werden .
also
gehst du bis zur hälfte round down
max = rounddown((array.length-1) / 2)
ende = array.length-1;
wäre also max = ((50-1)/2) = 24
max = rounddown((array.length-1) / 2)
if (ct < max+1) {max = ct}
for (index = 0 ; index <= max ; index++) {
speicher = array[index]
array[index] = array[max-index]
array[(ende-index)] = speicher
}
ich glaub das sollte es tun .
Wenn ich die Aufgabe richtig verstanden habe, genügt doch
for (int i = 0; i < ct; i++) {
int j = (namen.length - 1) - i;
speicher = namen[i];
namen[i] = namen[j];
namen[j] = speicher;
}
Man sollte das ct aber vorher testen, sonst könnte Unfug passieren.
Machen wir mal ein Beispiel: 7 Elemente, ct = 3.
i läuft von 0 bis 2.
i = 0, j = 6 - 0 = 6 -> tausche [0] mit [6]
i = 1, j = 6 - 1 = 5 -> tausche [1] mit [5]
i = 2, j = 6 - 2 = 4 -> tausche [2] mit [4]
ah so hab ich das noch gar nicht gelsen . lol . also generell soll von aussen nach innen und die ct die anzahl an angefassten tauschprozessen . gut . das klingt logisch .
ok ich bin verwirrt was das ct sein soll , bis zum index . dann muss man ja gucken obs mehr als die hälfte von length ist .
bzw tauscht man doch dann bis zur hälfte alle und dann wieder , so das gar ncihts getauscht wurde . irgendwo muss doch die hälfte bestimmt werden .
das verstehe ich nicht , wie komsmt du den auf den index ende und gehst aber nur bis hälte index ???
wenn ct = center sein soll , dann tauscht man ja nur die erste hälfte mit sich selber .
oder soll die ct die stelle sein bis wohin getauscht wird ?
Lies dir die Frage durch, dann macht es sinn.
ct ist diese „eine Variable“, die angibt, wie weit getauscht wird.
ne ehrlich , das macht wenig sinn :) ich habs anders gelsen , aber tunik hats mir am beispiel erklärt .
ct ist doch keine variable die irgendwas erklärt , changetimes oder maxchanges wäre eine variable . aber ct , heisst nur ct . ich habs z.b. als center gelsen .
zumal hier ct gößer als das halbe array gewählt werden könnte . und ab da verschwand die logik . vden dann tausche ich etwas zurück was vorher schon getauscht wurde . und wenns gößer als length ist, gehts auch kaputt .
Es klappt für 1 und 2 aber es soll auch für höhere Werte gehen. Ct ist einfach wie oft in diesem Array getauscht werden soll. Und wenn es ein ungerades Array ist, soll das Array in der Mitte nicht getauscht werden