Sobes.tech
Junior — Middle

Milline on dünaamilise massiivi elemendi lisamise operatsiooni ajakulud?

sobes.tech AI

Vastus AI-lt

Dünaamilise massiivi elemendi lisamine tavaliselt omab amortiseeritud ajakulu keerukust O(1).

Selgitus:

  • Kui massiivis on vaba ruumi, lisatakse element konstantses ajas.
  • Kui ruumi pole, eraldab massiiv uue suurema mäluploki (tavaliselt kahekordse suurusega), kopeerib vanad elemendid ja lisab uue.

Kuigi laiendamise operatsioon võtab aega O(n), toimub see harva, seega lisamise keskmine (amortiseeritud) keerukus jääb O(1).

Näide Go keeles kasutades slices:

var arr []int
arr = append(arr, 10) // elemendi lisamine

append automaatselt laiendab slices, kui see on vajalik.