Junior — Middle
Kui suur on elementide eemaldamise operatsiooni ajakulud massiivist?
sobes.tech AI
Vastus AI-lt
Ajaegse keerukus eemaldada element massiivist sõltub sellest, kus element asub ja kuidas massiiv on implementeeritud.
-
Kui on vaja eemaldada element indeksi järgi, siis dünaamilises massiivis (näiteks Dart/Flutter List) pärast eemaldamist nihutatakse kõik järgnevad elemendid, et täita tühi koht. See viib O(n) ajakulu, kus n on eemaldatud elemendi järgnevad elemendid.
-
Kui eemaldada viimane element, toimub operatsioon O(1) ajal, kuna nihutamine ei ole vajalik.
Näide Dartis:
List<int> numbers = [1, 2, 3, 4, 5];
numbers.removeAt(2); // eemaldab indeksi 2 (number 3)
// pärast eemaldamist nihkuvad indeksitel 3 ja 4 olevad elemendid vasakule
Üldiselt on elementide eemaldamine massiivist operatsioon, mille ajakulu on O(n).