Złożoność obliczeniowa algorytmów.

0

Witam.

Mam bardzo duzy problem z wyliczaniem zlozonosci algorytmow.

ok rozumiem jak np wyliczyc zlozonosc dla sortowania babelkowego (chociaz i tak nie mam pewnosci co do zapisywania tych jedynek jako operacji wykonywanych jednokrotnie - jak to pozniej mnozyc?):

void sortuj(int *tab, int n)
{
	for(int i=0;i<n;i++) // n
	{
		for(int j=0;j<n-1;j++) // n-2
		{
			if(tab[j]>tab[j+1]) // 1
				swap(tab[j],tab[j+1]) // 1
		}
	}
}

T[n]=n*(n-2) +1 + 1 = n^2 - 2n + 2

oczywiscie wybieramy skladnik dominujacy co daje n^2.

ale co w wypadku ciezszych kodow takich jak na przyklad quicksort? nie wiem jak patrzec na rekurencje (jak ja oznaczac etc).

bardzo prosze o pomoc bo we wtorek egzamin i wlasciwie to ostatnia rzecz ktora mi zostala do nauki.

z gory dziekuje i pozdrawiam.

0

Te twoje obliczenia tutaj to jakaś bzdura. Jeśli liczysz średni przypadek to masz
n*(n-2)(1+1/2) a jak pesymistyczny to n(n-2)*(1+1), ale to wszystko i tak jest O(n^2)
Jak liczyć rekurencje? Chyba trochę późno sie zabrałeś... Cormen poświęca temu cały rozdział, poczytaj.

1 użytkowników online, w tym zalogowanych: 0, gości: 1