Buscar Datos en Arreglo (Metodo Busqueda Secuencial)

martes, 12 de junio de 2012

Bueno esta vez veremos un poco de java, en este articulo veremos como implementar el método de búsqueda secuencial para buscar un dato en un arreglo.

El método de búsqueda secuencial es de los mas fáciles que podemos utilizar para buscar datos(es aconsejable utilizarlo cuando el vector no es de gran tamaño), ya que no requiere que el vector este ordenado, el método consiste en recorrer el vector de manera secuencial hasta encontrar el dato a buscar.

El ejemplo lo desarrolle con Jcreator.

En el ejemplo creo un vector con 10 datos y luego hago la búsqueda de un dato para saber si esta o no en el vector.

Veamos el código y luego explicare lo mas importante.

/**
* BusquedaSecuencial Application
*
* Author: Cristian Torres
*
* Pais: El Salvador
*/
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class BusquedaSecuencial extends JFrame implements ActionListener {
private JButton btnbuscar;
private JTextField num;
private Label lbl;

int[] valores = {20,10,100,5,30,0,3,500,50,1};//vector donde aremos la busqueda

//metodo donde creo y añado los controles
public void Controles(){
//panel Contenedor
Container contenedor = getContentPane();
contenedor.setLayout( new FlowLayout(FlowLayout.CENTER) );
//agrego los controles al contenedor
lbl = new Label("Numero a Buscar");
contenedor.add(lbl);
num = new JTextField(10);
contenedor.add(num);
btnbuscar = new JButton("Buscar");
contenedor.add(btnbuscar);
btnbuscar.addActionListener(this);
}
//constructor
public BusquedaSecuencial(){
super("Busqueda Secuencial");
//cargo controles
Controles();
//tamaño ventana y mostrar y centrar
setSize(350,120);
setLocationRelativeTo(null);//centrar
setVisible(true);
}

//evento del boton
public void actionPerformed(ActionEvent e){
if (e.getSource()==btnbuscar){
int x;
x = Integer.parseInt(num.getText());
if(BusquedaSecuencial(valores,x) !=-1){
JOptionPane.showMessageDialog(null,
"El Dato"+" "+ x + " "+ "Esta en la Posicion: "+ BusquedaSecuencial(valores,x),
"Busqueda",JOptionPane.INFORMATION_MESSAGE);
}
else
JOptionPane.showMessageDialog(null, "El Dato no se Encuentra",
"Error",JOptionPane.ERROR_MESSAGE);
}

}
//metodo de busqueda secuencial
public static int BusquedaSecuencial(int vector[], int Elem){
for (int i = 0; i < vector.length; ++i)
if (vector[i] == Elem)
return i;
return -1;
}

public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
BusquedaSecuencial busqueda = new BusquedaSecuencial();//Instanciamos la clase que creamos
busqueda.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//cerrar ventana
}

}


Los 2 aspectos mas importantes del código son los siguientes.

El método que se encarga de hacer la búsqueda, que es el siguiente.
 
//metodo de busqueda secuencial
public static int BusquedaSecuencial(int vector[], int Elem){
for (int i = 0; i < vector.length; ++i)
if (vector[i] == Elem)
return i;
return -1;
}

Como puede verse se crea un método que retornara un valor entero y que recibirá 2 parámetros, que sera el vector y el dato a buscar. El método recorre el vector y va comparando los datos y si encuentra el dato retorna la posición en la que se encontró, si no se encuentra el dato retorna -1.

Y el otro aspecto importante es como implementar el método.
   int x;
x = Integer.parseInt(num.getText());
if(BusquedaSecuencial(valores,x) !=-1){
JOptionPane.showMessageDialog(null,
El Dato"+" "+ x + " "+ "Esta en la Posicion: "+ BusquedaSecuencial(valores,x),
"Busqueda",JOptionPane.INFORMATION_MESSAGE);
}
else
JOptionPane.showMessageDialog(null, "El Dato no se Encuentra",
"Error",JOptionPane.ERROR_MESSAGE);

Declaramos una variable que sera la que tendrá el dato a buscar, y luego hacemos uso del método de búsqueda validando si encontró el dato o no, y le enviamos como argumentos, el vector que contiene los datos y el dato a buscar.

Dato Encontrado

Dato No Encontrado


Eso es todo espero les sea de utilidad.
Saludos desde El Salvador...

5 comentarios:

The Undertaker dijo...

Wooo... excelente

Cristian Torres dijo...

Hola.
Espero te aya servido.

Saludos.

EDGAR SANTANA dijo...

Gracias!!! me sirvió mucho para una practica de estructura de datos.

Anónimo dijo...

muchas gracias me a sido de gran ayuda saludos

Cristian Torres dijo...

Me alegro que les aya sido de utilidad.
Saludos.

Publicar un comentario en la entrada

Nota: solo los miembros de este blog pueden publicar comentarios.