Skirtumas tarp linijinės ir dvejetainės paieškos
Turinys
Linijinė paieška ir dvejetainė paieška yra du metodai, naudojami masyvuose ieškojimas elementai. Paieška - tai elementų, esančių bet kokia tvarka arba atsitiktine tvarka, sąrašo elementų paieška.
Pagrindinis skirtumas tarp linijinės ir dvejetainės paieškos yra tas, kad dvejetainė paieška užima mažiau laiko elemento paieškai išrūšiuotų elementų sąraše. Taigi daroma išvada, kad dvejetainės paieškos metodo efektyvumas yra didesnis nei tiesinės paieškos.
Kitas skirtumas tarp šių dviejų yra tas, kad yra būtina dvejetainės paieškos sąlyga, t.y., elementai turi būti rūšiuojami tuo tarpu linijinėje paieškoje tokios prielaidos nėra. Nors abu paieškos metodai naudoja skirtingus metodus, kurie aptariami toliau.
- Palyginimo diagrama
- Apibrėžimas
- Pagrindiniai skirtumai
- Išvada
Palyginimo diagrama
Palyginimo pagrindas | Linijinė paieška | Dvejetainė paieška |
---|---|---|
Laiko sudėtingumas | O (N) | O (žurnalas 2 N) |
Geriausio atvejo laikas | Pirmasis elementas O (1) | Centro elementas O (1) |
Būtina masyvo sąlyga | Nereikia | Masyvas turi būti surūšiuotas |
Blogiausias N elementų skaičius | N lyginti nereikia | Gali padaryti išvadą tik prisijungęs2 N palyginimų |
Gali būti įdiegta | Masyvas ir susietų sąrašas | Neįmanoma tiesiogiai įgyvendinti susietame sąraše |
Įdėkite operaciją | Lengvai įterpiamas sąrašo gale | Reikalaukite apdorojimo, kad įterptumėte tinkamoje vietoje, kad būtų tvarkomas rūšiuotas sąrašas. |
Algoritmo tipas | Iteracinio pobūdžio | Padalinkite ir užkariaukite gamtoje |
Naudingumas | Paprastas naudoti ir nereikia jokių užsakytų elementų. | Bet kokiu atveju sudėtingas algoritmas ir elementai turėtų būti išdėstyti tvarka. |
Kodo eilutės | Mažiau | Daugiau |
Linijinės paieškos apibrėžimas
Linijinėje paieškoje kiekvienas masyvo elementas yra paimamas po vieną logine tvarka ir patikrinama, ar tai norimas elementas, ar ne. Paieška bus nesėkminga, jei bus pasiekti visi elementai, o norimas elementas nerastas. Blogiausiu atveju vidutinio atvejo skaičių mums gali reikėti nuskaityti pusei masyvo dydžio (n / 2).
Todėl linijinę paiešką galima apibrėžti kaip techniką, kuria masyvas eina paeiliui tam, kad surastų duotą elementą. Žemiau pateikta programa iliustruoja masyvo elemento paiešką naudojant paiešką.
Efektyvumas linijinės paieškos
Laiko sąnaudos arba palyginimų, atliktų ieškant įrašo paieškos lentelėje, skaičius lemia technikos efektyvumą. Jei norimo įrašo yra pirmoje paieškos lentelės pozicijoje, atliekamas tik vienas palyginimas. Kai norimas įrašas yra paskutinis, tada reikia palyginti. Jei įrašas turi būti kažkur paieškos lentelėje, vidutiniškai palyginimų skaičius bus (n + 1/2). Blogiausias šios technologijos efektyvumas yra O (n) - vykdymo tvarka.
C programa ieškoti elemento su tiesine paieškos technika.
# įtraukti Dvejetainė paieška yra ypač efektyvus algoritmas. Ši paieškos technika sugaišta mažiau laiko ieškant nurodyto elemento kuo mažiau palyginimų. Pirmiausia, norėdami atlikti dvejetainę paiešką, turime surūšiuoti masyvo elementus. Šios technikos logika pateikiama žemiau: Gali kilti trys atvejai: Pakartokite tuos pačius veiksmus, kol elementas bus rastas arba išeikvos paieškos srityje. Šiuo algoritmu kaskart sumažėja paieškos sritis. Todėl palyginimų skaičius yra daugiausiai loginis (N + 1). Dėl to tai yra efektyvus algoritmas, palyginti su linijine paieška, tačiau prieš atliekant dvejetainę paiešką, masyvas turi būti rūšiuojamas. C programa rasti elementą naudojant dvejetainę paieškos techniką. # įtraukti Priklausomai nuo programos, gali būti naudingi tiek tiesiniai, tiek dvejetainiai paieškos algoritmai. Kai masyvas yra duomenų struktūra, o elementai yra išdėstyti surūšiuota tvarka, tada pirmenybė teikiama dvejetainėms paieškoms greitaiieškojimas. Jei susietas sąrašas yra duomenų struktūra, neatsižvelgiant į tai, kaip elementai yra išdėstyti, linijinė paieška pasirenkama dėl to, kad dvejetainės paieškos algoritmas nėra tiesiogiai įgyvendinamas. Tipinis dvejetainis paieškos algoritmas negali būti naudojamas susietajam sąrašui, nes susietas sąrašas yra dinamiško pobūdžio ir nežinoma, kur iš tikrųjų priskirtas vidurinis elementas. Taigi yra reikalavimas suprojektuoti dvejetainės paieškos algoritmo variantą, kuris gali veikti ir susietame sąraše, nes dvejetainė paieška vykdoma greičiau nei linijinė paieška.Dvejetainės paieškos apibrėžimas
Išvada