Búsqueda Binaria
Búsqueda Binaria
Búsqueda Binaria
ESTRUCTURA DE DATOS
Estudiante:
LIMA- PERÚ
2022
//Código
package busqueda;
import java.util.InputMismatchException;
import java.util.Scanner;
//Clase principal
public class Busqueda {
//Método principal
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
int cantidad;
try {
System.out.print("Digitar la cantidad del arreglo: ");
cantidad = entrada.nextInt();
int[] a = new int[cantidad];
int elem;
System.out.println("*****DIGITE LOS VALORES EN ORDEN");
for (int i = 0; i < a.length; i++) {
System.out.print("Digite el valor de la posicion " + i + ": ");
a[i] = entrada.nextInt();
}
quicksort(a, 0, cantidad-1);
System.out.println("El arreglo ordenado");
mostrar(a);
System.out.print("\nDigitar la cantidad del elemento a buscar: ");
elem = entrada.nextInt();
if (busquedaBinaria(a, elem) != -1) {
System.out.println("Se encontró el valor " + elem + " en la posicion " +
busquedaBinaria(a, elem) + " del arreglo");
} else {
System.out.println("No se encontró el numero en el arreglo");
}
} catch (InputMismatchException ex) {
System.out.println("ERROR: DIGITE SOLO VALORES ENTEROS.");
}
}
//Método de ordenamiento QuickSort
public static void quicksort(int A[], int izq, int der) {
int pivote = A[izq];
int i = izq;
int j = der;
int aux;
while (i < j) {
while (A[i] <= pivote && i < j) {
i++;
}
while (A[j] > pivote) {
j--;
}
if (i < j) {
aux = A[i];
A[i] = A[j];
A[j] = aux;
}
}
A[izq] = A[j];
A[j] = pivote;
if (izq < j - 1) {
quicksort(A, izq, j - 1);
}
if (j + 1 < der) {
quicksort(A, j + 1, der);
}
}
public static void mostrar(int[] arreglo) {
for (int i = 0; i < arreglo.length; i++) {
System.out.print(arreglo[i] + " ");
}
}
//Método de búsqueda binaria
public static int busquedaBinaria(int[] arreglo, int elemento) {
int limiteI = 0, limiteD = arreglo.length - 1;
while (limiteI <= limiteD) {
int medio = (limiteI + limiteD) / 2;
if (arreglo[medio] == elemento) {
return medio;
} else if (arreglo[medio] < elemento) {
limiteI = medio + 1;
} else {
limiteD = medio - 1;
}
}
return -1;
}
}
Consola: