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.