implementacja algorytmu sortowania przez scalanie

0

Witam
Studiuje sobie "Wprowadzenie do algorytmow".
W ksiazce jest opisane w pseudokodzie sortowanie przez scalanie ciagu liczb w postaci tablicy. Wszystko jest super, tylko ze tam uzyto straznikow nadajac im wartosc nieskonczonosci. Tak wiec ostatni element 2 tablic bedacych wynikiem rozdzielenia tablicy bazowej to wartosci nieskonczonosci. Dzieki temu algorytm dziala poprawie. W innym przypadku wystepuje blad przekroczenia rozmiaru tablicy.

Jak to zaimplementowac w javie?

PS: wiem, ze jest inna metoda, ktora omija tworzenie 2 podtablic a operuje jedynie na indeksach ale chcialbym zaimplementowac w javie algorytm opisany w powyzszej ksiazce.

0

Wpisz strażnika, jeśli tabela zawiera liczby typu double[float],to

tab[ostatniaPozycja]=1.0/0.0;
lub
tab[ostatniaPozycja]=1.0f/0.0f;

Jeśli nie lubisz dzielić przez zero

tab[ostatniaPozycja]=Double.POSITIVE_INFINITY;
tab[ostatniaPozycja]=Float.POSITIVE_INFINITY;
0

W Javie będzie tak samo jak w C++ czy pseudokodzie.
Tu jest przykładowa aplikacja, którą właśnie znalazłem na google
http://java.sun.com/j2se/1.5.0/docs/api/java/util/Arrays.html

Jeżeli chodzi wykorzystanie tylko jednej tablicy, to nie jest to trywialne (ale nie jest też trudne). Chyba, że nie myślimy o tym samym algorytmie.

0
bogdans napisał(a)

Wpisz strażnika, jeśli tabela zawiera liczby typu double[float],to

tab[ostatniaPozycja]=1.0/0.0;
lub
tab[ostatniaPozycja]=1.0f/0.0f;

Jeśli nie lubisz dzielić przez zero

tab[ostatniaPozycja]=Double.POSITIVE_INFINITY;
tab[ostatniaPozycja]=Float.POSITIVE_INFINITY;

mam tablice int. Jak wpisze 1/0 i zlapie wyjatek to i tak w tablicy jest wpisywana liczba 0 co prowadzi do blednego sortowania.

0

Całkowitych nie można dzielić przez zero. Może wystarczy wpisać

tab[ostatniaPozycja]=Integer.MAX_VALUE;

Nie wiem czy strażnik musi być większy od pozostałych, czy wystarczy, że jest większy lub równy.

0

Zazwyczaj musi być większy.
Iteracja ma się zakończyć na strażniku. Gdyby był inny element, o tej samej wartości to iteracja zatrzyma się na nim, a to będzie błąd.

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