     SPOSOBY KORZYSTANIA Z MODULU - opis klawiszy aktywnych         
                                                                    
Esc          - zakonczenie pracy lub powrot do oferty nadrzednej    
F1           - wyswietlenie pomocy                                  
Enter        - wybranie podswietlonego pola i rozpoczecie dzialania 
klawisze     - naznaczenie mozliwosci oferty                        
sterujace                                                           
podswietlona - wybranie pola z podswietlona, wielka litera w nazwie 
litera pola                                                         
Alt+X        - bezwarunkowe zakonczenie dzialania modulu            
                                                                    
              OPIS GLOWNEJ OFERTY MODULU                            
INFO   - wizytowka: nazwa modulu, nazwiska autorow, numer wersji    
DEMO   - demomstracja graficzna trzech wybranych sposobow sortowania
TEST   - porownywanie efektywnosci roznych metod sortowania         
OPISY  - opisy slowne metod sortowania                              
POMOC  - wyswietlenie tej pomocy                                    
       DALSZE INFORMACJE MOZNA UZYSKAC W TRAKCIE PRACY MODULU       
                    NACISKAJAC KLAWISZ F1                           
                                                      Esc-powrot    
                       OFERTA DEMO                                  
                                                                    
 stogowe w Tablicy  - demonstracja metody sortowania stogowego z    
                      uzyciem tablicy                               
 stogowe na Drzewie - analogicznie do  `stogowe w tablicy`, ale de -
                      monstracja odbywa sie na drzewie              
 sZybkie            - demonstracja metody sortowania szybkiego      
 Kubelkowe          - demonstracja metody sortowania kubelkowego    
 Opcje demo         - ustalenie nastepujacych wielkosci:            
   Szybkosc demo    - szybkosc demonstracji (0..999)                
   Wielkosc ciagu   - liczba elementow sortowanego ciagu (1..9)     
   Rodzaj ciagu     - rodzaj ciagu, ktory bedzie sortowany w demon -
             tracji: losowy (zostanie wygenerowany losowo), rosnacy,
             malejacy, dziwny (ciag podany przez modul, dla ktorego 
             uzyta metoda wykonuje najwiecej porownan i zamian),    
             wpisany (uzytkownik bedzie poproszony o podanie ciagu) 
   Kubelkowe       - ustalenie parametrow dla sortowania kubelkowego
Standardowo przyjeto, ze porzadkowany jest  ciag  losowy  skladajacy
sie z dziewieciu elementow. Szybkosc poczatkowa 700.                
                                                      Esc-powrot    
    USTALENIE PARAMETROW DLA DEMONSTRACJI METODY KUBELKOWEJ         
                                                                    
                                                                    
  Leksykograficznie - ustalenie porzadku obowiazujacego w czasie    
                      demonstracji (leksykograficzny lub alfanume - 
                      ryczny);                                      
  liczba Znakow     - maksymalna liczba roznych znakow w slowie     
                      [1..6];                                       
  dlugosc Slowa     - ustalenie dlugosci, jakiej nie moze przekro - 
                      czyc zadne slowo [1..5];                      
  Alfabet           - ustalenie alfabetu, nad ktorym beda budowane  
                      slowa  (znaki pochodza ze zbioru uporzadkowa -
                      nego liniowo);                                
                                                                    
                                                                    
  Jesli uzytkownik nie wprowadzil swoich wartosci, to przyjmuje sie,
ze alfabet sklada sie z cyfr 0, 1, 2, 3, 4, 5, slowa sa co najwyzej 
5-cio elementowe i beda sortowane leksykograficznie.                
                                                                    
                                                      Esc-powrot    
          PARAMETRY OPCJI TEST DOTYCZACE POLA DZIALANIE             
 rodzaj Sort.   - wybor metod sortowania, ktore beda poddane testowi
                  i wzajemnie porownane                             
 Rodzaj ciagu   - wybor rodzaju sortowanego ciagu; moze to byc ciag 
            losowy (o rozkladzie jednostajnym), rosnacy, malejacy,  
            dziwny (zachowujacy sie nietypowo dla wybranej metody - 
            jest sortowany bardzo szybko albo bardzo wolno), z pliku
            (wczytany z zadanego pliku) albo wpisany (z klawiatury) 
 rozmiary Ciagow - wpisanie sekwencji rozmiarow ciagow - liczb co   
                   najwyzej czterocyfrowych oddzielonych spacjami   
