La búsqueda es una operación que tiene por objeto la localización de un elemento dentro de la estructura de datos. A menudo un programador estará trabajando con grandes cantidades de datos almacenados en arreglos y pudiera resultar necesario determinar si un arreglo contiene un valor que coincide con algún valor clave o buscado.
Encontramos dos métodos que localizan elementos dentro de un array: Búsqueda secuencial y búsqueda binaria.
Se utiliza cuando el vector no está ordenado o no puede ser ordenado previamente. Consiste en buscar el elemento comparándolo secuencialmente (de ahí su nombre) con cada elemento del vector hasta encontrarlo o hasta que se llegue al final,recorre el vector desde el primer elemento hasta el último.La existencia se puede asegurar cuando el elemento es localizado, pero no podemos asegurar la no existencia hasta no haber analizado todos los elementos del vector.
A continuación se presentara el código de el método de búsqueda secuencial
Creamos nuestra clase busqueda_secuencial
public class busqueda_secuencial { static void buscar(int[] a, int num) { int band = 0; for (int i = 0; i < a.length; i++) { if (num == a[i]) { System.out.println("el numero esta en la posicion [" + (i) + "]"); band++; } } if (band == 0) { System.out.println("no existe"); } System.out.println("band= " + band); } public static void seleccion(int a[]) { int aux, i; for (i = 0; i < a.length; i++) { for (int k = i + 1; k < a.length; k++) { if (a[i] > a[k]) { aux = a[i]; a[i] = a[k]; a[k] = aux; } } for (int k = 0; k < a.length; k++) { System.out.print(a[k] + " "); } System.out.print(" i=" + i); System.out.println(""); } } }Creamos nuestra clase principal test_busquedaSecuencial
import java.util.Scanner; public class test_busquedaSecuencial { public static void main(String[] args) { Scanner sc = new Scanner(System.in); busqueda_secuencial b = new busqueda_secuencial(); int a[] = {9, 5, 4, 1, 4}; int num; System.out.println("Vector"); for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } System.out.println("\ningrese numero buscar: "); num = sc.nextInt(); b.buscar(a, num); } }Búsqueda Binaria
Se utiliza cuando el vector en el que queremos determinar la existencia de un elemento está previamente ordenado.
Este método consiste en una vez que tengamos el numero para buscar,trabajamos con el indice inicial y final del array,se ase una semisuma y al indice que le toca ese valor se convierte en el indice intermedio y se le pregunta si es mayor,menor o igual al numero buscado;si el numero buscado es el indice intermedio pues el elemento a sido encontrado,en caso contrario si el indice intermedio es menor pues pasa a ser el indice final ,y si el indice intermedio es mayor pues pasa a ser el indice inicial,y así sucesivamente hasta encontrar el elemento buscado.
A continuación se presentara el código de el método de búsqueda secuencial
Creamos nuestra clase busqueda_binaria
public class busqueda_binaria { void mostrarArreglo(int vector[]) { for(int i =0; iCreamos nuestra clase principal test_busquedaBinariavector[i]) { temp = vector[j]; vector[j] = vector[i]; vector[i] = temp; } } } } public void busquedbinaria(int Vector[], int num) { int tam = Vector.length; int min = 0, med = 0, max = tam; while (min <= max) { med = (min + max) / 2; if (num == Vector[med]) { System.out.println("su numero es " + num + " en la posicion " + med); max=0; } if (num < Vector[med]) { max = med; } else { min = med; } } }
import java.util.Scanner; public class test_busqueaBinaria { public static void main(String[] args) { Scanner sc = new Scanner(System.in); busqueda_binaria a= new busqueda_binaria (); int Vector []= {3,1,6,7,5,8}; int num; a.mostrarArreglo(Vector); a.ordenarArreglo(Vector); System.out.println("------vector ordenado"); a.mostrarArreglo(Vector); System.out.println("------ingresar numero a buscar"); num=sc.nextInt(); a.busquedbinaria(Vector, num); } }
No hay comentarios:
Publicar un comentario