Чтобы выполнить хеширование в Python с использованием квадратичного зондирования, вы можете выполнить следующие действия:
- Создайте класс 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]}")
-
В классе
HashTableметодhash_functionвыполняет первоначальное хеширование, вычисляя модуль ключа с размером хеш-таблицы. -
Метод
quadratic_probeобрабатывает логику квадратичного зондирования, добавляя квадрат индекса зонда к исходному хеш-индексу и беря его по модулю с размером таблицы. -
Метод
insertвставляет пару ключ-значение в хеш-таблицу, используя квадратичное зондирование для разрешения коллизий. -
Метод
searchищет ключ в хеш-таблице с помощью квадратичного зондирования и возвращает индекс, если он найден, или None, если не найден. -
Метод
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.