85 (147)

85 (147)



Rozdział 4. • Zagadnienia trudniejsze 121

Początek i koniec programu (czyli wpisanie i wypisanie danych) jest jasny i nie wymaga komentarza. Warto jedynie zwrócić uwagę, że liczba uczniów została określona jako stała i w dalszej części programu posługujemy się nią, podając jej nazwę (także w deklaracji tablicy). Nie można by się, co prawda, posłużyć wczytaną przez użytkownika zmienną (tablica musi mieć wartość określoną już w momencie kompilacji), ale zmiana liczebności grupy osób wymaga jedynie poprawienia wartości tej stałej przed kompilacją programu. Można by także zadeklarować tablicę dużego rozmiaru, zmienną określającą liczbę osób, wczytać ją (i sprawdzić, czy jest mniejsza niż rozmiar tablicy) i operować jedynie na części tablicy. Spróbuj przerobić program tak, by to zrealizować.

Wyjaśnienia wymaga procedura sortowania. Posłużyliśmy się inną metodą, niż poznane w ćwiczeniu 4.3 sortowanie bąbelkowe. Idea tej metody jest bardzo prosta: wybieramy pierwszy element tabeli i przegrupowujemy ją tak, żeby wszystkie mniejsze od niego znalazły się po jego lewej, a większe lub równe po prawej stronie. Następnie rekurencyjnie sortujemy w identyczny sposób lewą i prawą stronę tej tabeli. Sortowanie wykonujemy do momentu, kiedy w sortowanym kawałku mamy przynajmniej dwa elementy.

Spróbuj prześledzić działanie takiego algorytmu na kartce, dla małego zbioru liczb. Jako przykład niech posłuży Ci poniższa ilustracja, ilustrująca sortowanie 8 elementów: 8, 4, 17, 3, 16, 5, 1, 21.

4

17

3

16

5

1

21

4]

Ulż

3

5

$

16

21

0

CD

21

CD

®

21


H303 ® [UD 03 ®

1

3

4

5

8

16

17

21

Ten algorytm sortowania (ąuicksort), nie dość że prosty w zapisie, jest jeszcze bardzo efektywny. Średnia liczba wykonywanych przez niego operacji jest rządu N*logN, podczas gdy dla sortowania bąbelkowego był to rząd N2. Oczywiście dla piętnastoosobowej grupy nie zaobserwujesz różnicy w czasie działania. Gdybyś jednak musiał posortować dane dotyczącej dużej grupy osób, byłoby to znaczące. Sprawdź, jak zmieniają się wartości N2 oraz N*logN w zależności od liczby N.


Wyszukiwarka

Podobne podstrony:
71 (199) Rozdział 4. • Zagadnienia trudniejsze 107 która powoduje wydanie dźwięku o zadanej częstotl
73 (179) Rozdział 4. • Zagadnienia trudniejsze 109 Gotowy: Boolean; begin Randomize; Prawidłowe 0; ■
75 (174) Rozdział 4. • Zagadnienia trudniejsze 111uses Crt; var Miesiąc : Byte; NazwaMiesiaca :
77 (175) Rozdział 4. • Zagadnienia trudniejsze 113 Oto przykładowe poprawne deklaracje typów i
79 (169) Rozdział 4. • Zagadnienia trudniejsze 115 program cw4_23; { Program pokazujący działanie fu
81 (160) Rozdział 4. • Zagadnienia trudniejsze 117 Przykładowa deklaracja typu opisującego osobę moż
83 (158) Rozdział 4. • Zagadnienia trudniejsze 119 Readln (Wypos); Samochód.DodatkoweWyposazenieCI]
Popatrz na początek i koniec przedstawionych strzałek i ocal ile icłi jest.
gramatyka6 odgórnym koniec analizy, czyli punkt dojścia, nie jest dany automatycznie. Tak jak przy
n (85) ROZDZIAŁ VIII POCZĄTEK I KONIEC MISJI Posłowie twoi jako przyjechali. Tak odjeżdżają. (Kochan
12 Rozdział 1. Zagadnienie transportowe Tablica 1.4. Wyznaczenie rozwiązania początkowego metodą VAM
14 Rozdział 1. Zagadnienie transportowe Tablica 1.6. Rozwiązanie początkowe wyznaczone metodą
10 Rozdział I. Zagadnienia wprowadzające nia zachowania prowadzi do uznania konieczności wyrównywani
funljk początek

więcej podobnych podstron