Sobes.tech
Junior — Middle

Mekkora az időbeli komplexitású az ArrayList típusú tömb végére elem hozzáadása?

sobes.tech MI

Válasz az MI-től

Az ArrayList típusú tömb végére történő elem hozzáadásának átlagos időkomplexitása O(1) — amortizált állandó idő.

Ez azért van, mert az ArrayList az elemeket egy fix méretű tömbben tárolja. Amikor hozzáadunk egy elemet, és van szabad hely a tömbben, az elem egyszerűen a következő helyre kerül.

Azonban, ha a tömb megtelt, akkor egy bővítési művelet történik — egy nagyobb méretű új tömb jön létre, és minden elemet átmásolnak bele. Ez a művelet O(n) időt vesz igénybe, ahol n az elemek száma.

Példa:

ArrayList<Integer> list = new ArrayList<>();
list.add(1); // O(1)
list.add(2); // O(1)
// Amikor a tömb kapacitása eléri a határt, bővítés történik — O(n)

Így az átlagos hozzáadási idő — O(1), de a legrosszabb esetben — O(n).