PONTIFICIA UNIVERSIDAD CATÓLICA MADRE Y MAESTRA
FACULTAD DE CIENCIAS DE LA INGENIERÍA
DEPARTAMENTO DE INGENIERÍA DE SISTEMAS Y COMPUTACIÓN
Quiz #2 Solución – Divide & Vencerás | Tabla Hash
Punto #1
public class InvertirArreglo {
public static void invertirRecursivo(int arreglo[]) {
invertirRecursivo(arreglo, 0, arreglo.length - 1);
}
private static void invertirRecursivo(int arreglo[], int inicio, int fin) {
if (inicio < fin) {
int tmp = arreglo[inicio];
arreglo[inicio] = arreglo[fin];
arreglo[fin] = tmp;
invertirRecursivo(arreglo, inicio + 1, fin - 1);
}
}
public static void main(String[] args) {
int[] arreglo={1,2,3,4,5};
invertirRecursivo(arreglo);
imprirmirArreglo(arreglo);
}
public static void imprirmirArreglo(int[] arreglo){
System.out.print("{ ");
//usuando foreach en java.
for(int i : arreglo){
System.out.print(i+", ");
}
System.out.print(" }");
}
}
Punto #2
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package quiz_2;
import java.util.LinkedList;
Ing. Carlos Camacho – ISC 423 – Estructura Datos y Algoritmos – PUCMM Santiago
public class TablaHashAbierta {
//listado.
ListaElemento[] celdas=new ListaElemento[29];
//Retorna la posicion donde almaceno la celda.
public int insertar(int key, String valor){
int posicion=getHash(key);
if(celdas[posicion]==null){
celdas[posicion]=new ListaElemento();
}
//
ElementoHash elemento=new ElementoHash();
elemento.key=key;
elemento.valor=valor;
celdas[posicion].elementos.add(elemento); //new ElementoHash(key, valor)
return posicion;
}
//Recupera la informacion dado el key.
public String getElemento(int key){
int posicion=getHash(key);
if(celdas[posicion]!=null){
for(ElementoHash elemento : celdas[posicion].elementos){
if(elemento.key == key){
return elemento.valor;
}
}
}
return null;
}
//genera el hash.
public int getHash(int key){
return key%celdas.length;
}
}
//Clase para almacenar la lista.
class ListaElemento{
//Lista enlazada que puede contener objetos ElementoHash
LinkedList<ElementoHash> elementos=new LinkedList<ElementoHash>();
}
//Elemento que representa el valor de la posición.
class ElementoHash{
public int key;
String valor;
public ElementoHash(int key, String valor) {
this.key = key;
Ing. Carlos Camacho – ISC 423 – Estructura Datos y Algoritmos – PUCMM Santiago
this.valor = valor;
}
public ElementoHash() {
}
public static void main(String[] args) {
TablaHashAbierta tba=new TablaHashAbierta();
tba.insertar(20011136, "Carlos Camacho");
tba.insertar(20011140, "Estudiante 1");
tba.insertar(20011135, "Estudiante 2");
System.out.println("Estudiante 20011140: "+tba.getElemento(20011140));
}
}
Ing. Carlos Camacho – ISC 423 – Estructura Datos y Algoritmos – PUCMM Santiago