Junior — Middle
Ինչպե՞ս է որոշվում Map տվյալների կառուցվածքում բանալիով տարր ավելացնելու գործողության կատարման ժամանակը։
sobes.tech AI
Պատասխան AI-ից
Go-յի տվյալների կառուցվածքը map իրականացվում է որպես հեշ աղյուսակ։ map-ում բանալիով տարր ավելացնելու գործողության ժամանակը միջինում O(1) է — կայուն ժամանակ, քանի որ դա ներառում է բանալիի հեշ-ֆունկցիայի հաշվարկը և համապատասխան բաքում տեղադրումը։
Սակայն, ամենավատ դեպքերում, եթե շատ բախումներ են լինում (մեկից ավելի բանալիներ ունեն նույն հեշը), ժամանակը կարող է նվազել մինչև O(n), որտեղ n բաքի մեջ տարրերի քանակն է։ Բայց լավ հեշների բաշխում և տախտակի դինամիկ ընդլայնում շնորհիվ, նման դեպքերը հազվադեպ են։
Օրինակ՝ բանալիով տարր ավելացնելու համար՝
m := make(map[string]int)
m["key"] = 42 // ավելացման գործողությունը կատարվում է ամորտիզացված O(1) ժամանակում