Sobes.tech
Junior — Middle

Jaka jest złożoność czasowa usuwania elementów z wektora w najgorszym przypadku?

sobes.tech AI

Odpowiedź od AI

W najgorszym przypadku usuwanie elementów z wektora (std::vector w C++) ma złożoność czasową O(n), gdzie n to liczba elementów w wektorze po pozycji usunięcia. Wynika to z faktu, że po usunięciu elementów wszystkie kolejne elementy muszą zostać przesunięte w lewo, aby wypełnić powstałą lukę.

Na przykład, jeśli usuniemy element na początku wektora, wszystkie pozostałe elementy muszą zostać przesunięte o jedno miejsce do przodu, co wymaga O(n) operacji.

std::vector<int> v = {1, 2, 3, 4, 5};
v.erase(v.begin()); // usunięcie pierwszego elementu
// wszystkie elementy przesuwają się o jedno miejsce w lewo

Jeśli usunięty element znajduje się na końcu, przesuwanie nie jest konieczne, a operacja będzie bliższa O(1). Jednak w najgorszym przypadku — O(n).