Junior — Middle
როგორ ხსნი, სად ჩასვა ახალი გასაღები-ღირებულების წყვილი ჰეშ-ტაბლოში?
sobes.tech AI
პასუხი AI-სგან
ჰეშ მაგიდაში, ახალი გასაღები-მნიშვნელობის წყვილის ადგილი განისაზღვრება ჰეშ-ფუნქციის საშუალებით, რომელიც გარდაქმნის გასაღებს მასივის ინდექსად (ბაკეტი).
ჩასმის ალგორითმი ჩვეულებრივ ასეა:
- გამოთვალეთ გასაღების ჰეშ-ფუნქცია.
- გარდაქმნათ ჰეში მასივის ინდექსად (მაგალითად, მასივის ზომის მოდულით).
- თუ ამ ბაკეტში ელემენტები არ არის, ჩასვით წყვილი.
- თუ ხდება კოლიზია (უკვე არსებობს სხვა გასაღებით ელემენტი), გამოიყენეთ კოლიზიის გადაჭრის მეთოდი:
- ჩეინინგი (chaining): ბაკეტში ინახება სია, და ახალი ელემენტი ამ სიაში ემატება.
- ღია მისამართი: ეძებეთ შემდეგი თავისუფალი ბაკეტი განსაზღვრულ სერიაში (გრძივი, კვადრატული სონდომა და ა.შ.).
C++-ში მაგალითი (ჩეინინგი):
size_t hash = std::hash<KeyType>{}(key) % bucket_count;
// buckets[hash] - წყვილების სია
buckets[hash].push_back({key, value});
ამგვარად, ჩასმის ადგილი განისაზღვრება ჰეშ-ფუნქციით და კოლიზიის გადაჭრის სტრატეგიით.