Ipinaliwanag ang Linear & Binary Search Algorithms

Ipinaliwanag ang Linear & Binary Search Algorithms

Ang kakayahang maghanap para sa ilang data ay isang mahalagang aspeto ng agham sa kompyuter. Ginagamit ang mga algorithm sa paghahanap upang maghanap para sa isang partikular na item sa isang hanay ng data.





Ang mga algorithm ay nagbabalik ng isang resulta ng boolean (totoo o hindi) sa isang query sa paghahanap. Maaari rin silang mabago upang mabigyan ang kamag-anak na posisyon ng nahanap na halaga.





Para sa artikulong ito, ang mga algorithm ay tumutok sa pagtukoy kung mayroon ang isang halaga.





Mga Linear Algorithm sa Paghahanap

Ang linear na paghahanap ay kilala rin bilang sunud-sunod na paghahanap. Sa ganitong uri ng paghahanap, ang bawat halaga sa isang listahan ay binisita isa-isa sa isang maayos na paraan habang sinusuri kung mayroon ang ninanais na halaga.

Sinusuri ng algorithm ang halaga ayon sa halaga hanggang sa makita ang halagang hinahanap mo o mauubusan ng mga halagang hinahanap. Kapag naubusan ito ng mga halagang hinahanap, nangangahulugan iyon na ang iyong query sa paghahanap ay hindi umiiral sa listahan.



Ang isang sunud-sunod na algorithm ng paghahanap ay tumatagal sa isang listahan ng mga halaga at ang nais na item sa listahan bilang mga parameter nito. Ang resulta ng pagbabalik ay pinasimulan bilang Mali at magbabago sa Totoo kapag ang ninanais na halaga ay natagpuan.

Tingnan ang pagpapatupad ng Python sa ibaba bilang isang halimbawa:





def linearSearch(mylist, item):
found = False
index = 0
while index if mylist[index] == item:
found = True
else:
index = index+1
return found

Pagsusuri sa Algorithm

Ang senaryo ng pinakamahusay na kaso ay nangyayari kapag ang nais na item ay ang una sa listahan. Ang pinakapangit na kaso ay nangyayari kapag ang nais na item ay ang huling nasa listahan (ang nth item). Samakatuwid, ang pagiging kumplikado ng oras para sa linear na paghahanap ay O (n).

Ang average na sitwasyon ng kaso sa nasa itaas na algorithm ay n / 2.





Kaugnay: Ano ang Big-O Notation?

Mahalagang malaman na ang ginamit na algorithm ay ipinapalagay na ang isang random na listahan ng mga item ay ibinigay dito. Iyon ay, ang mga item sa listahan ay walang partikular na pagkakasunud-sunod.

panlabas na hard drive na hindi nagpapakita sa pc

Ipagpalagay na ang mga item ay nasa isang partikular na pagkakasunud-sunod, sabihin mula sa pinakamaliit hanggang sa pinakamalaki. Posibleng makamit ang ilang kalamangan sa pagkalkula.

Gumawa ng isang halimbawa ng paghahanap ng 19 sa ibinigay na listahan: [2, 5, 6, 11, 15, 18, 23, 27, 34]. Matapos maabot ang 23, magiging malinaw na ang item na hinahanap ay wala sa listahan. Samakatuwid, hindi na magiging mahalaga na ipagpatuloy ang paghahanap sa natitirang mga item sa listahan.

Mga Algorithm sa Paghahanap ng Binary

Nakita mo kung paano maaaring mabawasan ng isang order na listahan ang kinakailangang pagkalkula. Ang binary search algorithm ay nagsasamantala ng kahusayan na ito na ipinakilala ng pagkakaroon ng isang order na listahan.

Nagsisimula ang algorithm sa pamamagitan ng pagkuha ng isang gitnang halaga ng isang order na listahan at suriin kung ito ang nais na halaga. Kung hindi, kung gayon ang halaga ay nasuri kung mas mababa o mas malaki kaysa sa nais na halaga.

