Ar galite atlikti dvejetainę paiešką susietame sąraše?
Ar galite atlikti dvejetainę paiešką susietame sąraše?

Video: Ar galite atlikti dvejetainę paiešką susietame sąraše?

Video: Ar galite atlikti dvejetainę paiešką susietame sąraše?
Video: Binary search in linked list | Binary Search algorithm full explanation 2024, Gegužė
Anonim

taip, Dvejetainė paieška galima ant susietas sąrašas, jei į sąrašą yra užsakytas ir tu žinoti elementų skaičių sąrašą . Tačiau rūšiuojant sąrašą , tu gali pasiekti vieną elementą vienu metu per žymeklį į tą mazgą, t. y. arba ankstesnį mazgą, arba kitą mazgą.

Taigi, koks bus laiko sudėtingumas, kai susietame sąraše bus taikoma dvejetainė paieška?

Laiko sudėtingumas neturėtų būti didesnis nei O(log n). Kaip susietas sąrašas daro nesuteiksime atsitiktinės prieigos, jei bandysime taikyti dvejetainę paiešką algoritmas tai valios pasiekti O(n), kiek mums reikia rasti ilgis sąrašą ir eik į vidurį.

Taip pat žinote, kaip įgyvendinama dvejetainė paieška? Dvejetainė paieška : Paieška surūšiuotas masyvas pakartotinai dalijant Paieška intervalas per pusę. Pradėkite nuo intervalo, apimančio visą masyvą. Jei vertė Paieška klavišas yra mažesnis nei elementas intervalo viduryje, susiaurinkite intervalą iki apatinės pusės. Priešingu atveju susiaurinkite jį iki viršutinės pusės.

Taigi, kurį dvejetainės paieškos metodą naudoja sąrašo elementui rasti?

Dvejetainė paieška veikia surūšiuotuose masyvuose. Dvejetainė paieška prasideda lyginant an elementas masyvo viduryje su taikiniu vertė . Jei taikinys vertė atitinka elementas , grąžinama jo padėtis masyve. Jei taikinys vertė yra mažesnis nei elementas , Paieška tęsiasi apatinėje masyvo pusėje.

Kaip kartojate susietą sąrašą?

An Iteratorius gali būti naudojamas kilpai per an LinkedList . Metodas hasNext() grąžina true, jei yra daugiau elementų LinkedList o kitaip netikra. Metodas next() grąžina kitą elementą LinkedList ir išmeta išimtį NoSuchElementException, jei nėra kito elemento.

Rekomenduojamas: