You are on page 1of 10

INSTITUTO TECNOLGICO DE MATEHUALA INGENIERA INDUSTRIAL

ALGORITMOS Y LENGUAJES DE PROGRAMACIN

UNIDAD 7

ING. MARTN LUIS LEDEZMA

LVAREZ HERNNDEZ IRENE ESPERANZA CAMPOS MARTNEZ MACARIO MALDONADO MUOZ CLAUDIA GADALUPE TELLO ORTZ CELIA CECILIA RODRIGUEZ QUIROZ NORBERTO ISMAEL

22 DE JUNIO DE 2011

EJERCICIO 1 Bsqueda lineal. Programa fuente: // Bsqueda lineal en un arreglo. import java.awt. *; import java.awt.event. *; import javax.swing.* ; public class BusquedaLineal extends JApplet implements ActionListener { JLabel escribirEtiqueta, resultadoEtiqueta; JTextField escribirCampo, resultadoCampo; int arreglo[]; // configurar la GUI del applet public void init () { // obtener panel de contenido y configurar su esquema como FlowLayout Container contenedor = getContentPane (); contenedor.setLayout (new FlowLayout() ); // configurar JLabel y JTextField para la entrada del usuario escribirEtiqueta = new JLabel ("Escriba clave de bsqueda (entero)"); contenedor.add (escribirEtiqueta); escribirCampo = new JTextField (10); contenedor.add (escribirCampo); // registrar este applet para escuchar acciones de escribirCampo escribirCampo.addActionListener (this);

//configurar JLabel y JTextField para mostrar los resultados resultadoEtiqueta = new JLabel ("Resultado"); contenedor.add (resultadoEtiqueta); resultadoCampo = new JTextField (20); resultadoCampo.setEditable (false); contenedor.add (resultadoCampo); //crear arreglo y llenarlo con enteros pares de 0 a 198 arreglo = new int[ 100 ]; for (int contador = 0; contador < arreglo.length; contador++ ) arreglo[ contador ] = 2 * contador; }// fin del mtodo init // buscar en arreglo el valor clave especificado public int busquedaLineal ( int arreglo2 [], int clave) { // iterar a travs de los elementos del arreglo for ( int contador = 0; contador < arreglo2.length; contador++ ) // si el elemento del arreglo es igual al valor de la clase, devolver ubicacin if (arreglo2 [ contador ] == clave) return contador; return -1; // clave no encontrada } // fin del mtodo busquedaLineal // obtener entrada del usuario y llamar al mtodo busquedaLineal public void actionPerformed (ActionEvent actionEvent) {

// la entrada puede obtenerse tambin mediante escribirCampo.getText() String claveBusqueda = actionEvent.getActionCommand(); // pasar referencia de arreglo a busquedaLineal; generalmente se pasa la referencia // a un arreglo a un mtodo, para buscar el objeto arreglo correspondiente int elemento = busquedaLineal (arreglo, Integer.parseInt (claveBusqueda)); // mostrar el resultado de la bsqueda if (elemento != -1) resultadoCampo.setText (" Valor encontrado en el elemento " + elemento); else resultadoCampo.setText (" Valor no encontrado "); } // fin del mtodo actionPerformend } // fin de la clase BusquedaLineal PROGRAMA CORRIDO

EJERCICIO 2 Bsqueda Binaria. Programa fuente: // Bsqueda binaria en un arreglo. import java.awt. *; import java.awt.event. *; import java.text. *; import javax.swing. *; public class BusquedaBinaria extends JApplet implements ActionListener {

