Objašnjeni algoritmi linearnog i binarnog pretraživanja

Objašnjeni algoritmi linearnog i binarnog pretraživanja

Sposobnost pretraživanja nekih podataka važan je aspekt računalne znanosti. Algoritmi pretraživanja koriste se za traženje određene stavke u skupu podataka.





Algoritmi vraćaju logički rezultat (istinit ili netočan) u upit za pretraživanje. Također se mogu izmijeniti kako bi se dobio relativni položaj pronađene vrijednosti.





U ovom članku algoritmi će se koncentrirati na utvrđivanje postoji li vrijednost.





Algoritmi linearnog pretraživanja

Linearno pretraživanje poznato je i kao sekvencijalno pretraživanje. U ovoj vrsti pretraživanja, svaka vrijednost na popisu posjećuje se jedna po jedna na uredan način, dok se provjerava postoji li željena vrijednost.

Algoritam provjerava vrijednost po vrijednost dok ne pronađe vrijednost koju tražite ili nema dovoljno vrijednosti za pretraživanje. Kad ponestane vrijednosti za pretraživanje, to znači da vaš upit za pretraživanje ne postoji na popisu.



Algoritam sekvencijalnog pretraživanja uzima kao parametre popis vrijednosti i željenu stavku na popisu. Povratni rezultat se inicijalizira kao Netočno i promijenit će se u Pravi kada se pronađe željena vrijednost.

Kao primjer pogledajte implementaciju Pythona u nastavku:





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

Algoritamska analiza

Najbolji scenarij događa se kada je željena stavka prva na popisu. Najgori slučaj događa se kada je željena stavka zadnja na popisu (n -ta stavka). Stoga je vremenska složenost linearnog pretraživanja O (n).

Prosječni scenarij u gornjem algoritmu je n/2.





Povezano: Što je Big-O notacija?

Važno je znati da korišteni algoritam pretpostavlja da mu se daje nasumičan popis stavki. Odnosno, stavke popisa nisu u određenom redoslijedu.

gmail kako promijeniti zadani račun

Pretpostavimo da su stavke bile u određenom redoslijedu, recimo od najmanjih do najvećih. Moglo bi se postići neka prednost u računanju.

Uzmite primjer traženja 19 na danom popisu: [2, 5, 6, 11, 15, 18, 23, 27, 34]. Nakon što dosegne 23, postat će jasno da stavka koju tražite ne postoji na popisu. Stoga više ne bi bilo važno nastaviti pretraživati ​​ostatak stavki popisa.

Binarni algoritmi pretraživanja

Vidjeli ste kako uređen popis može smanjiti potrebno izračunavanje. Binarni algoritam pretraživanja još više iskorištava ovu učinkovitost nego što ima uređen popis.

Algoritam započinje uzimanjem srednje vrijednosti uređenog popisa i provjerom je li to željena vrijednost. Ako nije, tada se provjerava je li manja ili veća od željene vrijednosti.

Ako je manji, nema potrebe provjeravati donju polovicu popisa. Inače, ako je veći, prelazi na gornju polovicu popisa.

Povezano: Što je rekurzija i kako je koristite?

Bez obzira na to koji je podpis (lijevi ili desni) odabran, srednja vrijednost će se ponovno odrediti. Vrijednost se ponovno provjerava je li potrebna vrijednost. Ako nije, provjerava se je li manja ili veća od tražene vrijednosti.

inicijalizirati disk mbr ili gpt ssd

Ovaj se postupak ponavlja sve dok se ne pronađe vrijednost ako postoji.

Python implementacija u nastavku služi za binarni algoritam pretraživanja.

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

Algoritamska analiza

Najbolji scenarij događa se kada se utvrdi da je željena stavka srednja stavka. Najgori mogući scenarij ipak nije tako jednostavan. Slijedite donju analizu:

Nakon prve usporedbe ostat će n/2 stavki. Nakon druge, ostavit će se n/4 stavke. Nakon treće, n/8.

Uočite da se broj stavki nastavlja prepolovljavati sve dok ne dosegnu n/2i gdje je i broj usporedbi. Nakon cijepanja, završavamo sa samo 1 stavkom.

Iz čega slijedi:

n/2i = 1 Stoga je binarno pretraživanje O (log n).

Prelazimo na sortiranje

U binarnom pretraživanju razmotrili smo slučaj gdje je zadani niz već naručen. Ali pretpostavimo da ste imali neuređen skup podataka i da ste htjeli izvršiti binarno pretraživanje po njemu. Što bi ti napravio?

Odgovor je jednostavan: sredite to. U računalnoj znanosti postoji niz tehnika sortiranja koje su dobro istražene. Jedna od ovih tehnika koju možete početi proučavati je algoritam sortiranja odabira, dok imamo dosta vodiča vezanih i za druga područja.

Udio Udio Cvrkut E -pošta Kako koristiti sortiranje odabira

Početnički je odabir pomalo nezgodno za razumjeti, ali nije previše izazovan kad se shvati.

Pročitajte Dalje
Povezane teme
  • Programiranje
  • Objašnjena tehnologija
  • Programiranje
  • Algoritmi
  • Analiza podataka
O autoru Jerome Davidson(22 objavljena članka)

Jerome je osobni pisac na MakeUseOfu. On pokriva članke o programiranju i Linuxu. On je također entuzijast za kripto i uvijek prati kripto industriju.

Više od Jeromea Davidsona

Pretplatite se na naše obavijesti

Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e -knjige i ekskluzivne ponude!

Kliknite ovdje za pretplatu