UWAGA! Dla ciagow o duzych rozmiach sortowania beda trwaly dlugo    
 co Pokazac     - wybor postaci wynikow, w szczegolnosci:           
   Zamiany      - wyswietlanie liczby zamian                        
   Porownania   - wyswietlanie liczby porownan                      
   Jeden wykres - liczby zamian jak i porownan zostana naniesione   
                  na jeden wykres                                   
   pokaz Ciag   - czy przed zakonczeniem ma byc wyswietlony ciag    
                  poczatkowy                                        
   Dzialanie    - rozpoczecie testowania                            
                                                      Esc-powrot    
                                                                    
                        OFERTA  TEST                                
                                                                    
Testowanie - wykonanie obliczen testowych z wybranymi algorytmami   
             sortujacymi na ciagach liczb roznej dlugosci, mozliwosc
             zarejestrowania liczb wykonywanych zamian i porownan   
             oraz czasu dzialania w tablicach i na wykresach.       
                                                                    
Zabawa     - w pelni graficzna ilustracja dzialania algorytmow sor -
             tujacych wykorzystujaca rozne odpowiedniki wielkosci   
             liczbowych (takie jak promienie, luki okregow, slupki, 
             kolory, punkty na ekranie) oraz zabawa w odgadywanie   
             metod na podstawie ich przebiegu na jednym z diagramow.
                                                                    
                                                                    
                                                                    
   Szczegolowe informacje o tych mozliwosciach znajduja sie w ich   
biezacych opisach.                                                  
                                                                    
                                                      Esc-powrot    
           OPIS KLAWISZY AKTYWNYCH W OPCJI DZIALANIE                
   Z oferty w lewym gornym rogu korzystamy naciskajac odpowiednia   
cyfre lub wielka litere:                                            
 0, H   - wyswietlenie tego opisu                                   
 1, P   - zapisanie okreslonej czesci ekranu do wybranego pliku     
 2, D   - wydrukowanie okreslonej czesci ekranu                     
 3, O   - wczytanie czesci ekranu z zadanego pliku i wyswietlenie   
 4, C   - zapisanie najdluzszego sortowanego ciagu do zadanego pliku
 5, W   - prezentacja wynikow dzialania na wykresie                 
 6, T   - prezentacja wynikow dzialania w tablicy                   
  Po zakonczeniu sortowania mozna przegladac wyniki (w obu posta -  
ciach) poslugujac sie  klawiszami sterujacymi, albo                 
 7, N   - wyswietlenie nastepnego wykresu                           
 8, R   - wyswietlenie poprzedniego wykresu                         
   W przypadku tablicy nacisniecie klawisza sterujacego lub jednego 
z powyzszych powoduje dopisanie wynikow.                            
UWAGA !  W trakcie sortowania (napis 'Sortowanie trwa' w lewym dol -
nym rogu) nacisniecie klawisza Esc powoduje przerwanie sortowania,  
natomiast nacisniecie klawisza - (minus) - spowolnienie.            
                                                      Esc-powrot    
   Po rozpoczeciu zabawy nalezy zdecydowac sie albo na ogladanie,   
