Populiariausios „Java“ duomenų struktūros ir algoritmai, kuriuos turite žinoti

Šis tinklaraštis apie „Java“ duomenų struktūras ir algoritmus padės jums suprasti visas pagrindines „Java“ duomenų struktūras ir algoritmus.

Jei turėčiau pasirinkti svarbiausią programinės įrangos kūrimo temą, tai būtų duomenų struktūros ir algoritmai. Galite galvoti apie tai kaip apie pagrindinę priemonę, prieinamą kiekvienam kompiuterio programuotojui. Programuodami mes naudojame duomenų struktūros saugoti ir tvarkyti duomenis ir algoritmai manipuliuoti tų struktūrų duomenimis. Šiame straipsnyje pateikiama išsami visų įprastų duomenų struktūrų ir algoritmų apžvalga kad skaitytojai galėtų gerai pasirūpinti.

Žemiau išvardytos šiame straipsnyje aptariamos temos:





Duomenų struktūros „Java“

Duomenų struktūra yra būdas saugoti ir tvarkyti duomenis kompiuteryje, kad juos būtų galima efektyviai naudoti. Tai suteikia galimybę efektyviai valdyti didelius duomenų kiekius. Efektyvios duomenų struktūros yra svarbiausios kuriant efektyvius algoritmus.

ĮŠiame straipsnyje „Duomenų struktūros ir algoritmai„ Java “apimsime pagrindines duomenų struktūras, tokias kaip:



Patikrinkime kiekvieną iš jų.

Linijinės duomenų struktūros „Java“

Linijinės duomenų struktūros yra tie, kurių elementai yra nuoseklūs ir išdėstyti taip, kad: yra tik vienas pirmasis elementas ir turi tik vieną kitas elementas , yra tik vienas paskutinis elementas ir turi tik vieną ankstesnis elementas , o visi kiti elementai turi a Kitas ir a ankstesnis elementas.

Masyvai

An masyvas yra tiesinė duomenų struktūraatstovaujanti panašių elementų grupei, prieinama indeksu. Prieš saugant duomenis, reikia nurodyti masyvo dydį. Žemiau pateikiamos masyvo savybės:



  • Kiekvienas masyvo elementas yra to paties tipo ir to paties dydžio
  • Masyvo elementai yra saugomi gretimose atminties vietose, kai pirmasis elementas prasideda nuo mažiausios atminties vietos
  • Masyvo elementus galima pasiekti atsitiktinai
  • Masyvo duomenų struktūra nėra visiškai dinamiška

Masyvai - Edureka

Pavyzdžiui , galbūt norėsime, kad vaizdo žaidime būtų stebimi geriausi to žaidimo rezultatai. Užuot naudoję dešimt skirtingų kintamieji atlikdami šią užduotį, mes galėtume naudoti vieną visos grupės pavadinimą ir naudoti indekso numerius, kad nurodytume geriausius tos grupės balus.

Susietas sąrašas

Į yra linijinė duomenų struktūra su kelių mazgų rinkimu, kur e„ach“ elementas saugo savo duomenis ir žymeklį į kito elemento vietą. Paskutinė susieto sąrašo nuoroda nurodo nulį, nurodant grandinės pabaigą. Susieto sąrašo elementas vadinamas a mazgas . Pirmasis mazgas vadinamas galva .Paskutinis mazgas vadinamas uodega .

Susieto sąrašo tipai

Vienas susietas sąrašas (vienakryptis)

Dvigubai susietas sąrašas (dvikryptis)

Apskritasis susietasis sąrašas

Štai paprastas pavyzdys: Įsivaizduokite susietą sąrašą kaip sąvaržėlių grandinę, kurios yra sujungtos. Viršuje arba apačioje galite lengvai pridėti kitą sąvaržėlę. Net greitai įterpti vieną į vidurį. Viskas, ką jums reikia padaryti, tai tiesiog atjungti grandinę viduryje, įdėti naują sąvaržėlę, tada vėl prijungti kitą pusę. Susietas sąrašas yra panašus.

Šūsniai

Kamino, abstrakti duomenų struktūra yra duomenų rinkinys objektai kurie įkišti ir nuimti pagal paskutinis-pirmas-iš (LIFO) principas. Objektai gali būti įterpiami į rietuvę bet kuriuo momentu, tačiau bet kada galima pašalinti tik paskutinį įterptą (tai yra „paskutinis“) objektą.Žemiau pateikiamos kamino savybės:

  • Tai orderd sąrašas, kuriameįterpimas ir ištrynimas gali būti atliekamas tik viename gale, kuris vadinamas viršuje
  • Rekursyvi duomenų struktūra su žymekliu į jo viršutinį elementą
  • Seka paskutinis-pirmas-iš (LIFO) principas
  • Palaiko du pagrindinius metodus
    • stumti (e): įkiškite elementą e į kamino viršų
    • pop (): nuimkite ir grąžinkite viršutinį kamino elementą

