Saltar al contenido

Sondeo lineal

En el direccionamiento abierto, la tabla es un solo array de posiciones, y cada posición guarda como mucho una clave. Para insertar k:

  1. Calcular i ← hash(k) mod capacidad.
  2. Si la posición i está libre, guardar k ahí.
  3. Si está ocupada, probar i + 1, luego i + 2…, dando la vuelta con el mod.

A cada posición probada se le llama sondeo, y a esta regla, sondeo lineal.

Sondeo lineal al insertar 13Tabla de 8 posiciones numeradas de 0 a 7. La posición 5 ya guarda 5. Para insertar 13, que quiere la posición 5, el sondeo 1 mira la 5, que está ocupada; el sondeo 2 mira la 6, que está libre, y guarda 13 ahí. Las demás posiciones están vacías.0123455613*7insertar 1313 mod 8 = 5sondeo 1: ocupadasondeo 2: libre, se guarda 13
Cada posición guarda como mucho una clave. La clave 13 acaba una posición después de la que le tocaba, y la búsqueda seguirá el mismo camino.

Buscar sigue el mismo camino: empieza en hash(k) mod capacidad y avanza hasta encontrar k o una posición vacía. Si llega a una vacía, k no está: si estuviera, se habría guardado ahí o antes.

Capacidad 10, hash(k) = k, sondeo lineal. Las posiciones 7, 8 y 9 están ocupadas por 7, 17 y 9. ¿Dónde va 27?