Junior — Middle
Kuidas hinnata elementide eemaldamise operatsiooni ajakulutust massiivist?
sobes.tech AI
Vastus AI-lt
Elementi eemaldamise ajakulu massiivist sõltub massiivi tüübist ja eemaldamise meetodist:
-
Tavalises massiivis (näiteks
ArraySwiftis) nõuab elemendi eemaldamine indeksi järgi kõigi järgneva elemendi vasakule nihutamist, et täita "auk". See viib O(n) ajakuluni, kus n on eemaldatud elemendi järgnevad elemendid. -
Kui eemaldatakse viimane element, tehakse operatsioon tavaliselt O(1)-s, kuna nihutamist ei ole vaja.
-
Dynaamilistes massiivides (näiteks
ArrayListJava-s võiNSMutableArrayObjective-C-s) on olukord sarnane — keskelt eemaldamine nõuab elementide nihutamist.
Näide:
var array = [1, 2, 3, 4, 5]
array.remove(at: 2) // eemaldab indeksi 2 elemendi (number 3)
// Pärast eemaldamist nihkuvad elemendid 4 ja 5 ühe positsiooni vasakule
Üldiselt on massiivist elemendi eemaldamine operatsioon, mille ajakulu on O(n).