Algorytmy od podstaw – przykładowy kod

Poniżej znajduje się informacja dotycząca kodu źródłowego towarzyszącego niniejszej książce oraz instrukcja jego kompilacji1 .

Podział tematyczny przykładów

Załączony kod źródłowy podzielony jest na dwie części. Pierwsza, znajdująca się w katalogu main to zasadniczy kod aplikacji, druga znajdująca się w katalogu test obejmuje zestawy testowe dla poszczególnych fragmentów części pierwszej. Każda z wymienionych części podzielona jest stosownie do podziału treści książki na rozdziały, w następujący sposób:

Pakiety

com.wrox.algorithms.iteration

Rozdział 2 – Iteracja i rekurencja

com.wrox.algorithms.lists

Rozdział 3 - Listy

com.wrox.algorithms.queues

Rozdziały 4 i 8 – Kolejki i kolejki priorytetowe

com.wrox.algorithms.stacks

Rozdział 5 - Stosy

com.wrox.algorithms.sorting

Rozdziały 6 i 8 - Sortowanie

com.wrox.algorithms.bsearch

Rozdział 9 – Wyszukiwanie binarne

com.wrox.algorithms.bstrees

Rozdział 10 – Binarne drzewa wyszukiwawcze

com.wrox.algorithms.hashing

Rozdział 11 - Haszowanie

com.wrox.algorithms.sets

Rozdział 12 - Zbiory

com.wrox.algorithms.maps

Rozdział 13 - Mapy

com.wrox.algorithms.tstrees

Rozdział 14 – Drzewa ternarne

com.wrox.algorithms.btrees

Rozdział 15 - B-drzewa

com.wrox.algorithms.ssearch

Rozdział 16 – Wyszukiwanie tekstu

com.wrox.algorithms.wmatch

Rozdział 17 – Dopasowywanie łańcuchów

com.wrox.algorithms.geometry

Rozdział 18 – Geometria obliczeniowa

Kompilacja kodu źródłowego

Towarzyszący niniejszej książce kod źródłowy jest samowystarczalny – nie wymaga żadnych specjalizowanych bibliotek zewnętrznych. Aby więc skompilować wszystkie pliki związane z rozdziałem (na przykład) 3. - znajdują się one w katalogu lists – wystarczy wydać polecenie

  javac -sourcepath main main/com/wrox/algorithms/lists/*.java

Spowoduje to skompilowanie wszystkich plików zawartych w pakiecie com.wrox.algorithms.lists package.

Opcja -sourcepath main stanowi dla kompilatora informację o tym, gdzie ma on poszukiwać plików zewnętrznych wykorzystywanych w kompilowanym pakiecie. Przykładowo pakiet com.wrox.algorithms.lists package (związany z rozdziałem 3.) wykorzystuje niektóre pliki pakietu com.wrox.algorithms.iteration.

Podobnie ma się rzecz z kompilacją zestawów testowych, z jedym ważnym wyjątkiem: wymagają one biblioteki JUnit , którą można pobrać stąd w postaci archiwum .ZIP i wypakować z niego plik junit.jar. Kompilację zestawów testowych dla rozdziału (na przykład) 3. można następnie przeprowadzić w wyniku wydania polecenia2.

javac -classpath junit.jar -sourcepath main test/com/wrox/algorithms/lists/*.java

Podobnie jak poprzednio, opcja -sourcepath main informuje kompilator, gdzie ma on poszukiwać niezbędnych plików zewnętrznych.

Uruchamianie testów

Po skompilowaniu zestawów testowych można je uruchomić – przykładowo uruchomienie zestawu ArrayListTest (z rozdziału 3.) następuje przez wydanie polecenia

  java -classpath junit.jar:main:test junit.textui.TestRunner com.wrox.algorithms.lists.ArrayListTest

w wyniku czego po chwili na ekranie powinien pojawić się tekst:

  .........................
  Time: 0.021

  OK (25 tests)

lub podobny, informujący o zaliczeniu wszystkich 25 testów w czasie 0,021 sekundy.

Dla uzyskania raportu w formie graficznej należy posłużyć się pakietem swingui zamiast textui:

  java -classpath junit.jar:main:test junit.swingui.TestRunner com.wrox.algorithms.lists.ArrayListTest

Uwagi

1 Opis ten dotyczy uruchamiania kompilacji z poziomu wiersza poleceń. Szczegółów związanych z kompilacją przeprowadzaną w środowisku IDE należy poszukiwać w jego dokumentacji.

2 Polecenie to spowoduje jednocześnie skompilowanie także kodu zasadniczego, co niewątpliwie będzie ułatwieniem dla programisty.