Praktiniai kamino pavyzdžiai yra atvirkštinis žodis,patikrinti teisingumą skliausteliuoseseka,įdiegti atgalinę funkciją naršyklėse ir daugelyje kitų.

Eilės

taip pat yra dar viena abstrakčios duomenų struktūros rūšis. Skirtingai nuo kamino, eilė yra objektų rinkinys, kurie įterpiami ir pašalinami pagal pirmas į pirmąjį (FIFO) principas. Tai yra, elementus galima įterpti bet kuriuo momentu, bet bet kada galima pašalinti tik tą elementą, kuris ilgiausiai buvo eilėje.Žemiau pateikiamos eilės savybės:

  • Dažnai vadinamas Pirmas vidun, pirmas laukan sąrašą
  • Palaiko du pagrindinius metodus
    • enqueue (e): įterpkite elementą e ties gale eilės
    • dequeue (): nuimkite ir grąžinkite elementą iš priekyje eilės

Eilės naudojamosasinchroninis duomenų perdavimas tarp dviejų procesų, procesoriaus planavimas, disko planavimas ir kitos situacijos, kai ištekliai yra dalijami keliems vartotojams ir aptarnaujami pirmojo atėjimo serveryje. Toliau šiame straipsnyje „Duomenų struktūros ir algoritmai Java“ turime hierarchines duomenų struktūras.

Hierarchinės „Java“ duomenų struktūros

Dvejetainis medis

Dvejetainis medis yra ahierarchinės medžio duomenų struktūros, kuriose kiekviename mazge yra daugiausia du vaikai , kurie vadinami paliktas vaikas ir teisingas vaikas . Kiekviename dvejetainiame medyje yra šios mazgų grupės:

  • Šaknies mazgas: tai aukščiausias mazgas ir dažnai vadinamas pagrindiniu mazgunes visus kitus mazgus galima pasiekti iš šaknies
  • Kairysis po medis, kuris taip pat yra dvejetainis medis
  • Dešinysis submedis, kuris taip pat yra dvejetainis medis

Žemiau pateikiamos dvejetainio medžio savybės:

  • Dvejetainį medį galima kirsti dviem būdais:
    • Pirmasis gylis : Tvarka (kairė-šaknis-dešinė), išankstinė tvarka (šaknis-kairė-dešinė) ir pašto tvarka (kairė-dešinė-šaknis)
    • Pirmasis platumas : Lygio tvarkos perėjimas
  • Medžio perėjimo laiko sudėtingumas: O (n)
  • Didžiausias mazgų skaičius „l“ lygyje = 2l-1.

Dvejetainių medžių programos apima:

duomenų maišymas lentelėje 10
  • Naudojamas daugelyje paieškos programų, kur duomenys nuolat patenka / išeina
  • Kaip skaitmeninių vaizdų komponavimo vizualiesiems efektams darbo eiga
  • Naudojamas beveik visuose didelio pralaidumo maršrutizatoriuose, kad būtų saugomos maršrutizatorių lentelės
  • Taip pat naudojamas belaidžio tinklo ir atminties paskirstymo srityje
  • Naudojamas suspaudimo algoritmuose ir daugelyje kitų

Dvejetainis kaupas

Dvejetainis kaupas yra visiškasdvejetainis medis, kuris atsako į krūvos savybę. Paprasčiau tariantyra dvejetainio medžio variantas, turintis šias savybes:

  • Krūva yra visas dvejetainis medis: Sakoma, kad medis yra baigtas, jei visi jo lygiai, išskyrus galbūt giliausią, yra baigti. Tjo dvejetainio kaupo savybė leidžia jį laikyti .
  • Seka su kaupu: Dvejetainis kaupas yra arba a Min-Heap arba a Maks-Heapas .
    • Min. Dvejetainis kaupas: Farba kiekvieno krūvos mazgo, mazgo vertė yra mažesnis arba lygus vaikų vertybes
    • Maksimalus dvejetainis krūva: Farba kiekvieno krūvos mazgo, mazgo vertė yra didesnis arba lygus vaikų vertybes

