Sobes.tech
Junior — Middle

Ako hodnotiť algoritmickú zložitosť operácie aktualizácie prvku v spojenom zozname?

sobes.tech AI

Odpoveď od AI

Aktualizácia prvku v prepojenej zozname zvyčajne vyžaduje najskôr nájsť tento prvok a potom zmeniť jeho hodnotu.

  • Ak máte ukazovateľ alebo odkaz na potrebný uzol, aktualizácia hodnoty je operácia O(1).
  • Ak je potrebné najskôr nájsť prvok podľa indexu alebo hodnoty, vyhľadávanie trvá O(n), kde n je počet prvkov v zozname.

Príklad v Dart (Flutter):

class Node {
  int value;
  Node? next;

  Node(this.value);
}

void updateNodeValue(Node head, int index, int newValue) {
  Node? current = head;
  int i = 0;
  while (current != null && i < index) {
    current = current.next;
    i++;
  }
  if (current != null) {
    current.value = newValue; // O(1) aktualizácia
  }
}

Celková zložitosť aktualizácie prvku podľa indexu je O(n), ak nie je priame prístup k uzlu.