Hash Table Insertion
1. **Problem Statement:**
Insert keys \{14, 30, 22, 10, 50, 60, 90\} into a hash table of size 8 using the hash function $$H(k) = k \bmod 8$$ and resolve collisions using linear probing.
2. **Hash Function Explanation:**
The hash function calculates the index by taking the remainder when the key is divided by 8.
3. **Insertion Steps with Linear Probing:**
- Insert 14: $$14 \bmod 8 = 6$$, place at index 6.
- Insert 30: $$30 \bmod 8 = 6$$, collision at index 6.
Linear probing checks next index 7, place 30 at index 7.
- Insert 22: $$22 \bmod 8 = 6$$, collision at 6.
Check 7 (occupied), then 0 (empty), place 22 at index 0.
- Insert 10: $$10 \bmod 8 = 2$$, place at index 2.
- Insert 50: $$50 \bmod 8 = 2$$, collision at 2.
Check 3 (empty), place 50 at index 3.
- Insert 60: $$60 \bmod 8 = 4$$, place at index 4.
- Insert 90: $$90 \bmod 8 = 2$$, collision at 2.
Check 3 (occupied), 4 (occupied), 5 (empty), place 90 at index 5.
4. **Final Hash Table:**
Index: 0 1 2 3 4 5 6 7
Keys: 22 - 10 50 60 90 14 30
5. **Advantages of Linear Probing:**
- Simple to implement.
- Good cache performance due to sequential access.
6. **Disadvantages of Linear Probing:**
- Primary clustering: long runs of occupied slots increase search time.
- Performance degrades as load factor approaches 1.
7. **Advantages of Quadratic Probing:**
- Reduces primary clustering by using quadratic increments.
- Better distribution of keys compared to linear probing.
8. **Disadvantages of Quadratic Probing:**
- More complex to implement.
- May not probe all slots, leading to secondary clustering.
- Requires careful choice of table size and probing function to guarantee finding empty slots.