Vous êtes sur la page 1sur 3

CUESTIONARIO EXPOSICION BUSQUEDA POR FUNCIONES DE HASH.

1. Para que nos sirve la bsqueda en el procesamiento de la informacin. Trabaja con una
funcin que transforma la llave o dato en una direccin, ndice, y que en ocasiones puede
generar una colisin, que se define como una misma direccin para dos o ms claves
distintas.
2. Los mtodos de bsqueda se clasifican en:
Bsquedas internas y bsquedas externas
3. Menciona algunas caractersticas del mtodo de bsqueda por funciones de hash
Trabaja con una funcin que transforma la llave o dato en una direccin, ndice, y que en
ocasiones puede generar una colisin, que se define como una misma direccin para dos o
ms claves distintas.
4. Cules son las funciones hash ms utilizadas?
Funcin mdulo (por divisin).
Funcin cuadrada.
Funcin plegamiento.
Funcin truncamiento.
5. Menciona algunos de los mtodos ms utilizados para la solucin de colisiones.
Reasignacin.
Arreglos anidados.
Encadenamiento.
6. Cual es la principal desventaja del mtodo de encadenamiento? Como desventaja se
puede encontrar que cuando la lista ligada crece demasiado se pierde la facilidad de
acceso directo del mtodo hash.
7. Realiza un cdigo en el lenguaje de tu agrado donde se utilice el mtodo de bsqueda
por funciones Hash

package hash;
public class Hash {

//Atributo
Object [] th;

//Constructor
public Hash(int n){ th=new Object[n];
for(int i=0; i<th.length;i++){th[ i ]=null;}
//******************
}

//Mtodos
public void creaTabla(Object[]a, int nmax){ int pos;
for(int i=0; i<a.length;i++){ //***********
//Genera la posicin del elemento a insertar
//Haciendo uso de una funcin hash
pos=a[i].hashCode()%nmax;
System.out.println("Elemento :"+a[i]+ " pos = " + pos);

//cuando la funcin devuelve un valor negativo

if(pos<0){ pos*=-1; } if(th[pos]==null){

//Inserta en la tabla sin colisin


th[pos]=a[i];
}else{

while(th[pos]!=null)
{
pos++;
if(pos==th.length)
{
pos=0;
}
}

//Inserta el valor en la tabla hash despues de una colicion

th[pos]=a[i];
}
}
presenta("TABLA HASH",th);
}

public void buscarHash(Object elemb, int nmax){


int e=elemb.hashCode();
if(e<0){ e*=-1; }

int pos=e%nmax;
if(th[pos]==null){

System.out.print("Elemento no encontrado"); }else{


if(th[pos].equals(elemb)){

System.out.print("Elemento encontrado, "+elemb+ " su posicion es : "+ pos);


}else{ int j=pos+1; if(j==th.length){
j=0; }
while((th[j]!=elemb)&&(th[j]!=null)&&(j!=pos)){
j++;
if(j>=th.length-1){ j=0;
}
}

if(th[j].equals(elemb)){
System.out.println("Elemento encontrado, "+elemb+ " su posicion es : "+ j);
}else{

System.out.print("Elemento no encontrado");
}
}
}
}

public void presenta(String msg,Object a[]){


System.out.print(msg+" [");

for(int i=0; i<=a.length-1;i++){ if(i<a.length-1){ //**********************


System.out.print(a[i]+","); }else{
System.out.print(a[i]+"]");
}
}

System.out.print("\n");
}

public static void main(String args[]){


Object l[]= {12,45,76,34,90,45,56,78};
Hash bh=new Hash(l.length*2);
bh.presenta("Elementos a insertar en la Tabla Hash",l);
bh.creaTabla(l,l.length);
bh.buscarHash(34,l.length);
}
}

Vous aimerez peut-être aussi