| Mejor | Amortizado | Peor | |
|---|---|---|---|
| find | O(1) | O(1) | O(n) |
| insert | O(1) | O(1) | O(n) |
| get | O(1) | O(1) | O(n) |
| delete | O(1) | O(1) | O(n) |
Queremos que todo sea O(1) (en el peor caso)
Dos técnicas de hashing:
h(x) → num
K: tamaño del vecindario
Vecindario: los k números después de mi (además de mi), que también hashean al mismo número
Ejemplo k = 3, n = 8

Así el find se vuelve O(k) en el peor caso, porque me fijo en el valor del hash y en su vecindario
Al final me queda
| 0 | A | 100 |
|---|---|---|
| 1 | D | 000 |
| 2 | 000 | |
| 3 | F | 101 |
| 4 | C | 101 |
| 5 | G | 000 |
| 6 | E | 000 |
| 7 | B | 101 |
Si ahora quiero insertar H en 6, como el único vacío es el 2, muevo A al 2 e inserto H en 0
| 0 | H | 001 |
|---|---|---|
| 1 | D | 000 |
| 2 | A | 000 |
| 3 | F | 101 |
| 4 | C | 101 |
| 5 | G | 000 |
| 6 | E | 000 |
| 7 | B | 101 |