This is an old revision of the document!


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.