Sobes.tech
Junior — Middle

Որքան ժամանակային բարդություն ունի սլայսի միջոցով զանգվածի վերջում տարր ավելացնելու գործողությունը?

sobes.tech AI

Պատասխան AI-ից

Go-ում, սլայսի վերջում տարր ավելացնելու գործողությունը (append) ունի ամորտիզացված ժամանակային բարդություն O(1):

Նկարագրություն:

  • Եթե սլայսը ունի բավարար ծավալ (capacity), ապա տարր ավելացնելը պարզապես տեղի է ունենում հաջորդ ազատ ինդեքսին գրելով — սա գործողություն է հաստատուն ժամանակով:

  • Եթե ծավալը բավարար չէ, ապա նոր մեծածավալ զանգված է հատկացվում, հին տարրերը պատճենվում են, և ավելացվում է նոր տարրը — սա գործողություն է O(n), որտեղ n ներկայիս սլայսի չափն է:

Սակայն, քանի որ նման վերաօգտագործումները չեն տեղի ունենում ամեն ավելացման ժամանակ, այլ միայն ժամանակ առ ժամանակ, ավելացման միջին (ամորտիզացված) բարդությունը մնում է O(1):