Tip:
Highlight text to annotate it
X
[Powered by Google Translate] [Cautare Linear]
[Patrick Schmid, Universitatea Harvard]
[This Is CS50.] [CS50.TV]
Căutarea este ceva ce, probabil, nu mai des decat crezi.
Evident, de fiecare dată când deschideți un browser web
și căutați pentru o pagină Web -
sau căutați pentru prietenii tăi de pe site-ul dvs. preferat de social networking -
cautat.
Dar asta e doar o mică parte din cautarea pe care le faci pe o bază de zi cu zi.
Când doriți să găsiți că o cămașă albastră în dulap,
sau că bluza perfecta roșu pentru ocazie,
căutați.
Când te duci la un magazin care nu ai mai fost niciodata,
și sunteți în căutarea pentru broccoli în culoar produsului
căutați.
Ceea ce s-ar putea au început să observe
este faptul că, în funcție de ceea ce căutați pentru
sau modul în care elementele sunt organizate atunci când sunteți în căutarea pentru ei
aceasta are un efect asupra modul în care căutați.
De exemplu, în cazul în tricouri tale sunt agățat în dulap,
puteți alege, probabil, doar o fără prea căutarea.
Dacă sunteți presupunând că va trebui să meargă în jos pe culoar
pentru a obține broccoli, probabil trebuie sa te uiti la toate alte legume
înainte de a vă găsi că broccoli.
Căutare liniară este un exemplu de o metodă de cautare, *** ar - sau algoritm.
După *** sugerează și numele,
această metodă caută un element într-un mod liniar, unul după altul.
Deci, atunci când sunteți în căutarea la rezultatele din motorul de căutare preferat
și ai citit în jos lista de rezultate,
utilizați căutare liniară.
Bine. Să ne uităm la un exemplu.
Spune ca avem o listă de numere - 2, 4, 0, 5, 3, 7, 8, și 1 -
și noi suntem în căutarea pentru 0 număr.
Evident, puteți vedea doar că 0 este în poziția a treia.
Dar, un program de calculator nu este faptul că norocos.
Se poate "vedea" doar un singur număr, la un moment dat.
Deci, începând de la începutul listei,
doar "vede" 2.
Programul apoi verifică - este de 2 egal cu 0?
Evident, nu. Deci, merge pe următorul număr, 4.
Are 4 0 egale? Nope.
Următoarea, 0. Ah! Zero este egal cu 0.
Nu l-am avea! E în poziția a treia.
Bine. Să ne uităm la câteva pseudocod.
E doar o pereche de linii lungi, dar să ne uităm la ea o linie la un moment dat.
În primul rând, haideți să definim funcția - și vom numi căutare liniară -
și este nevoie de două argumente - cheie și matrice.
Cheia este ca valoarea pe care o căutăm,
astfel încât în exemplul anterior, care a fost zero.
O matrice este o listă de numere
care are toate valorile pe care le vom căuta.
Deci, ceea ce dorim să facem este vrem sa se uite la -
din toate pozițiile, astfel încât începând de la începutul matrice
til sfârșitul foarte de matrice - atât de lungimea de matrice -
uita-te la fiecare poziție unică și să verificați fiecare.
Deci, asta este ceea ce că "pentru" buclă face.
Și la fiecare poziție, vom spune
"Este ca valoarea la care poziția curentă egal cu cheia pe care-l căutăm?"
Deci, - în exemplul anterior, din nou, cheia a fost de 0 -
deci spunem "Este matrice la pozitia i egal cu zero?"
Dacă este, ne vom reveni "i", pentru că asta e poziția curentă suntem la.
Deci, în exemplul anterior,
care a fost poziția a treia.
Dacă am trecut prin matrice întregul
si nu am gasit nimic -
așa că hai să spun că am fost în căutarea pentru numărul 500
care în mod clar nu a fost în acest exemplu -
trebuie să ne întoarcem ceva,
și am de gând să se întoarcă -1.
Și ne intoarcem doar -1, deoarece aceasta este o poziție
care nu există în matrice.
Și asta înseamnă atunci când luați înapoi de la o funcție
se spune "Hmm, bine. Cred că nu am găsit nimic.
Așa că nu a fost acolo 500. "
Cel mai frumos lucru despre căutare liniară este faptul că
va funcționa pe orice listă de articole,
indiferent de modul în care elementele sunt ordonate.
Nu contează în cazul în care broccoli este în culoar produsului.
Atâta timp cât vă merge în jos pe culoar de la început până la sfârșit,
sunteți obligat să-l găsiți,
presupunând că magazinul nu a alerga afară de broccoli, desigur.
Dar puterea cea mai mare este, de asemenea, este cea mai mare slăbiciune este.
Să presupunem că aveți o listă de două sute de numere
care sunt sortate 1 la 200.
Dacă sunteți în căutarea pentru numărul 198,
va trebui să căutați aproape intreaga lista de numere
înainte de a găsi unul pe care îl căutați pentru.
Trebuie să existe o cale mai bună!
Siguri există.
Dar, asta e un subiect pentru un alt videoclip.
De asemenea, nu se agita!
Doar pentru că căutare liniară nu este cea mai bună soluție, în toate situațiile,
aceasta nu înseamnă că ea nu vine la îndemână.
În caz contrar, *** ar găsi că broccoli în culoar produsului?
Numele meu este Patrick Schmid, iar acest lucru este CS50.
[CS50.TV]