Sobes.tech
Junior — Middle

Kuidas määratakse massiivi lõppu elemendi lisamise operatsiooni ajakulude keerukus?

sobes.tech AI

Vastus AI-lt

iOS-s elemente lisasse lõppu lisamine sõltub massiivi tüübist:

  • Fikseeritud suurusega massiivide (näiteks C-massiivid) puhul ei ole võimalik lõppu lisada ilma uue massiivi loomata.

  • NSMutableArray või Swift-massiivid, mis muutuvad dünaamiliselt suuruses, lisamine lõppu toimub tavaliselt amortiseeritud O(1) ajal. See tähendab, et tavaliselt on lisamine kiire, kuid mõnikord, kui massiiv jõuab oma praeguse mahuni, toimub mälu ümberjaotamine ja elementide kopeerimine, mis võtab rohkem aega.

Näide Swiftis:

var array = [1, 2, 3]
array.append(4) // Tavaliselt O(1), mõnikord O(n) ümberjaotamise ajal