Junior — Middle
შეგიძლიათ ახსნათ ჰეშირების მუშაობის პრინციპი რუკის (Map) განხორციელებაში?
sobes.tech AI
პასუხი AI-სგან
Go-ში რუკა (map) განხორციელებულია როგორც ჰეშ-ცხრილი, სადაც გასაღებები გარდაიქმნება ჰეშ-ღირებულებებად ჰეშ-ფუნქციის საშუალებით. რუკაში ჰეშირების პრინციპი შემდეგია:
- მოცემული გასაღებისთვის გამოითვლება ჰეშ-კოდი — რიცხვითი მნიშვნელობა, რომელიც დამოკიდებულია გასაღების შიგთავსზე.
- ჰეშ-კოდი გამოიყენება ინდექსის განსაზღვრაში ბაკეტის (საფეხურების) მასივში, სადაც მნიშვნელობა ინახება.
- თუ ბაკეტში რამდენიმე ელემენტი არსებობს (კოლიზია), ძიება ხორციელდება ჯაჭვის ან სხვა კოლიზიის გადაჭრის მექანიზმის საშუალებით.
ეს საშუალებას აძლევს ელემენტების სწრაფად მოძებნას, დამატებას და წაშლას გასაღებით, დაახლოებით O(1) ამორტიზირებული სირთულით.
Go-ში რუკის გამოყენების მაგალითი:
m := make(map[string]int)
m["apple"] = 5
value := m["apple"] // value == 5
ამ მაგალითში, "apple" სტრიქონი ჰეშდება და მნიშვნელობა 5 ინახება შესაბამის ბაკეტში.