Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- STAŁA
- np odczyt z tablicy
- LOGARYTMICZNA
- pętle w których co iteracje zmieniamy i Q razy tzn np:
- for (int i=1; i<n; i = i*2) {} <- log2 n
- for (int i=1; i<n; i=i*3){} <- log3 n
- itp
- rekurencja
- kiedy wywołujemy analogicznie rekurencje zmniejszając argument Q razy np
- void foo(int a)
- {
- if (a == 1) return;
- else return foo(a/2);
- } <- log2 n
- LINIOWA
- to kiedy w zależności od rozmiarów zbioru przechodzimy go po kolei np iterowanie po tablicy od 0 do n-1
- for (int i=0; i<n; i++) {} <- n
- lub rekurencyjnie
- void foo(int a)
- {
- if (a==1) return;
- else return foo(a-1);
- }
- LINIOWO LOGARYTMICZNA
- *pętle - kiedy dla kolejnych elementów wykonujemy logarytmiczną liczbę porównań (pętla w pętli) lub odwrotnie
- for (int i=1; i<n; i = i*2)
- {
- for (int i=0; i<n; i++) {}
- }
- lub
- for (int i=1; i<n; i = i++)
- {
- for (int i=0; i<n; i=i*2) {}
- }
- *rekurencja - najczęściej w liniowej (lub logarytmicznej) pętli wywołujemy rekurencje logarytmiczną (lub liniową)
- np
- void foo(int a)
- {
- if (a == 1) return;
- else return foo(a/2);
- }
- for (int i=0; i<n; i++) foo(i);
- WIELOMIANOWA
- * zagnieżdżone pętle
- for (int i=0; i<n; i++)
- for (int j=0; j<n; j++) {} <- n^2
- for (int i=0; i<n; i++)
- for (int j=0; j<n; j++)
- for (int k=0; k<n; k++)
- {} <- n^3
- WYKŁADNICZA
- raczej nie spotykana w iteracyjnych rozwiązaniach
- rekurencja - kiedy dla każdego z n wywołań wywołujemy k kolejnych to wtedy mamy zlozonosc k^n
- np
- void foo(int a)
- {
- if (a==1) return;
- else return foo(a-1) + foo(a-2);
- } <- 2^n
- void foo(int a)
- {
- if (a==1 || a == 0 || a == 2) return ;
- else return foo(a-1) + foo(a-2) + foo(a-3);
- } <- 3^n
- SILNIA - kiedy próbujemy przejrzeć całą przestrzeń rozwiązań, np ustawiania miast w kolejności (ostatni algorytm)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement