Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


metodos de busqueda programacion en java, Ejercicios de Programación Java

metodos de busqueda programacion en java

Tipo: Ejercicios

2019/2020

Subido el 14/09/2020

miguel-antonio-narvaez-charrasquiel
miguel-antonio-narvaez-charrasquiel 🇨🇴

5

(1)

5 documentos

1 / 9

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
MÉTODOS DE BÚSQUEDA
pf3
pf4
pf5
pf8
pf9

Vista previa parcial del texto

¡Descarga metodos de busqueda programacion en java y más Ejercicios en PDF de Programación Java solo en Docsity!

MÉTODOS DE BÚSQUEDA

DESARROLLO

CONCEPTO MÉTODOS DE BÚSQUEDA:

Los métodos de búsqueda permiten recuperar información de un vector o un archivo, que contenga

una lista de datos. Por ejemplo se puede obtener el nombre y el número telefónico de nuestra

agenda de contactos o la nota obtenida por un alumno en la lista de un curso.

Cuando se realizan búsquedas sobre vectores, se desea es encontrar la posición que ocupa el

elemento buscado dentro de la lista de elementos que contiene el vector. Para la búsqueda de

información en archivos es necesario realizar la búsqueda a partir de un campo clave dentro del

archivo.

Existen diferentes métodos de búsqueda y se puede determinar con cual método trabajar

dependiendo de la cantidad de elementos que existan en el vector o la organización de dichos

elementos.

A continuación para determinar si un elemento pertenece a un conjunto de elementos e indicar su

posición dentro de un vector, se utilizaran los métodos de búsqueda secuencial (lineal) y búsqueda

binaria.

MÉTODOS DE BÚSQUEDA UTILIZADOS:

 Búsqueda Secuencial o Lineal:

En este método se recorre el vector desde el primer elemento hasta el último, comparando cada

elemento del vector con el valor buscado, hasta que se encuentre el elemento o se llegue al final

del vector. Este método es recomendado para realizar búsquedas con pocos datos.

Implementación del método que busca lineal o secuencial, y devuelve la posición del dato a buscar

que se pasa como parámetro:

//Implementación del método que busca lineal o secuencialmente sobre los datos del vector. public int busquedaLineal(int dato){ int i; //Variable para controlar el ciclo while. int posicion; //Variable que devuelve la posición en la que se encuentra el elemento buscado. //Se Asigna el valor de - 1 a la variable posición para devolver este valor en el supuesto caso de //que no se encuentre el valor buscado dentro del vector. posicion = - 1; i = 0; //Mientras que no se llegue al final del vector y no se haya encontrado el dato buscado en el vector. while ((i <= getNumElementos()-1) && (posicion == - 1)){ //Si el contenido del vector en la posición i-esima es igual al dato que se está buscando, entonces

der = centro-1; }else{ izq = centro+1; } } } return posicion; }

IMPLEMENTACIÓN DE LOS MÉTODOS DE ORDENAMIENTO EN JAVA:

 Ejercicio propuesto implementado en Java

A continuación se implementa un ejercicio que permite almacenar una cantidad específica de

códigos en un vector y posteriormente se implementan los métodos de búsqueda descritos

anteriormente, para determinar si un código pasado como dato de búsqueda se encuentra

almacenado dentro del vector.

 Diseño de clases UML de la solución

 Implementación de la clase MetodosBusqueda en el fichero MetodosBusqueda.java

En esta clase se implementan los métodos de búsqueda binaria y búsqueda secuencial. Igualmente

se implementa un método de ordenamiento, necesario para ordenar el vector y realizar la búsqueda

binaria.

public class MetodosBusqueda { //Se declaran los atributos de la clase, en este caso se declara el vector (vectorDatos). //y un atributo para asignar el número de elementos que tendrá el vector (numElementos). private int vectorDatos[]; private int numElementos; //posteriormente se implementa el método constructor de la clase para asignar los valores //iniciales de los atributos. public MetodosBusqueda(){ vectorDatos = null; numElementos = 0; } //El siguiente método crea el vector en tiempo de ejecución, posteriormente se asignara su tamaño. public void crearVector(){ vectorDatos = new int[numElementos]; } //Se implementa el método modificador para asignar los elementos en cada posición del vector. public void setVectorDatos(int p, int dato){ vectorDatos[p] = dato; } //Se implementa el método que permitirá obtener los elementos del vector. public int getVectorDatos(int p){ return vectorDatos[p]; } //Método modificador para asignar el tamaño o número de elementos del vector. public void setNumElementos(int num){ numElementos = num; } //Método selector que permite obtener el tamaño o número de elementos que tiene el vector. public int getNumElementos(){ return numElementos; } //Implementación del método que busca lineal o secuencialmente los datos en el vector. Este //método recorre el vector desde el primer elemento hasta el último, comparando cada elemento //del vector con el valor buscado hasta que se encuentre el elemento o se llegue al final del vector. //Este método es recomendado para realizar búsquedas con pocos datos. public int busquedaLineal(int dato){ int i; //Variable para controlar el ciclo while. int posicion; //Variable que devuelve la posición en la que se encuentra el elemento buscado. //Se Asigna el valor de - 1 a la variable posición para devolver este valor en el supuesto caso de //que no se encuentre el valor buscado dentro del vector. posicion = - 1; i = 0; //Mientras que no se llegue al final del vector y no se haya encontrado el dato buscado en el vector. while ((i <= getNumElementos()-1) && (posicion == - 1)){ //Si el contenido del vector en la posición i-esima es igual al dato que se está buscando, entonces //el dato si está en el vector y se devuelve la posición en donde se encuentra el dato dentro del //vector. Sino, el dato no se encuentra en esa posición, y se incrementa la posición (i) para una //nueva comparación. if (getVectorDatos(i) == dato){

 Implementación de la clase Main en el fichero Main.java:

En esta clase se almacena la información en el arreglo, se implementa el método que muestra los

elementos de vector; y se implementa un menú de opciones para buscar en el arreglo según el

método de búsqueda seleccionado.

import javax.swing.JOptionPane; public class Main { //Implementación del método que muestra los elementos del vector. Los almacena en una variable //de tipo cadena y los visualiza en una ventana con la ayuda de JOptionPane y el método //showMessageDialog. public static void mostrarVector(MetodosBusqueda buscar){ String datosVector = ""; //Se declara una variable de tipo cadena, que esta inicialmente vacía. //Se implementa un ciclo para recorrer en vector y se van almacenado los elementos en la variable //de tipo cadena de nombre datosVector. for(int i=0; i<=buscar.getNumElementos()-1; i++){ datosVector = datosVector+String.valueOf("Posición "+i+": "+buscar.getVectorDatos(i)+"\n"); } //Después de recorrer el vector y de tener todos los datos almacenados en la variable datosVector, se //visualiza la información con la ayuda de JOptionPane y el método showMessageDialog. JOptionPane.showMessageDialog(null, "============ ELEMENTOS DEL VECTOR ============"+"\n"+datosVector); } //Implementación del método que despliega el menú de opciones para escoger por cual método //buscar los elementos. public static int menu(){ int opcion = 0; do{ opcion = Integer.parseInt(JOptionPane.showInputDialog("====== SELECCIONE EL METODO DE BUSQUEDA ====== \n"+ "1. Búsqueda Lineal o Secuencial \n"+"2. Búsqueda Binaria \n"+"3. Salir"+"\n \n Seleccione una opción del 1 al 2")); }while(opcion <= 0 || opcion > 3); return opcion; } public static void main(String[] args) { //Dentro del método estático main se crea un objeto de la case MetodosBusqueda, de nombre //buscar para acceder a los métodos de búsqueda que se implementaron. MetodosBusqueda buscar = new MetodosBusqueda(); //Se pide en un showInputDialog el número de elementos que tendrá el vector. int numeroElementos = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite el Número de Elementos del Vector:")); //Se pasa el dato capturado al respectivo método modificador. buscar.setNumElementos(numeroElementos); //Se llama al método que crea el vector en tiempo de ejecución. buscar.crearVector();

//En el siguiente ciclo for, se piden los datos que se van a almacenar en el vector y se pasan al //respectivo método modificador del vector (setVectorDatos). for(int i=0; i<=buscar.getNumElementos()-1; i++){ int dato = Integer.parseInt(JOptionPane.showInputDialog(null, "Digitar Elemento de la Posición "+i+": ")); buscar.setVectorDatos(i, dato); //Se asigna en cada posición del vector el dato digitado. } JOptionPane.showMessageDialog(null,"Vector Lleno.... "); mostrarVector(buscar); //Se muestran los elementos del vector llamando al respectivo método. int datoBuscar; //Se almacena el dato que se quiere buscar en la variable datoBuscar. int posicionDato; //Variable para almacena la posición en donde se encuentra el dato buscado. //Se implementa un do- while, que llama constantemente al menú de opciones y visualiza las //diferentes opciones. Además, se implementa el código correspondiente a cada opción del menú //según sea el caso. int opcion; do{ opcion = menu(); switch(opcion) { case 1: datoBuscar = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite el dato que desea buscar:")); posicionDato = buscar.busquedaLineal(datoBuscar); if(posicionDato != - 1){ JOptionPane.showMessageDialog(null, "El elemento "+buscar.getVectorDatos(posicionDato)+ " se encuentra en la posicion "+posicionDato+" del vector"); }else{ JOptionPane.showMessageDialog(null, "El Elemento No se encuentra en el vector"); } break; case 2: datoBuscar = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite el dato que desea buscar:")); posicionDato = buscar.bsuquedaBinaria(datoBuscar); if(posicionDato != - 1){ JOptionPane.showMessageDialog(null, "El elemento "+buscar.getVectorDatos(posicionDato)+ " se encuentra en la posición "+posicionDato+" del vector"); }else{ JOptionPane.showMessageDialog(null, "El Elemento No se encuentra en el vector"); } break; case 3: break; } }while(opcion != 3); } }