Zadanie JAVA

T3
  • Rejestracja:około 6 lat
  • Ostatnio:ponad rok
  • Postów:3
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ń.

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 5 godzin
  • Lokalizacja:Tuchów
  • Postów:12175
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:

Kopiuj
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:

Kopiuj
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.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 4x, ostatnio: flowCRANE
Zobacz pozostałe 3 komentarze
flowCRANE
Taki wynik byłby nieprawidłowy – 2 musi być z przodu. Możesz rozgonić parzyste do jednej listy i nieparzyste do drugiej, a potem dodać nieparzyste na koniec listy parzystych i taką macierz zwrócić.
YO
nieparzyste + parzyste ... ja to tak rozumiem :D
YO
n,n,n,p,p,p ; gdzie n - nie parzysta, p - parzysta
flowCRANE
No tak, a w wyniku 1,3,7,2,5 jest n,n,n,p,n
YO
a no tak :) 1,3,5,2,4,6 teraz powinno być ok
YO
  • Rejestracja:ponad 11 lat
  • Ostatnio:prawie 3 lata
  • Postów:540
0

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


Dziura w ścianie gdzie Panowie widzą Panie,
Rick and Morty, season 1.
Szukam tej dziury, jak coś dajcie znać gdzie jest :D "A z Ciebie c**** pisowski" - Ula Papuszko (w sensie, że JA) 05.06.2020 r., grupa: Strajk Przedsiębiorców. Witam zatem, jestem c**** pisowski ;)
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 5 godzin
  • Lokalizacja:Tuchów
  • Postów:12175
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.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 1x, ostatnio: flowCRANE
YO
no i podałeś kod Delphe nie Java :D
flowCRANE
Gdybym dał gotowca w Javie to OP niczego by się nie nauczył. A tak to dostał jedynie pomysł.
T3
  • Rejestracja:około 6 lat
  • Ostatnio:ponad rok
  • Postów:3
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.