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.