Era pra ser uma imagem de jogo da velha :/ Hashing

Hashing

É 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.

Era pra ser uma imagem de jogo da velha :/

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.

Era pra ser uma imagem de jogo da velha :/

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'

Era pra ser uma imagem de jogo da velha :/

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.

Era pra ser uma imagem de jogo da velha :/