Sobes.tech
Junior — Middle

Mi a legrosszabb esetben a vektor elemeinek törlésének időbeli komplexitása?

sobes.tech MI

Válasz az MI-től

A legrosszabb esetben egy vektor (std::vector C++-ban) elemeinek eltávolítása időkomplexitása O(n), ahol n az eltávolítás utáni elemek száma a vektorban. Ez azért van, mert az elemek eltávolítása után minden következő elemet balra kell mozgatni, hogy kitöltse az üres helyet.

Például, ha a vektor elejéről törlünk egy elemet, akkor az összes többi elemet egy pozícióval előrébb kell mozgatni, ami O(n) műveletet igényel.

std::vector<int> v = {1, 2, 3, 4, 5};
v.erase(v.begin()); // az első elem eltávolítása
// minden elem egy pozícióval balra mozog

Ha a végén lévő elemet töröljük, akkor nem szükséges mozgatni, és az művelet közelebb lesz az O(1)-hez. De a legrosszabb esetben — O(n).