Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: tos123 en 22 Octubre 2018, 18:42 pm



Título: Hashing Ayuda!
Publicado por: tos123 en 22 Octubre 2018, 18:42 pm
Buenas tengo que insertar datos desde un archivo.csv en una tabla hash de 500 elementos por el metodo de prueba lineal y la verdad es que no entiendo nada. Estoy en segundo de carrera y no encuentra una buena explicación.
Gracias por la ayuda.


Título: Re: Hashing Ayuda!
Publicado por: CalgaryCorpus en 22 Octubre 2018, 19:28 pm
Los arreglos usan indices.
Los arreglos tienen datos del mismo tipo.
Define un arreglo que tiene listas.
Cada dato a insertar va en alguna de esas listas, dentro de ese arreglo.
Cual lista tiene que insertarse?
Se calcula usando una funcion que dado el dato, te devuelve un numero, el que usas de indice, o bien, si es mayor que el tamano del arreglo, haces modulo con el tamano del arreglo para obtener un indice valido.

Resumen:

insertar en la lista que esta en   hash_table[ hash_function(dato) % tamano(hash_table) ]

Como buscar?

basta buscar en 1 sola lista, cual?  La misma que se calcula al insertar.

Si tu funcion de hash distribuye bien los datos, tienes varias listas pequenas. Si distribuye mal, tienes pocas listas largas.

El tiempo de insercion y de busqueda tendra relacion con la calidad de la funcion de hash que uses.
 


Título: Re: Hashing Ayuda!
Publicado por: tos123 en 23 Octubre 2018, 16:35 pm
el problema es que tengo que insertar 500 nombres en una tabla hashing, eso es lo que no entiendo de como hacerlo, tu explicación no me resuelve muchas dudas pero gracias por responder