Junior — Middle
Milline on ajakulude keerukuse tase operatsioonil, mille käigus lisatakse element massiivi lõppu, kasutades slice?
sobes.tech AI
Vastus AI-lt
Go keeles operatsioon, mille käigus element lisatakse lõppu slice'ile (append), omab amortiseeritud ajakulu O(1).
Selgitus:
-
Kui slice'il on piisavalt mahtu (
capacity), siis element lisatakse lihtsalt kirjutades järgmisele vabadale indeksile — see on konstanta ajaga operatsioon. -
Kui maht ei ole piisav, eraldatakse uus, suurem massiiv, kopeeritakse vanad elemendid ja lisatakse uus — see operatsioon võtab aega O(n), kus n on hetke slice'i suurus.
Kuid kuna sellised ümberjaotamised ei toimu iga lisamise korral, vaid ainult perioodiliselt, jääb keskmine (amortiseeritud) lisamise keerukus O(1).