Ev Tutorial dê Lêgerîna Binaryê Rave bike & Lêgerîna Binary a Recursive di Java de ligel Algorîtmaya wê, Bicîhkirin, û Koda Lêgerîna Binary Java Nimûne:
Lêgerîna binaryê di Java de teknîkek e ku ji bo lêgerîna nirxek an mifteyek armanckirî di berhevokê de tê bikar anîn. Ew teknîkek e ku teknîka "parçe bike û bi ser bikeve" ji bo lêgerîna mifteyê bikar tîne.
Koleksiyona ku lêgerîna Binary tê de tê sepandin ji bo lêgerîna mifteyê divê li gorî rêza hilkişînê were rêz kirin.
Bi gelemperî, piraniya zimanên bernamesaziyê piştgirî didin Lêgerîna Linear, Lêgerîna Binary, û Teknolojiyên Hashing ku ji bo lêgerîna daneyên di berhevokê de têne bikar anîn. Em ê di dersên xwe yên paşerojê de hînî haşkirinê bibin.
Lêgerîna Binary Li Javayê
Lêgerîna xêzik teknîkek bingehîn e. Di vê teknîkê de, rêzik li pey hev tê gerandin û her hêmanek bi kilîtê re tê berhev kirin heya ku kilîtek were dîtin an jî dawiya rêzê bigihîje.
Lêgerîna xêzkirî di sepanên pratîkî de kêm kêm tê bikar anîn. Lêgerîna binaryê teknîka ku herî zêde tê bikaranîn e ji ber ku ew ji lêgerîna xêzikî pir bileztir e.
Java sê awayan peyda dike ku lêgerînek binaryê pêk bîne:
- Bikaranîna nêzîkatiya dûbarekirî
- Bikaranîna nêzîkatiya paşverû
- Bikaranîna rêbaza Arrays.binarySearch ().
Di vê hînkirinê de, em ê van hemîyan bicîh bikin û nîqaş bikin 3 rêbaz.
Algorîtmaya Ji bo Lêgerîna Binary Di Java de
Di binary derêbaza lêgerînê, berhevok çend caran di nîvî de tê dabeş kirin û hêmana sereke di nîvê çepê an rastê yê berhevokê de li gorî ka kilît ji hêmana navîn ya berhevokê piçûktir an mezintir e tê lêgerîn.
Algorîtmaya Lêgerîna Binary a hêsan wiha ye:
- Elementa navîn a berhevokê hesab bike.
- Tiştên sereke bi hêmana navîn re bidin ber hev.
- 8>Heke mifteya = hêmana navîn, wê demê em ji bo mifteya ku hatiye dîtin, cihê nîşaneya navîn vedigerînin.
- Eger key > hêmana navîn, wê hingê kilît di nîvê rastê yê berhevokê de ye. Bi vî awayî gavên 1 heta 3 li ser nîvê jêrîn (rast) ya berhevokê dubare bikin.
- Bişkojka din hêmana navîn, wê hingê kilît di nîvê jorîn a berhevokê de ye. Ji ber vê yekê hûn hewce ne ku lêgerîna binaryê di nîvê jorîn de dubare bikin.
Wek ku hûn ji gavên jorîn jî dibînin, di lêgerîna Binary de, nîvê hêmanên di berhevokê de tenê piştî berhevdana yekem têne paşguh kirin.
Bala xwe bidinê ku heman rêza gavan ji bo lêgerîna binaryê ya dubare û her weha vegerî ye.
Werin em algorîtmaya lêgerîna binaryê bi mînakekê nîşan bidin.
Mînak , rêzika rêzkirî ya jêrîn ji 10 hêmanan bigire.
Werin em cîhê navîn yê rêzê hesab bikin.
Nive = 0+9/2 = 4
#1) Key = 21
Pêşî, em ê nirxa mifteyê bi hêmana [navîn] û em dibînin ku nirxa hêmanê li ser emid = 21.
Bi vî awayî em wê key = [mid] bibînin. Ji ber vê yekê mifteyê di rêza 4-an de tê dîtin.
#2) Key = 25
Em pêşî mifteyê didin ber hev. nirxa navîn. Wekî (21 & lt; 25), em ê rasterast li mifteya nîvê jorîn a rêzê bigerin.
Niha dîsa em ê nîvê nîvê jorîn bibînin array.
Navenda = 4+9/2 = 6
Nirxa li cîh [mid] = 25
Niha em hêmana sereke bi hêmana navîn re bidin ber hev. Ji ber vê yekê (25 == 25), ji ber vê yekê me mifteyê li cîhê [mid] = 6 dît.
Bi vî rengî em çend caran rêzê dabeş dikin û bi berhevkirina hêmana sereke bi navîn re, em biryar didin ku di kîjan nîvê de lêgerîna mifteyê. Lêgerîna binary di warê dem û rastbûnê de bikêrtir e û di heman demê de pir bileztir e.
Pêkanîna Lêgerîna Binary Java
Bi karanîna algorîtmaya jorîn, werin em bernameyek lêgerîna Binary di Java de bi karanîna bernameyê bicîh bikin. nêzîkatiya dubarekirî. Di vê bernameyê de, em arrayek mînak digirin û li ser vê rêzê lêgerîna binaryê dikin.
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("\nKey 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!"); } } }
Derketin:
Rêzika têketinê: [5, 10, 15, 20 , 25, 30, 35]
Kîlîda ku tê gerîn=20
Element li indexê tê dîtin: 3
Bernameya jorîn nêzîkatiyek dubare ya lêgerîna Binary nîşan dide. Di destpêkê de rêzek tê ragihandin, paşê mifteya ku lê were gerîn tê diyarkirin.
Piştî ku nîvê rêzê tê hesibandin, mift bi hêmana navîn re tê berhev kirin. Hingê li gor kakilît ji mifteyê kêmtir an mezintir e, mift bi rêzê li nîvê rêzê ya jêrîn an jorîn tê gerîn.
Lêgerîna Binary a Recursive Li Javayê
Hûn dikarin lêgerînek binary jî bikin. bikaranîna teknîka vegerê. Li vir, ji rêbaza lêgerîna binaryê rekursîv tê gotin heta ku kilît neyê dîtin an jî tevahiya lîsteyê biqede.
Bernameya ku lêgerînek binaryê vegerî pêk tîne li jêr tê dayîn:
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("\nThe 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("\nKey not found in given list!"); else System.out.println("\nKey is found at location: "+result + " in the list"); } }
Derketin:
Lîsteya têketinê: [1, 11, 21, 31, 41, 51, 61, 71, 81, 91
Mifteya ku lê were gerîn :
Peyda li cîh: 3 di lîsteyê de tê dîtin
Bi bikaranîna rêbaza Arrays.binarySearch () re.
Çîna Arrays di Java de rêbazek 'binarySearch ()' peyda dike ku li ser Array hatî dayîn lêgerîna binaryê pêk tîne. Ev rêbaz rêzik û mifteya ku lê tê gerîn wekî arguman digire û pozîsyona mifteyê di rêzê de vedigerîne. Ger kilîtek neyê dîtin, wê hingê rêbaz -1 vedigere.
Mînaka jêrîn rêbaza Arrays.binarySearch () pêk tîne.
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("\nThe 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("\nKey is not found in the array!"); else System.out.println("\nKey is found at index: "+result + " in the array."); } }
Derketin: > Mifteya li index: 4 di rêzê de tê dîtin.
Pirsên Pir Pir Pir Pir Pir Pirی Kirin
Q #1) Meriv çawa lêgerînek binary dinivîse ?
Bersiv: Lêgerîna binary bi gelemperî bi dabeşkirina rêzê li nîvan tê kirin. Ger mifteya ku tê gerîn ji hêmana navîn mezintir be,wê demê nîvê jorîn ê rêzê bi dabeşkirin û lêgerîna li jêr rêzê tê gerandin heta ku mifteyê were dîtin.
Herwiha, heke mift ji hêmana navîn kêmtir be, wê demê mifta li jêr tê gerîn. nîvê rêzê.
Q #2) Lêgerîna binaryê li ku tê bikaranîn?
Bersiv: Lêgerîna binary bi giranî ji bo lêgerînê tê bikar anîn Di sepanên nermalavê de daneya rêzkirî bi taybetî dema ku cîhê bîrê tevlihev û sînordar be.
Q #3) O-ya mezin a lêgerîna binary çi ye?
Bersiv : Tevliheviya dema lêgerîna binaryê O (logn) e ku n hejmara hêmanên di rêzê de ye. Tevliheviya cîhê lêgerîna binaryê O (1) ye.
Q #4) Lêgerîna binaryê vegerî ye?
Bersiv: Belê. Ji ber ku lêgerîna binary mînakek stratejiyek dabeş-û-bidest e û ew dikare bi karanîna vegerandinê were bicîh kirin. Em dikarin rêzê li nîvan dabeş bikin û bangî heman rêbazê bikin ku ji nû ve lêgerîna binaryê pêk bînin.
Q #5) Çima jê re lêgerîna binary tê gotin?
Bersiv: Algorîtmaya lêgerînê ya binary stratejiyek dabeş-û-biserde bikar tîne ku çend caran rêzê dike nîv an du beş. Ji ber vê yekê ew wekî lêgerîna binaryê tê binavkirin.
Encam
Lêgerîna binary teknîka lêgerînê ya ku pir caran di Java de tê bikar anîn e. Pêdivî ye ku ji bo lêgerînek binaryê were kirin ew e ku daneyan li gorî rêza hilkişînê bêne rêz kirin.
Lêgerînek binar dikare bibean bi karanîna nêzîkatiyek dubare an vegerî tê sepandin. Di Java de çîna Arrays jî rêbaza 'binarySearch' peyda dike ku li ser Arrayek lêgerînek binaryê pêk tîne.
Di dersên xwe yên paşerojê de, em ê di Java-yê de Teknîkên Rêzkirinê yên cihêreng bikolin. > 23>