Zadanie JAVA

0

Dobry wieczór!

Jestem w trakcie nauki z programowania w JAVA. Zastanawiam się nad rozwiązaniem jednego zadania - "Napisz program w języku Java, aby zmienić rozmieszczenie wszystkich elementów danej tablicy liczb całkowitych, tak aby wszystkie liczby nieparzyste znalazły się przed wszystkimi liczbami parzystymi". Prosiłbym Państwa o propozycje rozwiązań.

2

Przecież to proste zadanie – masz posortować zbiór liczb, więc musisz skorzystać z algorytmu sortującego. Różnica polega na tym, że porównanie liczb musi brać pod uwagę ich parzystość, a nie wielkość.

Weźmy dla przykładu najprostsze sortowanie, czyli bąbelkowe, w podstawowym wariancie. Przykładowa implementacja:

procedure Sort(var ANumbers: TNumbers);
var
  I, J, Temp: Integer;
begin
  for I := 0 to High(ANumbers) do
    for J := I to High(ANumbers) do
      if ANumbers[I] > ANumbers[J] then
      begin
        Temp := ANumbers[I];
        ANumbers[I] := ANumbers[J];
        ANumbers[J] := Temp;
      end;
end;

Jak widać w tym przykładzie, warunek sprawdza, czy pierwsza z sąsiadujących liczb jest większa od drugiej i jeśli tak – zamienia je miejscami. Aby algorytm pasował do Twojego zadania, wystarczy zmienić warunek na taki, aby sprawdzał czy pierwsza liczba jest nieparzysta i jeśli tak – ma być przesunięta dalej:

procedure Sort(var ANumbers: TNumbers);
var
  I, J, Temp: Integer;
begin
  for I := 0 to High(ANumbers) do
    for J := I to High(ANumbers) do
      if not Odd(ANumbers[I]) then
      begin
        Temp := ANumbers[I];
        ANumbers[I] := ANumbers[J];
        ANumbers[J] := Temp;
      end;
end;

Przykład działania tutaj: https://ideone.com/uEDRiY

Teraz napisz kod takiej aplikacji w Javie, używając javowych kontenerów i konstrukcji języka.

0

Wyznacz indeksy danych parzystych danych nie parzystych i posortuj np. rosnąco najpierw nieparzyste, potem parzyste

0

To co podałem to tylko przykład rozganiania liczb nieparzystych na lewo i parzystych na prawo. Aby oba podzbiory również były posortowane (np. najpierw nieparzyste liczby rosnąco, a następnie parzyste rosnąco), trzeba dodatkowych operacji.

0

Dzięki za odpowiedź. Racja, lepiej samemu dojść do rozwiązania na podstawie jakiegoś pomysłu :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1