binary search algorithm java implementation examples
Aquest tutorial explicarà la cerca binària i la cerca binària recursiva a Java juntament amb els seus algorismes, implementació i exemples de codi de cerca binari de Java:
Una cerca binària a Java és una tècnica que s’utilitza per buscar un valor o una clau orientats a una col·lecció. És una tècnica que utilitza la tècnica de 'dividir i conquerir' per buscar una clau.
La col·lecció en què s’ha d’aplicar la cerca binària per cercar una clau s’ha d’ordenar en ordre ascendent.
Normalment, la majoria dels llenguatges de programació admeten tècniques de cerca lineal, de cerca binària i de hash que s’utilitzen per cercar dades a la col·lecció. Aprendrem hash en els nostres tutorials posteriors.
=> Visiteu aquí per aprendre Java des de zero.
Què aprendreu:
Cerca binària a Java
La cerca lineal és una tècnica bàsica. En aquesta tècnica, la matriu es recorre de manera seqüencial i es compara cada element amb la clau fins que es troba la clau o s'arriba al final de la matriu.
La cerca lineal s'utilitza poques vegades en aplicacions pràctiques. La cerca binària és la tècnica més utilitzada, ja que és molt més ràpida que una cerca lineal.
Java proporciona tres maneres de realitzar una cerca binària:
necessito un proveïdor de correu electrònic nou
- Utilitzant l’enfocament iteratiu
- Utilitzant un enfocament recursiu
- Utilitzant el mètode Arrays.binarySearch ().
En aquest tutorial, implementarem i discutirem tots aquests 3 mètodes.
Algorisme per a la cerca binària a Java
En el mètode de cerca binària, la col·lecció es divideix repetidament en la meitat i es busca l'element clau a la meitat esquerra o dreta de la col·lecció en funció de si la clau és inferior o superior a l'element mitjà de la col·lecció.
Un simple algoritme de cerca binària és el següent:
- Calculeu l'element mitjà de la col·lecció.
- Compareu els elements clau amb l’element mitjà.
- Si key = element central, retornem la posició índex mitja de la clau trobada.
- En cas contrari Si la tecla> element mitjà, la clau es troba a la meitat dreta de la col·lecció. Així, repetiu els passos 1 a 3 a la meitat inferior (dreta) de la col·lecció.
- Una altra clau
Com podeu veure als passos anteriors, a la cerca binària, la meitat dels elements de la col·lecció s’ignoren just després de la primera comparació.
Tingueu en compte que la mateixa seqüència de passos val per a la cerca binària iterativa i recursiva.
Il·lustrem l'algorisme de cerca binària amb un exemple.
Per exemple, agafeu la següent matriu ordenada de 10 elements.
Calculem la ubicació mitjana de la matriu.
Mitjà = 0 + 9/2 = 4
# 1) Clau = 21
En primer lloc, compararem el valor clau amb l'element [mid] i trobarem que el valor de l'element a mid = 21.
Així trobem aquesta clau = [mid]. Per tant, la clau es troba a la posició 4 de la matriu.
# 2) Clau = 25
quin és el millor programari de reconeixement de veu
Primer comparem el valor clau amb la mitjana. Com (21<25), we will directly search for the key in the upper half of the array.
Ara de nou trobarem la meitat de la meitat superior de la matriu.
Mitjà = 4 + 9/2 = 6
El valor a la ubicació [mitjan] = 25
Ara comparem l’element clau amb l’element mitjà. Per tant, (25 == 25), per tant, hem trobat la clau a la ubicació [mid] = 6.
Així, dividim repetidament la matriu i, comparant l'element clau amb el mitjà, decidim en quina meitat cercarem la clau. La cerca binària és més eficient quant a temps i correcció i també és molt més ràpida.
Implementació de cerca binària Java
Mitjançant l’algoritme anterior, implementem un programa de cerca binària a Java mitjançant l’enfocament iteratiu. En aquest programa, prenem un exemple de matriu i realitzem cerques binàries en aquesta matriu.
import java.util.*; class Main{ public static void main(String args[]){ int numArray[] = {5,10,15,20,25,30,35}; System.out.println('The input array: ' + Arrays.toString(numArray)); //key to be searched int key = 20; System.out.println('
Key to be searched=' + key); //set first to first index int first = 0; //set last to last elements in array int last=numArray.length-1; //calculate mid of the array int mid = (first + last)/2; //while first and last do not overlap while( first <= last ){ //if the mid < key, then key to be searched is in the first half of array if ( numArray[mid] last ){ System.out.println('Element is not found!'); } } }
Sortida:
La matriu d'entrada: [5, 10, 15, 20, 25, 30, 35]
Clau a cercar = 20
L’element es troba a l’índex: 3
El programa anterior mostra un enfocament iteratiu de la cerca binària. Inicialment, es declara una matriu i es defineix una clau a cercar.
Després de calcular la meitat de la matriu, es compara la clau amb l'element mitjà. Aleshores, segons si la tecla sigui inferior o superior a la clau, es busca la clau a la meitat inferior o superior de la matriu, respectivament.
Cerca binària recursiva a Java
També podeu fer una cerca binària mitjançant la tècnica de recursivitat. Aquí, el mètode de cerca binària s’anomena recursivament fins que es troba la clau o s’esgota tota la llista.
A continuació es mostra el programa que implementa una cerca binària recursiva:
import java.util.*; class Main{ //recursive method for binary search public static int binary_Search(int intArray[], int low, int high, int key){ //if array is in order then perform binary search on the array if (high>=low){ //calculate mid int mid = low + (high - low)/2; //if key =intArray[mid] return mid if (intArray[mid] == key){ return mid; } //if intArray[mid] > key then key is in left half of array if (intArray[mid] > key){ return binary_Search(intArray, low, mid-1, key);//recursively search for key }else //key is in right half of the array { return binary_Search(intArray, mid+1, high, key);//recursively search for key } } return -1; } public static void main(String args[]){ //define array and key int intArray[] = {1,11,21,31,41,51,61,71,81,91}; System.out.println('Input List: ' + Arrays.toString(intArray)); int key = 31; System.out.println('
The key to be searched:' + key); int high=intArray.length-1; //call binary search method int result = binary_Search(intArray,0,high,key); //print the result if (result == -1) System.out.println('
Key not found in given list!'); else System.out.println('
Key is found at location: '+result + ' in the list'); } }
Sortida:
com utilitzar un fitxer torrentat
Llista d'entrada: [1, 11, 21, 31, 41, 51, 61, 71, 81, 91
La clau que cal cercar:
La clau es troba a la ubicació: 3 de la llista
Utilitzant el mètode Arrays.binarySearch ().
La classe Arrays de Java proporciona un mètode 'binarySearch ()' que realitza la cerca binària a la matriu donada. Aquest mètode pren la matriu i la clau a cercar com a arguments i retorna la posició de la clau a la matriu. Si no es troba la clau, el mètode retorna -1.
L'exemple següent implementa el mètode Arrays.binarySearch ().
import java.util.Arrays; class Main{ public static void main(String args[]){ //define an array int intArray[] = {10,20,30,40,50,60,70,80,90}; System.out.println('The input Array : ' + Arrays.toString(intArray)); //define the key to be searched int key = 50; System.out.println('
The key to be searched:' + key); //call binarySearch method on the given array with key to be searched int result = Arrays.binarySearch(intArray,key); //print the return result if (result <0) System.out.println('
Key is not found in the array!'); else System.out.println('
Key is found at index: '+result + ' in the array.'); } }
Sortida:
Matriu d’entrada: [10, 20, 30, 40, 50, 60, 70, 80, 90]
La clau a buscar: 50
La clau es troba a l’índex: 4 de la matriu.
Preguntes freqüents
P # 1) Com s'escriu una cerca binària?
Resposta: La cerca binària es realitza generalment dividint la matriu en meitats. Si la clau que cal cercar és superior a l'element mitjà, es cercarà la meitat superior de la matriu dividint i cercant la subarraia fins que es trobi la clau.
De la mateixa manera, si la clau és inferior a l'element mitjà, es busca la clau a la meitat inferior de la matriu.
P # 2) On s'utilitza la cerca binària?
Resposta: La cerca binària s'utilitza principalment per cercar dades ordenades en aplicacions de programari, especialment quan l'espai de memòria és compacte i limitat.
P # 3) Quina és la gran O de la cerca binària?
Resposta: La complexitat temporal de la cerca binària és O (logn) on n és el nombre d'elements de la matriu. La complexitat espacial de la cerca binària és O (1).
Q # 4) La cerca binària és recursiva?
Resposta: Sí. Atès que la cerca binària és un exemple d’una estratègia de divisió i conquesta i es pot implementar mitjançant recursivitat. Podem dividir la matriu en meitats i trucar al mateix mètode per realitzar la cerca binària una i altra vegada.
P # 5) Per què s'anomena cerca binària?
Resposta: L’algorisme de cerca binària utilitza una estratègia de divisió i conquesta que talla repetidament la matriu en meitats o dues parts. Així es denomina cerca binària.
Conclusió
La cerca binària és la tècnica de cerca més utilitzada a Java. El requisit per fer una cerca binària és que les dades s’ordenin en ordre ascendent.
Una cerca binària es pot implementar mitjançant un enfocament iteratiu o recursiu. La classe Arrays a Java també proporciona el mètode 'binarySearch' que realitza una cerca binària en una matriu.
En els nostres tutorials posteriors, explorarem diverses tècniques d’ordenació a Java.
=> Mireu aquí les sèries de formació Java senzilles.
Lectura recomanada
- Selecció d'ordenació a Java: algoritme d'ordenació de selecció i exemples
- Classificació per inserció a Java: algorisme i exemples d'ordenació per inserció
- Arbre de cerca binària C ++: implementació i operacions de BST amb exemples
- Interfície Java i tutoria de classes abstractes amb exemples
- Tutorial JAVA per a principiants: més de 100 tutorials pràctics de vídeo Java
- Bubble Sort In Java - Algoritmes d'ordenació de Java i exemples de codi
- Tutorial de cadenes de Java | Mètodes de cadena Java amb exemples
- Què és Java Vector | Tutorial de Java Vector Class amb exemples