mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-01-30 22:23:42 +00:00
Fix rehashing function will not call insert_data function (#1803)
* Fix rehashing function will not call insert_data function * Fix typo * Update loop syntax instead of allocating a list Co-Authored-By: Christian Clauss <cclauss@me.com> Co-authored-by: Christian Clauss <cclauss@me.com>
This commit is contained in:
parent
ab3400bfad
commit
45524dd6d3
|
@ -24,7 +24,7 @@ class DoubleHash(HashTable):
|
||||||
def __hash_double_function(self, key, data, increment):
|
def __hash_double_function(self, key, data, increment):
|
||||||
return (increment * self.__hash_function_2(key, data)) % self.size_table
|
return (increment * self.__hash_function_2(key, data)) % self.size_table
|
||||||
|
|
||||||
def _colision_resolution(self, key, data=None):
|
def _collision_resolution(self, key, data=None):
|
||||||
i = 1
|
i = 1
|
||||||
new_key = self.hash_function(data)
|
new_key = self.hash_function(data)
|
||||||
|
|
||||||
|
|
|
@ -62,7 +62,8 @@ class HashTable:
|
||||||
self.size_table = next_prime(self.size_table, factor=2)
|
self.size_table = next_prime(self.size_table, factor=2)
|
||||||
self._keys.clear()
|
self._keys.clear()
|
||||||
self.values = [None] * self.size_table # hell's pointers D: don't DRY ;/
|
self.values = [None] * self.size_table # hell's pointers D: don't DRY ;/
|
||||||
map(self.insert_data, survivor_values)
|
for value in survivor_values:
|
||||||
|
self.insert_data(value)
|
||||||
|
|
||||||
def insert_data(self, data):
|
def insert_data(self, data):
|
||||||
key = self.hash_function(data)
|
key = self.hash_function(data)
|
||||||
|
|
|
@ -18,9 +18,9 @@ class HashTableWithLinkedList(HashTable):
|
||||||
* self.charge_factor
|
* self.charge_factor
|
||||||
)
|
)
|
||||||
|
|
||||||
def _colision_resolution(self, key, data=None):
|
def _collision_resolution(self, key, data=None):
|
||||||
if not (
|
if not (
|
||||||
len(self.values[key]) == self.charge_factor and self.values.count(None) == 0
|
len(self.values[key]) == self.charge_factor and self.values.count(None) == 0
|
||||||
):
|
):
|
||||||
return key
|
return key
|
||||||
return super()._colision_resolution(key, data)
|
return super()._collision_resolution(key, data)
|
||||||
|
|
|
@ -11,7 +11,7 @@ class QuadraticProbing(HashTable):
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
def _colision_resolution(self, key, data=None):
|
def _collision_resolution(self, key, data=None):
|
||||||
i = 1
|
i = 1
|
||||||
new_key = self.hash_function(key + i * i)
|
new_key = self.hash_function(key + i * i)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user