Kung mas mababa ito, kung gayon hindi kailangang suriin ang mas mababang kalahati ng listahan. Kung hindi man, kung ito ay mas malaki, pagkatapos ay lumilipat ito sa itaas na kalahati ng listahan.

Kaugnay: Ano ang Recursion at Paano Mo Ito Ginagamit?

Anuman ang napiliang sublist (kaliwa o kanan) na napili, ang gitnang halaga ay matutukoy din. Muling nasuri ang halaga kung ito ang kinakailangang halaga. Kung hindi, nasusuri kung mas mababa o mas malaki ito sa hiniling na halaga.

Ang order ng amazon ay hindi natanggap ng tinatayang petsa ng paghahatid

Ang prosesong ito ay paulit-ulit hanggang sa matagpuan ang isang halaga kung nariyan.

Ang pagpapatupad ng Python sa ibaba ay para sa binary search algorithm.

def binarySearch (mylist, item):

low = 0
high = len(mylist) - 1
found = False
while low <= high and not found: mid = (low + high) // 2
if mylist[mid] == item:found = True
elif item else:low = mid + 1
return found

Pagsusuri sa Algorithm

Ang senaryo ng pinakamahusay na kaso ay nangyayari kapag ang nais na item ay natagpuan na maging gitnang item. Ang pinakapangit na sitwasyon na pangyayari ay hindi prangka. Sundin ang pagsusuri sa ibaba:

Matapos ang unang paghahambing, n / 2 na item ang maiiwan. Matapos ang pangalawa, n / 4 na mga item ang maiiwan. Pagkatapos ng pangatlo, n / 8.

Pansinin na ang bilang ng mga item ay patuloy na naghahati hanggang sa maabot nila ang n / 2i kung saan ako ang bilang ng mga paghahambing. Matapos ang lahat ng paghahati, nagtatapos lamang kami ng 1 item.

Ito ay nagpapahiwatig:

n / 2i = 1 Samakatuwid, ang binary na paghahanap ay O (log n).

Patuloy sa Pag-uuri

Sa binary na paghahanap, isinasaalang-alang namin ang isang kaso kung saan ang naibigay na array ay naorder na. Ngunit ipagpalagay na mayroon kang isang hindi naiayos na dataset at nais mong magsagawa ng binary na paghahanap dito. Ano ang gagawin mo?

Ang sagot ay simple: pag-uri-uriin ito. Mayroong isang bilang ng mga diskarte sa pag-uuri sa computer science na mahusay na nasaliksik. Ang isa sa mga diskarteng ito ay maaari mong simulang pag-aralan ang pagpili ng uri ng algorithm, habang mayroon kaming maraming mga gabay na nauugnay sa iba pang mga lugar.

Magbahagi Magbahagi Mag-tweet Email Paano Gumamit ng Seleksyon ng Pagsunud-sunod

Ang uri ng pagpili ay isang maliit na nakakalito upang maunawaan para sa mga nagsisimula, ngunit hindi ito masyadong mapaghamong sa sandaling makuha mo ang swing ng mga bagay.

Basahin Susunod
Mga Kaugnay na Paksa
  • Programming
  • Ipinaliwanag ang Teknolohiya
  • Programming
  • Mga algorithm
  • Pagsusuri sa datos
Tungkol sa May-akda Jerome Davidson(22 Mga Artikulo Na-publish)

Si Jerome ay isang Staff Writer sa MakeUseOf. Saklaw niya ang mga artikulo sa Programming at Linux. Siya rin ay isang taong mahilig sa crypto at palaging pinapanatili ang mga tab sa industriya ng crypto.

Higit pa Mula kay Jerome Davidson

Mag-subscribe sa aming newsletter

Sumali sa aming newsletter para sa mga tip sa tech, pagsusuri, libreng ebook, at eksklusibong deal!

Mag-click dito upang mag-subscribe