>> ZAMYLA Chan: Y peth cyntaf y byddwch efallai rhybudd am ddarganfyddiad yw ein bod eisoes
wedi cod a ysgrifennwyd ar ein cyfer.
Gelwir hyn yn cod dosbarthu.
Felly, nid ydym yn unig yn ysgrifennu ein hunain cod o'r dechrau anymore.
Yn hytrach, rydym yn llenwi'r unedau gwag mewn rhai cod sydd eisoes yn bodoli.
>> Mae'r rhaglen find.c awgrymiadau ar gyfer rhifau i lenwi'r das wair, chwilio'r
tas wair am nodwydd defnyddiwr a gyflwynwyd, ac mae'n gwneud hyn drwy ffonio didoli a
chwilio, swyddogaethau a ddiffinnir yn helpers.c.
Felly find.c ei ysgrifennu yn barod.
Eich gwaith chi yw ysgrifennu gynorthwywyr.
>> Felly beth ydyn ni'n ei wneud?
Rydym yn gweithredu dwy swyddogaeth.
Chwilio, sy'n dychwelyd wir os yw gwerth i'w gael yn y tas wair, gan ddychwelyd
ffug os yw'r gwerth yn nid yn y tas wair.
Ac yna rydym hefyd yn gweithredu math, sy'n didoli'r amrywiaeth a elwir gwerthoedd.
Felly, gadewch i ni fynd i'r afael â chwilio.
>> Chwilio yn cael ei weithredu ar hyn o bryd fel chwiliad llinol.
Ond gallwch wneud llawer yn well na hynny.
Chwiliad llinol yn cael ei weithredu mewn O n amser, sy'n eithaf araf, er ei fod yn
gallu chwilio unrhyw restr a roddir iddo.
Eich swydd yw gweithredu chwiliad deuaidd, sydd wedi rhedeg amser O o log n.
Dyna 'n bert gyflym.
>> Ond mae amod.
Gall chwiliad deuaidd yn unig chwilio drwy restrau cyn ei ddidoli.
Pam hynny?
Wel, gadewch i ni edrych ar enghraifft.
O ystyried amrywiaeth o werthoedd, y das wair, rydym yn mynd i fod yn edrych
am nodwydd, ac yn yr enghraifft, mae'r cyfanrif 3.
>> Mae'r ffordd y chwiliad deuaidd yn gweithio yw bod rydym yn cymharu gwerth canol
yr amrywiaeth i'r nodwydd, yn debyg iawn i sut y rydym yn agor llyfr ffôn i ganol
dudalen yn Wythnos 0.
Felly, ar ôl cymharu gwerth canol i y nodwydd, gallwch daflu naill ai'r
chwith neu i'r dde hanner y rhesi drwy dynhau eich ffiniau.
Yn yr achos hwn, gan fod 3, ein nodwydd, yn llai na 10, mae'r gwerth canol, y
Gall dde rhwymo lleihau.
>> Ond ceisiwch wneud eich ffiniau mor dynn ag y bo modd.
Os nad yw'r gwerth canol yn y nodwydd, yna rydych yn gwybod nad oes angen i chi wneud
gynnwys yn eich chwiliad.
Fel y gall eich hawl rwymo dynhau'r chwilio terfynau dim ond ychydig bach yn fwy,
ac yn y blaen ac yn y blaen, hyd nes y i chi ddod o hyd i'ch nodwydd.
>> Felly beth mae'r ffug Cod yn edrych?
Wel, er ein bod yn dal i yn chwilio drwy y rhestr ac yn dal i gael
elfennau i edrych i mewn, rydym yn cymryd y canol y rhestr a chymharu hynny
gwerth canolog i'n nodwydd.
Os ydynt yn gyfartal, yna mae hynny'n golygu ein bod i wedi dod o hyd i'r nodwydd, a gallwn
dychwelyd yn wir.
>> Fel arall, os bydd y nodwydd yn llai na gwerth canol, yna mae hynny'n golygu ein
Gall daflu hanner cywir ac ychydig chwilio'r ochr chwith y rhesi.
Fel arall, byddwn yn chwilio'r ochr dde y rhesi.
Ac ar y diwedd, os nad oes gennych unrhyw i chi mwy o elfennau i'r chwith i chwilio ond
nad ydynt wedi dod o hyd i'ch nodwydd eto, Yna byddwch yn dychwelyd ffug.
Oherwydd bod y nodwydd yn bendant nid yw yn y tas wair.
>> Yn awr, un peth daclus am ffug hwn cod i chwilio deuaidd yw y gall
yn cael ei ddehongli fel naill ai ailadroddol neu weithredu ailadroddus.
Felly byddai'n recursive os ydych yn galw y swyddogaeth chwilio o fewn y chwiliad
gweithredu ar y naill hanner y rhesi.
Byddwn yn ymdrin recursion ychydig ddiweddarach yn y cwrs.
Ond ddim yn gwybod ei fod yn opsiwn os hoffech roi cynnig arnynt.