Collision happens when two different keys get the same index in the hash table. This means both want to be stored in the same spot.
Click to reveal answer
beginner
What is open addressing in hash tables?
Open addressing is a way to handle collisions by finding another empty spot in the table instead of using linked lists or extra structures.
Click to reveal answer
beginner
How does linear probing work in open addressing?
Linear probing checks the next slot in the table one by one until it finds an empty spot to store the new key.
Click to reveal answer
intermediate
What problem can occur if the hash table is almost full when using linear probing?
Clustering happens, where many keys group together, causing longer search times because many slots must be checked.
Click to reveal answer
intermediate
Why is it important to use a good hash function with linear probing?
A good hash function spreads keys evenly to reduce collisions and clustering, making linear probing efficient.
Click to reveal answer
What does linear probing do when a collision occurs?
AChecks the next slot sequentially until an empty one is found
BCreates a linked list at the collided slot
CRehashes the entire table
DDeletes the existing key
✗ Incorrect
Linear probing searches the next slots one by one until it finds an empty slot.
In open addressing, what happens if the table is full and no empty slot is found during insertion?
AThe table automatically resizes
BInsertion fails because no space is available
CThe key replaces an existing key
DThe key is stored outside the table
✗ Incorrect
If no empty slot is found, insertion fails because the table is full.
Which of these is a disadvantage of linear probing?
AUses extra memory for linked lists
BRequires complex data structures
CClustering of keys causing slower searches
DCannot handle collisions
✗ Incorrect
Linear probing can cause clustering, where many keys group together, slowing down operations.
What is the main goal of collision handling in hash tables?
ATo store all keys without losing any data
BTo delete duplicate keys
CTo sort keys in order
DTo compress the data
✗ Incorrect
Collision handling ensures all keys can be stored even if they map to the same index.
Which method is NOT a form of open addressing?
ALinear probing
BQuadratic probing
CDouble hashing
DSeparate chaining
✗ Incorrect
Separate chaining uses linked lists, not open addressing.
Explain how linear probing handles collisions in a hash table.
Think about what happens when two keys want the same spot.
You got /4 concepts.
Describe the advantages and disadvantages of using linear probing for collision handling.
Consider both ease and performance.
You got /4 concepts.
Practice
(1/5)
1. What is the main idea behind linear probing in collision handling for hash tables?
easy
A. If a slot is occupied, check the next slot sequentially until an empty one is found.
B. Use a linked list at each slot to store multiple elements.
C. Double the size of the hash table when a collision occurs.
D. Rehash all elements using a new hash function.
Solution
Step 1: Understand linear probing concept
Linear probing means when a collision happens, we look at the next slot in order, moving forward one by one.
Step 2: Compare options
If a slot is occupied, check the next slot sequentially until an empty one is found. describes this exact process. Options B, C, and D describe other collision methods or resizing, not linear probing.
Final Answer:
If a slot is occupied, check the next slot sequentially until an empty one is found. -> Option A
Quick Check:
Linear probing = sequential slot check [OK]
Hint: Linear probing checks next slots one by one [OK]
Common Mistakes:
Confusing linear probing with chaining
Thinking linear probing resizes the table
Assuming linear probing uses a new hash function
2. Which of the following is the correct way to calculate the next index in linear probing for a hash table of size m when current index is i?
easy
A. (i + 2) % m
B. (i + 1) % m
C. (i * 2) % m
D. (i - 1) % m
Solution
Step 1: Recall linear probing index calculation
Linear probing moves to the next slot by adding 1 to the current index, wrapping around using modulo.
Step 2: Check options
Only (i + 1) % m uses (i + 1) % m, which correctly moves to the next slot circularly.
Final Answer:
(i + 1) % m -> Option B
Quick Check:
Next index = (current + 1) mod size [OK]
Hint: Next index in linear probing is (i + 1) mod table size [OK]
Common Mistakes:
Adding 2 instead of 1
Multiplying index instead of adding
Subtracting index causing negative values
3. Consider a hash table of size 5 using linear probing. The hash function is h(k) = k % 5. Insert keys 7, 12, 17 in order. What is the final state of the table?
Insert 7 at index 2. For 12, index 2 is occupied, so try index 3. Insert 12 at index 3. For 17, indexes 2 and 3 are occupied, so insert at index 4.
Final Answer:
[null, null, 7, 12, 17] -> Option D
Quick Check:
Keys placed at 2, 3, 4 sequentially [OK]
Hint: Check hash, then next slots if occupied [OK]
Common Mistakes:
Placing all keys at initial hash index
Not wrapping around the table
Confusing index positions
4. Given the following code snippet for linear probing insertion, what is the bug?
int insert(int[] table, int key) {
int m = table.length;
int i = key % m;
while (table[i] != 0) {
i = (i + 1) % m;
}
table[i] = key;
return i;
}
medium
A. It does not handle the case when the table is full, causing an infinite loop.
B. The hash function should be key / m instead of key % m.
C. It inserts the key at the wrong index without probing.
D. It uses 0 to check empty slots, which is invalid for all keys.
Solution
Step 1: Analyze the while loop condition
The loop continues while the slot is occupied (not zero). If the table is full, it loops forever because no empty slot is found.
Step 2: Check other options
The hash function should be key / m instead of key % m. is wrong because modulo is correct for hashing. It inserts the key at the wrong index without probing. is wrong because probing is done. It uses 0 to check empty slots, which is invalid for all keys. assumes 0 is invalid, but 0 can be used as empty marker if keys are positive.
Final Answer:
It does not handle the case when the table is full, causing an infinite loop. -> Option A
Quick Check:
Full table causes infinite loop [OK]
Hint: Check for full table to avoid infinite loops [OK]
Common Mistakes:
Ignoring full table condition
Misunderstanding hash function usage
Assuming 0 cannot be empty slot marker
5. You have a hash table of size 7 using linear probing. The hash function is h(k) = k % 7. Insert keys 10, 24, 31, 17, 3, 7 in order. After all insertions, which index will key 7 be stored at?