This is an old revision of the document!
Exercitiul 1
Metoda Agregatelor
ArrayList - inserare
Raspuns: ĉi = 3
Explicatie: Incepem cu un array cu capacitate 1 si 0 elemente (vom nota cost insert = ci, copiere n elemente = cpyn.
- insert1: c = ci = 1
- insert2: c = cpy1 + ci = 2
- insert3: c = cpy2 + ci = 3
- insert4: c = ci = 1
- insert5: c = cpy4 + ci = 5
- insert6: c = ci = 1
- insert7: c = ci = 1
- insert8: c = ci = 1
- insert9: c = cpy8 + ci = 9
Observam ca numarul de copieri este cpy1 + cpy2 + cpy4 + cpy8 + … + cpyn = 2 * n (suma geometrica). (1)
De asemenea, au avut loc n insert-uri, care au c = n. (2)
Din (1) si (2) ⇒ ĉi = T(n) / n = (2 * n + n) / n = 3.
ArrayList - stergere
Raspuns = ĉi = 2.
Presupunem cel mai rau caz: capacitate = 4 * n, nr. elemente = n + 1 (delete va cauza o copiere, deoarece la primul delete ajungem la 1/4 din capacitate)
- delete1: cpyn/2 + cdelete = n/2 + 1 → capacitatea devine 2 * n
- delete2: cdelete = 1
- delete3: cdelete = 1
- …
- delete(n/2): cpyn/4 + cdelete = n/4 + 1 → capacitatea devine n
Observam ca numarul de copieri este cpyn/2 + cpyn/4 + cpyn/8 + … = n. (1)
Numarul de stergeri efective este n. (2)
Din (1) si (2) ⇒ ĉi = T(n) / n = (n + n) / n = 2.