binary search algorithm java implementation examples
Овај водич ће објаснити бинарно претраживање и рекурзивно бинарно претраживање на Јави заједно са примерима алгоритма, имплементације и Јава бинарног кода претраживања:
Бинарно претраживање на Јави је техника која се користи за тражење циљане вредности или кључа у колекцији. То је техника која користи технику „завади и освоји“ за тражење кључа.
Колекција на којој ће се применити бинарна претрага за тражење кључа мора се сортирати у растућем редоследу.
Обично већина програмских језика подржава технике линеарне претраге, бинарне претраге и хеширања које се користе за тражење података у колекцији. Хеширање ћемо научити у нашим следећим водичима.
=> Посетите овде да бисте научили Јаву из нуле.
Шта ћете научити:
Бинарно претраживање на Јави
Линеарно претраживање је основна техника. У овој техници низ се прелази секвенцијално и сваки елемент се упоређује са кључем док се кључ не пронађе или док се не постигне крај низа.
Линеарно претраживање се ретко користи у практичним применама. Бинарна претрага је најчешће коришћена техника јер је много бржа од линеарне претраге.
Јава пружа три начина за бинарно претраживање:
како играти мкв на рачунару
- Користећи итеративни приступ
- Користећи рекурзивни приступ
- Употребом методе Арраис.бинариСеарцх ().
У овом упутству ћемо применити и разговарати о све ове 3 методе.
Алгоритам за бинарно претраживање на Јави
У бинарном начину претраживања, колекција се више пута дели на пола и кључни елемент се претражује у левој или десној половини колекције, у зависности од тога да ли је кључ мањи или већи од средњег елемента колекције.
Једноставан алгоритам бинарног претраживања је следећи:
- Израчунајте средњи елемент колекције.
- Упоредите кључне ставке са средњим елементом.
- Ако је кључ = средњи елемент, тада враћамо положај средњег индекса за пронађени кључ.
- Иначе Ако је кључ> средњи елемент, тада је кључ у десној половини колекције. Стога поновите кораке 1 до 3 на доњој (десној) половини колекције.
- Елсе кеи
Као што видите из горњих корака, у бинарном претраживању половина елемената у колекцији се игнорише одмах након првог поређења.
Имајте на уму да исти редослед корака важи и за итеративно и за рекурзивно бинарно претраживање.
Илуструјмо бинарни алгоритам претраживања на примеру.
На пример, узмите следећи сортирани низ од 10 елемената.
Израчунајмо средњу локацију низа.
Средина = 0 + 9/2 = 4
етл испитивање питања и одговори за искусне
# 1) Кључ = 21
Прво ћемо упоредити кључну вредност са [мид] елементом и открићемо да је вредност елемента у средини = 21.
Тако налазимо да је кључ = [мид]. Отуда се кључ налази на положају 4 у низу.
# 2) Кључ = 25
Прво упоређујемо кључну вредност са средином. Као (21<25), we will directly search for the key in the upper half of the array.
Сада ћемо поново наћи средину за горњу половину низа.
Средина = 4 + 9/2 = 6
Вредност на локацији [мид] = 25
Сада упоређујемо кључни елемент са средњим елементом. Дакле (25 == 25), стога смо пронашли кључ на локацији [мид] = 6.
Тако ми више пута делимо низ и упоређујући кључни елемент са средином, одлучујемо у којој половини ћемо тражити кључ. Бинарна претрага је ефикаснија у погледу времена и исправности, а такође је и много бржа.
Имплементација бинарног претраживања Јава
Користећи горњи алгоритам, дозволимо да имплементирамо програм бинарног претраживања на Јави користећи итеративни приступ. У овом програму узимамо пример низа и вршимо бинарну претрагу овог низа.
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!'); } } }
Излаз:
Улазни низ: [5, 10, 15, 20, 25, 30, 35]
Кључ за претрагу = 20
Елемент се налази у индексу: 3
Горњи програм показује итеративни приступ бинарне претраге. У почетку се декларише низ, а затим се дефинише кључ за претрагу.
Након израчунавања средине низа, кључ се упоређује са средњим елементом. Затим, у зависности од тога да ли је кључ мањи или већи од кључа, кључ се тражи у доњој или горњој половини низа.
Рекурзивно бинарно претраживање на Јави
Такође можете извршити бинарно претраживање помоћу технике рекурзије. Овде се бинарни метод претраживања позива рекурзивно док се кључ не пронађе или док се не исцрпи цела листа.
Програм који примењује рекурзивну бинарну претрагу дат је у наставку:
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'); } }
Излаз:
Листа уноса: [1, 11, 21, 31, 41, 51, 61, 71, 81, 91
Кључ за претрагу:
Кључ се налази на локацији: 3 на листи
Употребом методе Арраис.бинариСеарцх ().
Класа Арраис у Јави пружа методу ‘бинариСеарцх ()’ која врши бинарно претраживање датог низа. Овом методом се низ и кључ претражују као аргументи и враћа положај кључа у низу. Ако кључ није пронађен, метода враћа -1.
Пример у наставку примењује методу Арраис.бинариСеарцх ().
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.'); } }
Излаз:
Улазни низ: [10, 20, 30, 40, 50, 60, 70, 80, 90]
Кључ за претрагу: 50
Кључ се налази у индексу: 4 у низу.
Често постављана питања
П # 1) Како се пише бинарна претрага?
Одговор: Бинарна претрага се обично врши дељењем низа на половине. Ако је кључ који се тражи већи од средњег елемента, тада се тражи горња половина низа даљим дељењем и претраживањем под-низа док се кључ не пронађе.
Слично томе, ако је кључ мањи од средњег елемента, тада се кључ претражује у доњој половини низа.
П # 2) Где се користи бинарна претрага?
Одговор: Бинарна претрага се углавном користи за претрагу сортираних података у софтверским апликацијама, посебно када је меморијски простор компактан и ограничен.
П # 3) Шта је велико О бинарне претраге?
агилна питања у интервјуу и одговори за искусне
Одговор: Временска сложеност бинарног претраживања је О (логн) где је н број елемената у низу. Сложеност простора бинарне претраге је О (1).
П # 4) Да ли је бинарно претраживање рекурзивно?
Одговор: Да. Пошто је бинарна претрага пример стратегије подели и освоји и може се применити помоћу рекурзије. Можемо поделити низ на половине и позвати исти метод да бисмо изнова и изнова извршили бинарно претраживање.
П # 5) Зашто се то назива бинарном претрагом?
Одговор: Бинарни алгоритам претраживања користи стратегију подели и освоји која непрекидно пресеца низ на половине или два дела. Стога се назива бинарна претрага.
Закључак
Бинарна претрага је често коришћена техника претраживања на Јави. Захтев за бинарним претраживањем је да се подаци сортирају у растућем редоследу.
Бинарна претрага може се имплементирати или помоћу итеративног или рекурзивног приступа. Класа низова у Јави такође пружа методу „бинариСеарцх“ која врши бинарно претраживање на низу.
У нашим следећим водичима истражићемо разне технике сортирања на Јави.
=> Овде припазите на једноставну серију Јава тренинга.
Препоручено читање
- Сортирање избора у Јави - Алгоритам сортирања избора и примери
- Сортирање уметања у Јави - Алгоритам сортирања уметања и примери
- Бинарно стабло претраживања Ц ++: Примена БСТ-а и операције са примерима
- Јава интерфејс и лекција са апстрактним часовима са примерима
- Водич за ЈАВА за почетнике: 100+ практичних Јава видео водича
- Сортирање облачића у Јави - алгоритми за сортирање Јава и примери примера
- Јава Стринг Водич | Јава стринг методе са примерима
- Шта је Јава Вецтор | Водич за Јава векторску класу са примерима