1 00:00:00,000 --> 00:00:09,560 2 00:00:09,560 --> 00:00:13,120 >> ZAMYLA Chan: Y peth cyntaf y byddwch efallai rhybudd am ddarganfyddiad yw ein bod eisoes 3 00:00:13,120 --> 00:00:14,520 wedi cod a ysgrifennwyd ar ein cyfer. 4 00:00:14,520 --> 00:00:16,219 Gelwir hyn yn cod dosbarthu. 5 00:00:16,219 --> 00:00:19,060 Felly, nid ydym yn unig yn ysgrifennu ein hunain cod o'r dechrau anymore. 6 00:00:19,060 --> 00:00:23,870 Yn hytrach, rydym yn llenwi'r unedau gwag mewn rhai cod sydd eisoes yn bodoli. 7 00:00:23,870 --> 00:00:28,860 >> Mae'r rhaglen find.c awgrymiadau ar gyfer rhifau i lenwi'r das wair, chwilio'r 8 00:00:28,860 --> 00:00:33,260 tas wair am nodwydd defnyddiwr a gyflwynwyd, ac mae'n gwneud hyn drwy ffonio didoli a 9 00:00:33,260 --> 00:00:36,660 chwilio, swyddogaethau a ddiffinnir yn helpers.c. 10 00:00:36,660 --> 00:00:38,740 Felly find.c ei ysgrifennu yn barod. 11 00:00:38,740 --> 00:00:41,840 Eich gwaith chi yw ysgrifennu gynorthwywyr. 12 00:00:41,840 --> 00:00:42,940 >> Felly beth ydyn ni'n ei wneud? 13 00:00:42,940 --> 00:00:45,270 Rydym yn gweithredu dwy swyddogaeth. 14 00:00:45,270 --> 00:00:50,110 Chwilio, sy'n dychwelyd wir os yw gwerth i'w gael yn y tas wair, gan ddychwelyd 15 00:00:50,110 --> 00:00:52,430 ffug os yw'r gwerth yn nid yn y tas wair. 16 00:00:52,430 --> 00:00:59,060 Ac yna rydym hefyd yn gweithredu math, sy'n didoli'r amrywiaeth a elwir gwerthoedd. 17 00:00:59,060 --> 00:01:01,120 Felly, gadewch i ni fynd i'r afael â chwilio. 18 00:01:01,120 --> 00:01:04,550 >> Chwilio yn cael ei weithredu ar hyn o bryd fel chwiliad llinol. 19 00:01:04,550 --> 00:01:06,620 Ond gallwch wneud llawer yn well na hynny. 20 00:01:06,620 --> 00:01:11,610 Chwiliad llinol yn cael ei weithredu mewn O n amser, sy'n eithaf araf, er ei fod yn 21 00:01:11,610 --> 00:01:14,920 gallu chwilio unrhyw restr a roddir iddo. 22 00:01:14,920 --> 00:01:21,190 Eich swydd yw gweithredu chwiliad deuaidd, sydd wedi rhedeg amser O o log n. 23 00:01:21,190 --> 00:01:22,200 Dyna 'n bert gyflym. 24 00:01:22,200 --> 00:01:24,240 >> Ond mae amod. 25 00:01:24,240 --> 00:01:28,910 Gall chwiliad deuaidd yn unig chwilio drwy restrau cyn ei ddidoli. 26 00:01:28,910 --> 00:01:31,450 Pam hynny? 27 00:01:31,450 --> 00:01:33,690 Wel, gadewch i ni edrych ar enghraifft. 28 00:01:33,690 --> 00:01:37,350 O ystyried amrywiaeth o werthoedd, y das wair, rydym yn mynd i fod yn edrych 29 00:01:37,350 --> 00:01:41,510 am nodwydd, ac yn yr enghraifft, mae'r cyfanrif 3. 30 00:01:41,510 --> 00:01:45,220 >> Mae'r ffordd y chwiliad deuaidd yn gweithio yw bod rydym yn cymharu gwerth canol 31 00:01:45,220 --> 00:01:49,430 yr amrywiaeth i'r nodwydd, yn debyg iawn i sut y rydym yn agor llyfr ffôn i ganol 32 00:01:49,430 --> 00:01:51,720 dudalen yn Wythnos 0. 33 00:01:51,720 --> 00:01:55,710 Felly, ar ôl cymharu gwerth canol i y nodwydd, gallwch daflu naill ai'r 34 00:01:55,710 --> 00:01:59,620 chwith neu i'r dde hanner y rhesi drwy dynhau eich ffiniau. 35 00:01:59,620 --> 00:02:04,450 Yn yr achos hwn, gan fod 3, ein nodwydd, yn llai na 10, mae'r gwerth canol, y 36 00:02:04,450 --> 00:02:07,060 Gall dde rhwymo lleihau. 37 00:02:07,060 --> 00:02:09,470 >> Ond ceisiwch wneud eich ffiniau mor dynn ag y bo modd. 38 00:02:09,470 --> 00:02:12,690 Os nad yw'r gwerth canol yn y nodwydd, yna rydych yn gwybod nad oes angen i chi wneud 39 00:02:12,690 --> 00:02:14,070 gynnwys yn eich chwiliad. 40 00:02:14,070 --> 00:02:18,390 Fel y gall eich hawl rwymo dynhau'r chwilio terfynau dim ond ychydig bach yn fwy, 41 00:02:18,390 --> 00:02:22,840 ac yn y blaen ac yn y blaen, hyd nes y i chi ddod o hyd i'ch nodwydd. 42 00:02:22,840 --> 00:02:24,580 >> Felly beth mae'r ffug Cod yn edrych? 43 00:02:24,580 --> 00:02:28,980 Wel, er ein bod yn dal i yn chwilio drwy y rhestr ac yn dal i gael 44 00:02:28,980 --> 00:02:33,540 elfennau i edrych i mewn, rydym yn cymryd y canol y rhestr a chymharu hynny 45 00:02:33,540 --> 00:02:36,020 gwerth canolog i'n nodwydd. 46 00:02:36,020 --> 00:02:38,380 Os ydynt yn gyfartal, yna mae hynny'n golygu ein bod i wedi dod o hyd i'r nodwydd, a gallwn 47 00:02:38,380 --> 00:02:40,160 dychwelyd yn wir. 48 00:02:40,160 --> 00:02:43,940 >> Fel arall, os bydd y nodwydd yn llai na gwerth canol, yna mae hynny'n golygu ein 49 00:02:43,940 --> 00:02:48,350 Gall daflu hanner cywir ac ychydig chwilio'r ochr chwith y rhesi. 50 00:02:48,350 --> 00:02:51,860 Fel arall, byddwn yn chwilio'r ochr dde y rhesi. 51 00:02:51,860 --> 00:02:55,470 Ac ar y diwedd, os nad oes gennych unrhyw i chi mwy o elfennau i'r chwith i chwilio ond 52 00:02:55,470 --> 00:02:58,030 nad ydynt wedi dod o hyd i'ch nodwydd eto, Yna byddwch yn dychwelyd ffug. 53 00:02:58,030 --> 00:03:02,960 Oherwydd bod y nodwydd yn bendant nid yw yn y tas wair. 54 00:03:02,960 --> 00:03:06,200 >> Yn awr, un peth daclus am ffug hwn cod i chwilio deuaidd yw y gall 55 00:03:06,200 --> 00:03:11,000 yn cael ei ddehongli fel naill ai ailadroddol neu weithredu ailadroddus. 56 00:03:11,000 --> 00:03:14,900 Felly byddai'n recursive os ydych yn galw y swyddogaeth chwilio o fewn y chwiliad 57 00:03:14,900 --> 00:03:18,400 gweithredu ar y naill hanner y rhesi. 58 00:03:18,400 --> 00:03:20,750 Byddwn yn ymdrin recursion ychydig ddiweddarach yn y cwrs. 59 00:03:20,750 --> 00:03:23,210 Ond ddim yn gwybod ei fod yn opsiwn os hoffech roi cynnig arnynt. 60 00:03:23,210 --> 00:03:24,460