Sobes.tech
Junior — Middle

Каква е времевата сложност на основните операции с ArrayList?

sobes.tech AI

Отговор от AI

Времевата сложност на основните операции с ArrayList в Java:

  • Достъп по индекс (get, set): O(1) — директен достъп до елемента по индекс.

  • Добавяне на елемент в края (add(E e)): O(1) амортизирано — обикновено бързо, но при препълване на вътрешния масив се извършва копиране, което отнема O(n).

  • Вмъкване или изтриване на елемент в средата на списъка (add(index, e), remove(index)): O(n) — заради необходимостта да се преместят елементите след позицията.

  • Търсене на елемент (indexOf, contains): O(n) — трябва да се обходят елементите.

Пример:

ArrayList<Integer> list = new ArrayList<>();
list.add(10); // O(1)
int val = list.get(0); // O(1)
list.add(0, 5); // O(n), преместване на елементите
list.remove(0); // O(n), преместване на елементите