From e0565eb0ca2592bfabcda1615fe9b4b5f4ac1967 Mon Sep 17 00:00:00 2001 From: Si Lam Date: Sat, 1 Oct 2022 08:19:48 -0500 Subject: [PATCH 1/4] Description of DOuble hasing --- data_structures/hashing/double_hash.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/data_structures/hashing/double_hash.py b/data_structures/hashing/double_hash.py index bd1355fca65d..c6d17250591e 100644 --- a/data_structures/hashing/double_hash.py +++ b/data_structures/hashing/double_hash.py @@ -1,3 +1,25 @@ +""" +Double hashing is a collision resolving technique in +Open Addressed Hash tables. Double hashing uses the idea of +applying a second hash function to key when a collision occurs. + +Advantages of Double hashing + +The advantage of Double hashing is that it is one of the best form of +probing, producing a uniform distribution of records throughout a hash table. +This technique does not yield any clusters. +It is one of effective method for resolving collisions. + +Double hashing can be done using : +(hash1(key) + i * hash2(key)) % TABLE_SIZE + +Here hash1() and hash2() are hash functions and TABLE_SIZE + +is size of hash table. + +Reference: https://en.wikipedia.org/wiki/Double_hashing#:~:text=Double%20hashing%20is%20a%20computer,data%20structure%20on%20a%20table%20. + +""" #!/usr/bin/env python3 from .hash_table import HashTable from .number_theory.prime_numbers import is_prime, next_prime From f42bc1d6a631ca9f7475b5df89f801b5c7854a41 Mon Sep 17 00:00:00 2001 From: Si Lam Date: Sat, 1 Oct 2022 17:39:05 -0500 Subject: [PATCH 2/4] Enter the logic for hash table --- data_structures/hashing/hash_table.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/data_structures/hashing/hash_table.py b/data_structures/hashing/hash_table.py index f4422de53821..11f7b27552ba 100644 --- a/data_structures/hashing/hash_table.py +++ b/data_structures/hashing/hash_table.py @@ -1,3 +1,17 @@ +""" +Hash Table is a data structure which stores data in an associative manner. +In a hash table, data is stored in an array format, where each data value has its own unique index value. +Access of data becomes very fast if we know the index of the desired data. + +Thus, it becomes a data structure in which insertion and search operations are very fast +irrespective of the size of the data. +Hash Table uses an array as a storage medium and uses hash technique to generate an index +where an element is to be inserted or is to be located from. + +Hashing is a technique to convert a range of key values into a range of indexes of an array. +We're going to use modulo operator to get a range of key values. + +""" #!/usr/bin/env python3 from .number_theory.prime_numbers import next_prime From 77ff9e277b8dd7ff5c09cc4221d27e3bd69b743f Mon Sep 17 00:00:00 2001 From: Si Lam Date: Sun, 2 Oct 2022 07:27:08 -0500 Subject: [PATCH 3/4] Fix shebang --- data_structures/hashing/hash_table.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/data_structures/hashing/hash_table.py b/data_structures/hashing/hash_table.py index 11f7b27552ba..44de08975f19 100644 --- a/data_structures/hashing/hash_table.py +++ b/data_structures/hashing/hash_table.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python3 """ Hash Table is a data structure which stores data in an associative manner. In a hash table, data is stored in an array format, where each data value has its own unique index value. @@ -10,9 +11,7 @@ Hashing is a technique to convert a range of key values into a range of indexes of an array. We're going to use modulo operator to get a range of key values. - """ -#!/usr/bin/env python3 from .number_theory.prime_numbers import next_prime From c3e58b5a06fa3e0bc360b0260775e0e6a387e097 Mon Sep 17 00:00:00 2001 From: Si Lam Date: Sun, 2 Oct 2022 07:33:55 -0500 Subject: [PATCH 4/4] Cleanup --- data_structures/hashing/double_hash.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/data_structures/hashing/double_hash.py b/data_structures/hashing/double_hash.py index c6d17250591e..487a907b5099 100644 --- a/data_structures/hashing/double_hash.py +++ b/data_structures/hashing/double_hash.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python3 """ Double hashing is a collision resolving technique in Open Addressed Hash tables. Double hashing uses the idea of @@ -20,7 +21,7 @@ Reference: https://en.wikipedia.org/wiki/Double_hashing#:~:text=Double%20hashing%20is%20a%20computer,data%20structure%20on%20a%20table%20. """ -#!/usr/bin/env python3 + from .hash_table import HashTable from .number_theory.prime_numbers import is_prime, next_prime