Sobes.tech
Junior — Middle

როგორ ხსნი, სად ჩასვა ახალი გასაღები-ღირებულების წყვილი ჰეშ-ტაბლოში?

sobes.tech AI

პასუხი AI-სგან

ჰეშ მაგიდაში, ახალი გასაღები-მნიშვნელობის წყვილის ადგილი განისაზღვრება ჰეშ-ფუნქციის საშუალებით, რომელიც გარდაქმნის გასაღებს მასივის ინდექსად (ბაკეტი).

ჩასმის ალგორითმი ჩვეულებრივ ასეა:

  1. გამოთვალეთ გასაღების ჰეშ-ფუნქცია.
  2. გარდაქმნათ ჰეში მასივის ინდექსად (მაგალითად, მასივის ზომის მოდულით).
  3. თუ ამ ბაკეტში ელემენტები არ არის, ჩასვით წყვილი.
  4. თუ ხდება კოლიზია (უკვე არსებობს სხვა გასაღებით ელემენტი), გამოიყენეთ კოლიზიის გადაჭრის მეთოდი:
    • ჩეინინგი (chaining): ბაკეტში ინახება სია, და ახალი ელემენტი ამ სიაში ემატება.
    • ღია მისამართი: ეძებეთ შემდეგი თავისუფალი ბაკეტი განსაზღვრულ სერიაში (გრძივი, კვადრატული სონდომა და ა.შ.).

C++-ში მაგალითი (ჩეინინგი):

size_t hash = std::hash<KeyType>{}(key) % bucket_count;
// buckets[hash] - წყვილების სია
buckets[hash].push_back({key, value});

ამგვარად, ჩასმის ადგილი განისაზღვრება ჰეშ-ფუნქციით და კოლიზიის გადაჭრის სტრატეგიით.