Edit this page Backlinks This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ===== Exercitiul 1 ===== ==== Metoda Agregatelor ==== === ArrayList - inserare === Raspuns: ĉ<sub>i</sub> = 3 Explicatie: Incepem cu un array cu capacitate 1 si 0 elemente (vom nota cost insert = c<sub>i</sub>, copiere n elemente = cpy<sub>n</sub>. * insert1: c = c<sub>i</sub> = 1 * insert2: c = cpy<sub>1</sub> + c<sub>i</sub> = 2 * insert3: c = cpy<sub>2</sub> + c<sub>i</sub> = 3 * insert4: c = c<sub>i</sub> = 1 * insert5: c = cpy<sub>4</sub> + c<sub>i</sub> = 5 * insert6: c = c<sub>i</sub> = 1 * insert7: c = c<sub>i</sub> = 1 * insert8: c = c<sub>i</sub> = 1 * insert9: c = cpy<sub>8</sub> + c<sub>i</sub> = 9 Observam ca numarul de copieri este cpy<sub>1</sub> + cpy<sub>2</sub> + cpy<sub>4</sub> + cpy<sub>8</sub> + ... + cpy<sub>n</sub> = 2 * n (suma geometrica). (1) De asemenea, au avut loc n insert-uri, care au c = n. (2) Din (1) si (2) => ĉ<sub>i</sub> = T(n) / n = (2 * n + n) / n = 3. === ArrayList - stergere === Raspuns = ĉ<sub>i</sub> = 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: cpy<sub>n/2</sub> + c<sub>delete</sub> = n/2 + 1 -> capacitatea devine 2 * n * delete2: c<sub>delete</sub> = 1 * delete3: c<sub>delete</sub> = 1 * ... * delete(n/2): cpy<sub>n/4</sub> + c<sub>delete</sub> = n/4 + 1 -> capacitatea devine n Observam ca numarul de copieri este cpy<sub>n/2</sub> + cpy<sub>n/4</sub> + cpy<sub>n/8</sub> + ... = n. (1) Numarul de stergeri efective este n. (2) Din (1) si (2) => ĉ<sub>i</sub> = T(n) / n = (n + n) / n = 2.