binary search algorithm java implementation examples
Tento výukový program vysvětlí binární vyhledávání a rekurzivní binární vyhledávání v jazyce Java spolu s jeho algoritmy, implementací a příklady Java Binary Seach Code:
Binární vyhledávání v Javě je technika, která se používá k hledání cílové hodnoty nebo klíče v kolekci. Jedná se o techniku, která k hledání klíče používá techniku „rozděl a panuj“.
Kolekce, ve které se má binární vyhledávání použít k hledání klíče, je třeba seřadit vzestupně.
Většina programovacích jazyků obvykle podporuje techniky lineárního vyhledávání, binárního vyhledávání a hashování, které se používají k vyhledávání dat v kolekci. Naučíme se hashování v našich dalších tutoriálech.
=> Navštivte zde a dozvíte se Java od začátku.
Co se naučíte:
Binární vyhledávání v Javě
Lineární vyhledávání je základní technikou. V této technice je pole procházeno postupně a každý prvek je porovnáván s klíčem, dokud není nalezen klíč nebo je dosaženo konce pole.
Lineární vyhledávání se v praktických aplikacích používá jen zřídka. Binární vyhledávání je nejčastěji používanou technikou, protože je mnohem rychlejší než lineární vyhledávání.
Java poskytuje tři způsoby, jak provést binární vyhledávání:
java j2ee rozhovor otázky a odpovědi
- Použití iteračního přístupu
- Použití rekurzivního přístupu
- Pomocí metody Arrays.binarySearch ().
V tomto tutoriálu budeme implementovat a diskutovat o všech těchto 3 metodách.
Algoritmus pro binární vyhledávání v Javě
V metodě binárního vyhledávání je kolekce opakovaně rozdělena na polovinu a klíčový prvek je prohledáván v levé nebo pravé polovině kolekce v závislosti na tom, zda je klíč menší než nebo větší než střední prvek kolekce.
Jednoduchý binární vyhledávací algoritmus je následující:
- Vypočítejte střední prvek kolekce.
- Porovnejte klíčové položky s prostředním prvkem.
- Pokud key = prostřední prvek, pak vrátíme polohu středního indexu pro nalezený klíč.
- Jinak If key> mid element, pak klíč leží v pravé polovině kolekce. Opakujte tedy kroky 1 až 3 ve spodní (pravé) polovině kolekce.
- Jinak klíč
Jak můžete vidět z výše uvedených kroků, v binárním vyhledávání je polovina prvků v kolekci ignorována hned po prvním porovnání.
Všimněte si, že stejná posloupnost kroků platí pro iterativní i rekurzivní binární vyhledávání.
Na příkladu si ilustrujeme algoritmus binárního vyhledávání.
Například, vezměte následující seřazené pole 10 prvků.
Pojďme vypočítat střední umístění pole.
Polovina = 0 + 9/2 = 4
# 1) Klíč = 21
Nejprve porovnáme klíčovou hodnotu s prvkem (mid) a zjistíme, že hodnota prvku v polovině = 21.
Zjistili jsme tedy, že klíč = (uprostřed). Klíč se tedy nachází na pozici 4 v poli.
# 2) Klíč = 25
Nejprve porovnáme klíčovou hodnotu se střední hodnotou. Jako (21<25), we will directly search for the key in the upper half of the array.
Nyní znovu najdeme střed pro horní polovinu pole.
Polovina = 4 + 9/2 = 6
Hodnota v umístění (mid) = 25
Nyní porovnáme klíčový prvek se středním prvkem. Takže (25 == 25), proto jsme našli klíč na místě (mid) = 6.
Pole tedy opakovaně rozdělíme a porovnáním klíčového prvku se středem se rozhodneme, ve které polovině klíč hledat. Binární vyhledávání je efektivnější z hlediska času a správnosti a je také mnohem rychlejší.
Implementace binárního vyhledávání Java
Pomocí výše uvedeného algoritmu implementujme binární vyhledávací program v Javě pomocí iterativního přístupu. V tomto programu si vezmeme příklad pole a provedeme binární vyhledávání na tomto poli.
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!'); } } }
Výstup:
Vstupní pole: (5, 10, 15, 20, 25, 30, 35)
Klíč, který má být prohledán = 20
Prvek se nachází v indexu: 3
Výše uvedený program ukazuje iterativní přístup binárního vyhledávání. Zpočátku je deklarováno pole, pak je definován klíč, který má být prohledán.
Po výpočtu středu pole je klíč porovnán s prostředním prvkem. Pak v závislosti na tom, zda je klíč menší než nebo větší než klíč, se klíč prohledává v dolní nebo horní polovině pole.
převodník z youtube na mp3 s úpravami
Rekurzivní binární vyhledávání v Javě
Můžete také provést binární vyhledávání pomocí techniky rekurze. Zde je metoda binárního vyhledávání volána rekurzivně, dokud není nalezen klíč nebo není vyčerpán celý seznam.
Program, který implementuje rekurzivní binární vyhledávání, je uveden níže:
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'); } }
Výstup:
Seznam vstupů: (1, 11, 21, 31, 41, 51, 61, 71, 81, 91
Klíč, který se má vyhledat:
Klíč se nachází v seznamu na místě 3
Pomocí metody Arrays.binarySearch ().
Třída Arrays v Javě poskytuje metodu „binarySearch ()“, která provádí binární vyhledávání na daném poli. Tato metoda převezme pole a klíč, který má být prohledán jako argumenty, a vrátí pozici klíče v poli. Pokud klíč nebyl nalezen, vrátí metoda hodnotu -1.
Níže uvedený příklad implementuje metodu 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.'); } }
Výstup:
Vstupní pole: (10, 20, 30, 40, 50, 60, 70, 80, 90)
Klíč, který má být prohledán: 50
Klíč se nachází v indexu 4 v poli.
top 10 personálních agentur na světě
Často kladené otázky
Otázka č. 1) Jak napíšete binární vyhledávání?
Odpovědět: Binární vyhledávání se obvykle provádí rozdělením pole na poloviny. Pokud je klíč, který má být prohledán, větší než prostřední prvek, pak se prohledá horní polovina pole dalším rozdělením a prohledáním dílčího pole, dokud není klíč nalezen.
Podobně, pokud je klíč menší než střední prvek, pak se klíč prohledá ve spodní polovině pole.
Otázka 2) Kde se používá binární vyhledávání?
Odpovědět: Binární vyhledávání se používá hlavně k hledání seřazených dat v softwarových aplikacích, zejména když je paměťový prostor kompaktní a omezený.
Otázka č. 3) Co je velké O binárního vyhledávání?
Odpovědět: Časová složitost binárního vyhledávání je O (logn), kde n je počet prvků v poli. Složitost prostoru binárního vyhledávání je O (1).
Otázka č. 4) Je binární vyhledávání rekurzivní?
Odpovědět: Ano. Vzhledem k tomu, že binární vyhledávání je příkladem strategie rozděl a panuj a lze ji implementovat pomocí rekurze. Můžeme rozdělit pole na poloviny a zavolat stejnou metodu k provádění binárního vyhledávání znovu a znovu.
Otázka č. 5) Proč se tomu říká binární vyhledávání?
Odpovědět: Algoritmus binárního vyhledávání používá strategii rozděl a panuj, která opakovaně rozděluje pole na poloviny nebo dvě části. Proto je pojmenován jako binární vyhledávání.
Závěr
Binární vyhledávání je v Javě často používanou technikou vyhledávání. Požadavek na provedení binárního vyhledávání je ten, že data by měla být řazena vzestupně.
Binární vyhledávání lze implementovat pomocí iterativního nebo rekurzivního přístupu. Třída Arrays v Javě také poskytuje metodu „binarySearch“, která provádí binární vyhledávání na poli.
V našich dalších cvičeních prozkoumáme různé techniky řazení v Javě.
=> Dávejte pozor na jednoduchou sérii školení Java zde.
Doporučené čtení
- Výběr řazení v Javě - Algoritmus řazení a příklady výběru
- Insertion Sort In Java - Alserith Sort Algorithm & examples
- Binární vyhledávací strom C ++: Implementace a operace BST s příklady
- Výukový program pro rozhraní Java a abstrakt třídy s příklady
- Výukový program JAVA pro začátečníky: 100+ praktických výukových programů Java Video
- Bubble Sort In Java - Algoritmy třídění Java a příklady kódu
- Výukový program Java String | Metody řetězců Java s příklady
- Co je Java Vector | Výukový program Java Vector Class s příklady