Хеширование Python с квадратичным зондированием: реализация и использование

Чтобы выполнить хеширование в Python с использованием квадратичного зондирования, вы можете выполнить следующие действия:

  1. Создайте класс HashTable, который будет содержать хеш-таблицу и необходимые методы. Вот базовая реализация:
class HashTable:
    def __init__(self, size):
        self.size = size
        self.table = [None] * size
    def hash_function(self, key):
        return key % self.size
    def quadratic_probe(self, key, i):
        return (self.hash_function(key) + i2) % self.size
    def insert(self, key, value):
        i = 0
        index = self.hash_function(key)
        while self.table[index] is not None:
            i += 1
            index = self.quadratic_probe(key, i)
        self.table[index] = value
    def search(self, key):
        i = 0
        index = self.hash_function(key)
        while self.table[index] is not None:
            if self.table[index] == key:
                return index
            i += 1
            index = self.quadratic_probe(key, i)
        return None
    def display(self):
        for i in range(self.size):
            if self.table[i] is not None:
                print(f"Index {i}: {self.table[i]}")
  1. В классе HashTableметод hash_functionвыполняет первоначальное хеширование, вычисляя модуль ключа с размером хеш-таблицы.

  2. Метод quadratic_probeобрабатывает логику квадратичного зондирования, добавляя квадрат индекса зонда к исходному хеш-индексу и беря его по модулю с размером таблицы.

  3. Метод insertвставляет пару ключ-значение в хеш-таблицу, используя квадратичное зондирование для разрешения коллизий.

  4. Метод searchищет ключ в хеш-таблице с помощью квадратичного зондирования и возвращает индекс, если он найден, или None, если не найден.

  5. Метод displayпечатает содержимое хеш-таблицы.

Пример использования:

hash_table = HashTable(10)
hash_table.insert(5, "Value 1")
hash_table.insert(15, "Value 2")
hash_table.insert(25, "Value 3")
hash_table.display()
index = hash_table.search(15)
print(f"Value found at index {index}")

Эта реализация дает базовое понимание того, как выполнять хеширование с использованием квадратичного зондирования в Python.