Tip:
Highlight text to annotate it
X
[Powered by Google Translate] [Linear Search]
[Patrick Schmid, Harvard University]
[Ito ba CS50.] [CS50.TV]
Paghahanap ay isang bagay na malamang mas madalas kaysa sa tingin mo.
Malinaw naman, sa tuwing binuksan mo ang up ng isang web browser
at sa paghahanap para sa isang web page -
o paghahanap para sa iyong mga kaibigan sa iyong mga paboritong social networking site -
na iyong hinahanap.
Ngunit iyon lamang ng isang maliit na bahagi ng paghahanap na ginawa mo sa isang pang-araw-araw na batayan.
Kapag gusto mong makita na ang isang asul na shirt sa closet,
o na perpekto pulang blusa para sa okasyon,
naghahanap ka.
Kapag pumunta ka sa isang tindahan na hindi mo pa bago,
at iyong hinahanap para sa brokuli sa pasilyo ng ani
naghahanap ka.
Ano ang maaari mong Sinimulan na mapansin
ay ang depende sa kung ano ang iyong hinahanap para sa
o kung paano ang mga item ay isinaayos kapag tumitingin ka para sa kanila
ito ay may epekto sa kung paano mo maghanap.
Halimbawa, kung ang iyong mga kamiseta ay nagha-hang sa closet,
maaari mong marahil lamang pumili ito walang gaanong paghahanap.
Kung ikaw ay ipagpalagay na mayroon kang maglakad sa pasilyo
upang makakuha ng brokuli, marahil upang tumingin sa lahat ng iba pang mga gulay
bago mahanap ka na brokuli.
Linear Search ay isang halimbawa ng isang tulad paraan ng paghahanap - o algorithm.
Ng pangalan nagpapahiwatig,
ang pamamaraang ito ay naghahanap para sa isang item sa isang linear fashion, isa pagkatapos ng isa.
Kaya, kapag tinitingnan mo ang mga resulta mula sa iyong mga paboritong search engine
at basahin mo ang listahan ng mga resulta,
ikaw ay gumagamit ng linear paghahanap.
Okay. Tingnan natin ang isang halimbawa.
Sabihin nating mayroon kami ng isang listahan ng mga numero - 2, 4, 0, 5, 3, 7, 8, at 1 -
at kami ay naghahanap para sa bilang 0.
Malinaw naman, maaari mo lamang makita na ang 0 sa ikatlong posisyon.
Subalit, ang isang computer program ay hindi na masuwerte.
Maaari lamang ito "tingnan" o isang numero sa isang pagkakataon.
Kaya, simula sa simula ng listahan,
lamang ito "nakikita" sa 2.
Ang programa pagkatapos ay sumusuri - ay 2 katumbas ng 0?
Malinaw na hindi. Kaya ito napupunta sa sa susunod na numero, 4.
Sinusuportahan ba ng 4 na katumbas ng 0? Nope.
Ang susunod na isa, 0. Ah! Zero ay katumbas ng 0.
Doon ay may namin ito! Sa pangatlong posisyon.
Okay. Tingnan natin sa ilang pseudocode.
Ito ay lamang ng ilang mga linya sa mahaba, ngunit tingnan natin ito sa isang linya sa isang pagkakataon.
Una, sabihin tukuyin ang pag-andar - at kami ay pagpunta upang tumawag linear paghahanap -
at ito ay tumatagal ng dalawang argumento - key at array.
Ang susi ay ang halaga na iyon na kaming naghahanap ng mga,
ito sa nakaraang halimbawa, na sa zero.
Array ay isang listahan ng mga numero
na may lahat ng mga halaga na kami ay pagpunta upang maghanap.
Kaya, kung ano ang gusto naming gawin ay nais namin upang tumingin sa -
mula sa lahat ng mga posisyon, kaya simula sa pinakadulo simula ng array
til sa dulo ng array - kaya ang haba ng array -
tumingin sa bawat solong posisyon at suriin ang bawat isa.
Kaya na ng kung ano na ang "para sa" loop ay ginagawa.
At sa bawat posisyon, kami ay pagpunta sa sabihin
"Ba na halaga na kasalukuyang posisyon katumbas sa key na kaming naghahanap para sa?"
Kaya - muli sa nakaraang halimbawa, key ay 0 -
kaya ang sinasabi namin "Ang array sa posisyon na kasing-halaga i sa zero?"
Kung ito ay, kami ay upang bumalik ang 'i' dahil na ang kasalukuyang posisyon kami sa.
Kaya, sa nakaraang halimbawa,
na ang pangatlong posisyon.
Kung namin ang nawala sa pamamagitan ng buong array
at hindi namin nahanap ang anumang -
kaya sabihin nating kami ay naghahanap para sa bilang 500
na malinaw na ay hindi na halimbawa -
mayroon kaming upang magbalik ng bagay,
at kami ay pagpunta upang bumalik -1.
At lang kami bumabalik -1 dahil na ang isang posisyon
na hindi umiiral sa array.
At kaya na ibig sabihin nito ay kapag kang makakuha ng ito pabalik mula sa isang function
sinasabi nito na "Hmm, okay. hulaan ko hindi ko mahanap anumang.
Upang ang 500 hindi kailanman ay naroon. "
Ang magaling na bagay tungkol sa linear paghahanap ay na
ito gumagana sa anumang listahan ng mga item,
hindi alintana ng kung paano ang mga item ay order.
Hindi mahalaga kung saan ang brokuli sa pasilyo ani.
Hangga't kang maglakad sa pasilyo mula sa simula hanggang sa dulo,
ka sumunod upang hanapin ito,
ipagpalagay sa tindahan ay hindi maubusan ng brokuli, siyempre.
Ngunit ito ay pinakadakilang lakas ay din ito ng pinakamalaking kahinaan.
Sabihin nating mayroon kang isang listahan ng dalawang daang numero
na pinagsunod-sunod mula 1 sa 200.
Kung naghahanap ka para sa bilang 198,
mayroon kang upang maghanap halos ang buong listahan ng mga numero
bago mahanap mo ang isa na iyong hinahanap.
Ay dapat na maging isang mas mahusay na paraan!
Maging panatag may.
Ngunit, na ang isang paksa para sa isa pang video.
Gayundin, huwag mabugnot!
Dahil lang sa linear paghahanap ay hindi ang pinakamahusay na solusyon sa lahat ng mga sitwasyon,
hindi ito nangangahulugan na hindi ito ay sa madaling-gamiting.
Kung hindi man, kung paano mo mahanap na brokuli sa pasilyo ani?
Ang pangalan ko ay Patrick Schmid, at ito ay CS50.
[CS50.TV]