ZAMYLA Chan: Ang unang bagay na maaari mong paunawa tungkol sa find ay na namin na na-code na isinulat para sa amin. Ito ay tinatawag na code sa pamamahagi. Kaya hindi lang kami ay sumusulat ating sariling code mula sa simula ngayon. Sa halip, kami ay pagpuno sa voids sa ilang mga pre-umiiral na code. Ang programa ng find.c prompt para sa mga numero ng upang punan ang mandala ng dayami, ang mga paghahanap ang mandala ng dayami para sa isang isinumite ng gumagamit karayom, at gagawin nito ito sa pamamagitan ng pagtawag uri at paghahanap, mga pag-andar na tinukoy sa helpers.c. Kaya find.c ay nakasulat na. Ang iyong trabaho ay sumulat ng Katulong. Kaya kung ano ang ginagawa namin? Kami ay pagpapatupad ng dalawang mga pag-andar. Paghahanap, na nagbabalik totoo kung ang isang halaga ay natagpuan sa mandala ng dayami, bumabalik hindi totoo kung ang halaga ay wala sa mandala ng dayami. At pagkatapos kami ay pagpapatupad ring uri, aling uri ang array na tinatawag na mga halaga. Kaya pagharap sa isang bagay ng paghahanap ipaalam. Search ay kasalukuyang ipinapatupad bilang isang linear paghahanap. Ngunit maaari mong gawin magkano ang mas mahusay kaysa sa na. De-sa paghahanap ay ipinapatupad sa Oh ng n oras, na kung saan ay masyadong mabagal, kahit na ito Maaaring maghanap anumang ibinigay na listahan dito. Ang iyong trabaho ay ang ipatupad ang binary paghahanap, kung saan tumakbo na oras O ng log n. Iyon ay medyo mabilis. Subalit mayroong isang tadhana. Maaari lamang maghanap ng binary paghahanap sa pamamagitan ng pre-pinagsunod-sunod ng mga listahan. Bakit na? Well, tingnan natin ang isang halimbawa ipaalam. Given isang array ng mga halaga, ang mandala ng dayami, kami ay pagpunta sa tumitingin para sa isang karayom, at sa ganitong Halimbawa, ang integer 3. Ang paraan na gumagana ang binary paghahanap ay na ihambing namin ang gitnang halaga ng ang array sa karayom, halos tulad ng kung paano binuksan namin ang isang libro ng telepono sa gitna pahina sa Linggo 0. Kaya pagkatapos ng paghahambing sa gitna ng halaga sa ang karayom, maaari mong itapon ang alinman sa kaliwa o kanan kalahati ng array sa pamamagitan ng apreta ang iyong mga hanggahan. Sa kasong ito, dahil 3, ang aming karayom, ay mas mababa sa 10, sa gitna halaga, ang maaaring bumaba karapatan tumalbog. Ngunit subukan upang gawin ang iyong mga hanggahan bilang masikip hangga't maaari. Kung sa gitna halaga ay hindi ang karayom, pagkatapos ay alam mo na hindi mo kailangang isama ito sa iyong paghahanap. Kaya masaklawan ang iyong karapatan Maaari higpitan ang hanggahan sa paghahanap lamang ng isang maliit na maliit bit higit pa, at iba pa at iba pa, hanggang sa mo mahanap ang iyong mga karayom. Kaya ano ang ginagawa ng palsipikado code ganito ang hitsura? Well, habang kami ay pa rin ng pagtingin sa ang listahan at mayroon pa rin elemento upang tumingin sa, tumagal kami sa gitna ng mga listahan at ihambing na gitna ng halaga sa aming mga karayom. Kung hindi nila ito katumbas, pagkatapos ay nangangahulugan na hindi namin natagpuan ang karayom, at kaya namin nagbabalik ng tunay. Kung hindi man, kung ang karayom ​​ay mas mababa sa sa gitna halaga, pagkatapos ito ay nangangahulugan na namin Maaari itapon ang mga karapatan at kalahati lamang maghanap sa kaliwang bahagi ng array. Kung hindi man, gagamitin namin maghanap sa kanang bahagi ng array. At sa dulo, kung wala kang anumang higit pang mga elemento sa kaliwa upang maghanap ngunit ikaw hindi pa natagpuan ang iyong mga karayom, pagkatapos ay bumalik ka ng hindi totoo. Dahil ang mga karayom ​​Talagang ay wala sa mandala ng dayami. Ngayon, isa kapong baka bagay tungkol sa ito palsipikado code sa binary paghahanap ay na kaya nito mangahulugan bilang alinman sa isang umuulit o recursive pagpapatupad. Kaya magiging recursive kung tinatawag mo ang pag-andar ng paghahanap sa loob ang paghahanap gumana sa alinman sa kalahati ng array. Magpapadala kami ng kaunti masakop ang recursion mamaya sa kurso. Ngunit alam na ito ay isang opsyon kung nais mong subukan.