Metody Programowania - Lista 9


Zadanie 1

Obliczyć dokładnie (jako funkcję n) ilość porównań (tzn. znaleźć wzór) w algorytmie sortowania przez wybór:
void sortuj(int * ll, int n)
{
        int i, mi, tmp;
        for(i = 0; < n - 1; i++) {
                int k;
                mi = i;
                for(k = i + 1; k < n; k++) {
                        if(ll[k] < ll[mi]) mi = k;
                }
                tmp = ll[i];
                ll[i] = ll[mi];
                ll[mi] = tmp;
        }
}
Sprawdzić wynik modyfikując program tak by obliczył i wypisał ilość porównań.

Zadanie 2

a) Obliczyć ilości działań arytnetycznych potrzebnych do obliczenia wartości wielomianu stopnia n różnymi metodami (sumowanie wyrazów z obliczaniem potęg oddzielnie dla każdego wyrazu (przy pomocy oddzielnej funkcji), przy iteracyjnym obliczaniu potęg (równocześnie z obliczaniem sumy), itp.). Przedyskutowac wyniki.

b) Obliczyć ilości działań arytnetycznych potrzebnych do pomnożenia dwu macierzy n na n metodą "z definicji".

Zadanie 3

Zapisać w prostszej postaci: O(2n^5-3n^2+17), O((7n^4+5n^2-48)/(n^2+24)), O(n^2*log(3n^5+21*n^2+6)). Uwaga: Znak '^' oznacza tu potęgowanie.

Zadanie 4

Zapisać w notacji asymptotycznej (O) ilości operacji w problemach z zadań 1 i 2.