Tarp populiariausių dvejetainio kaupo programų yraefektyvių prioritetinių eilučių įgyvendinimas, efektyvus k mažiausių (arba didžiausių) elementų suradimas iš masyvo ir daug daugiau.

Maišos lentelės

Įsivaizduokite, kad turite objektas ir norite jam priskirti raktą, kad būtų labai lengva ieškoti. Norėdami išsaugoti tą raktų / reikšmių porą, galite naudoti paprastą masyvą, pvz., Duomenų struktūrą, kur raktai (sveiki skaičiai) gali būti naudojami tiesiogiai kaip indeksas duomenų reikšmėms saugoti. Tačiau tais atvejais, kai raktai yra per dideli ir jų negalima tiesiogiai naudoti kaip rodyklės, naudojama technika, vadinama maišu.

Maišant dideli klavišai paverčiami mažais klavišais naudojant maišos funkcijos . Tada vertės saugomos vadinamoje duomenų struktūrojeį maišos lentelė. Maišos lentelė yra duomenų struktūra, įgyvendinanti žodyną ADT - struktūrą, kuri gali susieti unikalius raktus su reikšmėmis.

Apskritai maišos lentelę sudaro du pagrindiniai komponentai:

  1. Kaušo masyvas: Maišos lentelės masyvas yra N dydžio masyvas A, kuriame kiekviena A ląstelė laikoma „kibirėliu“, tai yra raktų ir verčių porų rinkiniu. Sveikasis skaičius N nurodo masyvo talpą.
  2. Maišos funkcija: Tai yra bet kuri funkcija, kuri kiekvieną mūsų žemėlapio klavišą k susieja su skaičiumi diapazone [0, N ir minus 1], kur N yra šios lentelės segmento masyvo talpa.

Kai objektus dedame į „hashtable“, gali būti, kad skirtingi objektai gali turėti tą patį maišos kodą. Tai vadinama a susidūrimas . Norėdami susidurti su susidūrimu, yra tokių būdų, kaip grandinės susiejimas ir atviras kreipimasis.

Taigi, tai yra keletas pagrindinių ir dažniausiai naudojamų „Java“ duomenų struktūrų. Dabar, kai jūs žinote apie kiekvieną iš šių dalykų, galite pradėti juos įgyvendinti . Tuo mes užbaigėme šio straipsnio „Duomenų struktūros ir algoritmai programoje„ Java “pirmąją dalį. Kitoje dalyje mes sužinosime apie taipagrindiniai algoritmai ir kaip juos naudoti praktinėse programose, tokiose kaip rūšiavimas ir paieška, skirstymas ir užkariavimas, godūs algoritmai, dinaminis programavimas.

Algoritmai „Java“

Istoriškai naudojami kaip sudėtingų matematinių skaičiavimų sprendimo įrankiai, algoritmai yra glaudžiai susiję su kompiuterių mokslu ir ypač su duomenų struktūromis. Algoritmas yra instrukcijų seka, apibūdinanti konkrečios problemos sprendimo būdą per ribotą laiką. Jie atstovaujami dviem būdais:

  • Blokinės schemos - Tai yravizualus algoritmo valdymo srauto vaizdavimas
  • Pseudokodas - Taiyra tekstinis algoritmo, kuris apytiksliai atspindi galutinį šaltinio kodą, vaizdas

Pastaba: Algoritmo našumas matuojamas atsižvelgiant į laiko ir erdvės sudėtingumą. Dažniausiai bet kurio algoritmo sudėtingumas priklauso nuo problemos ir nuo paties algoritmo.

Panagrinėkime dvi pagrindines „Java“ algoritmų kategorijas:

Algoritmų rūšiavimas „Java“

Rūšiavimo algoritmai yra algoritmai, pateikiantys sąrašo elementus tam tikra tvarka. Dažniausiai naudojami skaitiniai ir leksikografiniai užsakymai. Šiame straipsnyje „Duomenų struktūros ir algoritmai“ galima ištirti kelis rūšiavimo algoritmus.

„Bubble Rūšiuoti“ „Java“

„Bubble Sort“, dažnai vadinamas „grimzdimo“ rūšiavimu, yra paprasčiausias rūšiavimo algoritmas. Jis pakartotinai pereina sąrašą, kad būtų galima surūšiuoti, lygina kiekvieną gretimų elementų porą ir keičia juos, jei jie yra neteisinga tvarka.Burbulų rūšis gauna savo pavadinimą, nes ji filtruoja elementus į masyvo viršų, pavyzdžiui, burbuliukai, plaukiantys ant vandens.

