[Powered by Google Translate] [Kafli 3] [Minna Comfortable]
>> [Nate Hardison] [Harvard University]
>> [Þetta er CS50.] [CS50.TV]
>> Allt í lagi, við skulum byrja.
Velkomin á viku 4 í CS50.
Ef þú krakkar opna vafra og opna pset 3,
Scramble með CS50, við erum að fara að byrja að fara
gegnum hluta af spurningum þar.
Rétt eins og síðustu viku, munum við vera að vinna í CS50 Spaces,
Ef þú munt einnig draga það upp eins og heilbrigður,
og ef þú ferð á undan og heimsækja þennan tengil sem ég hef fengið upp hér að ofan.
Það er kominn tími til að byrja.
Við höfum fengið smá hi program okkar hér. Ekkert brjálaður.
Einn af the fyrstur hlutur ÉG vilja til að gera við ykkur í dag er að fara yfir nokkrar lausnir
til Problem Set 1, konar lausnir dæmis,
bara svo þú getur fengið tilfinningu fyrir hvers konar starfsfólk kóða er að skrifa,
hvers konar kóða annarra nemenda er að skrifa,
og þú taka a líta á það vegna þess að ég veit að það er skrítið
þegar þú sendir inn lausn á vandamáli setja og fá athugasemdir
á eigin útgáfu, en stundum er það gott að sjá hvernig aðrir gerðu það,
sérstaklega þau sem eru ágætur útlit.
Fyrir the hluti, ég var hrifinn mjög við þeim lausnum sem þið framleitt.
Ég hef ekki enn byrjað að horfa á Vandamál Setja 2s þínum, en ef þeir eru eitthvað eins og það fyrsta,
það þýðir ekkert annað en góða hluti.
>> Ef þú líta á endurskoðun minn, við skulum byrja alla leið niður á revision 1,
og við erum að fara að taka a fljótur líta á Mario lausn.
Ef þú draga þetta upp, eru þessi forrit sem við erum að fara að kynna rétt.
Það var ekki rétt mál með þessum vandamálum, heldur
viljum við tala svolítið um mismunandi málefni hönnun
sem voru að nota hérna.
Einn af þeim hlutum sem var áhugavert um lausn
er að það nota þessa nýju reisa kallast pund skilgreina,
stundum einnig nefndur sem kjötkássa skilgreina.
Leyfðu mér að súmma inn á það hér.
A # skilgreina gerir þér kleift að gefa nöfn á þessar tölur í forritinu.
Í þessu tilviki, að hámarki hæð pýramída í Mario
var 23 og frekar en að setja 23 í mínum kóða-
myndum við vísa til að sem harður erfðaskrá 23 -
staðinn gefur þetta nafn MAX_HEIGHT til að tala,
þannig að hérna í do-while lykkju mína
þú getur í raun átt við MAX_HEIGHT
stað þess að setja fjölda 23 tommur
[Nemandi] Hver er kostur á að gera það?
Það er frábær spurning.
Einn er sýnilegur.
Kosturinn við að nota þetta # define er sýnilegur.
Þegar ég er að lesa þessa kóða, get ég séð hvað er að gerast.
>> Ég get séð í þessu ástandi hér sem við erum að prófa
á hæð að vera <0, sem við gæti hafa einnig skilgreint
að vera lágmarks hæð eða mín hæð.
Hin kostur er að ég get þá lesið restina af línunni til að sjá
að við erum einnig að stöðva til að tryggja að hæð er ekki meiri en max hæð,
vegna þess að við erum að fara að halda áfram á meðan hæð er meiri en max hæð.
Hin kostur er, ef ég súmma út svolítið hér-
Ef ég keyra þetta forrit og ég keyra það, segja, með 23 núna,
það verður að prenta út öll 23 línur bara svona.
En að segja að ég vildi að breyta hámarks hæð,
og nú vil ég að takmarka hámarks hæð pýramýda
að vera aðeins segja-maður, sem var angurvær.
# Include , # define MAX_HEIGHT,
og við skulum segja að við vildum að setja það jafnt og 10.
Nú á þessum tímapunkti, allt sem ég þurfti að gera var að breyta því í þessum eina stað.
Ég get laun kóðann, og nú ef ég reyni og slá í 12,
það mun hvetja mig aftur.
Í þessu tilviki erum við aðeins að nota MAX_HEIGHT einu sinni.
Það er ekki það stór af a þræta til að fara í
og breyta því í while lykkju ef þú þarft til.
En í áætlunum þar sem þú ert að vísa í sama galdur númer
aftur og aftur, þetta # skilgreina kerfi er mjög vel
vegna þess að þú breytir bara það einu sinni efst á skrá-það er yfirleitt þar sem þú setur þær-
og breytingin percolates gegnum the hvíla af the skrá.
>> Aðrir hlutir sem ég vildi að hafa í huga í þessu verkefni sem ég hélt að sá mjög gott,
einn var nafngiftir á breytum.
Þú sérð hér að við höfum fengið heiltölutilviksbreytum kallast róður og kallast hæð.
Spaces, kjötkássa, það hjálpar að gera kóðann svolítið læsilegri,
gerir það svolítið meira skiljanlegt hvað er í raun að gerast.
Þetta er í mótsögn við að nota, segja, af handahófi bréf
eða bara gobbledygook öllu.
Endanleg sem ég ætla að benda á er að í fyrir lykkjur,
Oft Iterator breytur, þessir gegn sem þú notar í þinn fyrir lykkjur,
það er staðall og venjulegur til að byrja þá með annað hvort ég og þá j og K
og fara þaðan ef þú þarft fleiri breytur,
og þetta er bara samningur.
There ert hellingur af samningum.
Það veltur á forritunarmál þú ert að nota.
En C, byrjum við venjulega með i.
Það er ekki skynsamleg að nota, segja, a eða b
eftir aðstæðum.
Það er það fyrir þessa.
Ef þú draga nú upp Revision 2, munt þú sjá annað Mario,
og þetta er svipað og hitt sem við sáum bara,
en það er eitthvað svona kaldur.
Ef við skoðum þessa hluti hérna inni í innri for lykkju,
þeir nota sumir brjálaður útlit setningafræði hér rétt í þessari línu.
Þetta er kallað ternary rekstraraðila.
Það er ef annar yfirlýsingu þéttur í eina línu.
The ástand er þetta hluti innan sviga.
Það jafngildir að segja ef j <hæð - i - 1.
Og hvað þá innihald að ef blokk væri eru rúm
og þá innihald hvað annað væri eru þetta #.
Það er fyrst og fremst að gefa rúm til þessa breytu.
Það er að setja rúm í innihald blokk breytu,
Ef þetta skilyrði er uppfyllt, og ef skilyrði er ekki uppfyllt,
þá fær blokk breyta þessu #.
Og svo, að sjálfsögðu, í stað þess að byggja upp heilt band
og prentun allt út í lok þessa lausn prentar það út einn staf í einu.
Pretty Cool.
>> Annað par af hlutum til að líta á. Við munum fara til gráðugur.
Nú ef við skoðum gráðugur, þetta fyrsta lausn
notar þetta # skilgreinir töluvert.
Við höfum fengið einn fasti skilgreind fyrir hverja mismunandi númer í þessari áætlun.
Við höfum fengið einn fyrir sent á dollara, einn fyrir ársfjórðunga, Dimes, Nickels og smáaurarnir,
og nú ef við skruna niður og lesa kóðann,
við sjáum venjulega gera-while lykkju prentun allt út.
Konar crux þessu vandamáli var að átta sig á því
þú þarf til að breyta fljóta að þú lesir í frá notanda til heiltölu
að nákvæmlega gera stærðfræði, og þetta er vegna þess að
með fljótandi tölur benda, eins og við ræddum um í fyrirlestri í stuttu máli,
það er ekki hægt að nákvæmlega tákna hvert einasta gildi um fjölda lína
því það eru óendanlega mörg gildi milli 3 og, segja, 3,1 jafnvel.
Hægt er að hafa 3,01 og 3,001 og 3,0001, og þú getur haldið áfram.
Það kemur í ljós þegar þú ert að vinna með peninga, þú vilt oft til að breyta henni
í heiltölu snið þannig að þú ert ekki að missa smáaurarnir og svona efni.
Gera það og dregið var lykillinn.
Þessi lausn er notað fullkomlega augljóst, mikill reiknirit,
sem decremented fjölda sent eru eftir, fyrst eftir ársfjórðungum,
þá með Dimes, þá við Nickels, þá með smáaurarnir,
og bæta við fjölda mynt í hvert skipti.
>> Önnur lausn sem við munum sjá, eins og ég minnka og fara Revision 4,
var mjög svipuð byrjun en í staðinn notað div og unga fólkið
rétt yfir hér til að reikna út fjölda sent.
Þetta fjölda ársfjórðunga er jafn fjölda sent deilt með 25,
og ástæðan þetta virkar er vegna þess að við erum að gera tölustafi deild,
svo það hent allir minna.
[Nemandi] höfum við til að tjá sig að leita?
Það fer í raun.
[Nemandi] Þú ert að kommenta meira en númerið hérna.
Já, og svo eru fullt af mismunandi hugmyndir um þetta.
Persónulega heimspeki mín er að númerið þitt er í raun sannleikurinn,
eins og númerið þitt er það sem er í raun framkvæmd á tölvu,
og svo númerið þitt ætti að vera eins læsileg og hægt er að ekki nauðsynlegt eins margar athugasemdir.
Það sagði, ef þú ert að gera hluti sem eru svona erfiður stærðfræðilega
eða algorithmically er það gott að tjá þá þannig að þú getur
bæta við auka vídd, auka lag í hver er að lesa kóðann.
Í þessum lausnum, oft þeir eru sagði meira þungt bara vegna
Við viljum vera fær um að dreifa þeim og hafa menn valið þá upp
og lesa þær nokkuð auðveldlega.
En ákveðið, myndi ég sammála að þetta er þungur.
[Nemandi] En þegar í vafa, fara þyngri?
Hvenær í vafa, fara þyngri.
Sumir vilja stundum segja áreturn 0 eða eitthvað svoleiðis.
Ég held að það er fáránlegt athugasemd.
Augljóslega það er það sem er að gerast.
Ég þarf ekki ensku að segja mér það.
Stundum fólk skrifa efni eins og "kthxbai!"
Það er góður af sætur en einnig ekki-
það er ekki að gera muninn á athugasemdir stig eða ekki.
Þeir konar athugasemdir eru bara ha, ha.
Cool.
>> Á þessum tímapunkti, við skulum byrja að vinna á því vandamáli Set 3 kafla af spurningum.
Ef þú krakkar rífa þetta upp aftur,
eins og í síðustu viku, við erum ekki að fara að horfa á stuttbuxum í þessum kafla.
Við munum láta ykkur gera það í þínum eigin tíma og tala um spurningum.
En nú í þessum kafla ætlum við að eyða smá meiri tíma
tala um minni á erfðaskrá grunnatriði
eins og við gerðum í síðustu viku, og í staðinn, við erum að fara að einbeita sér meira að
svolítið meira af kenningum, svo að tala um tvöfaldur leit og þá flokka.
Frá þeim ykkar sem hafa fylgst með fyrirlesturinn
getur einhver gefið mér ágrip af hvað munurinn er
milli leit tvöfaldur og línuleg leit?
Hvað er að gerast? Jú.
Línuleg leit leitað hvert frumefni í raðaða listanum
eitt af eitt og eitt og eitt í einu,
og tvöfaldur leita skiptir lista í 2 hópa,
Athugar hvort takkarnir gildi sem þú ert að leita að er meiri en eða minna en miðpunkt gildi
sem þú fannst bara, og ef það er minna en það fer með neðri listanum
og þá skiptir það aftur, gerir það sama virka
alla leið niður þar til hún finnur miðpunkt til að vera jafn gildi sjálfrar.
Hægri.
>> Hvers vegna ekki sama við?
Af hverju tölum við um tvöfaldur leit móti línuleg leit?
Já.
Binary er mikið hraðar, þannig að ef þú tvöfalda stærð af the vandamál
það tekur eitt skref fremur en tvisvar sinnum eins og margir.
Einmitt.
Það er frábært svar.
Línuleg leit er mjög mikið að skoða einn þáttur í einu,
og eins og við sáum á fyrsta degi fyrirlestri
Þegar Davíð fór í gegnum símaskrá dæmi hans
og reif út eina síðu í símaskránni í einu
og haldið að gera það aftur og aftur og aftur,
það er að fara að taka hann mjög langan tíma til að finna einhver í símaskránni,
Nema, auðvitað, hann var að leita að einhverjum í upphafi stafrófsins.
Með leit tvöfaldur, þú getur farið mikið hraðar,
og það er ekki bara tvisvar eins hratt eða 3 sinnum eins hratt eða 4 sinnum eins hratt.
En vandamálið verður minni og minni og minni mun hraðar.
Til að skýra þetta, munum við byrja að tala um hvað er að gerast
þegar við skrifa tvöfaldur leit.
Vandamálið á móti er að ef ég hef fjölbreytta tölum,
segja, 1, 2, 3, 5, 7, 23, 45, 78, 12323,
og síðan 9 með tonn af 0s eftir það,
Við viljum vera fær um að reikna út raunverulega fljótt hvað er í
þetta fylki af tölum.
Ég veit að þetta virðist svolítið kjánalegt og svolítið háttuð,
því núna er það.
Við höfum fjölda sem ekki hafa mjög marga þætti í því,
og ef ég spyr einn af þér að reikna út hvort
23 er í fylkinu, getur þú gert það nokkuð fljótt
bara með því að glancing á þetta og segja mér já eða nei.
Flaumi til íhuga er ímynda sér ef það voru, segja,
Excel töflureikni með 10.000 raðir, 20.000 raðir.
Auðvitað getur þú gert stjórn f eða stjórna F og líta eitthvað upp.
Þú getur einnig notað síur og leita efni,
en ef þú þarft að horfa í gegnum þessi skrá línu fyrir línu fyrir línu,
það myndi taka þig langan tíma að finna það.
Það er góður af eins og í símaskránni dæmi líka þar
enginn lítur í gegnum símaskrá eina síðu í einu.
Venjulega, þeir opna það til miðju,
eða í tilfelli af a einhver fjöldi af bókum í síma og orðabækur þar
þú í raun hefur það fært inn á fyrsta stafinn,
þú flettir til að fyrsta bréfi og opna og byrja að fara í gegnum það.
>> Minna mig á nafninu þínu aftur. >> Sam.
Sam.
Eins og Sam segir að línuleg leit ferli er að fara að vera mjög hægur,
og í stað þess að við leit tvöfaldur, hvernig þetta virkar er að
í hvert skipti sem við förum í gegnum endurtekning á að leita reiknirit okkar,
við erum að fara að skipta á lista í tvennt, í meginatriðum,
í tvo smærri listum.
Og þá á næsta endurtekning af the lykkja, munum við skipta því aftur
í öðrum smærri listum.
Eins og þú geta sjá, vandamálið heldur fá minni og minni
vegna þess að við halda hent helmingi listanum hvert einasta skipti.
Hvernig er þetta fargið vinna?
Rétt eins og áminning, hvað við erum að fara að gera ef við værum tölva
og við vorum að segja, að leita að númer 5 á þessum lista
er að við myndum velja tölu í miðjunni.
Í miðju á þessum lista, af því að það eru 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 tölur,
viljum við velja númer annaðhvort 4. stöðu eða 5. stöðu,
og við myndum kalla það á miðju listanum okkar.
Veldu fjölda í miðju.
Þá, rétt eins og Sam sagði, við munum prófa að sjá hvort þessi tala er jöfn
að tala um að við viljum fá eða viðeigandi númer okkar.
Ef það er jafnt, þá höfum við fundið það. Við vinna.
Ef það er ekki jafn, þá eru nokkrar tilvikum.
Þau tvö mál eru annaðhvort hefur fjöldi að vera meiri en sá fjöldi sem við erum að horfa á,
eða það er minna en.
Ef það er meira, hreyfa við til hægri.
Og ef það er minna, hreyfa við til vinstri.
Og þá erum við að endurtaka allt ferlið aftur
annaðhvort á hægri hluta eða vinstri hluta á listanum.
>> Fyrsta vandamálið í kafla í dag er að reikna út
hvernig getum við í raun að byrja að tjá þetta í C kóða.
Við höfum fengið sauðakóðanum hér.
Það sem við munum byrja að gera er ég draga upp vörumerki-nýtt rými,
vista þessa breytingu þannig að við höfum þessar athugasemdir til seinna,
Við eyðum allt þetta, og þá afrita og líma frá vandanum setja
þessar upplýsingar í rými okkar, og vonandi ekki brjóta.
Perfect.
Ef þú krakkar að gera, afrita og líma þennan kóða inn í nýja rúm,
í auða einn.
Reynum Daníel. Ef þú safna saman og keyra þetta forrit, virkar það?
Nei >> Hvað er hún að segja?
Hún segir stjórn nær enda ekki ógilt virka.
Já, svo látið mig reyna að keyra það.
Hafið þið séð þetta áður? Veistu hvað þetta þýðir?
Jæja, við skulum kryfja þetta svolítið.
Það er að segja á file.c á línu 9, 1. dálki við höfum villa, rétt eins og þú sagðir,
og það segir að það stafar af villa viðvörun og gerð aftur viðvörun.
Það lítur út eins og eitthvað sem er að gerast við aftur gerð, sem er vit í.
Við höfum fengið ekki ógilt virka, sem þýðir að við höfum fengið aðgerð
sem ekki aftur tóm.
A ógilt virka er eitt sem lítur svona út:
ógilt foo (), og það er ógilt vegna þess að aftur tegund er ógilt,
sem þýðir að ef við hefðum eitthvað hér
eins og aftur 1, viljum við fá þýðanda villa fyrir þetta.
Hins vegar höfum við ekki ógilt virka.
Ekki ógilt virka okkar í þessu tilfelli er að leita virka okkar
því að hún hefur aftur gerð Bool.
Þegar það er að segja að eftirlit nær lok ekki ógilt virka,
það er vegna þess að leita er ekki til baka yfirlýsingu.
Það er ekki aftur neitt af bool tegund.
>> Við getum lagað það, og hvað þú krakkar hugsa
leit ætti aftur sjálfgefið?
Hvað ætti að vera aftur sjálfgefið gildi leit?
Vegna þess að það er það sem við getum sett í lokin.
Charlotte, hefur þú einhverjar-?
Satt eða ósatt? >> Satt eða ósatt.
Hver einn?
False. Ég veit ekki.
False? Við skulum reyna það.
Hvers vegna vildi þú segja return false? Það er frábært innsæi.
[Charlotte] Ég veit ekki.
Við ætlum að fara aftur rangt í þessu tilfelli vegna þess að þetta mun vera sjálfgefið okkar
Ef fyrir sumir ástæða the listi er tómur eða nálin
sem við erum að leita að er ekki til.
Þá á enda, ef við aftur ekki satt fyrr í þessa aðgerð,
við vitum alltaf að þessi aðgerð mun segja Nei, það er ekki í fylkinu.
Það er ekki í Heysátan.
Nú ef við saman og keyra það-láttu mig bjarga þessu svo við getum draga það upp.
Nú ef við saman og hlaupa program okkar, byggir það.
Við fáum smá hvetja okkar.
Ef ég lenti 4-uh-oh.
Það var ekki prenta út neitt. Það lítur út eins og allt endaði vel.
Við verðum að fylla þetta inn
Við ræddum um reiknirit í sauðakóðanum svolítið síðan.
Leyfðu mér að sjá, nema þetta,
og ég ætla að draga þessi reiknirit upp aftur.
Við skulum ná þessu gaur. Nope.
Það er það.
Hvernig gerum við þetta?
Hvað væri góð stefna að byrja á þennan kóða?
Þú þarft að velja tölu í miðjunni.
Hvernig sæki við fjölda í miðri fylking?
Allar uppástungur?
[Nemandi] Strlen deilt með 2.
Strlen deilt með 2. Það er a mikill einn.
Strlen vinnur með sérstökum konar fylki.
Hvers konar fylki?
Band fylki, eðli fylki.
Það er þessi sama tegund af hugmynd sem við viljum að sækja,
en við getum ekki notað strlen því við höfum ekki fjölda stafa.
Við höfum fjölda ints.
En hvað þýðir strlen fá fyrir okkur?
Veistu hvað það fær fyrir okkur?
[Nemandi] Strlen fær okkur lengd.
Einmitt fær það okkur lengd.
Strlen fær lengd fylkisins fyrir okkur.
>> Hvernig fáum við að í tvöfaldur leita kerfi okkar?
Hvernig viltu fá lengd array?
[Nemandi] Strlen?
Hægt er að fá lengd á rétt snið C band fylki með strlen.
Vandamálið, þó, er að við höfum ekki band fylki.
Ef við lítum til baka á þessum kóða, höfum við þetta heiltölu fylki.
Hvernig vitum við hversu lengi það er?
[Nemandi] Er jafngilt einn fyrir endapunkt eins int l eða eitthvað?
Það kemur í ljós að það er í raun ekki, og það á þann hátt, er
einn af þeim hlutum sem er bara gott að vita um C,
að það er engin leið til að fá lengd fylki
Ef allt sem ég gef þér er fylki.
Ástæðan það virkar með strengi, ástæðan strlen verk,
er vegna þess að ef strengur er rétt sniðinn,
það verður að sérstakar \ 0 staf aftast.
>> Þú getur líka ímyndað þér ef þú ert með óviðeigandi sniðinn band
og það er engin \ 0 karakter þar, þá er allt sem virkar ekki.
[Nemandi] Getur þú bætt \ 0?
Við gæti í þessu tilfelli.
Við gætum bætt einhverskonar \ 0
eða einhverskonar kynna eðli og þá nota það.
En það er ekki alveg að fara að vinna
vegna þess að \ 0 er fyrir bleikju tegund,
og hér höfum við fengið ints.
The annar hlutur er að ef við værum að nota sérstakt gildi
eins og -1 til að merkja enda fylki
þá gátum við aldrei geyma -1 í heiltölu fylki okkar.
Við myndum vera fastur.
Það kemur í ljós að eina leiðin til að fá lengd
af fjölda í C er að í raun muna það
þegar þú setur það upp og þá fara framhjá það í kring með the array
þannig að þegar ég er með fall sem er að fara að gera sumir vinna
um fjölda heiltalna eða flot eða tvöfaldar eða hvað hefur þú,
Ég þarf líka að gefa aðgerðina lengd fylkisins er,
og það er nákvæmlega það sem við höfum gert hér í leit virka.
Ef þú lítur út, það sem við höfum gert þegar við fara í fylking okkar hér,
við framhjá líka í lengd, stærð.
Það gerist bara að við höfum kallað þessa breytu hér,
þessa breytu eða rifrildi.
Þetta er kallað viðfang lista fall er eða breytu listanum,
og þetta eru líka kölluð rök eða breytur.
Fólk notar mismunandi hugtök á mismunandi tímum.
Ég skipti stundum þá sjálfur.
Það bara vill svo til að þessi breyta hér heitir álíka
þessu skilgreina # upp hér.
En þeir eru ekki það sama.
Eignfærslu skiptir máli.
>> Ef þú lítur á það sem gerist hér, lýsa við
int array okkar, sem við höfum kallað númer.
Við höfum gefið það stærð okkar, sem samsvarar okkar # skilgreina upp á toppinn.
Það er að fara að vera 8.
Og svo þegar við köllum þá leita virka okkar niðri,
við fara í fjölda sem við viljum að leita að, sem við höfum beðið,
fengið frá notandanum.
Við fara í fylking, þessi númer,
og þá erum við líka að fara í stærð fylkisins,
og þá verðmæti stærð 8 verður geymd
eða samþykkt þessari heiltölubreytu heitir stærð.
Við höfum stærð fylkisins.
Nú ef við förum aftur í það sem við vorum að tala um áðan,
Ég held Missy kom upp lið sem það sem við þurftum að gera er að fá lengd fylkisins
og deilum í hana með 2, og það mun gefa okkur miðpunkt.
Við skulum sjá.
Get ég einhvern skrifa þetta og vista það í rúm þeirra?
Hvað um Leila?
Get ég að skrifa þetta á?
Skrifaðu fyrstu línuna þar sem þú tekur lengd fylkisins og fá miðpunkt
og geyma í nýjum breytu.
Ég skal gefa þér nokkrar sekúndur. Ertu tilbúinn?
[Námsmaður inaudible]
Jú, gæti ég að reikna miðpunkt
á Haystack array inni the leita virka
með lengd Heysátan fylkisins, sem er stærð breytu?
Ekkert erfiður hér.
[Leila] Bara stærð / 2 og bara-
Og vista það, og ýta á Vista hnappinn hérna efst,
og við munum draga það upp.
Perfect.
Svona. Awesome.
>> Eins og er, mun þetta þýða?
[Leila] Nei, það þarf að vera meiri.
[Nate] Já, svo hvað við þurfum að gera?
[Leila] Eins int miðju eða eitthvað.
Awesome. Já, við skulum gera það, int miðpunkt = stærð.
Mun þetta þýða?
Við skulum eyða þessari athugasemd og fá það út af the vegur.
Hvað mun ekki saman um þetta?
Við erum ekki að gera neitt með heiltölu,
þannig að við þurfum að prenta það eða eitthvað svoleiðis.
Já, nákvæmlega.
Við munum fá ónotað breytu.
Hvað annað er ekki að fara að vinna þetta?
Ég held að þú sagðir eitthvað, Sam. Semikommum.
Já, ég er vantar þeim semikommum.
Það er að fara að vera stöðug hlutur yfir the rás af the orð.
Endanleg sem ég geri er að ég setja nokkrar hvítt pláss á hvorri hlið
þessa rekstraraðila hér, þar sem það er yfirleitt hvernig við gerum það
í samræmi við stíl fylgja okkar.
Við höfum fengið miðpunkt fylking okkar.
Nú ef við minnumst aftur á reiknirit okkar,
það var annað skrefið sem við þurftum að gera þegar við höfum miðpunkt?
[Nemandi] Ef það er meiri [inaudible].
Já, þannig að við verðum að gera einhvers konar samanburð, og hvað erum við að bera saman hér?
Þú segir ef það er meira en. Hvað er það í þeirri setningu að vísa til?
Talan sem kemur upp, ef það er meira en miðju, þá fara upp í fylki?
Einmitt, svo kemur sú tala sem upp þegar við-
Nálin, þannig að við erum að bera saman við nálinni
Og hvað erum við að bera saman gegn nálinni?
Vegna þess að nálin er það sem við erum að leita að.
Við erum að bera saman það að fá að miðju.
>> En það gera vit í að athuga
Ef nálin = miðpunkt?
Er það skynsamleg?
Er einhver ósammála?
Við skulum gefa það a reyna, ef (nál == miðpunkt).
[Nemandi] Ert þú printf fundið það.
[Nate] printf ("Við fundum það \ n");
Annars-Ég ætla að byrja að gera eitthvað öðruvísi hér.
Ég ætla að byrja að setja axlabönd kring ef yfirlýsingar allra tíma
bara vegna þess að ef við bætum fleiri efni, svo
Við fæ ekki vistþýðendur.
Já, Sam. Þú hefur got a lið.
Vandamálið er að miðpunkt táknar stöðu í fylking,
en þú getur fengið það til að tákna gildi í þeirri stöðu fylkisins.
Þetta er frábær punktur.
Vissir allir heyra hvað Sam sagði?
Hann sagði að miðpunkt sem er
táknar bara stöðu í fylkinu, en það er ekki í raun þáttur í fylki.
Ef þú hugsa um kóðann sem skrifað núna,
Ef við skoðum þetta fylki niður hér, sem hefur 8 þætti í henni,
Hvert er gildi þess að fara miðpunkt til að vera í þessu hlutverki?
[Nemandi] 4.
[Nate] 4.
Ef við lítum á fjölda 4 -
og við getum bara keyrt þennan kóða og setja smá sorglegt andlit hér
vegna þess að við ekki finna það, ef við keyra þennan kóða
eins og er núna, senda það, bygging, láttu mig skruna niður,
og ef við erum að leita að númer 4,
okkur fannst það, en við fengum ekki að fá þetta til printf já.
Ein ástæðan er að við vissum ekki aftur satt,
en við fengum að finna raunverulega númer 4?
Og Sam er að segja nei.
Hvað höfum vér fundið?
Við fundum mjög miðpunkt, sem ef við skoðum fjölda hérna,
það er að fara að vera þáttur í vísitölu 4 sem við erum að horfa á,
sem er 23.
>> Hvernig fáum við reyndar að þáttur á miðju
og ekki bara miðpunkt sig?
[Nemandi] Við myndum inn bleikju eða eitthvað?
Hvað myndi það gera, bara út af forvitni?
Getur þú vandaður aðeins meira?
Þú þarft að breyta stöðu í fjölda,
Svo þú hefur fengið að gera sumir tengsl-Ég held að það er bleikja, en það gæti ekki verið.
Já, það er góður punktur.
Við höfum verið að gera mikið af þessu umbreyta stöðum í chars, Þessir stafir,
í fyrstu tveimur vandamál setur.
Það kemur í ljós að hér, þetta er næstum eins
aðgangur að ith staf innan band, ef það er vit í.
Hér viljum við fá aðgang miðpunkt frumefni.
Hvernig eigum við að gera það?
Kevin, hefur þú einhverjar tillögur hvernig við gætum gert það?
Þú gætir gert Haystack, opið krappi, miðjan, lokað krappi.
Getur þú skrifa það fyrir okkur?
Vista það hér, og við munum draga þá upp.
Við erum að horfa á þessa línu 9,
og við erum að átta sig á að við viljum ekki að bera nálina á miðju,
en í staðinn viljum við að bera nálinni
að frumefni í miðpunkt stöðu innan array Heysátan okkar.
Cool.
Svona.
Já, það lítur mjög gott, ef (nál == Heysátan [miðpunkt]).
Við fundum það.
Nú ef við keyra kóða-we'll aftur upp smá-
það safnar, það keyrir, og nú ef við lítum á 4,
við höfum ekki fundið það því nú erum við í raun að fá númer 23.
Við erum að fá gildið 23 og það er það sem við erum að bera saman að nál okkar.
En það er gott. Það er skref í rétta átt.
>> Það er það sem við erum að reyna að gera.
Við erum ekki að reyna að bera saman nálinni gegn stöðum í fylkinu
heldur gegn raunverulegum þætti í fylki.
Ef við lítum aftur nú á næsta skref í reiknirit okkar,
hvað er næsta skref?
Leila umtal þegar það stuttlega.
[Námsmaður] Athugaðu að sjá hvort það er meiri en eða minna en og ákveða hvaða leið að fara.
[Nate] Já, hvernig myndum við gera það?
Getur þú sett í einhverju-Ég vista þessa útgáfu,
og þá ef þú setur í nokkrar línur sem munu gera það.
Já, Charlotte. >> Ég er með spurningu.
Ætti það ekki að vera miðpunkt - 1 því fyrsta er
það er 0 verðtryggð, þannig að ef við setjum 4, það er ekki í raun og veru eðli sem við erum að leita að?
Já, og önnur vandamál við sem er-
það er mikill fengur, því að það er að fara að enda gerast hugsanlega
ef við halda áfram og við ekki alltaf að stilla í upphafi?
Ég giska á hvað við gætum endað að gera er að reyna að fá aðgang
þáttur á 8. stöðu í fylkinu,
sem í þessu tilfelli er ekki til.
Við munum vilja til að gera einhvers konar bókhald fyrir því
að við höfum nokkur núll flokkun.
[Charlotte] Því miður, ég ætlaði miðpunkt - 1 í hornklofum.
Við getum gert það.
Við munum koma aftur til þetta mál í bara smá.
Þegar við byrjum að fá til the raunverulegur lykkja,
það er þegar við munum virkilega sjá þetta koma inn í leik.
Fyrir the tími tilvera, við getum gert þetta, en þú ert alveg rétt.
Það núll flokkun mun hafa áhrif að við þurfum að gera grein fyrir.
Við skulum sjá.
>> Hvernig er meiri en og minna en-?
[Nemandi] ég hvernig á að gera meira en og minna en hluti.
Ég var bara ekki viss hvað á að prenta ef þú sérð að það er minna en Heysátan miðpunkt eða meiri en.
Hér get ég bjarga því I've-
[Nate] Já, ef þú hefur vistað það sem þú hefur fengið, og við munum draga það upp.
Svona.
[Nemandi] Og ég setti spurningarmerki fyrir það sem ég ekki veit.
[Nate] Þetta lítur vel út.
Hér höfum við fengið spurningarmerki vegna þess að við enn veit ekki
hvað við erum að fara að alveg að gera enn.
Hvað myndum við vilja gera-Úps, við höfum fengið nokkrar axlabönd allt angurvær á okkur.
Við munum leiðrétta þessi axlabönd.
Svona.
Og svo hvað við viljum gera, samkvæmt reiknirit okkar,
ef við finn ekki nálina?
Segja að ræða að nálin er minna en það sem við erum að horfa á. Kevin.
Aðeins að líta á vinstri helming.
Einmitt, þannig að við munum setja athugasemd á hér sem segir "líta á vinstri helming."
Og ef nálin er meiri en Heysátan á miðju, hvað við viljum gera?
[Nemandi] Svo þú horfir á réttum helming.
Horfðu á hægri hluta, "líta á hægri hluta."
Ekki of subbulegur.
Jæja, svo á þessu stigi, eru hlutirnir að leita nokkuð gott.
Vandinn við númerið sem skrifað er það?
[Nemandi] Þú þarft ekki endapunktar fyrir helminga.
Einmitt, höfum við ekki endapunktar fyrir helminga.
Við einnig erum bara að fara að fara í gegnum þetta einu sinni.
Við erum bara að fara að horfa á einn miðpunkt.
Annaðhvort þáttur er það, eða það er ekki.
Til þess að ljúka þessu, þá þurfum við að gera einhvers konar endurtekningu.
Við þurfum að halda áfram að endurtaka þangað til við sjáum að
annaðhvort frumefni er það vegna þess að við höfum minnkað niður og að lokum fannst það,
eða það er ekki þar vegna þess að við höfum litið í gegnum allt það
í viðeigandi helminga í fylkingu og fann að ekkert er þar.
>> Alltaf þegar við höfum fengið þetta endurtekning í gangi, hvað ætlum við að nota?
[Nemandi] A lykkja.
Sumir tegund af lykkju. Já.
[Nemandi] Getum við gert do-while lykkju og hafa það gera það og þá á meðan
nálin er ekki ekki jafn-Ég viss þar sem ég var að fara með það.
En góður af eins og að gera það svo lengi sem það er ekki jafn gildi sem notandi inntak.
Já, þannig að við skulum sjá, hvernig gæti þetta skrifa sig?
Þú sagðir við skulum nota do-while lykkju.
Hvaðan á ég Start?
[Nemandi] Rétt eftir stærð / 2.
[Nate] Jæja, og hvað ætlum við að gera?
Við munum fylla í síðar.
Hvað ætlum við að gera?
[Nemandi] Ekki að við viljum gera allt efni sem við höfum í ef hluta?
[Nate] Gera þetta allt, frábært.
Afrita og líma.
Ó, maður.
Við skulum sjá hvort þetta virkar, ef við getum flipann þetta yfir.
Beautiful.
Jæja, og við að vista þetta þannig að þú krakkar hafa það.
Allt í lagi, og við erum að fara að gera þetta á meðan-
það var á meðan ástand sem þú varst eftir?
[Nemandi] meðan nálin er ekki jöfn, svo eins og upphrópunarmerki.
En ég er ekki viss um nákvæmlega hvað það er ennþá.
[Nate] Já, þetta er ein leið til að gera það.
Sam, gera þú hafa a athugasemd?
[Sam] ég mundi þegar ég horfði á vídeó,
Ég tók screenshot af einu af-eins og þegar við gerðum sauðakóðanum fyrir það,
það var einhver tengsl á milli max og min.
Ég held að það var eitthvað eins og ef Max er alltaf minni en mín.
Fékk það.
[Sam] eða eins ef hámark er ekki minna en mín eða eitthvað svoleiðis,
vegna þess að það myndi þýða að þú hefur leitað allt.
>> Já, svo hvað gerir það hljóð eins og max og mín var að vísa til?
[Sam] gildum sem-heiltölur sem eru að fara að breyta
miðað við hvar við setjum miðpunkt.
Einmitt.
[Sam] Á þeim tímapunkti, það er að fara að [inaudible] reikna max og mín.
Miðpunktur er þetta max og mín hugmynd.
Er það skynsamleg til gott fólk?
Ef við værum að byrja að horfa á hvernig við erum að fara að gera þessa endurtekningu,
þú ert alveg rétt að við viljum að nota einhvers konar ekki-while lykkju.
En ég held að ef við munum það sem er að gerast á staðnum þessa array
og hvað er í raun að gerast-Ég ætla að skrifa hérna-
á fyrsta endurtekning af tvöfaldur leit, hefur-við
Ég ætla að nota b-og e til að tákna upphaf.
Og þá enda fylking okkar.
Við vitum að í upphafi er á 4 rétt hérna,
og við vitum að hætta er á 108.
Segja að við erum að leita að númer 15.
Í fyrsta skipti sem við gerum þetta, eins og við sáum áðan,
miðpunkt er annað hvort að fara að vera 16 eða 23
eftir því hvernig við reiknum það út.
Þar jafnt deila í miðju myndi gefa okkur þetta rúm
milli 16 og 23, við getum ekki jafnt skipt henni
eða skipta því og fá á sanna miðpunkt.
Við munum líta á 16.
Við munum gera sér grein fyrir "Hey, 16> 15 sem við erum að leita að."
Að þá líta á vinstri hluta fylkisins
það sem við munum á endanum gera er hent
Þetta allt efri hluta
og sagði: "Allt í lagi, nú endapunktur okkar er að fara að vera hér."
Í næsta endurtekning af lykkju okkar, við erum nú að horfa á þennan fjölda,
raun hafa hent þennan hluta því nú
ef við erum að taka miðpunkt að vera munur á upphafi og endi,
finnum miðpunkt okkar að vera 8,
sem við getum þá prófa 8 til að sjá hvar það er í tengslum við fjölda sem við erum að leita að,
15, kemst að því að 15 er meira
þannig að við verðum að fara í hægri hluta á listanum,
sem við vitum af því að við erum menn, og við getum séð það.
Við vitum að rétt hluta er að fara að vera þar sem við finnum það,
en tölvan veit ekki, svo það sem við munum gera er að við munum í raun
hafa það að fara upp, og nú er upphafið og endir
eru á sama stað, svo miðpunkt verður aðeins númer á listanum á þeim tímapunkti,
sem er 15, og við höfum fundið það.
Er að varpa ljósi á hvar þetta allt max og mín tákn er að fara,
halda utan um endapunkta í fylki í því skyni að reikna út
hvernig á að þrengja það niður?
>> Hvað myndi gerast ef þetta væri ekki jafn 15 núna?
Hvað ef við vorum að leita að 15 og í staðinn, þessi tala var líka 16?
Við myndi segja, "Ó, það er meira.
Við viljum fara aftur til vinstri. "
Og við myndum færa e okkar til hægri,
á hver benda að við höfum endapunktur sem væri misvísandi.
Það myndi ekki vera fær til að leita að fleiri þætti
því að nú höfum við endapunkt okkar og byrjun benda okkar,
Max okkar og mín okkar eru nú hreifi.
Við leit í gegnum allt fylkisins. Við getum ekki fundið neitt.
Það er að benda á þar sem við myndum vilja að segja, "Allt í lagi, við erum að fara að hætta þessum reiknirit.
Við höfum ekki fundið neitt. Við vitum að það er ekki hér. "
Hvernig er þetta að fara?
[Nemandi] Hvernig nákvæmlega er tölva kveikja á enda?
Hvernig virkar enda endar fyrir upphaf?
Endalok endar fyrir upphaf
vegna stærðfræði sem við erum að fara að gera í hvert skipti sem við gerum þetta.
Leiðin sem við skipta er ef þú horfir á í fyrsta skipti sem við gerum þetta skipti
þar sem við höfum frá klukkan 4 og enda
alla leið niður í 108 og miðpunkt okkar, segjum, á 16 -
Ég ætla að færa þetta aftur til 15-ef við erum að leita að 15,
við vissum að það sem við gerðum þegar við athugum á 16 og sá að það var meiri
og langaði að henda öllu hægri hluta lista,
sáum við að það sem við vildum að gera er að færa þessa e hérna.
Í rauninni fékk e flutt til einn fyrir miðju.
Sömuleiðis, þegar við gerðum þessa endurtekningu reiknirit
og miðpunkt var 8,
Við höfum komist að 8 <15, svo við vildum að færa b
einn yfir miðju.
Nú eru upphafið og endirinn bæði saman á þessum 15.
>> Ef við hafði verið að gerast til að leita að einhverju öðru gildi, ekki 15,
eða ef 15 hefði í staðinn verið 16,
við hefðum komist að því að e-við viljum að flytja einn fyrir miðju.
Nú e væri það hreifi minna en b.
Við skulum ganga í gegnum hvernig við enda í raun allt erfðaskrá þessa reiknirit.
Við vitum að við viljum hafa þetta miðpunkt útreikning.
Við vitum líka að við viljum fylgjast með upphaf og endi í fylkinu
núverandi array okkar svo við getum reikna út
þar sem vinstri helmingur listanum er og þar sem hægri helmingur á listanum er.
Við gerum það með annað hvort að byrja og enda,
eða við getum kallað þá mín og max.
Ég nota byrja og enda þessa tíma.
Þegar við byrjum, ef við lítum til baka á dæmi hérna,
upphaf okkar var sett á upphafi array, sem eðlilegt.
Hvaða vísitala var þetta? Hvað ætti okkar byrja að?
Daniel.
[Daniel] Haystack [0].
[Nate] Já, svo við gætum setja það jafn Heysátan [0].
Vandamálið, þó, er að þetta gefur okkur ekki stöðu fyrsta frumefni.
Það gefur okkur vísitölu fyrstu frumefni eða raunvirði á þeim fyrstu stöðu.
[Nemandi] Það mun umbreyta til .20?
[Nate] Hvað þetta mun gera er-vel, það mun ekki gera allir umbreyta.
Hvað það mun gera það mun geyma 4 í byrja,
og þá verður erfitt að gera samanburð við byrja
því að byrja að vera að halda gildi 4,
sem er upphaf array okkar,
en við viljum fylgjast með vísitölur í fylki
öfugt við gildi.
Við munum í raun að nota 0, eins og þessi.
Fyrir lok array-Charlotte kom þetta upp aðeins fyrr.
Þetta er þar sem við munum taka tillit til núll flokkun.
>> Charlotte, sem er enda fylkisins?
Hvað er vísitalan í lok?
[Charlotte] Size - 1.
Já, og hvaða stærð ætti við að nota?
Ættum við að nota fjármagn stærð eða lágstafir stærð?
Capital stærð.
Í þessu tilfelli, gætum við notað fjármagn stærð.
Ef við vildum þessa aðgerð til að vera færanlegt
og nota þetta virka í öðrum forritum,
getum við í raun að nota lágstafi stærð.
Það er allt í lagi líka.
En Charlotte er alveg rétt að við viljum hafa stærð - 1.
Á þessum tímapunkti-
[Nemandi] Hvernig er það sem þú getur notað hástafi stærð?
Hvernig er það að við gætum notað hástafi stærð?
Það kemur í ljós að þessir # skilgreinir eru í raun,
undir hetta, texta eins og finna og skipta, ef það er vit í.
Þegar þú saman númerið þitt er forvinnu áfanga
af þýðanda fer í gegnum skrána,
og það lítur út fyrir allt sem þú hefur skrifað höfuðborg stærð,
og það kemur þessi texti bókstaflega með 8, alveg eins og þessi.
Í þeim skilningi er þetta mjög mismunandi frá breytu.
Það þýðir ekki að taka upp allir pláss í minninu.
Það er einfaldur texti Skipta bragð.
Í þessu tilfelli erum við að fara að nota stærð.
Héðan við viljum að gera einhvers konar endurtekningu,
og við erum á réttri leið með do-while lykkju okkar.
Við viljum til að gera eitthvað þar til ástand er ekki að halda lengur,
og eins og við sáum áðan, sáum við að það ástand
var reyndar að við viljum ekki enda
að vera minna en að byrja.
>> Þetta er hætt ástand okkar.
Ef þetta gerist, viljum við að hætta og segja eins og "Hey, við höfum ekki fundið neitt."
Til að tjá þetta, viljum við nota einhvers konar lykkju.
Í þessu tilfelli, það vildi vera a do-while lykkju, a for lykkju, á meðan lykkja?
Við höfum do-while lykkju hér.
Ert þú krakkar eins og þeirri nálgun?
Finnst þér að við ættum að reyna aðra nálgun?
Kevin, einhverjar hugsanir?
Við gætum haft while lykkju vegna þess að við vitum hámarki
yrði meiri en mín á að byrja engu að síður.
Já, þannig að það er engin frumstilling sem þarf að gerast.
Þeir gera-á meðan lykkja er frábært þegar þú ert að frumstilla eitthvað
fyrir þá próf, en hér
við vitum að við erum ekki að fara að halda reinitializing bæði byrja og enda
hverri lotu hliðar.
Við vitum að við viljum að frumstilla þá, þá athuga ástand okkar.
Í þessu tilfelli, ég í raun fara með einföldum while lykkju.
Það kemur í ljós að gera-á meðan lykkja er notuð nokkuð sjaldan.
A einhver fjöldi af stöðum ekki einu sinni að kenna ekki þegar lykkjur.
Þeir eru góðir fyrir meðhöndlun notandi inntak, þannig að við höfum séð mikið af þeim hingað til.
En eðlilegt og þegar lykkjur eru miklu algengari.
Það kemur í ljós að þetta ástand eins og skrifað
mun ekki raunverulega gera okkur mikið gott, og hvers vegna er það?
Fyrirgefðu, ég veit ekki nafnið þitt.
Ég er Jerry. >> Miður?
Það er B-O-R-U-I.
Ó, allt í lagi.
Ég sé þig ekki á listanum mínum.
Ó, er það vegna þess að-ó, það er vit í.
Ert þú með hugmynd um hvers vegna þetta á meðan lykkja gæti ekki vinna eins og ætlað,
eins og skrifað með ástandi?
[Jerry] Þú átt eins og þú vilt allt draslið eftir hann í-?
Já, svo það er einn.
Við gætum þurft að setja allt þetta efni í while lykkju, sem er algerlega satt.
The annar hlutur sem er svolítið vandamál, þó, er að þetta ástand er ekki vinna.
[Nemandi] Þú þarft að fletta henni.
Einmitt, þannig að þetta ástand mun ekki alltaf vera satt í upphafi þannig að við ræddum um það.
Við viljum til að gera eitthvað til loka <byrja,
en við viljum gera eitthvað á meðan
byrja ≤ enda.
>> Það er það viðsnúningur á rökfræði þar.
Ég er sekur um að gera þeim mistökum allan tímann.
[Nemandi] Hvers vegna er það að vera minna en eða jafnt?
Þar man þér málið sem við fengum að
þar var aðeins einn þáttur og við vorum niður,
og við vorum að horfa á bara 15 í fylking okkar?
Og upphaf okkar og endi okkar voru sama frumefni.
Við viljum tryggja að við tökum þessi mál.
Ef við gerðum a beint minna en,
við viljum bara vera fær um að fá niður til 2-þáttur fylkisins.
Þegar við komum niður að síðustu frumefni, ef það væri þáttur okkar, við myndum aldrei finna það.
Nú hér, getum við gert nákvæmlega eins og þú varst að segja.
Við getum byrjað plopping efni beint í the miðja af lykkju meðan okkar.
Við getum plop í miðju okkar.
Við getum tekið öll þessi ef yfirlýsingar,
draga þá út úr þessum do-while lykkju,
plop þá í,
hreinsa það upp a lítill hluti,
og ég ætla að fara á undan og vista þessa útgáfu.
Og á þessum tímapunkti, við erum að fá mjög nálægt.
Sam.
Ég held að þú þarft einnig að hafa int miðpunkt = stærð - 1/2.
Fékk það, stærð - 1/2.
Er eitthvað annað sem við þurfum að breyta um þessi lína?
Það var góður afli.
>> Hvað stærð að gera? Erum við að breyta alltaf stærð?
Til þess að halda línu svona, verðum við að breyta stærð.
Við verðum að breyta stærð í hvert skipti sem við förum í kringum til hliðar.
En man þegar við vorum að fara í gegnum dæmi bara svolítið fyrr,
og við höfðum í upphafi á 4
og enda alla leið yfir á 108?
Hvernig fengum við reikna miðpunkt?
Vorum með stærð?
Eða við vorum með að byrja og enda í staðinn?
Það er munurinn á lokum og upphafi.
Einmitt, og hvernig nákvæmlega ætti ég að skrifa það, Charlotte?
Bara enda - byrja.
Þú vilt ekki að gera - 1
því - 1 hefur verið í enda og byrja nú þegar.
[Nate] Great, þú ert alveg rétt.
Við þurfum ekki að gera - 1 vegna þess að - 1 hefur verið með
og grein fyrir þegar við frumstilla lok breytu.
>> Er eitthvað annað sem ég þarf að gera setningafræðilega til að hafa þessa línu skynsamleg?
[Nemandi] Plus byrja. >> Plus byrja?
[Nemandi] Í lok.
Vegna þess að það er aðeins reiknað hálfa lengd.
Þú þarft að bæta við að byrja.
[Nate] Hvað myndi þetta reikna fyrir okkur?
Ef við hugsum um lok á þessum fyrsta endurtekning á lykkju,
enda er að fara að vera í vísitölu stöðu 7.
Byrja er í stöðu 0.
Mundu, við erum að leita að annað hvort
Staða 3 eða stöðu 4.
Ef við skoðum þessa stærðfræði, bara til að gera það svolítið meira áþreifanlegur,
setja nokkrar tölur hér, höfum við 7, 0,
svo 7-0, og þá / 2
er 3 í heiltölu deild, sem er.
Þá þurfum við að þá bæta við aftur okkar byrja?
Við gerum ekki í þessu tilfelli.
Á fyrstu endurtekning, það verður fínt því að byrja er 0.
En eins og við framfarir, eigum við í raun öll bara þörf
endir - byrja / 2.
Það er eitt annað bragð hér, og það er nefnilega einn af framar.
[Nemandi] Ekki þurfum við sviga?
[Nate] Einmitt, og það er vegna þess að ef við gerum ekki setja þessar sviga,
þá er þetta lína verða túlkuð í staðinn
sem (endir) - (byrja / 2), sem við ákveðið vil ekki.
Horfa út fyrir þá forgang reglum.
[Nemandi] Hvers vegna er það ekki enda + byrja?
Hvers vegna er það ekki enda + byrja?
[Nemandi] Hvers vegna er það ekki?
Hvers vegna væri það +?
Ég held að þú ert rétt.
[Nemandi] Vegna þess að það er að meðaltali?
[Nate] End + byrja, þú ert alveg rétt.
Vá, goofed ég algerlega. Þú ert rétt.
Ef við vorum að gera mínus, myndum við vilja til bæta við að byrja aftur inn
Í þessu tilfelli, þú ert mjög rétt að við viljum taka meðaltal tveggja,
þannig að við viljum að bæta þeim, í stað þess að draga þá.
[Nemandi] Það myndi einnig vinna ef þú gerðir enda - byrja / 2 + byrja.
Það væri ef við gera-ég trúi því.
>> Til dæmis, ef við vorum að horfa á að byrja,
og við færst það hérna
í 15.
Nú byrja er á stöðu 2.
End er á stöðu 7.
Ef við drögum þá fáum við 5.
Skiptu því með 2, fáum við 2.
Og þá erum við að bæta við 2 aftur,
og það fær okkur til 4. stöðu,
sem er hérna, sem er miðpunkt.
[Nemandi] Ekki þurfum við að sjá um umbúðir?
Í hvaða skilningi þarf við að annast umbúðir?
Ef summa eða mismunur
eftir því hvernig við gerum það er ekki slétt tala.
Þá tölva gets ráðvilltur hvort þegar það er 2,5;
þú fara til vinstri eða hægri til að ákvarða hver er miðpunkt?
Fékk það.
Það kemur í ljós að við heiltölu deild,
við gerum ekki alltaf að fá þessar fljótandi tölur benda.
Við fáum aldrei aukastaf.
Það er algerlega hunsaðar.
Ef þú hafa a tölva skipta tvær int breytur,
og einn er 7, og hitt er 2,
þú munt ekki fá 3,5 vegna.
Það mun fá 3.
Afgangurinn verður hent, svo það er í raun Námundun
ekki umferð heldur hæð, ef þið þekkir það í stærðfræði,
þar sem þú hendir alveg aukastaf,
og svo þú ert í raun Stytti það niður í næstu
heild stöðu, að næstu heilu tölu.
[Nemandi] En þá er það erfitt vegna þess að ef þú ert með fjölbreytta 7 þáttum
þá tekur það sjálfkrafa 3. þáttur úr miðpunkt stað 4..
Hvernig að takast á við það?
Það er erfitt vegna þess að ef við hefðum fjölda 7,
það myndi velja 3 í stað 4.
Gætirðu útskýrt aðeins meira?
[Nemandi] Vegna þess að ef þú ert með 7 þætti þá 4. þáttur
væri miðpunkt, ekki satt?
Mundu athugasemd um að vera núll verðtryggð, þó.
[Nemandi] Já, svo í stað 3. Það myndi vera miðpunkt.
Já.
Ó, allt í lagi. Ég sé hvað þú átt við.
Það er skrýtin tilfinning, eins og við að venjast þessu öllu hugmyndinni um
losna við aukastöfum.
Þetta er frábær punktur.
Við skulum klára þetta upp.
Við höfum reiknað miðpunkt okkar.
>> Við erum að prófa að sjá hvort nál okkar er jafn miðju gildi.
Við erum prentun að við fundið það, en í raun, hvað við viljum gera í þessum aðstæðum?
Við höfum fundið það, þannig að við viljum láta sem hringir vita að við fundum það.
Við höfum fengið fall sem er a Boolean tegund virka.
Leiðin sem við merki til þess sem hringir í aðgerð okkar að við erum tilbúin til að fara
er við segjum, "Hey, það er satt."
Hvernig ættum við að gera það, Kevin?
Þú ert nodding höfuðið. >> [Kevin] Add aftur satt.
[Nate] Einmitt, aftur satt.
Nú, ef það er ekki jafn, hvernig ættum við að líta á vinstri helmingi?
Einhverjar hugmyndir?
Stella, einhverjar hugmyndir?
Þú þarft að setja nýja stöðu fyrir árslok.
Já.
Þannig að við verðum að gera stöðu miðpunkt - enda.
Frábært.
Við þurfum að setja nýja stöðu fyrir lok
að líta á vinstri helming.
Þetta var það sem við töluðum um áður þar sem
Ég að halda áfram að fara aftur að þessu dæmi.
Ég byrja hér, og þá hef ég The End alla leið hérna.
>> Aftur, ef við erum að leita að 15, og miðpunkt okkar er í 16,
og við skiljum, "Oops, 16 er meiri.
Við viljum fara í vinstri helming. "
Við myndum þá að færa enda á 15,
og það gerum við með því að taka einn frá miðju
og setja það sem nýtt enda okkar.
Sömuleiðis, ef við viljum líta á hægri hluta, hvernig myndum við gera það?
Ertu með hugmynd?
[Nemandi] Þú stillir bara að byrja að miðju + 1.
[Nate] Great.
Og nú er að ræða sem við finn ekki neitt,
er að fá gætt af fyrir okkur?
Daníel er að fá gætt af fyrir okkur?
[Daniel] Nei
[Nate] Ef við tökum það í gegnum allt fylki og við finn ekki neitt,
þar yrði að vera gætt af, eða ættum við að hugsa um það?
[Daniel] The meðan ástand.
[Nate] Já, á meðan ástand, nákvæmlega.
Það verður að gæta þess að fara í gegnum allt array ef við finn ekki neitt.
Þetta meðan lykkja mun enda.
Við munum aldrei hafa fundur this ástand,
og við getum aftur rangar.
Við getum einnig skilið þetta ef hér svona
því ef þetta ef staðhæfing er satt,
og hlutverk okkar aftur,
og svo við munum fyrst og fremst hætta þessa aðgerð á þessum tímapunkti
þegar við aftur satt.
En hvað gerist með þessari uppbyggingu hér?
Mun þetta virka alveg, eða er nokkur rökrétt galli þar?
>> Það er einhver rökrétt galli þar með hvernig það er sett upp.
Hvað gæti það verið?
[Nemandi] Hvers vegna þarft þú að - og + 1s?
Það setur array okkar upp að nýju vinstri helmingur okkar og hægri helming.
[Nemandi] En af hverju getur þú ekki gert það án þess að - 1s og + 1s?
[Nate] Við gætum setja það jafnt á miðju?
Hvað gæti verið erfitt um það?
[Nemandi] Ég giska á að það er óhagkvæmt vegna þess að þú ert að athuga gildi sem þegar hefur verið athugað.
[Nate] Einmitt, svo er Sam algerlega rétt.
Ef þú stillir á enda og byrja jafn miðju
stað - 1 og + 1 reflectively,
einhvern tíma í framtíðinni munum við á endanum að stöðva miðpunkt aftur.
[Nemandi] Ég byrjaði pset, og svo ég hafði eitthvað eins og þessi
þar sem ég gleymdi + 1, og það festist í óendanlega lykkju.
Einmitt vegna þess að á einhverjum tímapunkti sem þú ert aldrei að fara að fá að byrja og enda
að í raun skarast.
Cool.
Það er eitt rökrétt galli, og það er að það ætti örugglega að vera
er annað hvort.
Hvers vegna kann að vera?
>> Ástæðan er ef það er ekki annað ef-sástu hana, Kevin?
[Kevin] Já, vegna þess að þú ert að breyta endastað.
[Nate] Einmitt.
Við erum að breyta endapunkti,
og ef það er skrifað svona-we'll gera bil á milli-
það mun athuga þetta mál.
Þetta mál, ef það tekst, mun hætta út af aðgerðina.
Þá mun athuga þetta á næsta tilfelli,
og ef þetta tekst, mun það stilla endapunkt,
og þá mun það halda áfram og athuga þetta mál.
En á þessum tímapunkti, gera við viljum ekki að það að halda áfram að skoða.
Sem betur fer, höfum við endurstilla ekki miðpunkt hér,
og við vitum að þetta mál mun ekki ná árangri.
En við viljum örugglega að setja annað hvort í það
jafnvel þó að kannski í þessu tilfelli
þar sem við erum ekki að breyta miðpunkt, myndi það gera a mismunur?
Nei, vegna þess að þessi mál eru allt einir.
Aftur, slæmt minn.
Við gerum ekki, held ég, þarf þetta annað hvort.
Við getum gefa það a reyna og keyra það og sjá hvað gerist.
Building, villa kom upp.
Það er líklega vegna þess að ég fór þetta B og er E í hér.
Þarf ég að hafa einhverjar fleiri af þeim upp á toppinn?
Það lítur ekki eins og það.
Við minnka, byggja,
Þar fer, svo nú ef við leit að 15,
já.
Leyfðu mér að þysja inn
15, já. Við getum keyrt það aftur.
Senda kóðann, byggja, hlaupandi.
Við getum leitað að einhverju eins og 13,
og við fáum ekki neitt að prenta út, svo það er ekki að finna það fyrir okkur.
Það er frábært, því það er ekki á listanum okkar.
>> Við erum nú út á tíma.
Það er að fara að vera það fyrir þessa viku.
Takk fyrir að taka þátt, og sjá þig seinna.
>> [CS50.TV]