Java: Plätze in einem Array tauschen?

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 .

Von Experte MrAmazing2 bestätigt

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.


TechPech1984  12.08.2022, 14:31

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 ?

0
MrAmazing2  12.08.2022, 17:16
@TechPech1984

Lies dir die Frage durch, dann macht es sinn.

ct ist diese „eine Variable“, die angibt, wie weit getauscht wird.

0
TechPech1984  12.08.2022, 17:37
@MrAmazing2

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 .

0
TechPech1984  12.08.2022, 14:34

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 .

0
TechPech1984  12.08.2022, 14:38

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 .

0
ForestLive 
Beitragsersteller
 12.08.2022, 14:38

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

1
tunik123  12.08.2022, 15:37
@ForestLive

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]

0
TechPech1984  12.08.2022, 17:33
@tunik123

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 .

0