Štai štaipseudokodas, vaizduojantis burbulų rūšiavimo algoritmą (kylančio rūšiavimo kontekstas).

a [] yra N dydžio masyvas, prasidedantis „BubbleSort“ (a []) skelbia sveikąjį skaičių i, j, jei i = 0, o N - 1, jei j = 0, ir N - i - 1, jei a [j]> a [j + 1 ], tada pakeiskite [j], [j + 1] galą, jei galas, kad grąžintumėte pabaigą „BubbleSort“

Šis kodas nurodo vieno matmens N duomenų elementų masyvą didėjimo tvarka. Išorinė kilpa leidžia N-1 pereiti per masyvą. Kiekvienas leidimas naudoja vidinę kilpą keistis duomenų elementais taip, kad kitas mažiausias duomenų elementas „burbuliuotų“ link masyvo pradžios. Tačiau problema yra ta, kad algoritmui reikia vieno viso leidimo be jokio apsikeitimo, kad žinotumėte, jog sąrašas yra rūšiuojamas.

Blogiausio ir vidutinio atvejo sudėtingumas: O (n * n). Blogiausias atvejis, kai masyvas yra rūšiuojamas atvirkščiai.

Geriausias atvejo laiko sudėtingumas: O (n). Geriausias atvejis yra tada, kai masyvas jau yra rūšiuojamas.

Pasirinkimas Rūšiuoti „Java“

Pasirinkimo rūšiavimas yra tiek paieškos, tiek rūšiavimo derinys. Algoritmas surūšiuoja masyvą pakartotinai surasydamas minimalų elementą (atsižvelgiant į didėjimo tvarką) iš nerūšiuotos dalies ir pastatydamas jį į tinkamą masyvo vietą.

Štai pseudokodas, nurodantis atrankos rūšiavimo algoritmą (kylančio rūšiavimo kontekstas).

a [] yra N dydžio masyvas pradėti SelectionSort (a []) i = 0 iki n - 1 / * nustatykite dabartinį elementą kaip minimumą * / min = i / * raskite mažiausią elementą * /, jei j = i + 1 iki n, jei sąrašas [j]

Kaip suprantate iš kodo, skaičius, kiek kartų rūšiavimas praeina per masyvą, yra vienas mažesnis nei masyvo elementų skaičius. Vidinė kilpa suranda kitą mažiausią vertę, o išorinė kilpa tą vertę padeda į tinkamą vietą. Pasirinkimo rūšiavimas niekada nedaro daugiau nei O (n) apsikeitimo sandorių ir gali būti naudingas, kai atminties įrašymas yra brangi operacija.

Laiko sudėtingumas: O (n2), nes yra dvi įdėtos kilpos.

Pagalbinė erdvė: Arba (1).

Įterpimas Rūšiuoti „Java“

Įterpimo rūšiavimas yra paprastas rūšiavimo algoritmas, kuris kartojasi sąraše suvartodamas po vieną įvesties elementą ir sukuria galutinį rūšiuojamą masyvą. Tai labai paprasta ir efektyvesnė mažesniuose duomenų rinkiniuose. Tai stabili ir vietoje rūšiavimo technika.

Štai pseudokodas, rodantis įterpimo rūšiavimo algoritmą (kylančio rūšiavimo kontekstas).

