1 00:00:00,000 --> 00:00:08,532 >> [CHWARAE CERDDORIAETH] 2 00:00:08,532 --> 00:00:12,060 >> ZAMYLA Chan: Y peth cyntaf y byddwch efallai rhybudd am ddarganfyddiad yw ein bod eisoes 3 00:00:12,060 --> 00:00:13,450 wedi cod a ysgrifennwyd ar ein cyfer. 4 00:00:13,450 --> 00:00:15,160 Gelwir hyn yn cod dosbarthu. 5 00:00:15,160 --> 00:00:18,000 Felly, nid ydym yn unig yn ysgrifennu ein hunain cod o'r dechrau anymore. 6 00:00:18,000 --> 00:00:22,800 Yn hytrach, rydym yn llenwi'r unedau gwag mewn rhai cod sydd eisoes yn bodoli. 7 00:00:22,800 --> 00:00:27,790 >> Mae'r rhaglen find.c awgrymiadau ar gyfer rhifau i lenwi'r das wair, chwilio'r 8 00:00:27,790 --> 00:00:32,189 tas wair am nodwydd defnyddiwr a gyflwynwyd, ac mae'n gwneud hyn drwy ffonio didoli a 9 00:00:32,189 --> 00:00:35,590 chwilio, swyddogaethau a ddiffinnir yn helpers.c. 10 00:00:35,590 --> 00:00:37,670 Felly find.c ei ysgrifennu yn barod. 11 00:00:37,670 --> 00:00:40,770 Eich gwaith chi yw ysgrifennu gynorthwywyr. 12 00:00:40,770 --> 00:00:41,870 >> Felly beth ydyn ni'n ei wneud? 13 00:00:41,870 --> 00:00:44,210 Rydym yn gweithredu dwy swyddogaeth. 14 00:00:44,210 --> 00:00:49,030 Chwilio, sy'n dychwelyd wir os yw gwerth i'w gael yn y tas wair, gan ddychwelyd 15 00:00:49,030 --> 00:00:51,370 ffug os yw'r gwerth yn nid yn y tas wair. 16 00:00:51,370 --> 00:00:57,990 Ac yna rydym hefyd yn gweithredu math sy'n didoli'r amrywiaeth a elwir gwerthoedd. 17 00:00:57,990 --> 00:00:59,960 >> Felly, gadewch i ni fynd i'r afael â chwilio. 18 00:00:59,960 --> 00:01:04,560 Chwilio yn cael ei weithredu ar hyn o bryd fel chwiliad llinol, ond gallwch wneud llawer 19 00:01:04,560 --> 00:01:05,550 yn well na hynny. 20 00:01:05,550 --> 00:01:09,910 Chwiliad llinol yn cael ei weithredu yn O o amser n, sy'n eithaf araf. 21 00:01:09,910 --> 00:01:13,850 Er, gall chwilio unrhyw restr a roddir iddo. 22 00:01:13,850 --> 00:01:20,130 Eich swydd yw gweithredu chwiliad deuaidd, sydd wedi rhedeg amser O o log n. 23 00:01:20,130 --> 00:01:21,130 Dyna 'n bert gyflym. 24 00:01:21,130 --> 00:01:23,170 >> Ond mae amod. 25 00:01:23,170 --> 00:01:27,600 Gall chwiliad deuaidd yn unig chwilio drwy restrau cyn ei ddidoli. 26 00:01:27,600 --> 00:01:30,370 Pam hynny? 27 00:01:30,370 --> 00:01:32,620 >> Wel gadewch i ni edrych ar enghraifft. 28 00:01:32,620 --> 00:01:36,280 O ystyried amrywiaeth o werthoedd, y das wair, rydym yn mynd i fod yn edrych 29 00:01:36,280 --> 00:01:37,130 am nodwydd. 30 00:01:37,130 --> 00:01:40,460 Ac yn yr enghraifft hon, y cyfanrif tri. 31 00:01:40,460 --> 00:01:44,130 Mae'r ffordd y chwiliad deuaidd yn gweithio yw bod rydym yn cymharu gwerth canol 32 00:01:44,130 --> 00:01:48,370 yr amrywiaeth i'r nodwydd, yn debyg iawn i sut y rydym yn agor llyfr ffôn i ganol 33 00:01:48,370 --> 00:01:50,660 dudalen yn wythnos sero. 34 00:01:50,660 --> 00:01:54,650 >> Felly, ar ôl cymharu gwerth canol i y nodwydd, gallwch daflu naill ai'r 35 00:01:54,650 --> 00:01:58,530 chwith neu i'r dde hanner y rhesi drwy dynhau eich ffiniau. 36 00:01:58,530 --> 00:02:03,390 Yn yr achos hwn, gan fod tri, ein nodwydd, yn llai na 10, mae'r gwerth canol, y 37 00:02:03,390 --> 00:02:05,990 Gall dde rhwymo lleihau. 38 00:02:05,990 --> 00:02:08,400 Ond ceisiwch wneud eich ffiniau mor dynn ag y bo modd. 39 00:02:08,400 --> 00:02:11,630 Os nad yw'r gwerth canol yn y nodwydd, yna rydych yn gwybod nad oes angen i chi wneud 40 00:02:11,630 --> 00:02:13,010 gynnwys yn eich chwiliad. 41 00:02:13,010 --> 00:02:17,310 Felly, rydych chi'n iawn rhwymo gall dynhau'r chwilio terfynau dim ond ychydig bach yn fwy, 42 00:02:17,310 --> 00:02:21,770 ac yn y blaen ac yn y blaen hyd nes y i chi ddod o hyd i'ch nodwydd. 43 00:02:21,770 --> 00:02:23,480 >> Felly beth mae'r pseudocode yn edrych? 44 00:02:23,480 --> 00:02:28,420 Wel er ein bod yn dal i chwilio drwy y rhestr ac yn dal i gael elfennau i 45 00:02:28,420 --> 00:02:33,690 edrych i mewn, rydym yn cymryd ganol y rhestr, a chymharu hynny gwerth canol i 46 00:02:33,690 --> 00:02:34,950 ein nodwydd. 47 00:02:34,950 --> 00:02:37,310 Os ydynt yn gyfartal, yna mae hynny'n golygu ein bod i wedi dod o hyd i'r nodwydd a gallwn 48 00:02:37,310 --> 00:02:38,990 dychwelyd yn wir. 49 00:02:38,990 --> 00:02:42,870 >> Fel arall, os bydd y nodwydd yn llai na gwerth canol, yna mae hynny'n golygu ein 50 00:02:42,870 --> 00:02:47,280 Gall thaflwch y hanner cywir, a dim ond chwilio'r ochr chwith y rhesi. 51 00:02:47,280 --> 00:02:51,090 Fel arall, byddwn yn chwilio'r ochr dde y rhesi. 52 00:02:51,090 --> 00:02:54,410 Ac ar y diwedd, os nad oes gennych unrhyw i chi mwy o elfennau i'r chwith i chwilio ond 53 00:02:54,410 --> 00:02:58,050 nad ydynt wedi dod o hyd i'ch nodwydd eto, yna rydych dychwelyd ffug oherwydd bod y nodwydd 54 00:02:58,050 --> 00:03:01,890 yn bendant nid yw yn y tas wair. 55 00:03:01,890 --> 00:03:05,270 >> Erbyn hyn, mae peth daclus am pseudocode hwn mewn chwiliad deuaidd yw y gall fod yn 56 00:03:05,270 --> 00:03:09,940 ddehongli fel naill ai ailadroddol neu weithredu ailadroddus. 57 00:03:09,940 --> 00:03:13,810 Felly byddai'n recursive os ydych yn galw y swyddogaeth chwilio o fewn y chwiliad 58 00:03:13,810 --> 00:03:17,350 gweithredu ar y naill hanner y rhesi. 59 00:03:17,350 --> 00:03:21,030 Byddwn yn ymdrin recursion ychydig yn ddiweddarach yn y gwrs, ond ddim yn gwybod ei bod yn 60 00:03:21,030 --> 00:03:24,190 opsiwn os hoffech roi cynnig arnynt. 61 00:03:24,190 --> 00:03:26,030 >> Nawr, gadewch i ni edrych ar fath. 62 00:03:26,030 --> 00:03:30,750 Trefnu yn cymryd amrywiaeth a'r cyfanrif n, sef maint y rhesi. 63 00:03:30,750 --> 00:03:34,030 Erbyn hyn mae yna wahanol fathau gwahanol o ryw fath, a gallwch edrych ar rai 64 00:03:34,030 --> 00:03:36,370 siorts ar gyfer arddangosiadau ac esboniadau. 65 00:03:36,370 --> 00:03:39,580 Y math gyfnewid am ein swyddogaeth fath yn ddi-rym. 66 00:03:39,580 --> 00:03:43,580 Felly mae hynny'n golygu nad ydym yn mynd i ddychwelyd unrhyw amrywiaeth o'r math. 67 00:03:43,580 --> 00:03:48,140 Rydym yn wir yn mynd i newid yr union amrywiaeth a ddaeth yn ni. 68 00:03:48,140 --> 00:03:52,290 >> Ac mae hynny'n bosibl oherwydd araeau yn pasio drwy gyfeirio yn C. Nawr rydym fe 69 00:03:52,290 --> 00:03:55,290 weld mwy am hyn yn ddiweddarach, ond mae'r gwahaniaeth hanfodol rhwng pasio 70 00:03:55,290 --> 00:03:59,340 mewn rhywbeth fel cyfanrif a pasio mewn amrywiaeth, yw bod pan fyddwch yn 71 00:03:59,340 --> 00:04:03,490 pasio mewn cyfanrif, C yn jyst yn mynd i gwneud copi o'r cyfanrif ac yn pasio 72 00:04:03,490 --> 00:04:04,450 i'r swyddogaeth. 73 00:04:04,450 --> 00:04:08,530 Ni fydd y newidyn gwreiddiol yn cael ei newid unwaith y bydd y swyddogaeth yn cael ei orffen. 74 00:04:08,530 --> 00:04:12,480 Gydag amrywiaeth, ar y llaw arall, mae'n ddim yn mynd i wneud copi, a wnewch chi helpu 75 00:04:12,480 --> 00:04:17,910 mewn gwirionedd yn golygu'r y iawn amrywiaeth ei hun. 76 00:04:17,910 --> 00:04:21,269 >> Felly, un math o fath yn y math dethol. 77 00:04:21,269 --> 00:04:24,750 Y math ddethol yn gweithio trwy ddechrau yn y dechrau, ac yna byddwch yn ailadrodd 78 00:04:24,750 --> 00:04:26,820 drosodd a dod o hyd i'r elfen lleiaf. 79 00:04:26,820 --> 00:04:30,710 Ac yna byddwch yn cyfnewid y lleiaf elfen sydd â'r un cyntaf. 80 00:04:30,710 --> 00:04:34,360 Ac yna byddwch yn symud i'r ail elfen , Dod o hyd i'r lleiaf nesaf 81 00:04:34,360 --> 00:04:38,320 elfen, ac yna cyfnewid bod gyda ail elfen yn yr arae oherwydd 82 00:04:38,320 --> 00:04:41,100 yr elfen cyntaf eisoes yn cael ei datrys. 83 00:04:41,100 --> 00:04:45,370 Ac felly, yna byddwch yn parhau ar gyfer pob elfen o ran adnabod y lleiaf 84 00:04:45,370 --> 00:04:47,690 gwerth a chyfnewid allan. 85 00:04:47,690 --> 00:04:53,460 >> Canys mi hafal i 0, yr elfen gyntaf un i n minws 1, ydych yn mynd i gymharu 86 00:04:53,460 --> 00:04:57,820 pob gwerth nesaf ar ôl hynny a dod o hyd i y mynegai o werth lleiaf. 87 00:04:57,820 --> 00:05:02,520 Ar ôl i chi ddod o hyd i'r mynegai gwerth lleiaf, gallwch gyfnewid y gwerth amrywiaeth 88 00:05:02,520 --> 00:05:05,930 isafswm ac amrywiaeth I. 89 00:05:05,930 --> 00:05:09,760 >> Math arall o fath y gallwch gweithredu yn fath swigen. 90 00:05:09,760 --> 00:05:14,380 Felly ailadrodd fath swigen dros y rhestr cymharu elfennau cyfagos a 91 00:05:14,380 --> 00:05:17,720 cyfnewid elfennau sy'n yn y drefn anghywir. 92 00:05:17,720 --> 00:05:22,380 Ac mae hyn yn ffordd, mae'r elfen fwyaf Bydd swigen at y diwedd. 93 00:05:22,380 --> 00:05:28,070 Ac mae'r rhestr yn cael ei datrys unwaith heb fod yn fwy elfennau wedi cael eu cyfnewid. 94 00:05:28,070 --> 00:05:31,920 >> Felly, y rhai yn ddwy enghraifft o'r math algorithmau y gallwch yn gweithredu ar gyfer 95 00:05:31,920 --> 00:05:33,230 y rhaglen darganfyddiad. 96 00:05:33,230 --> 00:05:37,350 Unwaith i chi orffen didoli, ac nad ydych wedi gwneud chwilio, rydych yn gorffen. 97 00:05:37,350 --> 00:05:39,720 Fy enw i yw Zamyla, ac mae hyn yn CS50. 98 00:05:39,720 --> 00:05:46,987 >> [CHWARAE CERDDORIAETH]