Junior — Middle
Kaip nustatoma laiko sudėtingumas pridedant elementą į ArrayList?
sobes.tech AI
Atsakymas iš AI
ArrayList elemento pridėjimo laiko sudėtingumas paprastai yra amortizuotas iki O(1). Tai yra dėl to, kad:
- Jei
ArrayListvidinis masyvas turi laisvos vietos, naujas elementas paprasčiausiai įrašomas į kitą poziciją — operacija užtrunka pastovų laiką O(1). - Jei vidinis masyvas užpildytas, jis plečiasi: kuriamas naujas didesnis masyvas, ir visi elementai kopijuojami į jį. Ši operacija užtrunka O(n), kur n yra dabartinis sąrašo dydis.
Tačiau, plečiasi ne kiekvieną kartą, o periodiškai, todėl vidutinė (amortizuota) pridėjimo sudėtingumas išlieka O(1).
Pavyzdys:
ArrayList<Integer> list = new ArrayList<>();
list.add(10); // Amortizuota O(1)