Junior — Middle
Ի՞նչ է ժամանակային բարդությունը դինամիկ զանգվածին տարր ավելացնելու գործողության համար։
sobes.tech AI
Պատասխան AI-ից
Դինամիկ զանգվածին տարր ավելացնելը սովորաբար ունի ամորտիզացված ժամանակային բարդություն O(1):
Ներկայացում:
- Եթե զանգվածում ազատ տեղ կա, տարրն ավելացվում է հաստատուն ժամանակով:
- Եթե տեղ չկա, զանգվածը հատկացնում է նոր ավելի մեծ հիշողության բլոկ (հաճախ երկու անգամ մեծ), պատճենում է հին տարրերը և ավելացնում նորին:
Չնայած ընդլայնման գործողությունը տևում է O(n), այն տեղի չի ունենում հաճախ, ուստի ավելացման միջին (ամորտիզացված) բարդությունը մնում է O(1):
Օրինակ Go լեզվով slices-ների հետ:
var arr []int
arr = append(arr, 10) // տարր ավելացնել
append-ը ավտոմատ կերպով ընդլայնում է slices-ը անհրաժեշտության դեպքում։