1 00:00:00,000 --> 00:00:08,532 >> [Music kucheza] 2 00:00:08,532 --> 00:00:12,060 >> ZAMYLA CHAN: Jambo la kwanza nguvu ilani kuhusu kupata ni kwamba tayari 3 00:00:12,060 --> 00:00:13,450 kuwa kanuni zilizoandikwa kwa ajili yetu. 4 00:00:13,450 --> 00:00:15,160 Hii inaitwa usambazaji code. 5 00:00:15,160 --> 00:00:18,000 Hivyo sisi siyo tu kuandika yetu wenyewe kanuni kutoka mwanzo tena. 6 00:00:18,000 --> 00:00:22,800 Badala yake, sisi ni kujaza katika voids katika baadhi ya kanuni kabla ya zilizopo. 7 00:00:22,800 --> 00:00:27,790 >> mpango find.c papo kwa idadi kujaza haystack, utafutaji 8 00:00:27,790 --> 00:00:32,189 haystack kwa mtumiaji in sindano, na haina kwa kuita aina na 9 00:00:32,189 --> 00:00:35,590 search, kazi inavyoelezwa katika helpers.c. 10 00:00:35,590 --> 00:00:37,670 Hivyo find.c imeandikwa tayari. 11 00:00:37,670 --> 00:00:40,770 Kazi yako ni kuandika kuwanusuru. 12 00:00:40,770 --> 00:00:41,870 >> Basi ni nini sisi kufanya? 13 00:00:41,870 --> 00:00:44,210 Sisi ni utekelezaji wa kazi mbili. 14 00:00:44,210 --> 00:00:49,030 Search, ambayo anarudi kweli kama thamani hupatikana katika haystack, kurudi 15 00:00:49,030 --> 00:00:51,370 uongo kama thamani ni si katika haystack. 16 00:00:51,370 --> 00:00:57,990 Na kisha sisi ni pia kutekeleza aina ambayo aina safu kuitwa maadili. 17 00:00:57,990 --> 00:00:59,960 >> Basi hebu kukabiliana na search. 18 00:00:59,960 --> 00:01:04,560 Search kwa sasa ni kutekelezwa kama search linear, lakini unaweza kufanya mengi 19 00:01:04,560 --> 00:01:05,550 bora kuliko hiyo. 20 00:01:05,550 --> 00:01:09,910 Search linear unatekelezwa katika O ya n wakati, ambayo ni polepole kabisa. 21 00:01:09,910 --> 00:01:13,850 Pamoja na kwamba, unaweza kutafuta orodha wowote yake. 22 00:01:13,850 --> 00:01:20,130 Kazi yako ni kutekeleza search binary, ambayo ina kukimbia wakati O logi n. 23 00:01:20,130 --> 00:01:21,130 Hiyo ni pretty haraka. 24 00:01:21,130 --> 00:01:23,170 >> Lakini kuna ahadi. 25 00:01:23,170 --> 00:01:27,600 Search kisha unaweza tu kutafuta kwa njia ya orodha kabla ya yamepangwa. 26 00:01:27,600 --> 00:01:30,370 Kwa nini ni kwamba? 27 00:01:30,370 --> 00:01:32,620 >> Naam hebu tuangalie mfano. 28 00:01:32,620 --> 00:01:36,280 Kutokana na safu ya maadili, haystack, tunakwenda kuwa na kuangalia 29 00:01:36,280 --> 00:01:37,130 kwa sindano. 30 00:01:37,130 --> 00:01:40,460 Na katika mfano huu, integer tatu. 31 00:01:40,460 --> 00:01:44,130 njia ambayo search binary kazi ni kuwa sisi kulinganisha thamani katikati ya 32 00:01:44,130 --> 00:01:48,370 safu ya sindano, kama ilivyo kwa jinsi sisi kufunguliwa phonebook katikati 33 00:01:48,370 --> 00:01:50,660 ukurasa katika wiki sifuri. 34 00:01:50,660 --> 00:01:54,650 >> Hivyo, baada ya kulinganisha thamani ya katikati ya sindano, unaweza kuondokana na ama 35 00:01:54,650 --> 00:01:58,530 upande wa kushoto au nusu wa kulia wa safu na inaimarisha mipaka yako. 36 00:01:58,530 --> 00:02:03,390 Katika kesi hiyo, tangu tatu, sindano yetu, ni chini ya 10, thamani ya kati, 37 00:02:03,390 --> 00:02:05,990 haki amefungwa unaweza kupungua. 38 00:02:05,990 --> 00:02:08,400 Lakini kujaribu kufanya mipaka yako kama tight kama iwezekanavyo. 39 00:02:08,400 --> 00:02:11,630 Kama thamani katikati ni si sindano, kisha unajua kwamba hawana haja ya 40 00:02:11,630 --> 00:02:13,010 ni pamoja na katika utafutaji wako. 41 00:02:13,010 --> 00:02:17,310 Basi, wewe ni haki amefungwa unaweza kaza mipaka search tu kidogo kidogo zaidi, 42 00:02:17,310 --> 00:02:21,770 na kadhalika na kadhalika mpaka kupata sindano yako. 43 00:02:21,770 --> 00:02:23,480 >> Basi ni nini pseudocode kuangalia kama? 44 00:02:23,480 --> 00:02:28,420 Vizuri wakati bado tuko kutafuta njia ya orodha na bado na mambo ya 45 00:02:28,420 --> 00:02:33,690 kuangalia katika, sisi kuchukua katikati ya orodha, na kulinganisha kwamba thamani katikati ya 46 00:02:33,690 --> 00:02:34,950 sindano yetu. 47 00:02:34,950 --> 00:02:37,310 Kama uko sawa, basi hiyo ina maana tumekuwa kupatikana sindano na tunaweza 48 00:02:37,310 --> 00:02:38,990 kurudi kweli. 49 00:02:38,990 --> 00:02:42,870 >> Vinginevyo, kama sindano ni chini ya thamani katikati, basi hiyo ina maana sisi 50 00:02:42,870 --> 00:02:47,280 unaweza kuondokana na nusu ya haki, na tu kutafuta upande wa kushoto wa safu. 51 00:02:47,280 --> 00:02:51,090 Vinginevyo, tutaweza kutafuta upande wa safu ya haki. 52 00:02:51,090 --> 00:02:54,410 Na mwisho, kama wewe huna lolote mambo zaidi wa kushoto na kutafuta lakini 53 00:02:54,410 --> 00:02:58,050 sikuona sindano yako bado, basi kurudi uongo kwa sababu sindano 54 00:02:58,050 --> 00:03:01,890 dhahiri si katika haystack. 55 00:03:01,890 --> 00:03:05,270 >> Sasa jambo nadhifu kuhusu pseudocode hii katika kutafuta binary ni kwamba inaweza kuwa 56 00:03:05,270 --> 00:03:09,940 kufasiriwa kama ama iterative au utekelezaji kujirudia. 57 00:03:09,940 --> 00:03:13,810 Hivyo itakuwa kujirudia kama wewe kuitwa kutafuta kazi ndani ya search 58 00:03:13,810 --> 00:03:17,350 kazi ama nusu ya safu. 59 00:03:17,350 --> 00:03:21,030 Tutaweza cover kujirudia kidogo baadaye katika Bila shaka, lakini tunajua kwamba ni 60 00:03:21,030 --> 00:03:24,190 chaguo kama Ningependa kujaribu. 61 00:03:24,190 --> 00:03:26,030 >> Sasa hebu tuangalie aina. 62 00:03:26,030 --> 00:03:30,750 Aina inachukua safu na integer n, ambayo ni ya kawaida ya safu. 63 00:03:30,750 --> 00:03:34,030 Sasa kuna aina mbalimbali tofauti wa kila aina, na unaweza kuangalia baadhi 64 00:03:34,030 --> 00:03:36,370 kaptula kwa demos na maelezo. 65 00:03:36,370 --> 00:03:39,580 kurudi aina kwa ajili yetu aina ya kazi ni batili. 66 00:03:39,580 --> 00:03:43,580 Hivyo hiyo ina maana kwamba sisi siyo kwenda kurudi safu yoyote kutoka aina. 67 00:03:43,580 --> 00:03:48,140 Sisi ni kweli kwenda na mabadiliko sana safu kwamba ilipitishwa ndani yetu. 68 00:03:48,140 --> 00:03:52,290 >> Na kwamba inawezekana kwa sababu arrays ni kupita kwa kumbukumbu katika C. Sasa tutaweza 69 00:03:52,290 --> 00:03:55,290 kuona zaidi kuhusu hili baadaye, lakini tofauti muhimu kati ya kupita 70 00:03:55,290 --> 00:03:59,340 katika kitu kama integer na kupita katika safu, ni kwamba wakati 71 00:03:59,340 --> 00:04:03,490 kupita katika integer, C ni kwenda tu kufanya nakala ya kwamba integer na kupita 72 00:04:03,490 --> 00:04:04,450 kwa kazi. 73 00:04:04,450 --> 00:04:08,530 awali variable haitabadilika mara moja kazi ni kumaliza. 74 00:04:08,530 --> 00:04:12,480 Na safu, kwa upande mwingine, ni si kwenda kufanya nakala, na wewe utakuwa 75 00:04:12,480 --> 00:04:17,910 kweli kuwa editing sana safu yenyewe. 76 00:04:17,910 --> 00:04:21,269 >> Hivyo aina moja ya aina ni uteuzi aina. 77 00:04:21,269 --> 00:04:24,750 aina uteuzi kazi kwa kuanzia saa mwanzo, na kisha iterate 78 00:04:24,750 --> 00:04:26,820 juu ya kupata na hiki ndogo. 79 00:04:26,820 --> 00:04:30,710 Na kisha kubadilishana kwamba ndogo hiki kwa moja kwanza. 80 00:04:30,710 --> 00:04:34,360 Na kisha hoja ya hiki pili , Kupata ijayo ndogo 81 00:04:34,360 --> 00:04:38,320 hiki, na kisha kubadilishana kwamba pamoja na hiki pili katika safu kwa sababu 82 00:04:38,320 --> 00:04:41,100 hiki kwanza tayari yamepangwa. 83 00:04:41,100 --> 00:04:45,370 Na hivyo basi kuendelea kwa kila hiki katika kutambua ndogo 84 00:04:45,370 --> 00:04:47,690 thamani na swapping nje. 85 00:04:47,690 --> 00:04:53,460 >> Kwa maana Mimi ni sawa na 0, hiki kwanza sana kwa n minus 1, wewe ni kwenda kulinganisha 86 00:04:53,460 --> 00:04:57,820 kila thamani ya pili baada ya kuwa na kupata index ya thamani ya chini. 87 00:04:57,820 --> 00:05:02,520 Mara baada ya kupata thamani ya chini index, unaweza kubadilishana kwamba thamani ya safu 88 00:05:02,520 --> 00:05:05,930 kiwango cha chini na safu I. 89 00:05:05,930 --> 00:05:09,760 >> Aina nyingine ya aina hiyo unaweza kutekeleza ni Bubble aina. 90 00:05:09,760 --> 00:05:14,380 Hivyo Bubble aina iterates juu ya orodha kulinganisha mambo karibu na 91 00:05:14,380 --> 00:05:17,720 swapping mambo ambayo ni ili sahihi. 92 00:05:17,720 --> 00:05:22,380 Na kwa njia hii, hiki kubwa mapenzi Bubble hadi mwisho. 93 00:05:22,380 --> 00:05:28,070 Na orodha ni vyema mara moja hakuna zaidi mambo wamekuwa walibadilishana. 94 00:05:28,070 --> 00:05:31,920 >> Hivyo wale ni mifano miwili ya aina algorithms kwamba unaweza kutekeleza kwa 95 00:05:31,920 --> 00:05:33,230 kupata mpango. 96 00:05:33,230 --> 00:05:37,350 Mara baada ya kumaliza aina, na wameweza kufanyika search, wewe ni kumaliza. 97 00:05:37,350 --> 00:05:39,720 Jina langu ni Zamyla, na hii ni CS50. 98 00:05:39,720 --> 00:05:46,987 >> [Music kucheza]