Jak już wiemy, litery w informatyce to wartości liczbowe, gdzie każdy znak posiada odpowiednią wartość. Każda kolejna litera ma wartość większą od poprzedniej. To znaczy, że jedno imię jest mniejsze od kolejnego jeśli zaczyna się na literę o mniejszej wartości liczbowej. W jaki sposób rozwiązać ten problem? Zacznijmy od określenia co wiemy: wiemy, że mamy listę uczestników z imionami, dla uproszczenia oznaczmy ją L i wiemy, że ta lista jest skończona, mamy n uczestników. Co chcemy osiągnąć? Chcemy otrzymać listę, w której każde kolejne imię jest większe od poprzedniego. Tą wyjściową listę nazwijmy PL. Rozwiązanie można opisać w następujący sposób:

  1. Niech i oznacza indeks pierwszej osoby na liście L, takiej, że A = L[i]
  2. Zwiększ wartość indeksu i o jeden.
  3. Czy dotarłeś na koniec listy L a) Jeżeli koniec listy, tak że nie istnieje L[i] to idź do punktu 7 b) Idź do punktu 4
  4. Niech B oznacza kolejną osobę, na którą wskazuje indeks tak, że B = L[i].
  5. Porównaj imiona uczestników A i B: a) Jeżeli imię uczestnika A jest mniejsze od imienia uczestnika B idź do punktu 2; b) Jeżeli imię uczestnika A jest większe od imienia uczestnika B idź do punktu 6.
  6. Niech A = B i przejdź do punktu 2.
  7. Umieść A na liście PL
  8. Usuń A z listy L
  9. Czy lista L jest pusta? a) Jeżeli tak, idź do punktu 10; b) Jeżeli nie, idź do punktu 1.
  10. Koniec [PL]

Ten bardzo drobiazgowy opis sortowania uczestników opisuje wszystko skrupulatnie poza jedną rzeczą. Zauważ, że punkt piąty w ogóle nie tłumaczy co to znaczy “porównaj imiona”. To tak jakby w przepisie na biszkopt znaleźć informację “ubij białko na sztywno z cukrem”. Niby wiadomo o co chodzi ale jak to zrobić? Dodać cały cukier do białka i zacząć ubijać czy może cukier dodawać stopniowo? Sporo niewiadomych. Rozwiejmy te wątpliwości. Poniżej moja propozycja na rozwiązanie problemu: Czy imię A jest mniejsze od B. Wiemy, że mamy do dyspozycji dwa imiona a wynikiem końcowym ma być informacja tak/nie (oznaczmy wynik jako W, możemy opisać np. tak:

  1. Oznaczmy i jako indeks, który wskazuje na pierwsze litery imion A i B
  2. Czy litery są takie same (czy mają tę samą wartość)? a) Jeżeli tak, idź do punktu 3; b) Jeżeli nie, idź do punktu 4
  3. Zwiększ indeks i o 1 i idź do punktu 2.
  4. Czy litera imienia A jest większa od litery imienia B o tym samym indeksie i? a) Jeżeli tak, niech W wyniesie NIE; b) Jeżeli nie, niech W wyniesie TAK
  5. Koniec [W]

Powyższy algorytm możemy nazwać “podalgorytmem”- niezależnym algorytmem, z którego możemy skorzystać w dowolnym momencie, gdy zechcemy porównać dwa imiona i sprawdzić, które z nich powinno wystąpić pierwsze. A czy możemy ten algorytm użyć z innymi wartościami? Np. nazwami miast? Oczywiście! To jest jedna z cech dobrego algorytmu- uniwersalność.

Opis słowny algorytmu jest bardzo rozległy. W kolejnym rozdziale pokażę inne, bardziej wymowne sposoby opisu algorytmu.

Powiązane tematy

URL - adres internetowy

URL - adres internetowy

"W internecie jest wszystko." Do każdego zasobu jest tak samo daleko, wystarczy znać jego adres. Adres zasobu to ścieżka, która prowadzi dokładnie do tej rzeczy. W niej samej zakodowane jest sporo interesujących informacji. Czytaj całość

URL - adres internetowy

URL - adres internetowy

"W internecie jest wszystko." Do każdego zasobu jest tak samo daleko, wystarczy znać jego adres. Adres zasobu to ścieżka, która prowadzi dokładnie do tej rzeczy. W niej samej zakodowane jest sporo interesujących informacji. Czytaj całość

Sleep- zatrzymywanie programu na pewien czas

Sleep- zatrzymywanie programu na pewien czas

System operacyjny, który zarządza uruchomionymi programami, przydziela każdemu porcję czasu procesora, który wykorzystuje ją na wykonanie swojego algorytmu. Program nie może pracować cały czas, bez odpoczynku, jednak istnieje możliwość odłożenia jego pracy w czasie. Czytaj całość


Piotr Poźniak

Piotr Poźniak

Programuję od ponad 15 lat. Prowadzę software house. Angażuję i zachęcam wszystkich do programowania w ramach inicjatywy Programowanie jest łatwe.

Bądź pierwszy, podziel się swoją opinią!

Obrazek przedstawiający nadgryzione ciasteczko