Algorytmy i programowanie Zadania domowe 4 AlgorytmA(A, n) k
Transkrypt
Algorytmy i programowanie Zadania domowe 4 AlgorytmA(A, n) k
Algorytmy i programowanie Zadania domowe 4 AlgorytmA (A, n) AlgorytmB (A, n) k←0 min ← A [1] for i ← 1 to n − 1 max ← A [1] do for j ← i + 1 to n do if A [i] = A [j] 1 for i ← 2 to n 1 do if A [i] > max then A [j] ← ∞ then max ← A [i] for i ← 1 to n else if A [i] < min do if not A [i] = ∞ 2 then min ← A [i] then k ← k + 1 m ← max − min tworzymy tabelę B o długości m + 1 return k for i ← 1 to m + 1 2 do B [i] ← false for i ← 1 to n 3 do B [A [i] − min + 1] ← true k←0 for i ← 1 to m + 1 4 do if B [i] then k ← k + 1 return k 1. Co i jak (proszę opisać własnymi słowami jak działa ten algorytm) liczy algorytm AlgorytmA? 2. Co i jak (proszę opisać własnymi słowami jak działa ten algorytm) liczy algorytm AlgorytmB? 3. W obydwu algorytmach zaznaczone zostały liczbami pewne linie (w AlgorytmA dwie, a w AlgorytmB cztery). Ile razy są one wykonywane w czasie działania algorytmów? Wskazówka: Początkowo można wykonać algorytm na ulubionych danych wejściowych i zaobserwować jego działanie, równocześnie licząc ile razy wykonane zostaną instrukcje w zaznaczonych liniach. Ostateczna odpowiedź powinna być jednak wyrażona w postaci jakiegoś wzoru z n.