1 00:00:00,000 --> 00:00:09,560 2 00:00:09,560 --> 00:00:13,120 >> ZAMYLA CHAN: The fyrstur hlutur þú might tilkynning um að finna er að við nú þegar 3 00:00:13,120 --> 00:00:14,520 hafa númerið skrifað fyrir okkur. 4 00:00:14,520 --> 00:00:16,219 Þetta er kallað dreifing númer. 5 00:00:16,219 --> 00:00:19,060 Þannig að við erum ekki bara að skrifa okkar eigin kóða frá grunni aftur. 6 00:00:19,060 --> 00:00:23,870 Frekar erum við að fylla í tóm í sumum fyrirliggjandi kóða. 7 00:00:23,870 --> 00:00:28,860 >> The find.c program hvetja til tölur að fylla Heysátan, leitar í 8 00:00:28,860 --> 00:00:33,260 Heysátan fyrir notanda lögð nál, og það gerir þetta með því að kalla tagi og 9 00:00:33,260 --> 00:00:36,660 leit, aðgerðir skilgreindar í helpers.c. 10 00:00:36,660 --> 00:00:38,740 Svo find.c er skrifað nú þegar. 11 00:00:38,740 --> 00:00:41,840 Starf þitt er að skrifa framreiðslu. 12 00:00:41,840 --> 00:00:42,940 >> Og hvað erum við að gera? 13 00:00:42,940 --> 00:00:45,270 Við erum að innleiða tvær aðgerðir. 14 00:00:45,270 --> 00:00:50,110 Leit, sem skilar true ef gildi er að finna í Heysátan, aftur 15 00:00:50,110 --> 00:00:52,430 false ef gildið er ekki í Heysátan. 16 00:00:52,430 --> 00:00:59,060 Og þá erum við líka að innleiða konar, Hvaða tegund array sem heitir gildi. 17 00:00:59,060 --> 00:01:01,120 Svo skulum takast leit. 18 00:01:01,120 --> 00:01:04,550 >> Leit er nú útfærð sem línuleg leit. 19 00:01:04,550 --> 00:01:06,620 En þú getur gert miklu betur en það. 20 00:01:06,620 --> 00:01:11,610 Línuleg leit er framkvæmd í O á n tími, sem er alveg hægt, þótt það 21 00:01:11,610 --> 00:01:14,920 getur leitað póstlista gefið. 22 00:01:14,920 --> 00:01:21,190 Starf þitt er að innleiða tvöfaldur leit, sem hefur rekið sinn o frá log n. 23 00:01:21,190 --> 00:01:22,200 Það er ansi hratt. 24 00:01:22,200 --> 00:01:24,240 >> En það er áskilnaður. 25 00:01:24,240 --> 00:01:28,910 Tvíundarleit getur aðeins leitað með fyrirfram raðað lista. 26 00:01:28,910 --> 00:01:31,450 Hvers vegna er það? 27 00:01:31,450 --> 00:01:33,690 Jæja, við skulum líta á dæmi. 28 00:01:33,690 --> 00:01:37,350 Fá array af gildum, Heysátan, við erum að fara að horfa 29 00:01:37,350 --> 00:01:41,510 að nál, og í þessu dæmi, heiltölu 3. 30 00:01:41,510 --> 00:01:45,220 >> Leiðin að Tvíundarleit virkar er að við saman á miðju gildi 31 00:01:45,220 --> 00:01:49,430 array nálinni mikið eins og hvernig opnað símaskránni að miðju 32 00:01:49,430 --> 00:01:51,720 síðu í viku 0. 33 00:01:51,720 --> 00:01:55,710 Svo eftir að bera saman miðju gildi til nálina, getur þú henda annaðhvort 34 00:01:55,710 --> 00:01:59,620 vinstri eða hægri helminginn af array með því að herða mörk þín. 35 00:01:59,620 --> 00:02:04,450 Í þessu tilviki, þar sem 3, nál okkar, er minna en 10, miðju gildi, 36 00:02:04,450 --> 00:02:07,060 rétt bundið getur lækkað. 37 00:02:07,060 --> 00:02:09,470 >> En að reyna að gera mörk þínum eins þétt og mögulegt er. 38 00:02:09,470 --> 00:02:12,690 Ef miðju gildið ekki nálina, þá veistu að þú þarft ekki að 39 00:02:12,690 --> 00:02:14,070 fela það í leitinni. 40 00:02:14,070 --> 00:02:18,390 Svo rétt þinn bundið getur herða Leita mörk bara örlítið aðeins meira, 41 00:02:18,390 --> 00:02:22,840 og svo framvegis og svo framvegis, þar til þú finnur nálinni þína. 42 00:02:22,840 --> 00:02:24,580 >> Svo gerir hvað gervi númer líta út? 43 00:02:24,580 --> 00:02:28,980 Jæja, á meðan við erum enn að leita gegnum lista og enn hafa 44 00:02:28,980 --> 00:02:33,540 þættir sem þarf að líta á, að taka við á miðju af listanum og bera það 45 00:02:33,540 --> 00:02:36,020 miðja gildi til nál okkar. 46 00:02:36,020 --> 00:02:38,380 Ef þeir eru jafnir, þá þýðir að við höfum fann nálina, og við getum 47 00:02:38,380 --> 00:02:40,160 return true. 48 00:02:40,160 --> 00:02:43,940 >> Að öðrum kosti, ef nálin er minna en miðju gildi, þá þýðir það að við 49 00:02:43,940 --> 00:02:48,350 getur fleygt hægri helminginn og bara leita á vinstri hlið af the array. 50 00:02:48,350 --> 00:02:51,860 Annars verður við leit að hægra megin í fylkinu. 51 00:02:51,860 --> 00:02:55,470 Og í lok, ef þú ert ekki með neina fleiri þættir vinstri til að leita, en þú 52 00:02:55,470 --> 00:02:58,030 hef ekki fundið nál þína enn, þá þú aftur ósatt. 53 00:02:58,030 --> 00:03:02,960 Því nálin örugglega er ekki í Heysátan. 54 00:03:02,960 --> 00:03:06,200 >> Nú, einn snyrtilegur hlutur óður í this falsaður kóða í tvöfaldur leit er að það getur 55 00:03:06,200 --> 00:03:11,000 að túlka sem annað hvort endurtekningu eða endurkvæma framkvæmd. 56 00:03:11,000 --> 00:03:14,900 Svo það væri endurkvæma ef þú kallaðir leit virka innan leit 57 00:03:14,900 --> 00:03:18,400 virka á hvorum helmingi fylkisins. 58 00:03:18,400 --> 00:03:20,750 Við munum ná endurkvæmni svolítið síðar í námskeiðinu. 59 00:03:20,750 --> 00:03:23,210 En veit að það er möguleiki ef þú vilt reyna. 60 00:03:23,210 --> 00:03:24,460