• Ser una función sencilla y por tanto rápida.
• Distribuir uniformemente los elementos en el espacio de almacenamiento
• Evitar en lo posible la aparición de sinónimos Para dos claves muy similares, generar posiciones distantes
En primer lugar, obtenemos un numero a partir de la clave alfanumérica utilizada y luego hacemos la operación modulo N sobre ese numero. Así obtendremos una posición donde almacenar nuestro elemento. Hay que cuenta que N (el tamaño de la tabla) ha de ser un número primo.
El código seria:
prívate static int Hash1(String Clave) {
int valor = Clave.charAt(0);
int tam = Clave.length();
for (int i = 1; i <>
valor += Character.getNumericValue( Clave.charAt(i));
}
return (valor % N);
}
Método de la División :
-Es la función de dispersión clásica para claves enteras.
-Consiste en tomar el resto de la división de la clave por el número de entradas de la tabla (B).
-Código: x = x % B;
-Como ventajas citar que es una función fácil de calcular y que se puede utilizar para tablas de cualquier tamaño, aunque se recomienda elegir B con cuidado.
-Como inconvenientes podemos citar que el rango de valores es limitado.
Suma de ASCII:
Es la función de dispersión clásica para claves de tipo cadena. Consiste en sumar los valores ASCII de la clave.
Ejemplo: “HOLA” => (‘H’+’O’+’L’+’A’) % B
Codigo:
for (int i=0; i
}
Como ventajas citar que es una función fácil de implementar y que se ejecuta con rapidez.
Como inconvenientes podemos citar que no distribuye bien las claves si el tamaño de la tabla es grande, ya que las claves se van a situar en la
parte superior de la tabla.
No hay comentarios:
Publicar un comentario