Maaari ka bang maghanap ng binary sa isang naka-link na listahan?
Maaari ka bang maghanap ng binary sa isang naka-link na listahan?

Video: Maaari ka bang maghanap ng binary sa isang naka-link na listahan?

Video: Maaari ka bang maghanap ng binary sa isang naka-link na listahan?
Video: Gawin Mo Ito At Mapupuyat Siya Sa Kaka Isip SAYO 2024, Mayo
Anonim

Oo, Binary na paghahanap ay posible sa naka-link na listahan kung ang listahan ay iniutos at ikaw alamin ang bilang ng mga elemento sa listahan . Ngunit Habang pinagbubukod-bukod ang listahan , kaya mo i-access ang isang elemento sa isang pagkakataon sa pamamagitan ng isang pointer sa node na iyon i.e. alinman sa isang nakaraang node o susunod na node.

Kaya lang, ano ang magiging kumplikado ng oras kapag ang isang binary na paghahanap ay inilapat sa isang naka-link na listahan?

Ang pagiging kumplikado ng oras hindi dapat higit sa O(log n). Bilang ginagawa ng naka-link na listahan hindi nagbibigay ng random na pag-access kung susubukan naming gawin ilapat ang binary na paghahanap algorithm ito kalooban maabot ang O(n) ayon sa kailangan natin hanapin haba ng listahan at pumunta sa gitna.

Alamin din, paano ipinatupad ang binary search? Binary Search : Maghanap isang pinagsunod-sunod na hanay sa pamamagitan ng paulit-ulit na paghahati sa paghahanap pagitan sa kalahati. Magsimula sa isang agwat na sumasaklaw sa buong hanay. Kung ang halaga ng paghahanap mas mababa ang key kaysa sa item sa gitna ng agwat, paliitin ang pagitan sa mas mababang kalahati. Kung hindi, paliitin ito sa itaas na kalahati.

Aling paraan ang ginagamit ng binary search para maghanap ng elemento sa isang listahan?

Binary na paghahanap gumagana sa mga pinagsunod-sunod na array. Binary na paghahanap nagsisimula sa paghahambing ng isang elemento sa gitna ng array na may target halaga . Kung ang target halaga tumutugma sa elemento , ang posisyon nito sa array ay ibinalik. Kung ang target halaga ay mas mababa kaysa sa elemento , ang paghahanap nagpapatuloy sa mas mababang kalahati ng array.

Paano ka umuulit sa pamamagitan ng isang naka-link na listahan?

An Tagapag-ulit maaaring gamitin sa pag-loop sa pamamagitan ng isang LinkedList . Ang pamamaraan hasNext() ay nagbabalik ng true kung mayroong higit pang mga elemento sa LinkedList at hindi totoo kung hindi man. Ibinabalik ng method next() ang susunod na elemento sa LinkedList at itinapon ang exception na NoSuchElementException kung walang susunod na elemento.

Inirerekumendang: