Lecture 8 - Hash Tables
Lecture 8 - Hash Tables
Hash Tables
• What is a hash table ?
• The simplest kind of hash table is an array of records.
• This example has 701 records.
[0] [1] [2] [3] [4] [5] [ 700]
...
What is a Hash Table ?
[ 700]
[0] [1] [2] [3] [4] [5]
...
What is a Hash Table ?
• When a hash table is in use, some spots contain valid records, and
other spots are "empty".
...
Open Address Hashing
• In order to insert a new record, the key must somehow be converted
to an array index.
• The index is called the hash value of the key. Number 580625685
...
Number 506643548 Number 155778322
Inserting a New Record
• Typical way create a hash value:
Number 580625685
(Number mod 701)
• What is (580625685 % 701) ?
...
Inserting a New Record
• Typical way to create a hash value: Number 580625685
• (Number mod 701)
• What is (580625685 % 701) ?
3
• The hash value is used for the location of the new record.
Number 580625685
[3]
...
Inserting a New Record
• The hash value is used for the location of the new record.
...
Number 580625685 Number 506643548 Number 155778322
Collisions
• Here is another new record to insert, with a hash value of 2.
Number 701466868
My hash
value is [2].
...
Number 506643548 Number 155778322
Collisions
• This is called a collision, because there is already another valid record at [2].
• When a collision occurs, move forward until you find an empty spot.
Number 701466868
Number 701466868
...
Collisions
• The new record goes in the empty spot.
...
Searching for a Key
...
Searching for a Key
• Calculate the hash value.
• Check the location of the array for the key.
Number 701466868
• If location 2 has a different key than the one
you are looking for, then move forward...
Not me. My hash
value is [2].
[0] [1] [2] [3] [4] [5] [ 700]
Number 281942902 Number 233667136 Number 580625685 Number 506643548 Number 701466868 Number 155778322
...
Searching for a Key
• Keep moving forward until you find the key, or you reach an empty spot.
Number 701466868
My hash
Not me.
value is [2].
...
Searching for a Key
• Keep moving forward until you find the key, or you reach an empty spot.
Number 701466868
My hash
Not me. value is [2].
...
Searching for a Key
• Keep moving forward until you find the key, or you reach an empty spot.
Number 701466868
My hash
value is [2].
Yes!
...
Searching for a Key
• When the item is found, the information can be copied to the necessary
location or to provide the result of the search function..
Number 701466868
My hash
value is [2].
Yes!
[0] [1] [2] [3] [4] [5] [ 700]
Number 281942902 Number 233667136 Number 580625685 Number 506643548 Number 701466868 Number 155778322
...
Deleting a Record
• Records may also be deleted from a hash table.
Please
delete me.
...
Deleting a Record
• Records may also be deleted from a hash table.
• But the location must not be left as an ordinary "empty spot" since that
could interfere with searches.
...
Deleting a Record
• The location must be marked in some special way so that a search can tell
that the spot used to have something in it.
...
Summary: Hashing
• Hash tables store a collection of records with keys.
• The location of a record depends on the hash value of the
record's key.
• Open address hashing:
• When a collision occurs, the next available location is used.
• Searching for a particular key is generally quick.
• When an item is deleted, the location must be marked in a special way,
so that the searches know that the spot used to be used.
Reading Assignment
• Clustering
• Double Hashing
• Chained Hashing