Kas yra dvejetainė paieška „Java“? Kaip tai įgyvendinti?



Dvejetainė paieška „Java“ yra paieškos algoritmas, kuris suranda tikslinės vertės padėtį surūšiuotame masyve. Šiame straipsnyje aš jums pasakysiu, kaip tai įgyvendinti naudojant pavyzdį.

Paieškos ir rūšiavimo algoritmai yra populiarūs algoritmai bet kuria programavimo kalba. Jie yra pagrindas suprasti programavimo pagrindus. Vienas iš tokių populiarių paieškos algoritmų yra „Dvejetainė paieška“ . Šiame straipsnyje aš jums pasakysiu apie jo įgyvendinimą.

Šiame straipsnyje aptariamos šios temos:





Pradėkime!

Kas yra dvejetainė paieška?

Dvejetainė paieška yra paieškos algoritmas, kuris suranda tikslinės vertės padėtį rūšiuojant masyvas . Dvejetainė paieška tikslinę vertę lygina su viduriniu masyvo elementu. Taiveikia tik surūšiuotą elementų rinkinį. Norėdami naudoti dvejetainę paiešką kolekcijoje, pirmiausia reikia surūšiuoti.



Dvejetainės paieškos programa „Java“ - dvejetainė paieška „Java“ - „Edureka“Kai naudojamas atliekant surūšiuoto rinkinio operacijas, kartojimų skaičių visada galima sumažinti pagal ieškomą vertę. Galite pamatyti aukščiau pateiktoje momentinės nuotraukos paieškoje vidurio elementas . Dvejetainės paieškos analogija yra naudoti informaciją, kad masyvas yra surūšiuotas, ir sumažinti laiko sudėtingumą O (log n) .

Dvejetainės paieškos algoritmo įgyvendinimas

Pažvelkime į žemiau esantį pseudo kodą, kad jį geriau suprastume.

Procedūra binary_search A & larr rūšiuojamas masyvas n & larr masyvo dydis x & larr ieškomos vertės

Paaiškinimas:



1 žingsnis: Pirmiausia palyginkite x su viduriniu elementu.

2 žingsnis: Jei x sutampa su viduriniu elementu, turite grąžinti vidurinį indeksą.

3 žingsnis: Kitu atveju, jei x yra didesnis nei vidurinis elementas, tada x gali gulėti tik dešiniojoje pusėje esančioje masyvo pusėje po vidurio elemento. Taigi jūs kartojate dešinę pusę.

4 žingsnis: Kitu atveju, jei (x yra mažesnis), tada pasikartoja kairiajai pusei.

Štai kaip jums reikia ieškoti elemento pateiktame masyve.

kaip deklaruoti dinaminį masyvą Java

Dabar pažiūrėkime, kaip įdiegti dvejetainį paieškos algoritmą rekursiškai. Žemiau programa rodo tą patį.

Rekursinė dvejetainė paieška

public class BinarySearch {// Rekursyviosios dvejetainės paieškos Java įgyvendinimas // Pateikia x indeksą, jei jis yra arr [l..h], dar grąžina -1 int binarySearch (int a [], int l, int h, int x) {if (h> = l) {int mid = l + (h - l) / 2 // Jei elementas yra pačiame viduryje, jei (a [mid] == x) grįžta viduryje // If elementas yra mažesnis nei vidurys, tada jis gali būti rodomas tik kairiajame poskyryje, jei (a [mid]> x) grąžina binarinę paiešką (arr, l, vidurys - 1, x) // Kita elementas gali būti tik dešiniajame poskyryje grįžta binarinė paieška (arr, mid + 1, h, x)} // Čia pasiekiame, kai elemento nėra masyvo grįžime -1} public static void main (String args []) {BinarySearch ob = new BinarySearch () int a [] = {20, 30, 40, 10, 50} int n = a. Ilgis int x = 40 int res = ob.binarinė paieška (a, 0, n - 1, x) if (res == -1) System.out .println ('Elemento nėra') else System.out.println ('Elementas rastas rodyklėje' + res)}}

Vykdant minėtą programą, jis suras elementą, esantį tam tikrame rodyklėje

Elementas rastas 2 rodyklėje

Taigi, tai atvedė mus į dvejetainės paieškos pabaigą „Java“ straipsnis. Tikiuosi, kad jums tai buvo naudinga ir padėjo suprasti .

Patikrinkite sukūrė patikima internetinė mokymosi įmonė „Edureka“, turinti daugiau nei 250 000 patenkintų besimokančiųjų tinklą visame pasaulyje. Mes esame čia, kad padėtume jums kiekviename jūsų kelionės žingsnyje, kad taptumėte šalia šių „Java“ interviu klausimų. Mes parengėme mokymo programą, skirtą studentams ir specialistams, norintiems tapti „Java“ kūrėjais. Kursas sukurtas tam, kad galėtumėte pradėti žvalgytis į „Java“ programavimą ir išmokyti pagrindinių bei pažangių „Java“ koncepcijų kartu su įvairiomis „Java“ sistemomis, tokiomis kaip „Hibernate & Spring“.

Jei susiduriate su sunkumais diegdami dvejetainę paiešką sistemoje , paminėkite tai žemiau esančiame komentarų skyriuje ir mes su jumis susisieksime anksčiausiai.