[CHWARAE CERDDORIAETH] Andi Peng: Croeso i wythnos 3 o adran. Diolch, rydych guys, ar gyfer yr holl ddod i'r amser cychwyn yn gynharach heddiw. Rydym wedi cael 'n glws, ychydig grŵp agos heddiw. Felly gobeithio y byddwn yn mynd i gorffen, efallai, yn gynnar, ychydig bach yn gynnar heddiw. Mor gyflym, dim ond rhai cyhoeddiadau ar gyfer yr agenda heddiw. Cyn i ni ddechrau, rydym yn mynd i jyst yn mynd dros rhai materion logistaidd byr, pset cwestiynau, ôl-drafod, pethau fel 'na. Ac yna byddwn yn plymio i'r dde i mewn. Byddwn yn defnyddio dadnamydd o'r enw GDB i dechrau debunking ein cod, a oedd David eglurwyd yn y ddarlith y diwrnod o'r blaen. Byddwn yn mynd dros y pedwar math o ryw fath. Byddwn yn mynd drostynt weddol gyflym gan eu bod yn eithaf dwys. Ond yn gwybod bod yr holl sleidiau a cod ffynhonnell ar-lein bob amser. Felly mae croeso, yn eich harchwilio, i mynd yn ôl ac yn edrych ar hynny. Byddwn yn mynd drwy nodiant asymptotic, a oedd yn yn unig yw ffordd ffansi o ddweud "runtimes," lle mae gennym yr O mawr, a oedd yn Esboniodd David yn y ddarlith. Ac mae gennym hefyd Omega, a oedd yn yw'r Rhedeg rhwymo is. A byddwn yn siarad ychydig yn fwy manwl ynglŷn â sut y mae'r rhai gwaith. Ac yn olaf, byddwn yn mynd dros chwiliad deuaidd, am fod llawer ohonoch chi sydd eisoes wedi bwrw golwg ar eich psets yn ôl pob tebyg yn gwybod bod hynny yw cwestiwn sy'n yn eich pset. Felly byddwch i gyd yn hapus ein bod yn ymdrin â hyn heddiw. Ac yn olaf, unol â'ch adran adborth, Fi 'n weithredol Gadawodd tua 15 munud ar y diwedd i jyst yn mynd dros logisteg pset3, unrhyw gwestiynau, efallai ychydig o ganllawiau, os gwnewch, cyn i ni ddechrau rhaglennu. Felly gadewch i ni geisio i gael drwy y deunydd yn weddol gyflym. Ac yna gallwn dreulio rhywfaint o amser cymryd mwy o gwestiynau am y pset. IAWN. Yn gyflym, felly dim ond ychydig cyhoeddiadau cyn i ni ddechrau heddiw. Yn gyntaf, croeso i wneud drwy ddwy o'ch psets. Cymerais golwg ar your-- ie, gadewch i ni cael rownd o gymeradwyaeth ar gyfer bod un. A dweud y gwir, roeddwn mewn gwirionedd, 'n sylweddol creu argraff. Yr wyf yn graddio y pset cyntaf i chi guys wythnos ac rydych ddiwethaf guys a wnaeth anhygoel. Arddull oedd ar bwynt heblaw ychydig o sylwadau. Gwnewch yn siŵr eich bod bob amser sylwadau eich cod. Ond mae eich psets oedd ar bwynt. A'i gadw i fyny. Ac mae'n dda i'r safonwr i gweld eich bod guys yn ei roi yn gymaint o ymdrech yn eich steil a bod eich dyluniad yn eich cod yr hoffem i chi eu gweld. Felly dw i'n pasio ar hyd fy niolchgarwch ar gyfer gweddill y CA. Fodd bynnag, mae yna ychydig o gwestiynau ôl-drafod Fi jyst eisiau mynd dros yr Byddai gwneud y ddau fy mywyd ac mae llawer o llall CA 'bywydau ychydig yn haws. Yn gyntaf, yr wyf wedi sylwi ar hyn gorffennol week-- faint ohonoch wedi bod yn rhedeg check50 ar eich cod cyn i chi gyflwyno? IAWN. Felly dylai pawb fod yn ei wneud check50, because-- yn secret-- rydym mewn gwirionedd rhedeg check50 fel rhan o'n gywirdeb sgriptiau ar gyfer profi eich cod. Felly os yw eich cod yn methu check50, yn ôl pob tebyg, Mae'n debyg ei fod yn mynd i methu ein siec hefyd. Weithiau chi guys gael yr atebion cywir. Fel, yn barus, mae rhai o'r mae gennych y nifer cywir, 'ch jyst argraffu'r rhai pethau ychwanegol. A bod pethau ychwanegol mewn gwirionedd yn methu y siec, oherwydd nad oedd y cyfrifiadur yn ei wneud wir yn gwybod beth mae'n chwilio amdano. Ac felly bydd yn jyst yn rhedeg drwy, gweld nad yw eich cynnyrch yn gwneud cyfateb i'r hyn yr ydym yn disgwyl yr ateb i fod, ac yn marcio ei fod yn anghywir. A gwn fod ddigwyddodd yn rhai o'ch achosion yr wythnos hon. Felly, yr wyf yn mynd yn ôl ac â llaw hailraddio cod pawb. Yn y dyfodol, fodd bynnag, os gwelwch yn dda, gwnewch yn siwr eich bod yn rhedeg gwiriwch 50 ar eich cod. Oherwydd ei fod yn fath o boen gyfer y TA i gael i fynd yn ôl ac â llaw ailraddio pob pset ar gyfer pob enghraifft sengl, colli ychydig. Felly doeddwn i ddim yn cymryd oddi ar unrhyw bwyntiau. Rwy'n credu fy mod yn cymryd i ffwrdd efallai un neu ddau ar gyfer dylunio. Yn y dyfodol, fodd bynnag, os rydych yn methu check50, Bydd pwyntiau yn cael eu cymryd i ffwrdd ar gyfer cywirdeb. Ar ben hynny, psets yn oherwydd Gwener am hanner dydd. Rwy'n credu bod 'na saith munud cyfnod gras hwyr yr ydym yn ei roi i chi. Fesul amser Harvard, maent yn caniatáu i fod yn saith munud yn hwyr i bopeth. Felly dyma yng Ngholeg Iâl, yr ydym chi helpu cadw at hynny hefyd. Ond 'n bert lawer, am 00:07, os nad yw eich pset yn, mae'n mynd i gael ei marcio fel hwyr. Ac felly er ei fod yn cael ei farcio mor ddiweddar, mae'r TA-- rwy'n dal yn mynd i fod yn graddio eich psets. Felly, byddwch yn dal i weld gradd ymddangos. Fodd bynnag, yn gwybod bod o diwedd y semester, Bydd pob psets hwyr yn unig fod zeroed awtomatig gan y cyfrifiadur. Rydym yn gwneud hyn am ddau reswm. Un, weithiau rydym yn cael hesgusodi, fel esgusodion deon, nes ymlaen nad wyf yn gwybod am eto. Felly, rydym yn hoffi i wneud yn siŵr ein bod yn graddio popeth rhag ofn, fel, rwy'n ar goll esgus i deon. Ac yn ail, yn cadw mewn cof, gallwch dal i galw heibio un pset sy'n Mae pwyntiau cwmpas llawn. Ac felly rydym yn hoffi radd pob un o'ch psets yn unig i wneud yn siŵr bod eich cwmpas yn yno a ydych yn eu ceisio. Felly hyd yn oed os mai hwyr, wnewch chi helpu yn dal gael credyd ar gyfer pwyntiau cwmpas, yr wyf yn meddwl. Felly moesol y stori yw, gwneud yn siŵr bod eich psets yn ar-amser. Ac os nad ydynt mewn ar-amser, gwybod nad mae'n wych. Yeah, cyn i mi symud ymlaen, a oes unrhyw un yn cael unrhyw gwestiynau ynghylch adborth pset? Yeah. GYNULLEIDFA: A wnaethoch chi ddweud ein Gall alw heibio un o'r psets? Andi Peng: Yeah. Felly mae 'na naw psets gyffredinol yn ystod y semester. Ac os oes gennych cwmpas points-- felly cwmpas yn unig, 'n bert lawer, a ydych yn rhoi cynnig ar y problem, a ydych yn rhoi amser, a ydych yn dangos eich bod chi wedi Dangosodd eich bod wedi darllen y fanyleb. Dyna 'n bert lawer gwmpas. Ac os ydych yn cyflawni pwyntiau cwmpas, rydym yn Gall gollwng yr isaf un allan o gwmpas llawn. Felly dyna yn eich fantais i cwblhau a rhoi cynnig ar bob pset. Hyd yn oed os nad oes un upload-- o eu bod yn gweithio, yn eu llwytho i fyny i gyd. Ac yna byddwn, gobeithio, yn gallu rhoi i chi rai o'r pwyntiau hynny yn ôl. Cool. Unrhyw gwestiynau eraill? Great. Yn ail, swyddfa hours-- ychydig nodiadau byr am oriau swyddfa. Felly yn gyntaf, dewch yn gynnar yn yr wythnos. Nid oes neb yn byth yn oriau swyddfa ar ddydd Llun. Daeth Christabel i oriau swyddfa neithiwr. Yeah, Christabel. A beth oedd gennym ar y swyddfa oriau neithiwr, Christabel? GYNULLEIDFA: Cawsom hufen iâ. Andi Peng: Felly sy'n iawn, cawsom hufen iâ ar oriau swyddfa neithiwr. Er na allaf addo y bydd gennym hufen iâ ar oriau swyddfa bob wythnos, yr hyn y gallaf ei addo i chi yw y bydd yn sylweddol gwell i fyfyrwyr i gymhareb TA. Fel legit, mae fel 00:57. Tra, gyferbynnu hynny â Dydd Iau, oes gennych chi tua 150 'n sylweddol Pwysleisiodd blant a dim hufen iâ. Ac nid dim ond cynhyrchiol ar gyfer unrhyw un. Felly moesol y stori yw, dod yn gynnar i oriau swyddfa a phethau da fydd yn digwydd. Hefyd, dewch yn barod i ofyn cwestiynau. Ti'n gwybod? Waeth beth CA, yr wyf yn yn meddwl, wedi bod yn dweud, rydym wedi bod yn cael myfyrwyr gwpl sy'n dod i mewn ar ddydd Iau yn, fel, 10:50 Nid yw wedi darllen y fanyleb yn debyg fy helpu, helpa fi. Yn anffodus, ar y pwynt hwnnw, mae dim llawer y gallwn ei wneud i'ch helpu. Felly dewch yn gynnar yn yr wythnos. Dewch yn gynnar i oriau swyddfa. Dewch yn barod i ofyn cwestiynau. Gwnewch yn siŵr eich bod chi, fel yn fyfyriwr, yw lle angen i chi fod fel bod y Gall CA eich arwain ar hyd, sef yr hyn oriau swyddfa Dylai gael ei glustnodwyd ar gyfer. Yn ail, felly rwy'n gwybod athrawon yn hoffi syndod i ni gyda phrofion. Roedd gen i athro y rhai fel, yo, gyda llaw, cofiwch fod canol tymor gennych ddydd Llun nesaf. Yeah, nid oeddwn yn gwybod am hynny canol tymor. Felly, yr wyf i'n mynd i fod yn y TA sy'n eich atgoffa i gyd mai cwis 0-- oherwydd, eich bod yn gwybod, rydym yn CS. Nawr bod rydym wedi arrays gwneud, byddwch yn cael pam ei bod yn cwis 0, nid holi 1, eh? IAWN. O, rwy'n cael rhai chuckles ar y un. IAWN. Felly, bydd cwis 0 yn 14 Hydref os ydych chi yn yr adran o ddydd Llun i Dydd Mercher a 15 Hydref os ydych mewn yr adran Mawrth-Iau. Nid yw hyn yn gwneud cais am rhai ohonoch yn Harvard who-- Rwy'n credu y byddwch i gyd yn cymryd eich cwisiau ar y 14eg. Felly ie, yr wythnos nesaf, os Dafydd, yn y ddarlith, yn mynd, yeah, felly am hynny Cwis yr wythnos nesaf, i chi i gyd Ni fydd yn cael ei synnu oherwydd bod chi ddaeth i adran a ydych yn gwybod bod eich cwis 0 mewn pythefnos. A byddwn yn cael adolygiad sesiynau a phopeth. Felly nid oes pryderon am yn cael ei ofni am hynny. Unrhyw gwestiynau before-- unrhyw gwestiynau o gwbl ynglŷn â materion logistaidd, graddio, oriau swyddfa, adrannau? Yeah. GYNULLEIDFA: Felly y cwis yn mynd i fod yn ystod y ddarlith? Andi Peng: Yeah. Felly y cwis, rwy'n credu, yw 60 cofnodion a glustnodwyd yn y slot amser y byddwch yn unig yn cymryd yn y neuadd ddarlith. Felly nid oes rhaid i chi ddod i mewn ymlaen, fel, ar hap 19:00. Mae hyn i gyd yn dda. Yeah. Cool. Iawn. Felly rydym yn mynd i cyflwyno cysyniad i chi yr wythnos hon bod David eisoes wedi caredig o crybwyll yn y ddarlith yr wythnos hon ddiwethaf. Mae'n cael ei alw GDB. Sut a llawer ohonoch, tra yn cwrs ysgrifennu eich psets, wedi sylwi botwm mawr sy'n dweud "Debug" ar frig eich DRhA? IAWN. Felly nawr byddwn mewn gwirionedd yn cael i ganfod dirgelwch yr hyn y botwm mewn gwirionedd wneud. Ac yr wyf yn gwarantu i chi, mae'n hardd, beth prydferth. Felly, hyd yn hyn, yr wyf yn meddwl mae dau beth wedi bod myfyrwyr wedi bod yn nodweddiadol wneud pan debugging psets. Un, maent naill ai yn ychwanegu mewn printf () - felly bob ychydig linellau, maent yn ychwanegu mewn printf () - oh, beth yw newidyn hwn? O, beth yn amrywio hon now-- ac rydych yn fath o weld y cynnydd eich cod fel ei fod yn rhedeg. Neu yr ail ddull plant ei wneud yw eu bod yn jyst ysgrifennu'r holl beth ac yna mynd fel hyn ar y diwedd. Gobeithio y mae'n gweithio. Yr wyf yn gwarantu chi, GDB yn well na ddau o'r dulliau hynny. Yeah. Felly bydd hyn yn eich ffrind gorau newydd. Gan ei fod yn beth hyfryd arddangosiadau sy'n weledol y ddau beth yw eich cod yn ei wneud ar bwynt penodol yn ogystal â'r hyn eich holl newidynnau yn cael eu cario, fel beth eu gwerthoedd nhw, ar y pwynt penodol. Ac yn y modd hwn, gallwch yn wir gosod torbwyntiau yn eich cod. Gallwch redeg drwy fesul llinell. A bydd GDB yn rhaid i chi, eu harddangos ar eich rhan, beth yw eich holl newidynnau yn cael eu, yr hyn y maent yn ei wneud, beth sy'n mynd ymlaen yn y cod. Ac yn y fath fodd, 'i' gymaint yn haws eu gweld yr hyn sy'n digwydd yn hytrach na printf-ing neu ysgrifennu i lawr eich datganiadau. Felly, byddwn yn gwneud yn enghraifft o hyn yn nes ymlaen. Felly, mae hyn yn ymddangos braidd yn haniaethol. Dim pryderon, byddwn yn gwneud enghreifftiau. Ac felly y bôn, y tri mwyaf, swyddogaethau mwyaf-a ddefnyddir bydd angen i chi yn GDB yw'r Nesaf, Cam drosodd, ac yn Camu i mewn botymau. Rydw i'n mynd i fod yn bennaeth dros yno, mewn gwirionedd, ar hyn o bryd. Felly, gallwch chi guys i gyd yn gweld bod neu ddylwn i chwyddo i mewn ychydig? Yn y cefn, gallwch weld bod? A ddylwn i chwyddo i mewn? Dim ond ychydig bach? OK, oer. Dyna ni. IAWN. Felly mae gen i, yma, mae fy gweithredu ar gyfer farus. Ac er bod llawer ohonoch guys Ysgrifennodd barus yn ddolen tra form-- hynny yn ffordd gwbl dderbyniol i'w wneud iddo- ffordd arall o wneud hyn yw i wneud dim ond rhannwch yn y modulo. Gan fod yna gallwch gael eich gwerth ac yna cael eich gweddill. Ac yna gallwch dim ond ychwanegwch cyfan at ei gilydd. A yw'r rhesymeg yr hyn rwy'n ei wneud yma yn gwneud synnwyr i bawb, cyn i ni ddechrau? Math o? Cool. Great. Mae'n ddarn 'n bert sexy o god, byddwn yn dweud. Fel y dywedais, David, yn ddarlithio, ar ôl ychydig, byddwch chi i gyd yn dechrau gweld cod fel rhywbeth sy'n hardd. Ac weithiau pan fyddwch yn gweld hardd cod, mae'n deimlad mor wych. Felly, fodd bynnag, er bod y cod hwn yn iawn hardd, nid yw'n gweithio'n iawn. Felly gadewch i ni redeg check50 ar hyn. Gwiriwch 50 20-- OOP. 2? A yw hynny'n pset2? Yeah. O, pset1. IAWN. Felly rydym yn rhedeg check50. Ac fel y gallwch chi guys weld yma, mae'n methu un neu ddau o achosion. Ac i rai ohonoch, yn y cwrs gwneud eich setiau problem, ydych chi fel, AH, pam nad yw'n gweithio. Pam ei fod yn gweithio ar gyfer rhai Gwerthoedd ond nid ar gyfer rhai eraill? Wel, GDB yn mynd i helpu chi ffigur pam nad mewnbynnau rhai yn gweithio. IAWN. Felly, gadewch i ni weld, un o'r gwiriadau oeddwn yn methu yn check50 oedd gwerth mewnbwn 0.41. Felly yr ateb cywir sy'n dylech fod yn ei gael yw 4. Ond yn hytrach yr hyn yr wyf argraffu yn y 3-n, sydd yn anghywir. Felly gadewch i ni jyst yn rhedeg hyn â llaw, dim ond gwneud yn siŵr bod check50 yn gweithio. Gadewch i ni wneud ./greedy. Wps, rhaid i mi wneud yn farus. Dyna ni. Nawr ./greedy. Faint sy'n ddyledus? Gadewch i ni wneud 0.41. Ac yep, rydym yn gweld yma ei fod yn outputting 3 pan fydd yr ateb cywir, mewn gwirionedd, fod yn 4. Felly gadewch i ni fynd i mewn GDB a gweld sut yr ydym Gall fynd ati i bennu broblem hon. Felly, y cam cyntaf yn bob amser yn debugging eich cod yw gosod torbwynt, neu bwynt lle'r ydych am i'r cyfrifiadur neu'r debugger i ddechrau edrych ar. Felly, os nad ydych yn wir yn gwybod beth yw eich problem yw, Fel arfer, y peth nodweddiadol rydym am wneud yw gosod ein torbwynt yn y prif. Felly, os gallwch guys yn gweld hyn botwm coch iawn yno, yep, a oedd i mi osod torbwynt ar gyfer y prif swyddogaeth. Yr wyf yn clicio hynny. Ac yna gallaf fynd i fyny at fy botwm Debug. Yr wyf yn taro y botwm. Gadewch i mi chwyddo yn ôl allan os gallaf. Dyna ni. Felly, rydym wedi, yma, panel ar y dde. Mae'n ddrwg gen i, guys yn y cefn, yr ydych Ni all 'n sylweddol yn gweld yn dda iawn. Ond yn y bôn, i gyd y panel ar y dde yn ei wneud yn cadw golwg ar y amlygwyd llinell, sef y llinell o god bod y cyfrifiadur yn rhedeg ar hyn o bryd, yn ogystal â phob un o'ch newidynnau lawr yma. Felly, mae gennych cents, darnau arian, n, i gyd ddatgan i bethau gwahanol yn y fan hon. Dim pryderon, gan fod gennym nid mewn gwirionedd iddynt ymgychwyn i unrhyw newidynnau eto. Felly, yn eich cyfrifiadur, eich cyfrifiadur dim ond yn gweld, oh, 32767 oedd y swyddogaeth a ddefnyddir ddiwethaf o'r gofod chof yn fy chyfrifiadur. Ac felly dyna lle cents ar hyn o bryd yn. Ond ni unwaith y byddwch yn rhedeg y cod, dylai fod yn ymgychwyn. Felly gadewch i ni fynd drwy'r, llinell gan llinell, beth sy'n digwydd fan hyn. IAWN. Felly, yma yw'r tri botymau yr wyf newydd hesbonio. Mae gennych yr Chwarae, neu'r swyddogaeth Run, botwm, mae gennych yr Cam dros botwm, ac yr ydych hefyd yn cael y Camu i mewn i botwm. Ac yn ei hanfod, pob un o'r tri nhw dim ond yn mynd drwy eich cod a gwneud pethau gwahanol. Felly fel arfer, pan fyddwch chi'n debugging, nid ydym am i jyst daro Chwarae, gan y bydd Chwarae jyst hidla eich cod at ddiwedd ohono. Ac yna nid ydych mewn gwirionedd fydd gwybod beth yw eich problem yw oni bai eich bod yn gosod torbwyntiau lluosog. Os ydych yn gosod torbwyntiau lluosog, bydd yn jyst yn awtomatig rhedeg o un torbwynt, i'r nesaf, i'r nesaf. Ond yn yr achos hwn rydym wedi dim ond bod un, oherwydd ein am weithio ein ffordd o'r brig i lawr i'r gwaelod. Felly rydym yn mynd i anwybyddu hynny botwm ar hyn o bryd i ddibenion y rhaglen hon. Felly y Cam dros swyddogaeth yn unig camau dros bob llinell sengl ac yn dweud wrthych beth y cyfrifiadur yn ei wneud. Y Cam i mewn i swyddogaeth yn mynd i mewn i'r swyddogaeth go iawn sydd ar eich llinell o god. Felly, er enghraifft, fel printf (), hynny yn swyddogaeth, dde? Os Roeddwn i eisiau cam yn gorfforol i mewn i'r printf () yn, Byddwn mewn gwirionedd yn mynd i mewn i'r darn o cod lle printf () yn ysgrifenedig ac yn gweld beth sy'n mynd ymlaen yno. Ond yn nodweddiadol, rydym yn cymryd yn ganiataol bod y cod a roddwn i chi gweithio. Rydym yn cymryd yn ganiataol y printf () yn gweithio. Rydym yn cymryd yn ganiataol bod GetInt () yn gweithio. Felly does dim angen i gamu i mewn i swyddogaethau hynny. Ond os oes yna swyddogaethau eich bod yn ysgrifennu eich hun eich bod am wirio beth sy'n digwydd, byddech am i gamu i mewn y swyddogaeth honno. Felly, ar hyn o bryd rydym yn jyst yn mynd i gamu dros y darn hwn o god. Felly, gadewch i ni weld. O, print, "O hai, sut llawer o newid yn ddyledus? " Nid ydym yn poeni. Rydym yn gwybod sy'n gweithio, felly rydym yn camu drosto. Felly n, sef ein arnofio sy'n rydym wedi initialized-- neu declared-- i fyny ar y brig, rydym yn awr yn gyfartal hynny i GetFloat (). Felly gadewch i ni gamu dros hynny. Ac rydym yn gweld yn y gwaelod yma, mae'r rhaglen yn fy annog i roi mewnbwn gwerth. Felly gadewch i ni y gwerth rydym am fewnbwn i roi prawf yma, sef 0.41. Great. Felly nawr n-- ydych chi'n guys yn gweld yma, ar yr bottom-- 'i' stored-- oherwydd ein nid ydynt wedi eu talgrynnu eto, 'i' ei storio yn y cawr tebyg arnofio sy'n 0.4099999996, sy'n ddigon agos at ein dibenion, ar hyn o bryd, i 0.41. Ac yna byddwn yn gweld yn nes ymlaen, wrth i ni parhau i gamu dros y rhaglen, ar ôl yma, n wedi dod yn crwn ac cents wedi dod yn 41. Great. Felly, rydym yn gwybod bod gweithio ein talgrynnu yn. Rydym yn gwybod bod gennym y nifer cywir o cents, felly rydym yn gwybod bod hynny'n ddim wir y broblem. Felly rydym yn parhau camu ymlaen yn y rhaglen hon. Rydym yn mynd yma. Ac felly, ar ôl llinell hon o god, rydym Dylai gwybod faint o chwarteri sydd gennym. Rydym yn camu drosodd. A ydych yn gweld ydym yn, mewn gwirionedd, gael un chwarter oherwydd ein bod wedi tynnu 25 o'n gwerth cychwynnol o 41. Ac mae gennym 16 chwith i ein cents. Ydy pawb yn deall sut mae'r rhaglen yn camu drwy a pham cents erbyn hyn wedi dod yn 16 a pham, erbyn hyn, darnau arian wedi dod yn 1? A yw pawb yn dilyn y rhesymeg? Cool. Felly, fel y pwynt hwn, mae'r gwaith rhaglen, dde? Rydym yn gwybod ei fod yn gwneud yn union yr hyn yr ydym am iddo. Ac nid ni fel mae'n digwydd rhaid i'w argraffu, oh, beth yw cents ar hyn o bryd, beth yw darnau arian ar y pwynt hwn. Rydym yn parhau mynd drwy'r rhaglen. Camu drosodd. Cool. Rydym yn mynd dros dimes. Great. Rydym yn gweld ei fod wedi cymryd oddi ar 0.10 $ am dime. Ac yn awr mae gennym ddau darnau arian. Mae hynny'n gywir. Rydym yn mynd dros ceiniogau ac rydym yn gweld ein bod wedi got chwith dros cents. Hmm, mae hynny'n rhyfedd. Up yma yn y rhaglen, oeddwn i fod i fod wedi tynnu fy ceiniogau. Efallai fy mod nid yn unig oedd gwneud hynny'n iawn llinell. Ac gwaetha'r modd, gallwch weld yma, oherwydd ein bod yn gwybod ein bod yn camu drwy linellau 32 a 33, dyna lle mae ein rhaglen amhriodol Roedd gan newidynnau rhedeg. Fel y gallwn edrych a gweld, o, Im 'yn tynnu cents yma, ond dydw i ddim mewn gwirionedd gan ychwanegu at fy ngwerth darn arian. Im 'yn ychwanegu at cents. Ac nid wyf am ychwanegu at cents, yr wyf am ychwanegu at ddarnau arian. Felly, os byddwn yn newid hynny i darnau arian, mae gennym raglen gwaith. Gallaf redeg check50. Alli jyst adael allan o GDB hawl yma ac yna rhedeg check50 eto. Gallai Fi jyst yn gwneud hyn. Rhaid i mi wneud yn farus. 0.41. Ac yma, mae'n argraffu allan yr ateb cywir. Felly, fel y gallwch weld guys, GDB yn arf pwerus iawn gyfer yr adeg pan mae gennym gymaint cod mynd ymlaen ac felly mae llawer newidynnau ei bod yn anodd i ni, fel dynol, i gadw golwg ar. Mae'r cyfrifiadur, yn y GDB dadnamydd, y gallu i gadw golwg ar bopeth. Yr wyf yn gwybod, yn Visionaire, mae'n debyg eich bod guys allai fod wedi taro rhai diffygion segmentu oherwydd eich bod yn rhedeg yn waharddedig o'ch arae. Yn yr enghraifft o Cesar, dyna yn union beth dwi wedi rhoi ar waith yma. Felly, yr wyf yn anghofio i wirio am beth fyddai'n digwydd os byddaf Nid oedd gan dau dadleuon llinell orchymyn. Rwy'n nid yn unig oedd rhoi yn y siec. Ac felly os wyf yn rhedeg Debug-- gosodais fy torbwynt i'r dde yno. Rwy'n rhedeg Dadfygio. IAWN. Yeah. Felly mewn gwirionedd, GDB oedd i fod i wedi dweud wrthyf yno Roedd nam segmentiad yno. Nid wyf yn gwybod beth oedd yn digwydd iawn yno, ond pan fyddaf yn rhedeg iddo, yr oedd yn gweithio. Pan fyddwch yn rhedeg llinellau o god trwy a Gallai GDB roi'r gorau iddi dim ond yn sydyn arnoch chi, mynd i fyny ac edrych beth y gwall coch yn. Bydd yn rhoi gwybod i chi, hey, byddwch yn Roedd gan nam segmentu, sy'n golygu eich bod yn ceisio mynediad gofod mewn amrywiaeth nad oedd yn bodoli. Yeah. Felly, yn y broblem nesaf gosod yr wythnos hon, rydych guys Mae'n debyg y bydd yn cael llawer o newidynnau fel y bo'r angen o gwmpas. Nad ydych yn mynd i fod yn siŵr beth maent i gyd yn ei olygu ar bwynt penodol. Felly bydd GDB wir yn eich helpu i figuring yr hyn y maent i gyd yn gyfartal a bod yn gallu gweld bod eu golwg. A oes unrhyw un drysu ynghylch sut unrhyw un a oedd yn gweithio? Cool. Iawn. Felly, ar ôl hynny, yr ydym yn mynd i ddeifio i'r dde i mewn pedwar wahanol mathau o ryw fath ar gyfer yr wythnos hon. Faint ohonoch chi, yn gyntaf oll, cyn i ni ddechrau, wedi darllen y fanyleb gyfan ar gyfer pset3? IAWN. Rwy'n falch ohonoch guys. Dyna fel hanner y dosbarth, a oedd yn gryn dipyn yn fwy na'r tro diwethaf. Felly mae hynny'n wych, oherwydd pan rydym yn siarad am y cynnwys yn lecture-- neu ddrwg gennym, yn adran hon-- Rwy'n hoffi i gysylltu llawer o hynny yn ôl at yr hyn y mae'r pset yw a sut yr ydych am gweithredu hynny yn eich pset. Felly, os ydych yn dod ar ôl Darllenwch y fanyleb, mae'n chi helpu yn llawer haws i chi ddeall beth rwy'n siarad amdano pan fyddaf yn dweud, oh hey, gallai hyn fod yn wir lle da i weithredu'r math hwn. Felly, y rhai ohonoch sydd wedi darllen y Manyleb gwybod bod, fel rhan o'ch pset, rydych yn mynd i gael i ysgrifennu math o fath. Felly gall hyn fod yn ddefnyddiol iawn ar gyfer llawer ohonoch chi heddiw. Felly, byddwn yn dechrau gyda, yn y bôn, y math mwyaf syml o'r math, y math dethol. Mae'r algorithm nodweddiadol ar gyfer sut y byddem yn mynd am hyn yw-- Aeth David trwy'r rhain i gyd yn darlith, felly byddaf yn gyflym symud ar hyd Yma-- yn ei hanfod, yr ydych cael amrywiaeth o werthoedd. Ac yna ddod o hyd i'r Gwerth heb eu didoli lleiaf ac yr ydych yn cyfnewid y gwerth hwnnw gyda mae'r gwerth heb eu didoli cyntaf. Ac yna 'ch jyst cadw ailadrodd gyda gweddill eich rhestr. A dyma esboniad gweledol o sut y byddai hynny'n gweithio. Felly, er enghraifft, pe baem yn dechrau gydag amrywiaeth o pum elfen, mynegai 0 i 4 oed, gyda 3, 5, 2, 6, a 4 gwerthoedd rhoi yn y array-- felly ar hyn o bryd, rydym yn jyst yn mynd i gymryd yn ganiataol eu bod i gyd heb eu didoli oherwydd nid ydym wedi profi fel arall. Felly, sut y byddai rhyw fath dethol gwaith yw y byddai'n gyntaf rhedeg drwy'r chyfanrwydd y rhesi heb eu didoli. Byddai'n dewis y gwerth lleiaf. Yn yr achos hwn, 3, dde yn awr, yw'r lleiaf. Mae'n cael i 5. Nope, 5 Nid yw yn fwy than-- neu ddrwg gennym, heb fod yn llai than-- 3. Felly mae'r gwerth lleiaf yn dal i fod 3. Ac yna byddwch yn cael i 2. Mae'r cyfrifiadur yn gweld, oh, 2 yn llai na 3. 2 awr yn rhaid iddo fod gwerth lleiaf. Ac felly 2 gyfnewidiadau ag y gwerth cyntaf. Felly, ar ôl un tocyn, yr ydym yn wir yn gweld bod y 2 a'r 3 yn cael eu cyfnewid. Ac rydym yn jyst yn mynd i barhau i wneud mae hyn eto gyda gweddill y rhesi. Felly rydym yn mynd i jyst yn rhedeg drwy'r y pedwar mynegeion olaf y rhesi. Byddwn yn gweld bod 3 yn y gwerth lleiaf nesaf. Felly rydym yn mynd i gyfnewid hynny gyda 4. Ac yna rydym yn jyst yn mynd i gadw yn rhedeg drwy'r nes, yn y pen draw, byddwch yn fynd i amrywiaeth ddidoli lle 2, 3, 4, 5, a 6 yn cael eu datrys i gyd. Ydy pawb yn deall y rhesymeg o sut fath dethol yn gweithio? Rydych yn unig yn cael rhyw fath o werth lleiafswm. Rydych yn cadw golwg ar beth yw hynny. A pryd bynnag y byddwch yn ei chael yn, byddwch yn cyfnewid ei â'r gwerth cyntaf yn y array-- neu, nid yw'r value-- cyntaf y gwerth nesaf yn y rhesi. Cool. Felly, wrth i chi guys math o Gwelodd o cipolwg byr, rydym yn mynd i pseudocode hyn allan. Felly, os ydych guys yn y cefn eisiau ffurfio grŵp, mae pawb wrth fwrdd Gall ffurfio ychydig partner, dw i'n mynd i roi guys fel tri munud i chi i ddim ond siarad am y rhesymeg, yn Saesneg, o sut y gallem yn gallu gweithredu pseudocode i ysgrifennu rhyw fath dethol. Ac mae Candy. Os gwelwch yn dda dod i fyny a chael Candy. Os ydych chi yn y cefn ac rydych am Candy, gallaf daflu Candy ar chi. A dweud y gwir, yn gwneud oer you--. O, sori. IAWN. Felly os byddem yn hoffi i, fel y dosbarth, pseudocode ysgrifennu am sut y gallai un fynd y broblem hon, dim ond mae croeso. 'N annhymerus' jyst yn mynd o gwmpas ac, mewn trefn, gofynnwch i grwpiau ar gyfer y llinell nesaf yr hyn y dylem fod yn ei wneud. Felly, os ydych guys am ddechrau i ffwrdd, beth yw'r peth cyntaf i'w wneud pan fyddwch yn ceisio gweithredu ffordd i ddatrys y rhaglen hon i ddidoli rhestr ddetholus? Gadewch i ni gymryd yn ganiataol ein bod cael amrywiaeth, iawn? GYNULLEIDFA: Rydych chi eisiau i greu rhai fath o [Anghlywadwy] bod eich bod yn yn rhedeg drwy eich casgliad cyfan. Andi Peng: Iawn. Felly, rydych yn mynd i eisiau ailadrodd trwy bob gofod, dde? Felly, mawr. Os ydych chi guys eisiau rhoi 'm' r line-- nesaf ie, yn y cefn. GYNULLEIDFA: Gwiriwch nhw i gyd ar gyfer y lleiaf. Andi Peng: Dyna ni fynd. Felly rydym yn awyddus i fynd drwy'r ac yn gwirio i weld beth mae'r gwerth lleiaf yw, dde? Rydw i'n mynd i talfyrru hynny at "min." Beth ydych chi'n guys am ei wneud ar ôl eich bod wedi dod o hyd i'r gwerth lleiaf? GYNULLEIDFA: [Anghlywadwy] Andi Peng: Felly, rydych chi'n mynd i eisiau droi gyda'r cyntaf o'r array, iawn? Dyna y dechrau, dw i'n mynd i ddweud. Iawn. Felly nawr eich bod wedi cyfnewid y cyntaf un, beth ydych chi eisiau ei wneud ar ôl hynny? Felly nawr rydym yn gwybod bod hyn yn un yma Mae'n rhaid fod y gwerth lleiaf, dde? Yna byddwch yn cael gorffwys ychwanegol y rhesi sy'n heb eu didoli. Felly, beth rydych am ei wneud yma, os ydych guys am roi'r llinell nesaf i mi? GYNULLEIDFA: Felly, yna byddwch am ailadrodd drwy weddill y rhesi. Andi Peng: Yeah. Ac felly beth mae ailadrodd drwy fath o awgrymu yn ôl pob tebyg bydd angen i ni? Pa fath o- GYNULLEIDFA: O, newidyn ychwanegol? Andi Peng: Mwy na thebyg un arall ar gyfer dolen, dde? Felly rydym yn fwy na thebyg yn mynd i eisiau i ailadrodd through-- mawr. Ac yna rydych yn mynd i fynd yn ôl a yn ôl pob tebyg yn gwirio'r isafswm eto, iawn? Ac rydych yn mynd i gadw ailadrodd hwn, oherwydd bod y dolenni jyst yn mynd i gadw rhedeg, dde? Felly, fel y gallwch weld guys, rydym yn dim ond yn cael pseudocode cyffredinol o sut yr ydym am y rhaglen hon i chwilio. Mae hyn yn ailadrodd yma, beth ydyn ni'n fel arfer mae angen i ysgrifennu yn ein cod os ydym am ailadrodd drwy array, pa fath o strwythur? Yr wyf yn meddwl Christabel Dywedodd eisoes hyn o'r blaen. GYNULLEIDFA: A ar gyfer dolen. Andi Peng: A ar gyfer dolen? Yn union. Felly mae hyn yn ôl pob tebyg mynd i fod yn am ddolen. Beth yw gwiriad yma yn mynd i awgrymu? Fel arfer, os ydych am wirio os oes rhywbeth yn rhywbeth else-- GYNULLEIDFA: Os. Andi Peng: Mae os, dde? Ac yna y cyfnewid yma, yr ydym chi helpu mynd dros yn ddiweddarach, gan fod David aeth trwy hynny yn y ddarlith hefyd. Ac yna yr ail ailadrodd implies-- GYNULLEIDFA: arall dros ddolen. Andi Peng: --another gyfer dolen, yn union. Felly, os ydym yn chwilio ar hyn yn gywir, rydym yn gallu gweld ein bod yn ôl pob tebyg mynd i angen nythu ar gyfer dolen gyda datganiad amodol i mewn 'na ac yna darn gwirioneddol o god sy'n mynd i gyfnewid y gwerthoedd. Felly, yr wyf wedi ysgrifennu dim ond yn gyffredinol cod pseudocode yma. Ac yna rydym yn mynd mewn gwirionedd i yn gorfforol, fel dosbarth, ceisio gweithredu hwn heddiw. Gadewch i ni fynd yn ôl i IDE hwn. Uh-oh. Pam hynny not-- yno y mae. IAWN. Mae'n ddrwg gennym, gadewch i mi geisio chwyddo i mewn ychydig yn fwy. Dyna ni. Mae pob Rydw i'n ei wneud yma yn cael ei dwi wedi ei greu rhaglen o'r enw "dethol / sort.c." Rydw i wedi creu amrywiaeth o naw gwerthoedd, 4, 8, 2, 1, 6, 9, 7, 5, 3. Ar hyn o bryd, ag y gallwch gweld, maent yn di-drefn. n yn mynd i fod y rhif sy'n yn dweud wrthych faint o werthoedd gennych yn eich casgliad. Yn yr achos hwn, mae gennym naw gwerthoedd. Ac yr wyf i wedi jyst got a ar gyfer dolen yma hynny printiau allan yr amrywiaeth heb eu didoli. Ac ar y diwedd, yr wyf hefyd wedi cael ar gyfer dolen mai dim ond yn argraffu allan eto. Felly ddamcaniaethol, os yw rhaglen hon yn gweithio'n iawn, ar y diwedd, dylech weld ei argraffu ar gyfer dolen lle mae 1, 2, 3, 4, 5, 6, 7, 8, 9 i gyd yn gywir mewn trefn. Felly, mae gennym ni ein pseudocode yma. A oes unrhyw un yn dymuno i'r canlynol-- Im 'jyst mynd i fynd yn gofyn am volunteers-- ddweud wrthyf yn union beth i'w deipio os rydym eisiau, yn gyntaf, dim ond ailadrodd drwy dechrau'r arae hon? Beth yw llinell o god rwy'n yn ôl pob tebyg yn mynd i angen yma? GYNULLEIDFA: [Anghlywadwy] Andi Peng: Yeah, yn teimlo rhad ac am ddim canlynol-- ddrwg gennym, byddwch yn Nid oes rhaid i sefyll up-- teimlad rhad ac am ddim i godi eich llais ychydig. GYNULLEIDFA: Ar gyfer i int hafal 0-- Andi Peng: Yeah, yn dda. GYNULLEIDFA: i yn llai na hyd arae. Andi Peng: Felly cadwch mewn meddwl yma, oherwydd ein Nid oes rhaid i swyddogaeth sy'n yn dweud wrthym hyd arae, gennym eisoes gwerth sy'n storio hynny. Iawn? Peth arall i gadw mewn mind-- mewn amrywiaeth o naw gwerthoedd, beth yw'r mynegeion? Gadewch i 'jyst dweud amrywiaeth hwn yn 0 i 3. Byddwch yn gweld bod yr olaf mynegai mewn gwirionedd 3. Dyw hi ddim yn 4, er bod yna pedwar gwerth yn y rhesi. Felly, yn fan hyn, mae'n rhaid i ni fod yn ofalus iawn o'r hyn y mae ein cyflwr ar gyfer y darn yn mynd i fod. GYNULLEIDFA: Oni fyddai'n n minws 1? Andi Peng: Mae'n mynd n minws 1, yn union. A yw hynny'n gwneud synnwyr, pam 'i' n minws 1, pawb? Mae'n oherwydd araeau yn sero-mynegeio. Maent yn dechrau ar 0 ac yn rhedeg hyd at finws n 1. Yeah, mae'n ychydig yn anodd. IAWN. Ac wedyn-- GYNULLEIDFA: Isnt'1 sy'n eisoes cymryd gofal fodd bynnag, gan dim ond nid dweud "llai na neu'n cyfartal i "a dim ond dweud" yn llai na? " Andi Peng: Mae hynny'n Cwestiwn da iawn. Felly, ie. Ond hefyd, y ffordd yr ydym ni'n gweithredu'r hawl gwirio, mae angen i chi gymharu ddau werth. Felly rydych chi mewn gwirionedd yn eisiau gadael y "i" gwag. Oherwydd os ydych yn cymharu yr un yma, nid ydych yn mynd unrhyw beth ar ôl iddo i gymharu â, dde? Yeah. Felly, fi ++. Gadewch i ni ychwanegu ein cromfachau yn. Wps. Great. Felly mae gennym y dechrau o'n dolen allanol. Felly nawr mae'n debyg eisiau creu newidyn ar gyfer cadw golwg ar y gwerth lleiaf, dde? A oes unrhyw un eisiau rhoi 'm' r llinell o god a fyddai'n gwneud hynny? Beth sydd angen i ni os ydym yn mynd i eisiau i storio rhywbeth? Hawl. Efallai enw gwell ar gyfer hynny Byddai be-- "dros dro" hollol works-- efallai enwir fwy aptly fyddai, os ydym am i'r value-- lleiaf GYNULLEIDFA: Min. Andi Peng: min, dyna ni. Byddai min yn dda. Ac felly dyma, beth ydyn ni'n eisiau ei ymgychwyn iddo? Mae hwn yn ychydig yn anodd. Gan fod ar hyn o bryd yn y gan ddechrau o amrywiaeth hwn, Nid ydych wedi edrych ar unrhyw beth, dde? Felly beth, yn awtomatig, os rydym yn unig ar i dychwelyd 0, beth ydyn ni eisiau ei ymgychwyn ein gwerth lleiaf gyntaf i? GYNULLEIDFA: i. Andi Peng: i, yn union. Christabel, pam ydym ni eisiau ymgychwyn i fi? GYNULLEIDFA: Oherwydd, yn dda, rydym yn dechrau gyda 0. Felly, gan fod gennym ddim i'w gymharu iddi, bydd y lleiaf yn y pen draw yn cael 0. Andi Peng: Yn union. Felly, mae hi'n union gywir. Oherwydd ein bod wedi nid mewn gwirionedd edrych ar unrhyw beth eto, nid ydym yn gwybod beth yw ein gwerth lleiaf yw. Rydym am i ddim ond ymgychwyn i i, sydd, ar hyn o bryd, sy'n iawn yma. Ac wrth i ni barhau i symud i lawr arae hwn, byddwn yn gweld hynny, gyda phob pasio ychwanegol, i yn cynnyddu. Ac felly ar y pwynt hwnnw, yn ôl pob tebyg yn mynd i i eisiau bod yn y lleiaf, am ei fod yn mynd i fod beth bynnag yn ddechrau y rhesi heb eu didoli. Cool. Felly nawr rydym am ychwanegu a ar gyfer dolen yma dyna mynd i ailadrodd trwy'r heb ei ddidoli, neu weddill amrywiaeth hwn. A oes unrhyw un eisiau rhoi i mi llinell o god a fyddai'n gwneud hynny? Hint-- beth sydd angen i ni lawr yma? Beth sy'n mynd i fynd yn eich am dolen? Yeah. GYNULLEIDFA: Felly byddem eisiau cael cyfanrif gwahanol, oherwydd ein bod yn rhedeg drwy'r gweddill y rhesi yn lle y ff, felly efallai j. Andi Peng: Yeah, j swnio'n dda i mi. Equals? GYNULLEIDFA: Felly fyddai i ynghyd ag 1, gan fod ydych yn dechrau ar y gwerth nesaf. Ac yna i'r end-- felly unwaith eto, j yn llai nag n minws 1, ac yna j ++. Andi Peng: Great. Ac yna i mewn yma, rydyn ni'n mynd i eisiau i wirio i weld a yw ein cyflwr yn cael ei fodloni, iawn? Oherwydd eich bod am newid y gwerth lleiaf os yw'n mewn gwirionedd yn llai na'r hyn a ydych yn ei gymharu i, dde? Felly, beth ydym yn mynd i eisiau i mewn yma? Edrychwch i weld. Pa fath o ddatganiad a ydym yn ôl pob tebyg yn mynd ti eisiau ei ddefnyddio os byddwn am wirio rhywbeth? GYNULLEIDFA: Mae pe datganiad. Andi Peng: Mae pe datganiad. Felly Os-- a beth sy'n mynd i fod yn y cyflwr yr ydym am y tu mewn o'n os datganiad? GYNULLEIDFA: Os yw gwerth j yn llai na gwerth i-- Andi Peng: Yn union. Felly Os-- felly gelwir arae hyn yn "array." Great. Felly os array-- beth oedd hynny? Ddweud hynny eto. GYNULLEIDFA: Os arae-j yn llai na arae-i, yna rydym yn newid y min. Felly byddai'r min fod j. Andi Peng: A yw hynny'n gwneud synnwyr? IAWN. Ac yn awr i lawr yma, rydym mewn gwirionedd awyddus i weithredu'r cyfnewid, dde? Felly yn galw i gof, yn y ddarlith, bod David, pan yr oedd yn ceisio ei gyfnewid the-- beth oedd sudd oren iddo-- a milk-- GYNULLEIDFA: Yr oedd crynswth. Andi Peng: Yeah, a oedd yn fath o gros. Ond yr oedd yn dda 'n bert gysyniad gan ddangos amser. Felly meddyliwch am eich gwerthoedd yma. Mae gennych amrywiaeth o min, amrywiaeth o ff, neu beth bynnag yr oeddem yn ceisio cyfnewid yma. Ac nad ydych yn gallu yn ôl pob tebyg yn eu arllwys i mewn ei gilydd ar yr un pryd, dde? Felly, beth ydym yn mynd y bydd angen i greu yma er mwyn cyfnewid y gwerthoedd yn gywir? GYNULLEIDFA: A newidyn dros dro. Andi Peng: A newidyn dros dro. Felly, gadewch i ni wneud temp int. Gweler, byddai hyn yn well amser canlynol-- Whoa, beth oedd hynny? IAWN. Felly byddai hyn wedi bod yn well amser i enwi y newidyn "dros dro." Felly, gadewch i ni wneud temp int. Beth ydym yn mynd i gosod dros dro cyfartal i fan hyn? GYNULLEIDFA: Min? Andi Peng: Mae braidd yn anodd. Nid yw o bwys mewn gwirionedd yn y diwedd. Nid oes ots beth Er y byddwch yn dewis i gyfnewid mewn ar yr amod eich bod yn gwneud yn siŵr eich bod yn cadw golwg ar yr hyn yr ydych yn cyfnewid. GYNULLEIDFA: Gallai fod yn array-i. Andi Peng: Yeah, gadewch i ni wneud amrywiaeth-i. Ac yna beth yw'r llinell nesaf o god yr ydym am ei gael yma? GYNULLEIDFA: arae-i yn hafal array-j. Andi Peng: Ac yn olaf? GYNULLEIDFA: arae-j hafal array-i. GYNULLEIDFA: Neu arae-j gyfartal arae-temp-- neu, temp. Andi Peng: OK. Felly gadewch i ni redeg hyn a gweld os yw'n mynd i weithio. Ble mae hynny'n digwydd? O, mae hynny'n broblem. Gweler, ar-lein 40, rydym yn ceisio defnyddio arae-j? Ond lle mae j ond yn bodoli mewn? GYNULLEIDFA: Yn y am ddolen. Andi Peng: Iawn. Felly, beth ydym yn mynd i angen ei wneud? GYNULLEIDFA: Diffinio y tu allan the-- GYNULLEIDFA: Yeah, yr wyf yn dyfalu bod gennych i ddefnyddio arall os datganiad, dde? Felly fel, os bydd y minimum-- iawn, gadewch i mi feddwl. Andi Peng: Guys, rhowch gynnig i gymryd golwg Dewch i gweler, beth sy'n rhywbeth yr ydym yn gallu ei wneud yma? GYNULLEIDFA: OK. Felly, os yw'r lleiaf nid yw'n gyfartal j-- felly os bydd y lleiaf yn dal i fod i-- yna ni fyddai rhaid i ni gyfnewid. Andi Peng: Ydy hynny'n gyfartal i? Beth ydych chi am ei ddweud yma? GYNULLEIDFA: Neu yeah, os yw'r lleiaf yn ff nid gyfartal, yeah. Andi Peng: OK. Wel sy'n datrys, math o, ein problemau. Ond mae hynny yn dal yn datrys y broblem o beth sy'n digwydd os j-- ers j yn bodoli y tu allan iddo, beth ydych chi ydym am ei wneud â hi? Datgan y tu allan? Gadewch i ni geisio rhedeg hyn. Uh-oh. Nid yw ein math sy'n gweithio. Fel y gwelwch, mae ein cychwynnol Roedd amrywiaeth gwerthoedd hynny. Ac wedi hynny dylai fod wedi bod mewn 1, 2, 3, 4, 5, 6, 7, 8, 9. Nid yw'n gweithio. Ahh. Beth ydym yn ei wneud? GYNULLEIDFA: Debug. Andi Peng: pob hawl, gallwn geisio hynny. Gallwn debug. Chwyddo allan ychydig. Gadewch i ni osod ein torbwynt. Gadewch i ni fynd OK like--. Felly, gan ein bod eisoes yn gwybod bod y llinellau hyn, 15 drwy 22, yn working-- gan fod yr holl rwy'n ei wneud yw dim ond ailadrodd trwy a printing-- Gallaf fynd yn ei flaen a sgipio hynny. Gadewch i ni ddechrau yn llinell 25. OOP, gadewch i mi gael gwared ar hynny. GYNULLEIDFA: Felly y torbwynt yn lle mae'r debugging yn cychwyn? Andi Peng: Neu stopio. GYNULLEIDFA: Neu stopio. Andi Peng: Yeah. Gallwch osod torbwyntiau lluosog a gall jyst neidio o un i'r llall. Ond yn yr achos hwn nid ydym yn gwybod lle mae'r camgymeriad yn digwydd. Felly rydym yn unig eisiau dechrau o'r brig i lawr. Yep. IAWN. Felly y llinell hon yma, gallwn gamu i mewn. Gallwch weld lawr yma, mae gennym amrywiaeth. Dyna'r gwerthoedd sydd yn y rhesi. A ydych yn gweld hynny, sut mynegai 0, mae'n cyfateb i'r value-- oh, Rydw i'n mynd i geisio chwyddo i mewn. Mae'n ddrwg gennym, mae'n anodd iawn i see-- ar fynegai array 0, mae gennym werth 4 a Yna, yn y blaen ac yn y blaen. Rydym wedi ein newidynnau lleol. Ar hyn o bryd fi yn hafal i 0, yr ydym am iddo fod. Ac felly gadewch i ni gadw camu drwodd. Mae ein leiaf yn hafal i 0, yr ydym hefyd eisiau iddo fod. Ac yna rydym yn mynd i mewn ein hail ar gyfer dolen, os arae-j yn llai na arae-i, nad oedd. Felly wnaethoch chi weld sut hynny hepgor dros hynny? GYNULLEIDFA: Felly dylai'r os lleiaf, pob Ni ddylai that-- hynny fod y tu mewn i'r cyntaf ar gyfer ddolen? Andi Peng: Na, oherwydd rydych yn dal yn awyddus i brofi. Byddwch am wneud cymhariaeth bob amser, hyd yn oed ar ôl i chi yn rhedeg drwyddo. Nid ydych yn unig am ei wneud ar y cyntaf pasio drwodd. Byddwch am wneud hynny gyda pob tocyn ychwanegol eto. Felly rydych chi am wirio am eich cyflwr y tu mewn. Felly rydym yn jyst yn mynd i cadw yn rhedeg drwy'r fan hyn. Byddaf yn rhoi i chi guys awgrym. Mae'n rhaid iddo wneud â'r ffaith bod pan fydd i chi wirio eich amodol, nad ydych yn gwirio ar gyfer y mynegai cywir. Felly, ar hyn o bryd i chi wirio am mynegai amrywiaeth o j yn llai na amrywiaeth mynegai i. Ond beth ydych chi'n ei wneud ar dechrau'r am ddolen? Ydych nad ydych yn gosod j cyfartal i fi? Yeah, felly y gallwn mewn gwirionedd gadael y debugger yma. Felly, gadewch i ni edrych ar ein pseudocode. For-- rydym yn mynd i yn dechrau am ff yn dychwelyd 0. Rydym yn mynd i fynd i fyny at n minws 1. Gadewch i ni wirio, oedd gennym yr hawl honno? Yep, hynny oedd yn iawn. Felly, yna y tu mewn fan hyn, rydym yn mynd i greu gwerth lleiaf ac yn gosod hynny yn hafal i i. A wnaethom ni wneud hynny? Yep, yn gwneud hynny. Nawr yn ein mewnol ar gyfer dolen, rydym yn mynd i wneud j hafal i fi n minws 1. A wnaethom ni wneud hynny? Yn wir, yr ydym yn gwneud hynny. Felly, fodd bynnag, beth ydym yn cymharu yma? GYNULLEIDFA: j ac 1. Andi Peng: Yn union. Ac yna rydych yn mynd i am osod eich lleiaf cyfartal i j ac 1 hefyd. Felly es drwy hynny yn gyflym iawn. A ydych yn guys yn deall pam ei fod yn j ac 1? IAWN. Felly, yn eich array, yn eich tocyn cyntaf trwy, eich am ddolen, er int ff yn dychwelyd 0, gadewch i ni cymryd yn ganiataol nad yw hyn wedi cael ei newid eto. Mae gennym amrywiaeth o, yn gyfan gwbl, dim ond pedair elfen heb eu didoli, dde? Felly rydym yn awyddus i ymgychwyn fi cyfartal i 0. A fi yn mynd i ddim ond rhedeg drwy'r ddolen hon. Ac felly yn y tocyn cyntaf, rydym yn mynd i ymgychwyn newidyn enw "min" sydd hefyd yn hafal i, oherwydd Nid oes gennym werth lleiafswm. Felly dyna hyn o bryd yn gyfartal i 0 yn ogystal. Ac yna rydym yn mynd i fynd drwy. Ac rydym am ailadrodd eto. Nawr ein bod yn wedi dod o hyd beth yw ein lleiafswm yw, yr ydym yn awyddus i ailadrodd drwy eto i weld os yw'n cymharu, dde? Felly j, yma, yn mynd i fi cyfartal, sydd yn 0. Ac yna os array j ynghyd i, a oedd yn yw'r un sy'n nesaf drosodd, fel llai na'r hyn y mae eich isafswm cyfredol gwerth yn, ydych am gyfnewid. Felly, gadewch i 'jyst dweud rydym wedi got, fel, 2, 5, 1, 8. Ar hyn o bryd, fi yn hafal i 0 ac j yn hafal i 0. A dyna ein gwerth lleiaf. Os arae-j plws i-- felly os yr un dyna ar ôl yr un rydym yn edrych ar yn fwy na'r un ger ei fron, mae'n mynd i fod y lleiaf. Felly dyma ni yn gweld bod 5 yn llai na hynny. Felly, mae'n mynd i beidio â bod 5. Rydym yn gweld bod 1 yn llai na 2, dde? Felly nawr rydym yn gwybod bod ein isafswm yw mynd i fod yn werth mynegai ar 0, 1, 2. Yeah? Ac yna pan fyddwch yn mynd i lawr fan hyn, gallwch gyfnewid y gwerthoedd cywir. Felly, pan fyddwch yn guys yn unig yn cael y j o'r blaen, nid ydych yn edrych ar y un ar ei ôl. Rydych yn edrych ar yr un gwerth, a oedd yn Dyna pam ei bod nid yn unig oedd yn gwneud unrhyw beth. A yw hynny'n gwneud synnwyr i bawb, pam yr oedd angen hynny ac 1 yno? IAWN. Nawr, gadewch i jyst yn rhedeg drwyddi i wneud yn siŵr bod y gweddill y cod yn gywir. Pam mae hynny'n digwydd? Ah, 'i' y min yma. Roeddem yn cymharu gwerth anghywir. O na. O ie, i lawr yma roeddem gyfnewid y gwerthoedd anghywir hefyd. Oherwydd ein bod yn edrych ar ff ac g. Mae'r rhai yw'r rhai yr oeddem yn gwirio. Rydym mewn gwirionedd yn awyddus i gyfnewid y lleiaf, yr isafswm ar hyn o bryd, gyda beth bynnag mae'r un y tu allan yn. Ac fel y gallwch chi weld guys i lawr yma, mae gennym amrywiaeth didoli. 'I jyst yn gorfod ei wneud gyda y ffaith bod pan fydd yr oeddem yn edrych ar y gwerthoedd yr oeddem yn cymharu, Nid oeddem yn edrych ar y gwerthoedd cywir. Rydym yn edrych ar yr un un yma, nid mewn gwirionedd yn cyfnewid ei. Mae'n rhaid i chi edrych ar yr un nesaf iddo ac yna gallwch gyfnewid. Felly dyna beth oedd yn fath o bugging ein cod blaen. A beth wnes i yma yw popeth gallai'r debugger wedi ei wneud ar eich cyfer Fi jyst yn gwneud hynny ar y bwrdd, am ei fod yn haws i weld yn hytrach na cheisio i chwyddo i mewn ar y dadfygiwr. A yw hynny'n gwneud synnwyr i bawb? Cool. Iawn. Gallwn symud ymlaen i siarad am nodiant asymptotic, a oedd yn yn unig yw ffordd ffansi o ddweud y runtimes holl mathau hyn. Felly, yr wyf yn gwybod David, yn y ddarlith, cyffwrdd runtimes. Ac efe a aeth drwy'r fformiwla cyfan o sut i gyfrifo'r runtimes. Dim pryderon am hynny. Os ydych chi'n wirioneddol chwilfrydig ar sut mae hynny'n gweithio, mae croeso i chi siarad â mi ar ôl adran. Gallwn cerdded drwy fformiwlâu at ei gilydd. Ond mae'n rhaid i 'n sylweddol pawb' ch guys wybod yw bod n sgwâr dros 2 yr un peth â n sgwâr. Oherwydd bod y nifer fwyaf, y ddehonglwr, yn tyfu y mwyaf. Ac felly ar gyfer ein dibenion, cyfan yr ydym yn gofalu am yw bod nifer enfawr sy'n tyfu. Felly beth yw'r achos gorau Rhedeg o'r math dethol? Os ydych yn mynd i gael i ailadrodd trwy restr ac yna ailadrodd drwy gweddill y rhestr, faint o amser yn cael eu ydych yn mynd i yn ôl pob tebyg, yn y achos-- gwaethaf yn y achos gorau, sorry-- rhedeg drwy? Efallai y cwestiwn gwell yw i ofyn, beth yw'r achos gwaethaf Rhedeg o'r math dethol. GYNULLEIDFA: n sgwâr. Andi Peng: Mae'n sgwâr n, ar y dde. Felly yn ffordd hawdd i feddwl am hyn yn debyg, unrhyw adeg gennych ddau nythu ar gyfer dolenni, mae'n mynd i gael ei sgwario n. Oherwydd nid yn unig ydych chi rhedeg drwy unwaith eto, rhaid i chi fynd yn ôl o gwmpas ac yn rhedeg drwy ei unwaith eto y tu mewn ar gyfer pob gwerth. Felly, yn yr achos hwnnw, ydych yn rhedeg n Amseroedd n sgwâr, sy'n yw-- ddrwg gennym, n amserau n, sy'n hafal sgwâr n. Ac didoli hefyd ychydig unigryw yn yr ystyr nad yw o bwys os yw'r rhain Gwerthoedd eisoes mewn trefn. Mae'n dal i fynd i redeg trwy anyways. Gadewch i 'jyst dweud hyn oedd 1, 2, 3, 4. Ni waeth ai peidio oedd yn gorchymyn, mae'n dal y byddai wedi rhedeg drwy ac yn dal i edrych ar y gwerth lleiaf. Byddai wedi gwneud y un nifer o wiriadau bob tro, hyd yn oed os yw'n Nid oedd mewn gwirionedd yn cyffwrdd unrhyw beth. Felly, mewn achos o'r fath, y gorau a'r gwaethaf runtimes mewn gwirionedd cyfwerth. Felly mae'r Rhedeg disgwyliedig o'r math dethol, yr ydym yn dynodi gan y symbol o theta, theta, yn yr achos hwn, Byddai hefyd yn cael eu sgwario n. Mae'r tri o'r rhain yn cael eu sgwario n. A yw pawb yn glir ynglŷn â pham mae'r Rhedeg yn sgwâr n? Iawn. Felly, Im 'jyst yn mynd i redeg yn gyflym drwy weddill y math. Mae'r algorithm ar gyfer sort-- swigen cofiwch, hwn oedd yr un cyntaf Dafydd a aeth yn y ddarlith. Yn y bôn, chi gam drwy'r rhestr gyfan ac yr ydych swap-- ch jyst cymharu dau ar y tro. Ac os bydd un yn fwy, nag ydych newydd eu cyfnewid. Felly os yw'r rhain yn fwy, a fyddech yn cyfnewid. Mae gen swyddogol yma. Felly, gadewch i 'jyst dweud eich bod wedi cael 8, 6, 4, 2. Byddech yn cymharu'r 8 a 6. Byddai angen i chi gyfnewid eu cyfer. Byddech yn cymharu'r 8 a 4. Byddai angen i chi gyfnewid eu cyfer. Os oes rhaid i chi gyfnewid y 8 a y 2, yn eu newid hefyd. Felly, mewn ystyr o'r fath, gallwch weld, chwarae allan dros gyfnod hir o amser, sut gwerthoedd math o swigen i y ben, a dyna pam rydym yn galw ei didoli swigen. Byddem yn unig yn rhedeg drwy unwaith eto ar ein hail pasio, ac mae ein trydydd pasio, ac mae ein pedwerydd pasio. Yn y bôn, swigen fath dim ond yn rhedeg hyd nes nad ydych yn gwneud unrhyw mwy o gyfnewidiadau. Felly, yn yr ystyr hwnnw, mae hyn yn unig y pseudocode cyffredinol ar ei gyfer. Dim pryderon, bydd y rhain i gyd fod ar-lein. Nid oes rhaid i ni fynd mewn gwirionedd dros hyn. Rydym yn unig gychwyn y cyfrif newidyn sy'n dechrau ar 0. Ac rydym yn ailadrodd drwy'r casgliad cyfan. Ac os bydd un gwerth yw-- os yw hyn gwerth yn fwy na gwerth, ydych chi'n mynd i gyfnewid eu cyfer. Ac yna rydych yn unig mynd i ddal ati. A ydych yn mynd i gyfrif. A ydych ond yn mynd i barhau i wneud hwn tra y cownter yn fwy na 0, sy'n golygu bod bob tro y mae'n rhaid i chi gyfnewid, eich bod yn gwybod eich bod am fynd yn ôl ac edrychwch eto. Ydych am gadw wirio nes eich bod yn gwybod nad oes rhaid i chi gyfnewid anymore. Felly beth yw'r gorau a'r gwaethaf achos runtimes ar gyfer y math swigen? Ac mae hyn hint-- mewn gwirionedd yn wahanol o fath dewis yn yr ystyr nad yw'r ddau ateb yr un fath. Meddyliwch am beth fyddai'n digwydd mewn achos os yw eisoes wedi'i datrys. A meddwl am yr hyn y fyddai'n digwydd pe bai'n yn yr achos lle na chafodd ei datrys. A gallwch fath o redeg drwy pam mae hynny'n digwydd. 'N annhymerus' yn rhoi guys i chi, fel, 30 eiliad i feddwl am hynny. IAWN. Oes gan unrhyw un ddyfalu ar yr hyn y Rhedeg achos gwaethaf o'r math swigen yw? Yeah. GYNULLEIDFA: A fyddai'r fod, fel, n amserau n minws 1 neu rywbeth fel 'na? Fel, bob tro y mae'n rhedeg, 'i' jyst, fel, un cyfnewid yn llai bod beth bynnag yr oedd. Andi Peng: Yeah, felly eich bod yn hollol gywir. Ac mae hyn yn achos lle eich ateb oedd mewn gwirionedd yn fwy cymhleth na'r un mae angen i ni roi. Felly, mae'n mynd i run-- rwy'n mynd i ddileu hyn i gyd yma. A yw pawb yn dda? Alla i ddileu hyn? IAWN. Rydych yn mynd i redeg trwy n Amseroedd y tro cyntaf, dde? Ac maen nhw'n mynd i redeg drwy n minws 1 yr ail dro, dde? Ac yna rydych yn mynd i gadw mynd, n pwll 2, et cetera. David yn gwneud hyn mewn darlith, lle, os ydych yn ychwanegu i fyny i gyd gwerthoedd hynny, eich bod yn cael rhywbeth sy'n like-- yeah-- dros 2, sydd yn eu hanfod yn unig yn lleihau i lawr i n sgwâr. Rydych yn mynd i gael ffracsiwn rhyfedd mewn 'na. Ac felly jyst yn gwybod bod y n sgwâr bob amser cymryd blaenoriaeth dros y ffracsiwn. Ac felly yn yr achos hwn, y gwaethaf Byddai Rhedeg yn cael ei sgwario n. Os oedd yn ddisgynnol gorchymyn, yn meddwl, i chi rhaid i wneud cyfnewid bob tro. Beth fyddai, o bosibl, yr Rhedeg achos gorau? Gadewch i 'jyst dweud, os y rhestr yn barod er, beth fyddai'r Rhedeg fod? GYNULLEIDFA: n. Andi Peng: Mae'n n, yn union. A pham ei fod n? GYNULLEIDFA: Oherwydd eich bod yn unig rhaid i wirio ar bob unwaith. Andi Peng: Yn union. Felly, yn y Rhedeg gorau posibl, os y rhestr hon eisoes sorted-- gadewch i ni ddweud 1, 2, 3, 4-- chi Byddai dim ond yn mynd drwy, byddech yn gwirio, byddech yn gweld, oh, maent i gyd yn sosban allan. Nid oedd rhaid i mi gyfnewid. Dwi wedi gorffen. Felly, yn yr achos hwnnw, 'i' jyst n neu nifer y camau yr ydych yn unig roedd yn rhaid i wirio yn y rhestr gyntaf. Ac ar ôl, rydym yn awr yn taro didoli mewnosod, lle yr algorithm yn ei hanfod i rannu i mewn cyfran didoli a heb eu didoli. Ac yna o un i un, gwerthoedd heb eu didoli yn mewnosod yn eu priodol swyddi yn y dechrau y rhestr. Felly, er enghraifft, mae gennym rhestr o 3, 5, 2, 6, 4 eto. Rydym yn gwybod ei bod yn bryd heb eu didoli gan ein bod ni newydd Dechreuodd edrych arno. Rydym yn cymryd golwg ac rydym yn gwybod bod mae'r gwerth cyntaf yn cael ei ddidoli, dde? Os ydych yn edrych yn unig ar amrywiaeth o maint un, byddwch yn gwybod ei fod yn datrys. Felly, yna rydym yn gwybod bod y pedwar arall yn heb eu didoli. Rydym yn mynd drwy ac rydym yn gweld bod gwerth. Gadewch i ni fynd yn ôl. Gweler y gwerth o 5? Rydym yn edrych ar hynny. Rydym yn ei gymharu i 3. Rydym yn gwybod ei bod yn fwy na 3, felly rydym yn gwybod bod hynny wedi datrys. Felly, rydym bellach yn gwybod bod y ddau gyntaf yn cael eu didoli ac nid y tri olaf yn cael eu. Rydym yn edrych ar 2. Rydym yn gyntaf wirio gyda 5. A yw'n llai na 5? Nid yw'n. Felly, mae'n rhaid i ni gadw yn edrych i lawr. Yna byddwch yn gwirio 2 off 3. A yw'n llai na? Na Felly, ydych chi'n gwybod am 2 gael ei fewnosod i mewn i'r tu blaen a 3 a 5 y ddau yn gorfod eu gwthio allan. Gwnewch hyn eto gyda 6 a 4. Ac rydym yn unig yn cadw wirio ei hanfod, lle rydym yn unig yn gwirio, gwirio, gwirio. A hyd nes ei fod yn hawl sefyllfa, rydym yn fath o yn unig mewnosod i mewn i'r safle cywir, a dyna ble y daeth yr enw ohono o. Felly dyna dim ond y algorithm, pseudocode fel y cyfryw, math o, ar sut y byddem yn gweithredu yn fath fewnosod. Pseudocode yma. Mae hyn i gyd ar-lein. Dim pryderon os ydych guys yn ceisio copïo hyn i lawr. Felly, unwaith eto, yr un question-- beth Byddai fod y gorau a'r gwaethaf runtimes am fath gosod? Mae'n debyg iawn i'r cwestiwn diwethaf. 'N annhymerus' yn rhoi guys i chi, fel, 30 eiliad i feddwl am hyn hefyd. OK A oes unrhyw un eisiau rhoi'r Rhedeg gwaethaf i mi? Yeah. GYNULLEIDFA: n sgwâr. Andi Peng: Mae'n sgwâr n. A pham ei fod sgwâr n? GYNULLEIDFA: Oherwydd yn trefn cefn, mae gennych i fynd drwy gyfnodau n n, sy'n yw-- Andi Peng: Yeah, yn union. Felly un peth ag yn y math swigen. Os yw rhestr hon yn mewn trefn ddisgynnol, rydych yn mynd i gael i wirio unwaith gyntaf. Ac yna gyda phob gwerth ychwanegol, rydych yn mynd i gael ei wirio yn erbyn pob un gwerth, dde? Ac felly yn gyfan gwbl, rydych chi'n mynd i wneud mae amseroedd pasio n arall n pasio, a oedd yn wedi'i sgwâr n. Beth am yr achos gorau? Yeah. GYNULLEIDFA: n minws 1, oherwydd bod y un cyntaf eisoes yn sgwâr. Andi Peng: Felly, yn agos. Yr ateb ydy 'n weithredol n. Oherwydd tra bod yr un cyntaf yn didoli, efallai na fydd actually-- ei rydym yn unig lucked allan, yn hynny enghraifft, bod 2 digwydd bod y nifer lleiaf. Ond ni fydd bob amser yn wir. Os 2 eisoes yn cael ei ddidoli yn y dechrau ond yr ydych yn edrych ac mae 'na o 1 yma, 1 yn mynd i hwb iddo. Ac mae'n mynd i ben i fyny yn cael ei wthio anyways. Felly, yn y senario achos gorau, 'i' mewn gwirionedd yn jyst yn mynd i fod yn n. Os oes gennych 1, 2, 3, 4, 5, 6, 7, 8, rydych yn mynd i redeg drwy y rhestr gyfan unwaith i wirio i weld a yw popeth yn iawn. A yw pawb yn glir ynghylch rhedeg adegau o ddethol hefyd? Rwy'n gwybod fy mod i'n mynd trwy mae'r rhain yn gyflym iawn. Ond dim ond yn gwybod os ydych yn gwybod y cysyniadau cyffredinol, dylech fod yn dda. IAWN. Felly byddaf rhowch guys i chi efallai, fel, munud i siarad â'ch cymdogion ar yr hyn yn rhai o'r prif wahaniaethau rhwng y mathau hyn o ryw fath. Byddwn yn mynd dros yn fuan. GYNULLEIDFA: O, OK. Andi Peng: Yeah. IAWN. Cool, gadewch i ailgynnull fel dosbarth. IAWN. Felly, mae hyn yn fath o cwestiwn penagored yn yr ystyr bod yna lawer o atebion iddynt. A byddwn yn mynd dros rai ohonynt yn gryno. Fi jyst eisiau i fynd â chi guys meddwl am yr hyn gwahaniaethol pob un o'r tri math o ryw fath. Ac yr wyf yn clywed, hefyd, yn fawr question-- beth mae yn uno fath yn ei wneud? Cwestiwn mawr, oherwydd dyna beth rydym yn cwmpasu nesaf. Felly uno didoli yw'r un math sy'n swyddogaethau yn wahanol iawn i'r mathau eraill. Fel y gallwch guys see-- wnaeth David yn gwneud hynny demo lle cafodd yr holl oer synau o weld sut uno Rhedodd didoli, fel, ganmil gyflymach na'r ddau fath arall? IAWN. Felly mae hynny oherwydd uno didoli gweithredu y rhaniad a gorchfygu cysyniad fod rydym wedi siarad am lawer yn y ddarlith. Yn yr ystyr ein bod yn hoffi gweithio graffach, nid yn galetach, pan fyddwch yn rhannu a gorchfygu problemau, ac yn torri nhw lawr, ac yna ei roi at ei gilydd, pethau da bob amser yn digwydd. Felly, y ffordd y mae uno didoli yn y bôn yn gweithio yw ei fod yn rhannu yn amrywiaeth heb eu didoli yn ei hanner. Ac yna 'i' got dau hanner arrays. Ac 'i jyst yn didoli'r rheiny ddau hanner. 'I jyst yn cadw rhannu yn ei hanner, yn hanner, yn ei hanner hyd nes popeth yn cael ei datrys ac yna recursively yn ei roi i gyd at ei gilydd. Felly dyna wir yn haniaethol. Felly, mae hyn yn unig yw ychydig o pseudocode. A yw hynny'n gwneud synnwyr mewn y ffordd y mae'n rhedeg? Felly, gadewch i 'jyst dweud gennych amrywiaeth o elfennau n, dde? Os yw n yn llai na 2, gallwch ddychwelyd. Oherwydd eich bod yn gwybod, os oes dim ond un peth, mae'n rhaid ei datrys. Arall, i ddatrys yr hanner chwith, ac yna i ddatrys yr hanner cywir, ac yna rydych uno. Felly, er bod yn edrych yn hawdd iawn, mewn gwirionedd, yn meddwl am ei fod yn math o anodd. Am eich bod yn hoffi, yn dda, mae hynny'n fath o rhedeg ar ei hun. Iawn? Mae'n rhedeg ar ei hun. Felly, yn yr ystyr honno, cyffwrdd David ar dychweliad yn y dosbarth. A dyna cysyniad byddwn yn siarad am fwy. Mae'n bod hyn, mae'r ddwy linell yma, mewn gwirionedd dim ond y rhaglen dweud iddo redeg ei hun gyda mewnbwn gwahanol. Felly yn hytrach na rhedeg ei hun gyda y cyfan o'r elfennau n, gallwch ei dorri i lawr i mewn i'r chwith hanner a hanner cywir ac yna rhedeg eto. Ac yna byddwn yn edrych arno ar eu golwg, am fy mod i'n ddysgwr gweledol. Mae'n gweithio'n well i mi. Felly, byddwn yn edrych ar enghraifft weledol yma. Lets 'ddeud gennym amrywiaeth, chwech elfennau, 3, 5, 2, 6, 4, 1, nid yw didoli. Mae pob hawl, mae llawer ar y dudalen hon. Felly, os gallwch chi guys yn edrych ar y cam cyntaf yma, 3, 5, 2, 6, 4, 1, gallwch ei rannu yn ei hanner. Mae gennych 3, 5, 2, 6, 4, 1. Rydych yn gwybod bod y rhain aren't-- chi nid ydynt yn gwybod os ydynt yn didoli neu beidio, felly eich bod yn cadw torri i lawr, yn ei hanner, yn ei hanner, yn ei hanner, nes yn y pen draw, Dim ond un elfen i chi. Ac un elfen yn cael ei datrys bob amser, dde? Felly, rydym yn gwybod bod 3, 5, 2, 4, 6, 1, ynddynt eu hunain, yn cael eu datrys. Ac yn awr y gallwn ni eu rhoi yn ôl at ei gilydd. Felly, rydym yn gwybod y 3, 5. Rydym yn rhoi hynny at ei gilydd. Rydym yn gwybod bod yn didoli. Mae'r 2 yn dal i fod yno. Gallwn roi'r 4 a 6 gyda'i gilydd. Gwyddom fod hynny wedi eu didoli, felly rydym yn rhoi hynny at ei gilydd. Ac mae'r 1 yno. Ac yna 'ch jyst yn edrych ar y ddau hanner iawn yma. Mae gennych y 3, 5, 2, 2, 3, 5. Alli jyst gymharu'r gan ddechrau o bopeth. Oherwydd eich bod yn gwybod bod hyn yn cael ei datrys a ydych yn gwybod bod hynny wedi datrys. Felly peidiwch hyd yn oed yn rhaid i chi cymharu'r 5, 'ch jyst cymharu'r 3. Ac mae'r 2 yn llai na 3, felly Mae'n rhaid eich bod yn gwybod 2 yn mynd yn y diwedd. Un peth drosodd yno. Mae'n rhaid i'r 1 ewch yma. Ac yna pan fyddwch yn mynd i roi dau werth hynny at ei gilydd, eich bod yn gwybod bod hyn yn cael ei ddidoli a'i eich bod yn gwybod bod hynny'n cael ei datrys. Felly, yna y 1 a'r 2, mae'r 1 yn llai na 2. Mae hynny'n dweud wrthych fod y 1 Dylai fynd ar ddiwedd y heb hyd yn oed edrych ar 3 neu 5. Ac yna y 4, gallwch jyst siec, mae'n mynd yn iawn yn fan hyn. Nid oes rhaid i chi edrych ar y 5. Yr un peth â'r 6. Rydych yn gwybod bod y 6-- 'i jyst Nid oes angen gofalu. Ac felly yn y ffordd honno, rydych yn dim ond arbed eich hun llawer o gamau pan fyddwch yn cymharu. Nid oes rhaid i chi gymharu pob elfen yn erbyn elfennau eraill. Rydych yn unig yn cymharu yn erbyn y rhai bod angen i chi gymharu yn ei erbyn. Felly dyna fath o gysyniad haniaethol. Dim pryderon os nad yw'n hollol chi taro yn iawn eto. Ond yn gyffredinol, mae hyn yn sut fath uno yn gweithio. Cwestiynau, cwestiynau cyflym, cyn i mi symud ymlaen? Yeah. GYNULLEIDFA: Felly yr ydych wedi dweud eich bod yn cymryd y 1, ac yna y 4, ac mae'r 6 ac yn eu rhoi mewn. Felly nid ydynt yn cael eu nid those-- ydych yn edrych arnynt fel elfennau ar wahân, nid fel y cyfan? Andi Peng: Yeah. Felly, beth sy'n digwydd yw eich bod yn y bôn yn creu amrywiaeth newydd sbon. Felly rydych yn gwybod bod, yma, yr wyf wedi ddau arae o faint 3, dde? Felly, rydych yn gwybod bod fy array ddidoli Mae angen i gael chwe elfen. Felly rydych yn unig yn creu swm newydd o gof. Felly rydych yn fath o fel bod yn wastraffus o gof, ond nid yw hynny'n fater am ei fod mor fach. Felly, rydych yn edrych ar y 1 ac edrych ar y 2. A ydych yn gwybod bod y 1 yn llai na 2. Felly, rydych yn gwybod y dylai 1 fynd i mewn ddechrau pob un o'r rheini. Nid oes angen i chi hyd yn oed yn edrych ar y 3 a'r 5. Felly, rydych yn gwybod 1 yn mynd yno. Yna byddwch yn y bôn torri oddi ar y 1. Mae'n, fel, yn farw i ni. Yna, rydym yn unig yn cael 2, 3, 5, ac yna 4 a 6. Ac yna rydych yn gwybod hynny, yr ydych cymharu'r 4 a'r 2, oh, dylai'r 2 yn mynd i mewn 'na. Felly rydych sw n plopian y 2 lawr, byddwch yn torri 'i off. Felly, yna 'ch jyst yn cael y 3 a'r 5 yn y 4 a 6. A ydych yn jyst cadw torri i ffwrdd hyd nes y byddwch yn eu rhoi yn y rhesi. GYNULLEIDFA: Felly rydych yn unig bob amser cymharu'r [Anghlywadwy]? Andi Peng: Yn union. Felly, yn yr ystyr honno, rydych yn dim ond cymharu, yn y bôn, un rhif yn erbyn y rhif arall. Ac oherwydd eich bod yn gwybod ei fod yn didoli, yr ydych Nid oes rhaid i edrych drwy pob un o'r rhifau. Mae'n rhaid i chi edrych ar yr un cyntaf. Ac yna gallwch sw n plopian i lawr, oherwydd eich bod yn gwybod maent yn perthyn ble mae angen i berthyn. Yeah. Cwestiwn da. Ac yna, os unrhyw un ohonoch yn ychydig yn uchelgeisiol, mae croeso i edrych ar y cod hwn. Mae hyn mewn gwirionedd y gweithredu corfforol o sut y byddem yn ysgrifennu fath uno. A gallwch weld, mae'n byr iawn. Ond mae'r syniadau y tu ôl mae'n yn eithaf cymhleth. Felly, os ydych yn teimlo fel tynnu hyn allan yn eich gwaith cartref heno, mae croeso i. IAWN. Felly hefyd Dafydd a aeth hyn yn y ddarlith. Beth yw'r achos gorau runtimes, runtimes achos gwaethaf, ac mae'r runtimes a ddisgwylir o'r math uno? Mae eiliadau cwpl i feddwl. Mae hyn yn eithaf caled, ond yn fath o 'n athrylithgar os ydych yn meddwl am y peth. Iawn. GYNULLEIDFA: A yw'r log n gwaethaf achos n? Andi Peng: Yn union. A pham ei fod n log n. GYNULLEIDFA: Onid yw'n oherwydd ei fod yn yn dod yn gynt a chynt yn gyflymach, felly mae fel swyddogaeth o hynny hytrach na dim ond dim ond bod yn n sgwâr neu rywbeth? Andi Peng: Yn union. Felly y rheswm pam fod y Rhedeg ar hyn yw n log n yn because-- beth ydych chi ei wneud ym mhob un o'r camau hyn? Ydych ond yn torri yn ei hanner, dde? Ac felly pan rydym yn ei wneud y log, y cyfan y mae'n ei wneud yn rhannu problem yn ei hanner, yn ei hanner, yn ei hanner, mewn mwy o haneri. Ac yn yr ystyr hwnnw, gallwch garedig o gael gwared ar y model llinol ein bod wedi bod yn defnyddio. Oherwydd pan fyddwch dorri pethau yn ei hanner, mae'n log. Dyna dim ond y fathemategol ffordd o gynrychioli arno. Ac yna yn olaf, ar y diwedd, rydych yn dim ond gwneud un tocyn olaf drwy i roi pob un ohonynt yn eu trefn, dde? Ac felly os oes gen i chi gwiriwch un peth, mae hynny'n n. Ac felly eich bod yn fath o lluosi'r ddau gyda'i gilydd. Felly mae fel bod gennych y rownd derfynol wirio am n lawr yma gyda log o n i fyny fan hyn. Ac os ydych yn lluosi wrthynt, hynny n ei logio n. Ac felly yr achos gorau a gwaethaf achos a ddisgwylir i gyd n log n. Mae'n hefyd yn hoffi fath arall. Mae fel math dethol yn yr ystyr ei fod nid oes gwahaniaeth beth yw eich rhestr yn, dim ond ei fod yn mynd i wneud yr un peth bob tro. IAWN. Felly, fel y gallwch weld guys, er bod y mathau yr ydym wedi mynd through-- n sgwâr, nid yw'n effeithlon iawn. A hyd yn oed y n log n yn nid oedd y mwyaf effeithlon. Os ydych guys yn chwilfrydig, mae mecanweithiau didoli sydd mor effeithlon sy'n eu bod yn bron yn wastad yn ei hanfod yn Rhedeg. Rydych chi wedi cael rhai log n ei. Rydych chi wedi cael rhai log n ei log. Nid ydym yn cyffwrdd arnynt yn y dosbarth hwn ar hyn o bryd. Ond os ydych guys yn chwilfrydig, croeso i google, beth sydd mecanweithiau didoli mwyaf effeithlon. Nid wyf yn gwybod, mae yna rhai rhai 'n sylweddol ddoniol, like-- mae rhywfaint 'n sylweddol rhai doniol y mae pobl yn ei wneud. A ydych yn meddwl tybed sut y maent yn erioed wedi meddwl am hynny. Felly google, os oes gennych rywfaint dros ben amser, ar, pa rai ffyrdd ddoniol hynny people-- yn ogystal â pobl ways-- effeithlon wedi gallu i weithredu math. IAWN. A dyma dim ond siart bach handi. Yr wyf yn gwybod bob un ohonoch, cyn y cwis 0, Bydd yn eich ystafell yn ceisio yn ôl pob tebyg i gofio hynny. Felly dyna braf yn yno i chi guys. Nid yn unig yn anghofio'r rhesymeg sy'n made-- pam y niferoedd hynny yn digwydd. Os ydych yn colli bob tro, dim ond gwneud yn siŵr eich bod yn gwybod beth yw'r mathau yn cael eu. A allwch chi redeg trwy'r nhw yn eich meddwl at chyfrif i maes pam y rhai atebion yr atebion hynny. Iawn. Felly rydym yn mynd i symud ar, yn olaf, i chwilio. Oherwydd fel y rhai ohonoch sydd wedi darllen y pset, chwilio hefyd yn rhan o problem yr wythnos hon yn gosod. Gofynnir i chi i weithredu dau fath o chwiliadau. Mae un yn chwiliad llinol a mae un yn chwilio deuaidd. Felly mae'r chwiliad llinol yn weddol hawdd. Rydych yn unig am ei chwilio elfen o restr i weld a ydych yn ei gael. Mae'n rhaid i chi ailadrodd drwy'r. Ac os bydd yn hafal rhywbeth, gallwch ei ddychwelyd, dde? Ond mae'r un yr ydym yn fwyaf diddordeb mewn siarad am yn chwilio deuaidd, ar y dde, sef y rhannu a gorchfygu mecanwaith sy'n David yn dangos mewn darlith. Cofiwch yr enghraifft llyfr ffôn ei fod yn cadw magu, yr un ei fod yn fath o trafferth ychydig ar y flwyddyn a aeth heibio, lle rydych yn rhannu'r broblem yn ei hanner, yn ei hanner, yn ei hanner, dro ar ôl tro, nes i chi o hyd i'r hyn rydych yn chwilio amdano? A ydych wedi cael y Rhedeg o hynny hefyd. A gallwch weld, 'i' llawer mwy effeithlon nag unrhyw fath arall o chwilio. Felly, y ffordd y byddem yn mynd ati i gweithredu chwiliad deuaidd yw, os oedd gennym amrywiaeth, Mynegai 0-6, saith elfen, gallwn edrych yn y canol, right-- ddrwg gennym, os yw ein cwestiwn first-- os ydym am ofyn y cwestiwn o, mae yr amrywiaeth yn cynnwys yr elfen o 7, yn amlwg, sef pobl, a chael fath amrywiaeth fach, mae'n hawdd i ni i ddweud ie. Ond y ffordd i weithredu deuaidd Byddai chwilio fydd edrych yn y canol. Rydym yn gwybod bod mynegai 3 yw y canol, oherwydd ein gwybod bod saith elfen. Pa 7 wedi'i rannu â 2? Gallwch dorri i ffwrdd y ychwanegol 1. Rydych chi wedi got 3 yn y canol. Felly, mae amrywiaeth o 3 hafal i 7? Nid yw'n, dde? Ond gallwn wneud un neu ddau o sieciau. A yw amrywiaeth o 3 yn llai na 7 neu yn amrywiaeth o 3 yn fwy na 7? Ac rydym yn gwybod ei fod yn llai na 7. Felly, rydym yn gwybod bod, oh, rhaid iddo beidio â bod yn hanner chwith. Rydym yn gwybod bod yn rhaid iddo fod yn yn yr hanner cywir, dde? Felly gallwn jyst torri off hanner y rhesi. Nid oes hyd yn oed yn rhaid i Rydym yn edrych arno anymore. Oherwydd gwyddom fod hanner ein problem-- rydym yn gwybod bod yr ateb yn hanner hawl ein problem. Felly rydym yn unig yn edrych ar hynny yn awr. Felly, nawr rydym yn edrych ar y canol hyn sydd ar ôl. Mae hynny'n mynegai 5. Rydym yn gwneud yr un siec eto ac rydym yn gweld ei fod yn llai o faint. Felly, rydym yn edrych ar y chwith o hynny. Ac yna rydym yn gweld bod siec. Yw gwerth amrywiaeth yn Mynegai 4 hafal i 7? Mae'n. Er mwyn i ni ddychwelyd wir, oherwydd rydym yn dod o hyd i'r gwerth yn ein rhestr. A yw'r ffordd Es i drwy hynny'n gwneud synnwyr i bawb? IAWN. Byddaf yn rhoi i chi guys efallai, fel, tri, pedwar munud i chyfrif i maes sut i pseudocode hyn yn. Felly dychmygwch yr wyf yn gofyn i chi ysgrifennu swyddogaeth a elwir yn chwilio () a ddychwelodd gwerth, mae gwerth Boole, a oedd yn wir neu'n false-- fel, wir os ydych dod o hyd i'r gwerth, ffug os na wnaethoch. Ac yna oeddech yn basiwyd yn y gwerth i chi yn chwilio am mewn i werthoedd, sy'n yw'r array-- oh, yr wyf yn bendant yn rhoi bod yn y lle anghywir. IAWN. Anyways, dylai hynny gael bod ar y dde o'r gwerthoedd. Ac yna int n yw nifer o elfennau yn y rhesi. Sut fyddech chi'n mynd ati i geisio i pseudocode y broblem honno yn? 'N annhymerus' yn rhoi guys fel chi tri munud i wneud hynny. Na, yr wyf yn meddwl bod yna only-- yeah, mae un cywir i fyny yma. GYNULLEIDFA: A all i? Andi Peng: Yeah, yr wyf yn got chi. A yw hynny'n gweithio? OK, oer. IAWN. Mae pob guys iawn, rydym yn mynd i ffrwyn i mewn. IAWN. Felly, yn cymryd yn ganiataol ein bod wedi cael hyn hyfryd ychydig iawn o amrywiaeth gyda gwerthoedd n ynddo. Doeddwn i ddim yn tynnu y llinellau. Ond sut y byddem yn mynd ati i ceisio ysgrifennu hyn? A oes unrhyw un eisiau rhoi'r llinell gyntaf i mi? Os ydych am roi 'm' r llinell gyntaf pseudocode hwn. GYNULLEIDFA: [Anghlywadwy] GYNULLEIDFA: Byddech eisiau i ailadrodd through-- GYNULLEIDFA: Dim ond un arall ar gyfer dolen? GYNULLEIDFA: --for. Andi Peng: Felly yr un yma yn ychydig yn anodd. Meddyliwch about-- ydych eisiau i gadw redeg dolen hwn dro ar ôl tro hyd nes y pryd? GYNULLEIDFA: Hyd nes y [Anghlywadwy] gwerth yn hafal i'r gwerth. Andi Peng: Yn union. Felly, gallwch chi mewn gwirionedd yn unig write-- gallwn hyd yn oed symleiddio yn fwy. Allwn wneud dolen tra, dde? Felly, gallwch gael loop-- rydym yn gwybod ei fod yn tra. Ond am ar hyn o bryd, dw i'n mynd i ddweud "dolen" - drwy'r hyn? Loop until-- beth yw ein cyflwr yn dod i ben? Rwy'n credu fy mod wedi clywed amdano. Clywais rywun yn dweud ei fod. GYNULLEIDFA: Gwerthoedd hafal canol. Andi Peng: Dywedwch eto. GYNULLEIDFA: Neu, hyd nes y gwerth ydych yn chwilio i yn hafal i'r gwerth canol. Andi Peng: Beth os nad yw'n mewn 'na? Beth os yw gwerth yr ydych yn chwilio am beidio mewn gwirionedd yn y arae hwn? GYNULLEIDFA: Yr ydych yn dychwelyd 1. Andi Peng: Ond beth ydyn ni eisiau ei dolen tan os oes gennym cyflwr? Yeah. GYNULLEIDFA: Hyd nes dim ond un gwerth? Andi Peng: Gallwch dolen until-- felly eich bod yn gwybod eich bod yn mynd i gael gwerth max, dde? A ydych yn gwybod eich bod yn mynd i gael gwerth min, dde? Oherwydd hefyd, dyna rhywbeth Wedi anghofio dweud o'r blaen, bod rhywbeth sy'n feirniadol am chwiliad deuaidd yw bod eich arae eisoes yn cael ei datrys. Oherwydd does dim ffordd o wneud hyn os ydynt yn werthoedd yn unig ar hap. Nid ydych yn gwybod os oes un yn fwy na'r llall, dde? Felly, rydych yn gwybod bod eich max a eich munud yma, dde? Os ydych yn mynd i gael ei addasu eich max yn eich munud a'r mid-- gadewch i ni jyst cymryd yn ganiataol eich canol gwerth yn gywir Yma-- ydych yn mynd i yn y bôn dolen nes bydd eich lleiaf yw am yr un fath â'ch max, i'r dde, neu os nad yw eich max yn yr un fath â'ch min. Iawn? Oherwydd pan fydd hynny'n digwydd, byddwch yn gwybod bod eich bod yn y pen draw wedi taro un gwerth. Felly rydych chi am dolen nes bydd eich min yn llai na neu'n hafal canlynol-- wps, heb fod yn llai na neu'n hafal i, y ffordd arall around-- max yw. Oedd yn gwneud synnwyr? Cymerais ychydig o geisiau i gael hynny'n iawn. Ond mae dolen nes bydd eich gwerth max yn ei hanfod bron llai na neu'n hafal i eich lleiaf, dde? Dyna pan fyddwch yn gwybod eich bod wedi cydgyfeirio. GYNULLEIDFA: Pryd y byddai eich uchafswm werth fod yn llai na'r isafswm? Andi Peng: Os ydych yn cadw addasu iddo, a oedd yn beth yr ydym yn mynd i fod yn ei wneud yn hyn. A yw hynny'n gwneud synnwyr? Isafswm a max yn unig gyfanrifau ein bod yn ôl pob tebyg mynd i eisiau creu gadw golwg ar ble rydym yn edrych. Oherwydd bod y casgliad yn bodoli waeth beth yw hyn yr ydym yn ei wneud. Fel, nid ydym yn mewn gwirionedd yn gorfforol torri oddi ar y array, dde? Rydym yn unig addasu lle rydym yn edrych. A yw hynny'n gwneud synnwyr? GYNULLEIDFA: Yeah. Andi Peng: OK. Felly os dyna y cyflwr ar gyfer ein dolen, beth ydyn ni eisiau tu mewn dolen hwn? Beth ydym yn mynd i fod eisiau ei wneud? Felly ar hyn o bryd, mae gennym max a min, ar y dde, Mae'n debyg ei greu i fyny yma yn rhywle. Rydym yn mynd yn ôl pob tebyg i fod eisiau i ddod o hyd canol, dde? Sut ydym yn mynd i fod yn gallu dod o hyd y canol? Beth yw'r mathematical-- GYNULLEIDFA: Max yn ogystal â min wedi'i rannu â 2. Andi Peng: Yn union. A yw hynny'n gwneud synnwyr? Ac a ydych yn guys yn gweld pam ein Nid oedd dim ond use-- pam ein bod yn gwneud hyn yn hytrach na gwneud dim ond n rhannu â 2? Mae'n oherwydd n yn werth mae hynny'n mynd i aros yr un fath. Iawn? Ond wrth i ni addasu ein isafswm ac gwerthoedd y mwyaf, maent yn mynd i newid. Ac o ganlyniad, mae ein canol yn mynd i newid hefyd. Felly dyna pam yr ydym am i wneud hyn yn iawn yma. IAWN. Ac yna, nawr bod rydym wedi dod o hyd our-- yeah. GYNULLEIDFA: Dim ond question-- cyflym pan fyddwch yn dweud min a max, yr ydym yn tybio bod mae eisoes wedi datrys? Andi Peng: Yeah, dyna mewn gwirionedd yn rhagamod ar gyfer chwiliad deuaidd, eich bod yn rhaid i gwybod ei fod yn datrys. Pa un yw pam didoli, byddwch yn ysgrifennu yn eich problem a osodwyd cyn eich chwiliad deuaidd. IAWN. Felly nawr ein bod yn gwybod ble mae ein pwynt canol yw, beth ydych chi eisiau ei wneud yma? GYNULLEIDFA: Rydym am i gymharu hynny i'r un arall. Andi Peng: Yn union. Felly, rydych chi'n mynd i gymharu canol i werth, dde? A beth mae hynny'n ei ddweud ni pan rydym yn cymharu? Beth ydym ni am ei wneud wedyn? GYNULLEIDFA: Os yw'r gwerth yn fwy na'r canolbarth, rydym am i dorri i ffwrdd. Andi Peng: Yn union. Felly, os yw'r gwerth yn fwy na'r canolbarth, rydym yn mynd i eisiau i newid y rhain isafswm ac maxes, dde? Beth ydym ni am ei newid? Felly, os ydym yn gwybod gwerth yn rhywle mewn yma, yr hyn yr ydych yn ei wneud i ni ei newid? Rydym yn awyddus i newid ein lleiaf i fod yn ganol, dde? Ac yna arall, os yw'n yn hyn hanner, beth ydym am ei newid? GYNULLEIDFA: Eich uchafswm. Andi Peng: Yeah. Ac yna ydych ond yn mynd i gadw dolennu, dde? Oherwydd erbyn hyn, ar ôl un iteriad drwy, oes gennych chi max yma. Ac yna gallwch chi ail-gyfrifo yn ganol. Ac yna gallwch gymharu. A ydych yn mynd i ddal ati nes bod y mins a'r maxes wedi cydgyfeirio yn y bôn. A dyna pan fyddwch yn gwybod bod eich bod wedi cyrraedd y diwedd. A naill ai eich bod wedi dod o hyd iddo neu os nad oes gennych ar y pwynt hwnnw. A yw hyn yn gwneud synnwyr i bawb? IAWN. Mae hyn yn eithaf pwysig, oherwydd bydd gennych i ysgrifennu hyn yn eich cod heno. Ond byddwch yn guys yn cael 'n bert da synnwyr o'r hyn y dylech fod yn ei wneud, sydd yn dda. IAWN. Felly, mae gennym tua saith munud ar ôl adran. Felly rydym yn mynd i siarad am pset hwn y byddwn yn ei wneud. Felly mae'r pset wedi ei rannu yn ddau hanner. Mae'r hanner cyntaf yn cynnwys gweithredu darganfyddiad yr ydych yn ysgrifennu chwiliad llinol, a chwilio deuaidd, ac algorithm didoli. Felly, mae hyn yw'r cyntaf amser mewn pset lle byddwn yn rhoi i chi guys hyn a elwir cod dosbarthu, sef cod ein bod wedi rhag-ysgrifenedig, ond newydd adael rhai darnau oddi ar i chi orffen ysgrifennu. Felly rydych guys, pan fyddwch yn edrych ar hyn cod, efallai y byddwch yn cael ofnus mewn gwirionedd. Os ydych ond yn ei hoffi, ahh, yr wyf yn ddim yn gwybod beth sy'n ei wneud, Nid wyf yn gwybod, fel, sy'n ymddangos mor gymhleth, ahh, ymlacio. Mae'n iawn. Darllenwch y fanyleb. Bydd y spec yn esbonio i chi yn union beth pob un o'r rhaglenni hyn yn ei wneud. Er enghraifft, generate.c yn rhaglen a fydd yn dod â'ch pset. Nid oes rhaid i mewn gwirionedd i chi ei gyffwrdd, ond dylech ddeall yr hyn y mae'n ei wneud. Ac generate.c, pob mae'n ei wneud yw naill ai cynhyrchu rhifau ar hap neu gallwch roi had ef, fel Rhif drefnwyd ymlaen llaw ei bod yn cymryd, ac mae'n ei gynhyrchu fwy o rifau. Felly mae ffordd benodol i gweithredu generate.c lle gallwch wneud criw o rifau i chi brofi eich dulliau eraill ar. Felly, os ydych yn dymuno, er enghraifft, profi eich darganfyddiad, byddech am redeg generate.c, cynhyrchu criw o rifau, ac yna yn rhedeg eich swyddogaeth cynorthwywyr. Eich swyddogaeth cynorthwywyr yw lle rydych yn mewn gwirionedd yn ysgrifennu cod yn gorfforol. A meddwl am helpwyr fel ffeil llyfrgell rydych yn ysgrifenedig bod darganfyddiad yn galw. Ac felly o fewn helpers.c, wnewch chi helpu wneud chwilio a didoli. Ac yna rydych chi'n mynd i yn y bôn dim ond nhw i gyd gyda'i gilydd. Bydd y spec dweud wrthych sut i rhoi hynny ar y llinell orchymyn. A byddwch yn gallu profi pa un a nad yw eich didoli a chwilio yn gweithio. Cool. Oes unrhyw un wedi dechrau'n barod ac problemau neu gwestiynau a gafwyd sydd ganddynt ar hyn o bryd gyda hyn? IAWN. GYNULLEIDFA: Arhoswch. Mae gen i cwestiwn. Andi Peng: Yeah. GYNULLEIDFA: Felly yr wyf yn dechrau yn ei wneud y chwiliad llinol yn helpers.c ac nad oedd yn gweithio mewn gwirionedd. Ond yna yn ddiweddarach, cefais allan rydym yn unig rhaid ei ddileu ac yn gwneud chwiliad deuaidd. Felly mae'n ei ots os na fydd yn gweithio? Andi Peng: Yr ateb byr yw na. Ond ers ein bod not-- GYNULLEIDFA: Ond does neb yn gwirio mewn gwirionedd. Andi Peng: Rydym byth yn mynd i weld hynny. Ond mae'n debyg y byddwch am wneud yn siŵr bod eich chwiliad yn gweithio. Oherwydd os bydd eich llinol Nid yw chwilio yn gweithio, Yna, mae'n bur debyg eich deuaidd Nid yw chwiliad yn mynd i'r gwaith yn ogystal. Oherwydd bod gennych debyg rhesymeg yn y ddwy ohonynt. Ac na, nid yw'n wir bwys. Felly yr unig rai y byddwch yn troi yn cael eu didoli a chwilio deuaidd. Yeah. A hefyd, mae llawer o blant yn ceisio llunio helpers.c. Chewch chi ddim mewn gwirionedd i wneud hynny, oherwydd helpers.c Nid oes gan brif swyddogaeth. Ac felly dylech dim ond yn llunio mewn gwirionedd cynhyrchu a dod o hyd, gan fod dod o hyd i alwadau helpers.c a'r swyddogaethau oddi mewn iddo. Felly mae hynny'n gwneud debugging poen yn y gasgen. Ond dyna beth mae'n rhaid i ni ei wneud. GYNULLEIDFA: Yr ydych newydd wneud yr holl, dde? Andi Peng: Gallwch yn unig gwneud yr holl ogystal, yeah. IAWN. Felly dyna ni o ran yr hyn mae'r pset yn gofyn i chi i gyd ei wneud. Os oes gennych unrhyw gwestiynau, yn teimlo rhad ac am ddim i ofyn i mi ar ôl adran. 'N annhymerus' fod yma am, fel, 20 munud. Ac ie, y pset yn wir ddim mor wael â hynny. Dylech guys yn iawn. Mae'r rhain, dim ond yn dilyn canllawiau. Math o gael synnwyr o, yn rhesymegol, beth Dylai fod yn digwydd a byddwch yn iawn. Peidiwch â bod yn rhy ofnus. Mae llawer o god ysgrifennwyd yno eisoes. Peidiwch â bod yn rhy ofnus os nad ydych yn ei wneud deall yr hyn i gyd mae hynny'n ei olygu. Os mae'n llawer, mae'n hollol iawn. A dod i oriau swyddfa. Byddwn yn eich helpu gymryd golwg. GYNULLEIDFA: Gyda'r ychwanegol swyddogaethau, ydyn ni'n ceisio rhai hyd? Andi Peng: Yeah, y rhai yn y cod. Yn y gêm o 15, hanner mae eisoes wedi ysgrifennu ar eich cyfer. Felly y swyddogaethau hynny yn cael eu eisoes yn y cod. Yep. Iawn. Wel, pob lwc. Mae'n ddiwrnod ffiaidd. Felly gobeithio nad ydych guys yn teimlo yn rhy ddrwg am aros y tu mewn a chodio.