ALG7

ALG7



3.8. Zadania 77

b)    T(n2) e 0(«3);

c)    7’(2"+l) e 0(2");

d)    r((n + l)!) e 0(«!);

e)    7'(«)eO(n)=»{7(«)}'eO(/t:);

f)    Twój własny przykład?

Zad. 3-2

Jednym z analizowanych już wcześniej przykładów był tzw. ciąg Fibonnaciego. Funkcja obliczająca elementy tego ciągu jest nieskomplikowana:

int fib(int n)

l

if (n==C)

return 1;

el se

lf (n~l)

return 1;

else

return fib(n-1)+fib(n-2);

)

Proszę określić, jakiej klasy jest to funkcja.

Zad. 3-3

Proszę przeanalizować jeden ze swoich programów, taki, w którym jest dużo wszelkiego rodzaju zagnieżdżonych pętli i tego rodzaju skomplikowanych konstrukcji. Czy nie dałoby się go zoptymalizować w jakiś sposób?

Prz4vkładowo często się zdarza, że w pętlach są inicjowane pewne zmienne i to za każdym przebiegiem pętli, choć w praktyce wystarczyłoby je zainicjować tylko raz. W takim przypadku „sporną” instrukcję przypisania „wyrzuca się” przed pętlę, przyspieszając jej działanie. Podobnie odpowiednio układając kolejność pewnych obliczeń, można wykorzystywać częściowe wyniki, będące rezultatem pewnego bloku instrukcji, w' dalszych blokach - pod warunkiem oczywiście, że nie zostały „zamazane” przez pozostałe fragmenty programu. Zadanie polega na obliczeniu złożoności praktycznej naszego programu przed i po optymalizacji i przekonaniu się „na własne oczy" o osiągniętym (ewentualnie) przyspieszeniu.

L


Wyszukiwarka

Podobne podstrony:
ALG7 2.9. Zadania 472.9.Zadania Wybór reprezentatywnego dla rekurencji zestawu zadań wcale nie był
ALG7 6.7. Podsumowanie 187 ( while (n!=l) (n--;b~3-a-b; M*=2;} cout << "Przesuń dysk nr
ALG7 Rozdział 1Zanim wystartujemy Zanim na dobre rozpoczniemy operowanie takimi pojęciami jak wspom
ALG7 1.5. Poprawność algorytmów 27 {warunki wstępne 1} poszukiwany-program {warunki końcowe} Możliw
ALG7 2.4. Niebezpieczeństwa rekurencji 37 return (x-10); else return MacCarthy(MacCarthy(x111}); 1
ALG7 3.1. Dobre samopoczucie użytkownika programu 57 mów zostaną wprowadzone na reprezentatywnych p
ALG7 3.5. Przykład 4: Różne typy złożoności obliczeniowej 67 Koszt algorytmu oznaczmy klasycznie pr
ALG 7 5.1. Listy jednokierunkowe 97 public: int pusta()    // czy lista jest pusta? {
ALG7 5.1. Listy jednokierunkowe 107 cout « "L2 = for (i=0; i<n; 12.dorzuc2(tab2[i++])) ; 12
ALG7 5.1. Listy jednokierunkowe 117 Mając już komplet funkcji pusta, zestaw funkcji decyzyjnych i u
ALG7 5.2. Tablicowa implementacja list 1275.2.3.Listy innych typów Listy jednokierunkowe są bardzo
ALG7 5.6. Drzewa i ich reprezentacje 147 Numery znajdujące się przy węzłach mają charakter wyłączni
ALG7 5.7. Uniwersalna struktura słownikowa 157 zostaną stworzone. Jedynie na poziomie litery ‘F’ zo
ALG7 6.1. Jak pracuje kompilator? 167 ASM(Instr2) koniec: ASM(instr) znacza ciąg instrukcji asemble
ALG7 6.5. Metoda funkcji przeciwnych 177 Dokonaliśmy zatem tego, co było naszym celem: pozbawiliśmy
ALG7 7.3. Transformacja kluczowa 197 Istnieją dwie wartości parametru 67, które „rozrzucają” klucze
alg W 7 ID4 3> ni ■ i 0{§Ę r » ;
alg W 7 ID6 I^/I/IAM^    i o Sit j^y j^-t ą/f^ S. Vw ~ Y
ALG7 4.3. Duicksort, algorytm klasy Q(N log2N) 874.3. Quicksort, algorytm klasy 0(Nlog2N) Jest to s

więcej podobnych podstron