albo na odgadywanie metod.                                          
   Do ilustracji przebiegu algorytmow uzyto:                        
 - pionowych odcinkow zaczepionych u gory ekranu (sortowanych wedlug
       dlugosci)                                                    
 - peku odcinkow zaczepionych w jednym punkcie (j.w.)               
 - zbioru punktow (sortowanych wg pionowej wspolrzednej)            
 - zbioru lukow o wspolnym srodku (sortowanych ze wzgledu na ich kat
       mierzony w stopniach w kierunku przeciwnym do ruchu wskazowek
       zegara i wzgledem azymutu wschodniego (j.w.)                 
 - zbioru odcinkow jednakowej dlugosci (sortowanych wg kolorow lub  
       liczby swiecacych punktow w odcinku (dla monitora MONO)      
       zgodnie z podanym wzorem)                                    
                                                                    
   Nacisniecie klawisza Esc powoduje przerwanie sortowania (Uwaga!  
W pewnych przypadkach nalezy chwile poczekac na efekt przerwania)   
albo zakonczenie zabawy, natomiast klawisz -(minus) trzymany podczas
trwania sortowania powoduje jego spowolnienie (jest to uzyteczne w  
przypadku szybkich metod), F1 - wyswietlenie niniejszej pomocy.     
                                                      Esc-powrot    
            SORTOWANIE   STOGOWE   (HEAPSORT)                       
                                                                    
   Synami elementu a[i] sa a[2*i] oraz a[2*i+1]. Elementy  tworza   
stog (kopiec), jesli wartosc a[i] (i=1,...,n) nie jest mniejsza od  
wartosci jego synow. Zatem a[1] jest maksymalnym elementem stogu.   
                                                                    
Metoda sortowania stogowego ma postac:                              
        1. utorzyc stog poczatkowy                                  
        2. powtarzac dla  i = n, n-1,..,2:                          
              zamienic miejscami elementy a[1] z a[i]               
              przywrocic wlasnosc stogu elementom a[1],..,a[i-1]    
                                                                    
   Tworzenie i przywracanie wlasnosci stogu polega na przesiewaniu  
elementu, czyli na iteracyjnej zamianie elementu z wiekszym z jego  
synow (jesli zachodzi taka potrzeba).                               
   Sortowanie stogowe moze byc realizowane w tablicy lub w drzewie. 
                                                                    
                                                                    
                                                                    
                                                      Esc-powrot    
                                                                    
         SORTOWANIE   SZYBKIE   (QUICKSORT)                         
                                                                    
                                                                    
   Szybka metoda sortowania sklada sie z trzech krokow:             
                                                                    
       1. wybrac dowolny element ciagu                              
       2. pogrupowac elementy, tak zeby z lewej strony wybranego    
            elementu byly elementy nie wieksze, a z prawej nie      
            mniejsze od elementu wybranego (tzn. nadac elementowi   
            wybranemu wlasnosc elementu centralnego)                
       3. zastosowac te sama metode do lewej i prawej czesci        
          ciagu.                                                    
   Grupowanie elementow w kroku drugim polega na przegladaniu ciagu 
z obu jego koncow i ewentualnej zamianie elementow, ktore znajduja  
sie w niewlasciwych czesciach.                                      
                                                                    
                                                                    
                                                                    
                                                      Esc-powrot    
                                                                    
         SORTOWANIE   PRZEZ   WYBOR   (SELECTION  SORT)             
                                                                    
   Porzadkowany ciag jest podzielony na dwa podciagi:               
      A - zawierajacy uporzadkowane elementy i                      
      B - zawierajacy pozostale elementy.                           
   Metoda porzadkowania przez wybor polega na  n-krotnym wyborze    
elementu z B i przeniesieniu na koniec A (na poczatku podciag A jest
pusty)                                                              
                                                                    
   Algorytm:                                                        
              FOR i:=1 TO n-1 DO BEGIN                              
                k:=i; x:=a[i];                                      
                FOR j:=i+1 TO n DO                                  
                  IF a[j]<x THEN BEGIN                              
                    k:=j; x:=a[j]                                   
                  END;                                              
                a[k]:=a[i];  a[i]:=x                                
              END                                                   
                                                      Esc-powrot    
       SORTOWANIE   PRZEZ   WSTAWIANIE   (INSERTION  SORT)          
   Porzadkowany ciag jest podzielony na dwa podciagi:               
      A - zawierajacy uporzadkowane elementy i                      
      B - zawierajacy pozostale elementy.                           
Metoda porzadkowania przez wstawienie polega na n-krotnym wzieciu   
elementu z B i wstawieniu go w odpowiednie miejsce w A.             
   W algorytmie, miejsce  w podciagu A jest znajdowane w sposob li -
                               niowy z uzyciem wartownika. Szybsza  
   Algorytm:                   realizacja tego kroku polega na sto -
    FOR i:=2 TO n DO BEGIN     sowaniu binarnego przeszukiwania.    
      x:=a[i];                 Slaba strona tej metody jest duza    
      a[0]:=x;  {wartownik}    liczba przemieszczen elementow.      
      j:=i-1;                                                       
      WHILE x<a[j] DO BEGIN                                         
        a[j+1]:=a[j];                                               
        j:=j-1                                                      
      END;                                                          
      a[j+1]:=x                                                     
    END                                                             
                                                      Esc-powrot    
             SORTOWANIE   PRZEZ   SCALANIE   (MERGESORT)            
                                                                    
   Scalanie dwoch ciagow uporzadkowanych w jeden ciag polega na     
przenoszeniu mniejszego z elementow czolowych w obu ciagach do      
tworzonego ciagu.                                                   
   Metoda porzadkowania ciagu przez scalanie scala dwa podciagi     
(w przyblizeniu tej samej dlugosci) uporzadkowane uprzednio ta sama 
metoda.                                                             
                                                                    
Algorytm:                                                           
    BEGIN                                                           
      IF S sklada sie z wiecej niz jednego elamentu THEN            
        BEGIN                                                       
          rozdzielic S na dwa podciagi S1 i S2 jednakowej dlugosci; 
          zastosowac ta sama metode do S1;                          
          zastosowac ta sama metode do S2;                          
          scalic podciagi S1 i S2 (uporzadkowane) w ciag S          
        END                                                         
    END                                                             
                                                      Esc-powrot    
             SORTOWANIE   BABELKOWE   (BUBBLE  SORT)                
   Metoda sortowania babelkowego porzadkuje ciag wykonujac zamiany  
elementow miejscami jesli nie sa one we wlasciwej kolejnosci.       
Zamiany elementow sa zorganizowane w ten sposob, ze najpierw jest   
umieszczany na swoim miejscu ostatni element ciagu, pozniej przed - 
ostatni, itd.                                                       
   Metoda ta przypomina sortowanie przez wybor, ale jest od niej    
mniej efektywna ze wzgledu na wykonywane zamiany elementow.         
        Algorytm:                                                   
                  b:=n;                                             
                  WHILE b<>0 DO BEGIN                               
                    t:=0;                                           
                    FOR j:=1 TO b-1 DO                              
                      IF a[j]>a[j+1] THEN BEGIN                     
                        t:=j;  v:=a[j];                             
                        a[j]:=a[j+1];                               
                        a[j+1]:=v                                   
                      END;                                          
                    b:=t                                            
                  END                                 Esc-powrot    
                    SORTOWANIE   SHELLA   (SHELLSORT)               
   Metoda Shella jest pewna odmiana sortowania przez wstawiania. Dla
ustalonego kroku h, porzadkowane sa (metoda wstawiania) podciagi    
elementow o indeksach (1,1+h,1+2h,...), (2,2+h,2+2h,...),..., (h,2h,
3h,...). Pelna metoda polega na wykonaniu tej fazy dla ciagow spel -
                               niajacych h[t]>h[t-1]>...>h[1]=1.    
Algorytm:                      Zatem na koncu jest porzadkowany caly
x[1]:=1;  j:=1;                ciag.                                
WHILE x[j]<n DO BEGIN          Zrodlem efektywnosci tej metody jest 
  j:=j+1;                      fakt, ze w kolejnych fazach sa sor - 
  x[j]:=2*x[j-1]               towane coraz lepiej uporzadkowane i  
END;                           coraz dluzsze ciagi.                 
WHILE j>0 DO BEGIN             W pierwotnej wersji h[j] byly warto -
  j:=j-1; krok:=x[j];          sciami potegi 2 i takie sa przyjete  
  FOR i:=1 TO krok DO          w module.                            
    posortuj a[i],a[i+krok],                                        
    a[i+2*krok],... metoda                                          
    przez wstawianie                                                
  END                                                               
END                                                   Esc-powrot    
                                                                    
                                                                    
                                                                    
                     SORTOWANIE KUBELKOWE                           
                                                                    
                                                                    
                                                                    
   Sortowanie metoda kubelkowa jest najczesciej stosowane do ciagow 
zlozonych z pojedynczych elementow lub ich lancuchow. Zaklada sie   
przy tym, ze elementy sa z niewielkiego zbioru (alfabetu).          
   Liczba faz metody jest rowna dlugosci najdluzszego lancucha      
(slowa). Slowa sa porzadkowane od tylu i przy ustalonej pozycji,    
kazde slowo trafia do kubelka oznaczonego elementem na tej pozycji. 
Po rozeslaniu elementow, zawartosci kubelkow sa, w kolejnosci ich   
cech, doczepiane do listy utworzonej ze slow krotszych.             
                                                                    
                                                                    
                                                                    
                                                                    
                                                    Esc-powrot      











