É um sistema para achar determinada chave sem a necessidade de
percorrer um grande numeros de posições, assim sendo mais eficiente do
que uma lista encadeada.
No hashin temos uma função para decidir onde alocaremos nossa chave,
usando como exemplo números para melhor compreeção, inicialmente
criaremos um vetor de 8 posições.
A função que irá inserir nossa chave é (chave%indice), onde o resto da
divisão da chave por um indice definirá o local onde a chave será alocada.
esse indice deve ser proporcional ao tamanho do vetor.
Agora, se fossemos inserir o número 8 por exemplo, e tendo como indice o próprio 8, teríamos 8/8= 0,
assim nossa chave '8' estaria na posição 0 do vetor.
Assim sucessivamente, 17/8 resto= '1' 18/8 resto= '2'.
Caso ocorra uma colisão, por exemplo 26/8 resto='2' e a posição
2 do vetor ja esteja ocupada, tempos duas soluções posiveis:
reespalhamento e encadeamento.
Reespalhamento consiste em fazermor o reespalhamento novamente, porém
com a posição obitida antes +1, nesse exeplo seria:
26/8 resto='2', tem colisão então, (2+1)/8 resto='3'
Já o encadeamento é a criação de uma lista dinamica para cada posição
do vetor, assim cada posição do vetor teria uma lista para elementos
que tem o mesmo resto de divisão pelo indice.