a [] yra N dydžio masyvas, prasidedantis „InsertionSort“ (a []) i = 1 - N klavišui = a [i] j = i - 1, o (j> = 0 ir [j]> klavišas0 a [j + 1] = x [j] j = j - 1 galas, o [j ​​+ 1] = rakto galas „InsertionSort“

Kaip galite suprasti iš kodo, įterpimo rūšiavimo algoritmaspašalina vieną elementą iš įvesties duomenų, suranda vietą, kuriai jis priklauso, surūšiuotą sąrašą ir ten įterpia. Jis kartojasi tol, kol nė vienas įvesties elementas neliks nerūšiuotas.

Geriausias atvejis: Geriausias atvejis, kai įvestis yra jau sutvarkytas masyvas. Šiuo atveju įterpimo rūšiavimo laikas yra tiesinis (t. Y. & Theta (n)).

Blogiausiu atveju: Paprasčiausias blogiausio atvejo įvestis yra masyvas, surūšiuotas atvirkštine tvarka.

dirbtinis intelektas ginčija pliusus ir minusus

„QuickSort“ „Java“

„Quicksort“ algoritmas yra greitas, rekursiškas, nestabilus rūšiavimo algoritmas, kuris veikia padalijimo ir užkariavimo principu. Jis pasirenka elementą kaip „pivot“ ir suskirsto pateiktą masyvą aplink pasirinktą „pivot“.

Greito rūšiavimo diegimo veiksmai:

  1. Pasirinkite tinkamą „sukimosi tašką“.
  2. Padalinkite sąrašus į du sąrašusremiantis šiuo sukamuoju elementu. Kiekvienas elementas, kuris yra mažesnis nei sukamasis elementas, dedamas į kairįjį sąrašą, o kiekvienas didesnis - į dešinįjį sąrašą. Jei elementas yra lygus suvestiniam elementui, jis gali patekti į bet kurį sąrašą. Tai vadinama skaidinio operacija.
  3. Rekursyviai rūšiuokite kiekvieną mažesnį sąrašą.

Štai pseudokodas, vaizduojantis „Quicksort“ algoritmą.

„QuickSort“ (A kaip masyvas, žemas kaip int, aukštas kaip int) {jei (žemas

Pirmiau pateiktame pseudokode skaidinys () funkcija atlieka skaidinio operaciją ir „Quicksort“ () funkcija pakartotinai kviečia kiekvieno mažesnio sukurto sąrašo skaidinio funkciją. „Quicksort“ sudėtingumas vidutiniu atveju yra & Theta (n log (n)), o blogiausiu atveju yra & Theta (n2).

Sujungti rūšiuoti „Java“

„Mergesort“ yra greitas, rekursiškas, stabilus rūšiavimo algoritmas, kuris taip pat veikia padalijimo ir užkariavimo principu. Panašiai kaip „quicksort“, sujungimo rūšiavimas elementų sąrašą padalija į du sąrašus. Šie sąrašai yra rūšiuojami atskirai ir tada sujungiami. Derinant sąrašus, elementai įterpiami (arba sujungiami) tinkamoje sąrašo vietoje.

Štai pseudokodas, vaizduojantis „Merge Sort Algorithm“.

procedūra MergeSort (a kaip masyvas), jei (n == 1) grąžina var l1 kaip masyvą = a [0] ... a [n / 2] var l2 kaip masyvą = a [n / 2 + 1] ... a [n] l1 = mergesort (l1) l2 = mergesort (l2) return sulieti (l1, l2) pabaigos procedūros procedūra sulieti (a kaip masyvas, b kaip masyvas) var c kaip masyvas, o (a ir b turi elementų) jei ( a [0]> b [0]) pridėkite b [0] prie c pabaigos pašalinkite b [0] iš b dar pridėkite a [0] prie c pabaigos pašalinkite a [0] iš galo, jei galas, o (a turi elementų) pridėkite [0] prie c pabaigos, pašalinkite [0] nuo pabaigos, o (b turi elementų) pridėkite b [0] prie c pabaigos, pašalinkite b [0] iš b pabaigos, kol grįšite c pabaigos procedūra

mergesort () funkcija suskirsto sąrašą į du, skambučius mergesort () šiuose sąrašuose atskirai ir sujungia juos siunčiant kaip parametrus, kad sujungtų () funkciją.Algoritmas yra sudėtingas O (n log (n)) ir turi daugybę programų.

„Heap Rūšiuoti“ „Java“

„Heapsort“ yra palyginimu pagrįstas rūšiavimo algoritmasDvejetainio kaupo duomenų struktūra. Galite galvoti apie tai, kaip patobulinta f parinkties rūšiavimo rūšis, kurjis padalija savo įvestį į rūšiuojamą ir nerūšiuotą regioną ir iteratyviai sumažina nerūšiuotą regioną, išskirdamas didžiausią elementą ir perkeldamas jį į rūšiuojamą regioną.

„Quicksort“ diegimo veiksmai (didėjančia tvarka):

  1. Sukurkite maksimalų kaupą naudodami rūšiavimo masyvą
  2. Prie šio poinot, didžiausias daiktas saugomas krūvos šaknyje. Pakeiskite jį paskutiniu kaupo elementu ir sumažinkite kaupo dydį 1. Galiausiai sukrovė medžio šaknį
  3. Pakartokite aukščiau nurodytus veiksmus, kol krūvos dydis bus didesnis nei 1

Štai pseudokodas, vaizduojantis „Heap Sort“ algoritmą.

„Heapsort“ (a masyvas) (i = n / 2 - 1) į i> = 0 sukrauna (a, n, i) už i = n-1 iki 0 keičiamasi (a [0], a [i]) (a, i, 0) galas su kaupu (a kaip masyvas, n kaip int, i kaip int) didžiausias = i // Inicializuoti didžiausią kaip šaknis int l eft = 2 * i + 1 // kairė = 2 * i + 1 int dešinėje = ​​2 * i + 2 // dešinėje = ​​2 * i + 2 jei (kairėje [didžiausias]) didžiausias = kairėje, jei (dešinėje [didžiausias]) didžiausias = dešinėje, jei (didžiausias! = I) apsikeitimo ( a [i], A [didžiausias]) Heapify (a, n, didžiausias) galas su kaupu

Be šių, yra ir kitų ne taip gerai žinomų rūšiavimo algoritmų, tokių kaip „Introsort“, „Counting Rūšiuoti“ ir kt. Pereidami prie kito algoritmų rinkinio šiame straipsnyje „Duomenų struktūros ir algoritmai“, panagrinėkime paieškos algoritmus.

Paieškos algoritmuose „Java“

Paieška yra vienas iš dažniausiai pasitaikančių ir dažniausiai atliekamų veiksmų įprastose verslo programose. Paieškos algoritmai yra algoritmai, skirti rasti elementą su nurodytomis ypatybėmis iš elementų rinkinio. Panagrinėkime du dažniausiai naudojamus paieškos algoritmus.

Tiesinis paieškos algoritmas „Java“

Linijinė paieška arba nuosekli paieška yra paprasčiausias paieškos algoritmas. Tai reiškia nuoseklų elemento paiešką pateiktoje duomenų struktūroje tol, kol elementas bus surastas arba pasiektas struktūros galas. Jei elementas rastas, tada grąžinama elemento vieta, kitaip algoritmas grąžina NULL.

Štai pseudokodas, apibūdinantis „Java“ linijinę paiešką:

procedūra linear_search (a [], vertė) i = 0 iki n-1, jei [i] = reikšmė, tada spauskite 'Rasta' grąžinti i pabaigą, jei pabaigos 'line_search' pabaiga spausdinama 'Nerasta' pabaiga

Tai yragrubios jėgos algoritmas.Nors tai tikrai yra paprasčiausias, jis tikrai nėra labiausiai paplitęs dėl savo neveiksmingumo. Linijinės paieškos laiko sudėtingumas yra O (N) .

Dvejetainio paieškos algoritmas „Java“

Dvejetainė paieška, dar vadinama logaritmine paieška, yra paieškos algoritmas, kuris nustato tikslinės vertės padėtį jau surūšiuotame masyve. Jis padalija įvesties rinkinį į lygias puses ir elementas lyginamas su viduriniu sąrašo elementu. Jei elementas randamas, paieška tuo ir baigiasi. Kitu atveju, mes toliau ieškome elemento, padalydami ir pasirinkdami tinkamą masyvo skaidinį, atsižvelgdami į tai, ar tikslinis elementas yra mažesnis ar didesnis nei vidurinis elementas.

Štai pseudokodas, nurodantis „Java“ dvejetainę paiešką:

Procedūra „binary_search“ surūšiuotas masyvas n masyvo x vertės dydis, kurio bus ieškoma lowerBound = 1 upperBound = n, o x nerastas, jei upperBound

Paieška baigiasi, kai viršutinė (mūsų rodyklė) praeina žemiau (paskutinis elementas), o tai reiškia, kad mes ieškojome viso masyvo, o elemento nėra.Tai dažniausiai naudojami paieškos algoritmai, visų pirma dėl greito paieškos laiko. Dvejetainės paieškos laiko sudėtingumas yra O (N) o tai yra akivaizdus patobulinimas O (N) Linijinės paieškos laiko sudėtingumas.

Tai priveda prie šio straipsnio „Duomenų struktūros ir algoritmai programoje„ Java “pabaigos. Aš apžvelgiau vieną iš pagrindinių ir svarbiausių „Java“ temų.Tikiuosi, kad jums aišku viskas, kas buvo pasidalinta su jumis šiame straipsnyje.

Įsitikinkite, kad praktikuojate kuo daugiau ir grąžinkite savo patirtį.

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 taptume be šių „Java“ interviu klausimų, mes parengėme programą, skirtą studentams ir specialistams, norintiems būti „Java“ kūrėjais.

Turite mums klausimą? Prašau tai paminėti šios pastabos skyriuje „Duomenų struktūros ir algoritmai„ Java “. straipsnį ir mes kuo greičiau susisieksime su jumis.