English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En este ejemplo, aprenderemos a implementar el algoritmo de búsqueda binaria en Java.
Antes de aprender la implementación de búsqueda binaria en Java, asegúrese de que comprenda el principio de funcionamiento del algoritmo de búsqueda binaria.
import java.util.Scanner; //Búsqueda binaria en Java class Main { int binarySearch(int array[], int element, int low, int high) { //Repetir este proceso hasta que los punteros alto (high) y bajo (low) sean iguales while (low <= high) { //Obtener el índice del elemento mid int mid = low + (high - low) / 2; //Si el elemento a buscar es el elemento mid if (array[mid] == element) return mid; //Si el elemento es menor que el elemento mid //Buscar solo en la izquierda de mid if (array[mid] < element) low = mid + 1; //Si el elemento es mayor que el elemento mid //Buscar solo en la derecha de mid else high = mid - 1; } return -1; } public static void main(String args[]) { //Crear un objeto de la clase Main Main obj = new Main(); //Crear un array ordenado int[] array = { 3, 4, 5, 6, 7, 8, 9 }; int n = array.length; //Obtener la entrada del usuario, el elemento a buscar Scanner input = new Scanner(System.in); System.out.println("Ingrese el elemento que desea buscar:"); //Elemento a buscar int element = input.nextInt(); input.close(); //Llamar al método de búsqueda binaria //Passar parámetros: array, elemento, índice del primer y último elemento int result = obj.binarySearch(array, element, 0, n - 1); if (result == -1) System.out.println("No encontrado"); else System.out.println("Encontrar el elemento, en el índice " + result); } }
Salida1
Ingrese el elemento que desea buscar: 6 Encontrar el elemento, en el índice 3
Aquí, hemos utilizadoClase de escaneo de JavaObtener la entrada del usuario. Según la entrada del usuario, utilizamos la búsqueda binaria para verificar si el elemento existe en el array.
我们还可以使用递归调用来执行相同的任务。
int binarySearch(int array[], int element, int low, int high) { if (high >= low) { int mid = low + (high - low) / 2; // 检查 mid 元素是否为搜索的元素 if (array[mid] == element) return mid; //搜索 mid 的左半部分 if (array[mid] > element) return binarySearch(array, element, low, mid - 1); //搜索 mid 的右半部分 return binarySearch(array, element, mid + 1, high); } return -1; }
Aquí,该方法binarySearch()将调用自身,直到找到该元素或if条件失败为止。