Tablas de Hashing

Hola a todos. Se que hay millones de ejemplos de tablas de hashing y listas en internet. De hecho he mirado muchísimas pero no acabo de comprender bien la diferencia entre un array y una tabla de hashing, ¿por qué es tan ventajosa la tabla de hash en las búsquedas y tan mala para inserciones y eliminaciones?, ¿cual es la motivación para usar tablas de hashing(cuando es adecuado)?

Conozco la terminología pero todas las explicaciones que encuentro se van un poco por las ramas, ¿alguien me puede disipar la diferencia entre tabla de hash y un array o poner un link donde esté explicado sin demasiados rodeos?
Sé que es un topicazo, pero la Wikipedia te da una buena informacion:
http://es.m.wikipedia.org/wiki/Tabla_hash
Se supone que una estructura con hash, al mover e insertar estas moviendo directamente los datos lo que es una penalización al tiempo de ejecución y a la estructura en general ya que al acabar de mover, la estructura estará desordenada y para ordenarla de nuevo hay que mover directamente los datos otra vez.

En cambio, en una estructura con punteros a datos, si eliminas o mueves uno, sólo hay que actualizar la dirección de memoria donde apunta el y los que se ven afectados por la ordenación posterior.

Respecto a la eficiencia, si buscas un dato en una estructura hash y lo encuentras, ahí lo tienes sin más. En cambio en un árbol de punteros, primero lo encuentros y luego haces un acceso adicional para encontrar el dato en la dirección que indica el puntero.

Creo que es eso a lo que te refieres...

Saludos,
2 respuestas