Está en la página 1de 8

INSTITUTO TECNOLGICO DE MATEHUALA

PROGRAMAS
Elabor: Conde Olivares Juan Armando Castillo Hernndez ngel Arturo Barbosa Rodrguez Pedro Alberto Sauceda Olvera Juan Jos

Materia:

Algoritmos y lenguajes de Programacin

Docente: Ing. Martn Luis Ledezma Hernndez Carrera: Grupo: Ingeniera Industrial Cuarto semestre A

Unidad 7: Arreglos Semestre: Enero-Junio 2011

Matehuala, S.L.P.

Junio 2011

Ejercicio # 1 Bsqueda Lineal Programa // 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

Resultados del programa

Ejercicio # 2 Bsqueda binaria Programa // 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

Resultados del programa

También podría gustarte