JLabel escribirEtiqueta, resultadoEtiqueta; JTextField escribirCampo, resultadoCampo; JTextArea salida; int arreglo []; String pantalla = ""; // configurar la GUI del applet public void init () { // obtener panel de contenido y configurar su esquema como FlowLayout Container contenedor = getContentPane (); contenedor.setLayout (new FlowLayout ()); // configurar JLabel y JTextField para la entrada del usuario escribirEtiqueta = new JLabel ("Escriba clave de bsqueda (entero)"); contenedor.add (escribirEtiqueta); escribirCampo = new JTextField (10); contenedor.add (escribirCampo); // registrar este applet para escuchar acciones de escribirCampo escribirCampo.addActionListener (this); //configurar JLabel y JTextField para mostrar los resultados resultadoEtiqueta = new JLabel ("Resultado"); contenedor.add (resultadoEtiqueta); resultadoCampo = new JTextField (20); resultadoCampo.setEditable (false); contenedor.add (resultadoCampo);

// configurar JTextArea para mostrar datos de comparacin salida = new JTextArea (6, 60); salida.setFont (new Font ("Monospaced", Font.PLAIN, 12)); contenedor.add (salida); // crear arreglo y llenarlo con enteros pares de 0 a 28 arreglo = new int [15]; for (int contador = 0; contador < arreglo.length; contador++) arreglo[ contador ] = 2* contador; } // fin del mtodo init // obtener entrada del usuario y llamar al mtodo busquedaBinaria public void actionPerformed (ActionEvent actionEvent) { // la entrada tambin puede obtenerse mediante escribirCampo.getText () String claveBusqueda = actionEvent.getActionCommand (); // Inicializar cadena pantalla para la nueva bsqueda pantalla = "Porciones del arreglo buscadas\n"; // realizar bsqueda binaria int elemento = busquedaBinaria (arreglo, Integer.parseInt (claveBusqueda)); salida.setText (pantalla); // mostrar resultado de la bsqueda if (elemento != -1) resultadoCampo.setText (" Valor encontrado en el elemento " + elemento); else resultadoCampo.setText (" Valor no encontrado ");

} // fin del mtodo actionPerformed // mtodo para realizar la bsqueda binaria en un arreglo public int busquedaBinaria (int arreglo2 [], int clave) { int inferior = 0; // ndice del elemento inferior int superior = arreglo2.length -1; // ndice del elemento superior int medio; // ndice del elemento medio // iterar hasta que el ndide inferior sea mayor que el superior while (inferior <= superior ){ medio = ( inferior + superior ) / 2; // deteminar ndice medio // mostrar subconjunto de elementos del arreglo utilizados en esta // iteracin del ciclo de bsqueda binaria crearSalida (arreglo2, inferior, medio, superior); // si la clave concuerda con el elemento medio, devolver su ubicacin if (clave == arreglo [medio]) return medio; // si la clave es menor que el elemento medio, establecer nuevo elemento superior else if (clave < arreglo [medio]) superior = medio -1; // clave mayor que el elemento medio, establecer nuevo elemento inferior else inferior = medio + 1; } // fin de instruccin while return -1; // clave no encontrada

} // fin del mtodo busquedaBinaria // crear fila de salida mostrando subconjunto de elementos del arreglo // que se estn procesando void crearSalida (int arreglo3 [], int inferior, int medio, int superior) { // crear formato numrico entero de 2 dgitos DecimalFormat twoDigits = new DecimalFormat ("00"); // iterar a travs de los elementos del arreglo for (int contador = 0; contador < arreglo3.length; contador++) { // si contador est fuera de subconjunto actual del arreglo, anexar // espacios de relleno al String pantalla if (contador < inferior || contador > superior ) pantalla += " "; // si elemento medio, anexar elemento al String pantalla // seguido de un asterisco (*), para indicar el elemento medio else if (contador == medio) pantalla += twoDigits.format ( arreglo3 [ contador ] ) + " * "; else // anexar elemento al String pantalla pantalla += twoDigits.format ( arreglo3 [ contador ] ) + " "; } // fin de instruccin for pantalla += "\n"; } // fin del mtodo crearSalida } // fin de la clase BusquedaBinaria

PROGRAMA CORRIDO.

You might also like