1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [Kafli 3] [Minna Comfortable] 2 00:00:03,000 --> 00:00:05,000 >> [Nate Hardison] [Harvard University] 3 00:00:05,000 --> 00:00:08,000 >> [Þetta er CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:10,000 >> Allt í lagi, við skulum byrja. 5 00:00:10,000 --> 00:00:13,000 Velkomin á viku 4 í CS50. 6 00:00:13,000 --> 00:00:19,000 Ef þú krakkar opna vafra og opna pset 3, 7 00:00:19,000 --> 00:00:23,000 Scramble með CS50, við erum að fara að byrja að fara 8 00:00:23,000 --> 00:00:26,000 gegnum hluta af spurningum þar. 9 00:00:26,000 --> 00:00:32,000 Rétt eins og síðustu viku, munum við vera að vinna í CS50 Spaces, 10 00:00:32,000 --> 00:00:35,000 Ef þú munt einnig draga það upp eins og heilbrigður, 11 00:00:35,000 --> 00:00:43,000 og ef þú ferð á undan og heimsækja þennan tengil sem ég hef fengið upp hér að ofan. 12 00:00:43,000 --> 00:00:45,000 Það er kominn tími til að byrja. 13 00:00:45,000 --> 00:00:51,000 Við höfum fengið smá hi program okkar hér. Ekkert brjálaður. 14 00:00:51,000 --> 00:00:55,000 Einn af the fyrstur hlutur ÉG vilja til að gera við ykkur í dag er að fara yfir nokkrar lausnir 15 00:00:55,000 --> 00:00:58,000 til Problem Set 1, konar lausnir dæmis, 16 00:00:58,000 --> 00:01:03,000 bara svo þú getur fengið tilfinningu fyrir hvers konar starfsfólk kóða er að skrifa, 17 00:01:03,000 --> 00:01:07,000 hvers konar kóða annarra nemenda er að skrifa, 18 00:01:07,000 --> 00:01:10,000 og þú taka a líta á það vegna þess að ég veit að það er skrítið 19 00:01:10,000 --> 00:01:14,000 þegar þú sendir inn lausn á vandamáli setja og fá athugasemdir 20 00:01:14,000 --> 00:01:18,000 á eigin útgáfu, en stundum er það gott að sjá hvernig aðrir gerðu það, 21 00:01:18,000 --> 00:01:22,000 sérstaklega þau sem eru ágætur útlit. 22 00:01:22,000 --> 00:01:27,000 Fyrir the hluti, ég var hrifinn mjög við þeim lausnum sem þið framleitt. 23 00:01:27,000 --> 00:01:31,000 Ég hef ekki enn byrjað að horfa á Vandamál Setja 2s þínum, en ef þeir eru eitthvað eins og það fyrsta, 24 00:01:31,000 --> 00:01:34,000 það þýðir ekkert annað en góða hluti. 25 00:01:34,000 --> 00:01:40,000 >> Ef þú líta á endurskoðun minn, við skulum byrja alla leið niður á revision 1, 26 00:01:40,000 --> 00:01:47,000 og við erum að fara að taka a fljótur líta á Mario lausn. 27 00:01:47,000 --> 00:01:54,000 Ef þú draga þetta upp, eru þessi forrit sem við erum að fara að kynna rétt. 28 00:01:54,000 --> 00:01:56,000 Það var ekki rétt mál með þessum vandamálum, heldur 29 00:01:56,000 --> 00:01:59,000 viljum við tala svolítið um mismunandi málefni hönnun 30 00:01:59,000 --> 00:02:03,000 sem voru að nota hérna. 31 00:02:03,000 --> 00:02:08,000 Einn af þeim hlutum sem var áhugavert um lausn 32 00:02:08,000 --> 00:02:11,000 er að það nota þessa nýju reisa kallast pund skilgreina, 33 00:02:11,000 --> 00:02:15,000 stundum einnig nefndur sem kjötkássa skilgreina. 34 00:02:15,000 --> 00:02:18,000 Leyfðu mér að súmma inn á það hér. 35 00:02:18,000 --> 00:02:24,000 A # skilgreina gerir þér kleift að gefa nöfn á þessar tölur í forritinu. 36 00:02:24,000 --> 00:02:28,000 Í þessu tilviki, að hámarki hæð pýramída í Mario 37 00:02:28,000 --> 00:02:34,000 var 23 og frekar en að setja 23 í mínum kóða- 38 00:02:34,000 --> 00:02:37,000 myndum við vísa til að sem harður erfðaskrá 23 - 39 00:02:37,000 --> 00:02:43,000 staðinn gefur þetta nafn MAX_HEIGHT til að tala, 40 00:02:43,000 --> 00:02:48,000 þannig að hérna í do-while lykkju mína 41 00:02:48,000 --> 00:02:51,000 þú getur í raun átt við MAX_HEIGHT 42 00:02:51,000 --> 00:02:55,000 stað þess að setja fjölda 23 tommur 43 00:02:55,000 --> 00:02:57,000 [Nemandi] Hver er kostur á að gera það? 44 00:02:57,000 --> 00:02:59,000 Það er frábær spurning. 45 00:02:59,000 --> 00:03:03,000 Einn er sýnilegur. 46 00:03:03,000 --> 00:03:08,000 Kosturinn við að nota þetta # define er sýnilegur. 47 00:03:08,000 --> 00:03:11,000 Þegar ég er að lesa þessa kóða, get ég séð hvað er að gerast. 48 00:03:11,000 --> 00:03:15,000 >> Ég get séð í þessu ástandi hér sem við erum að prófa 49 00:03:15,000 --> 00:03:19,000 á hæð að vera <0, sem við gæti hafa einnig skilgreint 50 00:03:19,000 --> 00:03:22,000 að vera lágmarks hæð eða mín hæð. 51 00:03:22,000 --> 00:03:25,000 Hin kostur er að ég get þá lesið restina af línunni til að sjá 52 00:03:25,000 --> 00:03:30,000 að við erum einnig að stöðva til að tryggja að hæð er ekki meiri en max hæð, 53 00:03:30,000 --> 00:03:35,000 vegna þess að við erum að fara að halda áfram á meðan hæð er meiri en max hæð. 54 00:03:35,000 --> 00:03:40,000 Hin kostur er, ef ég súmma út svolítið hér- 55 00:03:40,000 --> 00:03:49,000 Ef ég keyra þetta forrit og ég keyra það, segja, með 23 núna, 56 00:03:49,000 --> 00:03:52,000 það verður að prenta út öll 23 línur bara svona. 57 00:03:52,000 --> 00:03:54,000 En að segja að ég vildi að breyta hámarks hæð, 58 00:03:54,000 --> 00:03:57,000 og nú vil ég að takmarka hámarks hæð pýramýda 59 00:03:57,000 --> 00:04:06,000 að vera aðeins segja-maður, sem var angurvær. 60 00:04:06,000 --> 00:04:14,000 # Include , # define MAX_HEIGHT, 61 00:04:14,000 --> 00:04:18,000 og við skulum segja að við vildum að setja það jafnt og 10. 62 00:04:18,000 --> 00:04:22,000 Nú á þessum tímapunkti, allt sem ég þurfti að gera var að breyta því í þessum eina stað. 63 00:04:22,000 --> 00:04:27,000 Ég get laun kóðann, og nú ef ég reyni og slá í 12, 64 00:04:27,000 --> 00:04:30,000 það mun hvetja mig aftur. 65 00:04:30,000 --> 00:04:33,000 Í þessu tilviki erum við aðeins að nota MAX_HEIGHT einu sinni. 66 00:04:33,000 --> 00:04:37,000 Það er ekki það stór af a þræta til að fara í 67 00:04:37,000 --> 00:04:40,000 og breyta því í while lykkju ef þú þarft til. 68 00:04:40,000 --> 00:04:44,000 En í áætlunum þar sem þú ert að vísa í sama galdur númer 69 00:04:44,000 --> 00:04:47,000 aftur og aftur, þetta # skilgreina kerfi er mjög vel 70 00:04:47,000 --> 00:04:52,000 vegna þess að þú breytir bara það einu sinni efst á skrá-það er yfirleitt þar sem þú setur þær- 71 00:04:52,000 --> 00:04:57,000 og breytingin percolates gegnum the hvíla af the skrá. 72 00:04:57,000 --> 00:05:02,000 >> Aðrir hlutir sem ég vildi að hafa í huga í þessu verkefni sem ég hélt að sá mjög gott, 73 00:05:02,000 --> 00:05:05,000 einn var nafngiftir á breytum. 74 00:05:05,000 --> 00:05:14,000 Þú sérð hér að við höfum fengið heiltölutilviksbreytum kallast róður og kallast hæð. 75 00:05:14,000 --> 00:05:20,000 Spaces, kjötkássa, það hjálpar að gera kóðann svolítið læsilegri, 76 00:05:20,000 --> 00:05:25,000 gerir það svolítið meira skiljanlegt hvað er í raun að gerast. 77 00:05:25,000 --> 00:05:31,000 Þetta er í mótsögn við að nota, segja, af handahófi bréf 78 00:05:31,000 --> 00:05:35,000 eða bara gobbledygook öllu. 79 00:05:35,000 --> 00:05:39,000 Endanleg sem ég ætla að benda á er að í fyrir lykkjur, 80 00:05:39,000 --> 00:05:45,000 Oft Iterator breytur, þessir gegn sem þú notar í þinn fyrir lykkjur, 81 00:05:45,000 --> 00:05:51,000 það er staðall og venjulegur til að byrja þá með annað hvort ég og þá j og K 82 00:05:51,000 --> 00:05:54,000 og fara þaðan ef þú þarft fleiri breytur, 83 00:05:54,000 --> 00:05:56,000 og þetta er bara samningur. 84 00:05:56,000 --> 00:05:58,000 There ert hellingur af samningum. 85 00:05:58,000 --> 00:06:00,000 Það veltur á forritunarmál þú ert að nota. 86 00:06:00,000 --> 00:06:04,000 En C, byrjum við venjulega með i. 87 00:06:04,000 --> 00:06:08,000 Það er ekki skynsamleg að nota, segja, a eða b 88 00:06:08,000 --> 00:06:13,000 eftir aðstæðum. 89 00:06:13,000 --> 00:06:15,000 Það er það fyrir þessa. 90 00:06:15,000 --> 00:06:25,000 Ef þú draga nú upp Revision 2, munt þú sjá annað Mario, 91 00:06:25,000 --> 00:06:29,000 og þetta er svipað og hitt sem við sáum bara, 92 00:06:29,000 --> 00:06:32,000 en það er eitthvað svona kaldur. 93 00:06:32,000 --> 00:06:38,000 Ef við skoðum þessa hluti hérna inni í innri for lykkju, 94 00:06:38,000 --> 00:06:44,000 þeir nota sumir brjálaður útlit setningafræði hér rétt í þessari línu. 95 00:06:44,000 --> 00:06:47,000 Þetta er kallað ternary rekstraraðila. 96 00:06:47,000 --> 00:06:53,000 Það er ef annar yfirlýsingu þéttur í eina línu. 97 00:06:53,000 --> 00:06:57,000 The ástand er þetta hluti innan sviga. 98 00:06:57,000 --> 00:07:05,000 Það jafngildir að segja ef j 00:07:10,000 Og hvað þá innihald að ef blokk væri eru rúm 100 00:07:10,000 --> 00:07:16,000 og þá innihald hvað annað væri eru þetta #. 101 00:07:16,000 --> 00:07:20,000 Það er fyrst og fremst að gefa rúm til þessa breytu. 102 00:07:20,000 --> 00:07:24,000 Það er að setja rúm í innihald blokk breytu, 103 00:07:24,000 --> 00:07:29,000 Ef þetta skilyrði er uppfyllt, og ef skilyrði er ekki uppfyllt, 104 00:07:29,000 --> 00:07:32,000 þá fær blokk breyta þessu #. 105 00:07:32,000 --> 00:07:37,000 Og svo, að sjálfsögðu, í stað þess að byggja upp heilt band 106 00:07:37,000 --> 00:07:43,000 og prentun allt út í lok þessa lausn prentar það út einn staf í einu. 107 00:07:43,000 --> 00:07:48,000 Pretty Cool. 108 00:07:48,000 --> 00:07:53,000 >> Annað par af hlutum til að líta á. Við munum fara til gráðugur. 109 00:07:53,000 --> 00:07:58,000 Nú ef við skoðum gráðugur, þetta fyrsta lausn 110 00:07:58,000 --> 00:08:00,000 notar þetta # skilgreinir töluvert. 111 00:08:00,000 --> 00:08:06,000 Við höfum fengið einn fasti skilgreind fyrir hverja mismunandi númer í þessari áætlun. 112 00:08:06,000 --> 00:08:12,000 Við höfum fengið einn fyrir sent á dollara, einn fyrir ársfjórðunga, Dimes, Nickels og smáaurarnir, 113 00:08:12,000 --> 00:08:15,000 og nú ef við skruna niður og lesa kóðann, 114 00:08:15,000 --> 00:08:22,000 við sjáum venjulega gera-while lykkju prentun allt út. 115 00:08:22,000 --> 00:08:25,000 Konar crux þessu vandamáli var að átta sig á því 116 00:08:25,000 --> 00:08:29,000 þú þarf til að breyta fljóta að þú lesir í frá notanda til heiltölu 117 00:08:29,000 --> 00:08:32,000 að nákvæmlega gera stærðfræði, og þetta er vegna þess að 118 00:08:32,000 --> 00:08:36,000 með fljótandi tölur benda, eins og við ræddum um í fyrirlestri í stuttu máli, 119 00:08:36,000 --> 00:08:41,000 það er ekki hægt að nákvæmlega tákna hvert einasta gildi um fjölda lína 120 00:08:41,000 --> 00:08:47,000 því það eru óendanlega mörg gildi milli 3 og, segja, 3,1 jafnvel. 121 00:08:47,000 --> 00:08:54,000 Hægt er að hafa 3,01 og 3,001 og 3,0001, og þú getur haldið áfram. 122 00:08:54,000 --> 00:09:00,000 Það kemur í ljós þegar þú ert að vinna með peninga, þú vilt oft til að breyta henni 123 00:09:00,000 --> 00:09:05,000 í heiltölu snið þannig að þú ert ekki að missa smáaurarnir og svona efni. 124 00:09:05,000 --> 00:09:09,000 Gera það og dregið var lykillinn. 125 00:09:09,000 --> 00:09:14,000 Þessi lausn er notað fullkomlega augljóst, mikill reiknirit, 126 00:09:14,000 --> 00:09:17,000 sem decremented fjölda sent eru eftir, fyrst eftir ársfjórðungum, 127 00:09:17,000 --> 00:09:19,000 þá með Dimes, þá við Nickels, þá með smáaurarnir, 128 00:09:19,000 --> 00:09:24,000 og bæta við fjölda mynt í hvert skipti. 129 00:09:24,000 --> 00:09:31,000 >> Önnur lausn sem við munum sjá, eins og ég minnka og fara Revision 4, 130 00:09:31,000 --> 00:09:40,000 var mjög svipuð byrjun en í staðinn notað div og unga fólkið 131 00:09:40,000 --> 00:09:44,000 rétt yfir hér til að reikna út fjölda sent. 132 00:09:44,000 --> 00:09:50,000 Þetta fjölda ársfjórðunga er jafn fjölda sent deilt með 25, 133 00:09:50,000 --> 00:09:53,000 og ástæðan þetta virkar er vegna þess að við erum að gera tölustafi deild, 134 00:09:53,000 --> 00:09:58,000 svo það hent allir minna. 135 00:09:58,000 --> 00:10:02,000 [Nemandi] höfum við til að tjá sig að leita? 136 00:10:02,000 --> 00:10:05,000 Það fer í raun. 137 00:10:05,000 --> 00:10:08,000 [Nemandi] Þú ert að kommenta meira en númerið hérna. 138 00:10:08,000 --> 00:10:16,000 Já, og svo eru fullt af mismunandi hugmyndir um þetta. 139 00:10:16,000 --> 00:10:21,000 Persónulega heimspeki mín er að númerið þitt er í raun sannleikurinn, 140 00:10:21,000 --> 00:10:24,000 eins og númerið þitt er það sem er í raun framkvæmd á tölvu, 141 00:10:24,000 --> 00:10:29,000 og svo númerið þitt ætti að vera eins læsileg og hægt er að ekki nauðsynlegt eins margar athugasemdir. 142 00:10:29,000 --> 00:10:33,000 Það sagði, ef þú ert að gera hluti sem eru svona erfiður stærðfræðilega 143 00:10:33,000 --> 00:10:38,000 eða algorithmically er það gott að tjá þá þannig að þú getur 144 00:10:38,000 --> 00:10:43,000 bæta við auka vídd, auka lag í hver er að lesa kóðann. 145 00:10:43,000 --> 00:10:49,000 Í þessum lausnum, oft þeir eru sagði meira þungt bara vegna 146 00:10:49,000 --> 00:10:52,000 Við viljum vera fær um að dreifa þeim og hafa menn valið þá upp 147 00:10:52,000 --> 00:10:56,000 og lesa þær nokkuð auðveldlega. 148 00:10:56,000 --> 00:11:05,000 En ákveðið, myndi ég sammála að þetta er þungur. 149 00:11:05,000 --> 00:11:07,000 [Nemandi] En þegar í vafa, fara þyngri? 150 00:11:07,000 --> 00:11:10,000 Hvenær í vafa, fara þyngri. 151 00:11:10,000 --> 00:11:17,000 Sumir vilja stundum segja áreturn 0 eða eitthvað svoleiðis. 152 00:11:17,000 --> 00:11:20,000 Ég held að það er fáránlegt athugasemd. 153 00:11:20,000 --> 00:11:22,000 Augljóslega það er það sem er að gerast. 154 00:11:22,000 --> 00:11:25,000 Ég þarf ekki ensku að segja mér það. 155 00:11:25,000 --> 00:11:28,000 Stundum fólk skrifa efni eins og "kthxbai!" 156 00:11:28,000 --> 00:11:32,000 Það er góður af sætur en einnig ekki- 157 00:11:32,000 --> 00:11:35,000 það er ekki að gera muninn á athugasemdir stig eða ekki. 158 00:11:35,000 --> 00:11:41,000 Þeir konar athugasemdir eru bara ha, ha. 159 00:11:41,000 --> 00:11:43,000 Cool. 160 00:11:43,000 --> 00:11:48,000 >> Á þessum tímapunkti, við skulum byrja að vinna á því vandamáli Set 3 kafla af spurningum. 161 00:11:48,000 --> 00:11:52,000 Ef þú krakkar rífa þetta upp aftur, 162 00:11:52,000 --> 00:11:55,000 eins og í síðustu viku, við erum ekki að fara að horfa á stuttbuxum í þessum kafla. 163 00:11:55,000 --> 00:12:00,000 Við munum láta ykkur gera það í þínum eigin tíma og tala um spurningum. 164 00:12:00,000 --> 00:12:05,000 En nú í þessum kafla ætlum við að eyða smá meiri tíma 165 00:12:05,000 --> 00:12:11,000 tala um minni á erfðaskrá grunnatriði 166 00:12:11,000 --> 00:12:15,000 eins og við gerðum í síðustu viku, og í staðinn, við erum að fara að einbeita sér meira að 167 00:12:15,000 --> 00:12:22,000 svolítið meira af kenningum, svo að tala um tvöfaldur leit og þá flokka. 168 00:12:22,000 --> 00:12:27,000 Frá þeim ykkar sem hafa fylgst með fyrirlesturinn 169 00:12:27,000 --> 00:12:30,000 getur einhver gefið mér ágrip af hvað munurinn er 170 00:12:30,000 --> 00:12:35,000 milli leit tvöfaldur og línuleg leit? 171 00:12:35,000 --> 00:12:37,000 Hvað er að gerast? Jú. 172 00:12:37,000 --> 00:12:42,000 Línuleg leit leitað hvert frumefni í raðaða listanum 173 00:12:42,000 --> 00:12:45,000 eitt af eitt og eitt og eitt í einu, 174 00:12:45,000 --> 00:12:50,000 og tvöfaldur leita skiptir lista í 2 hópa, 175 00:12:50,000 --> 00:12:57,000 Athugar hvort takkarnir gildi sem þú ert að leita að er meiri en eða minna en miðpunkt gildi 176 00:12:57,000 --> 00:13:00,000 sem þú fannst bara, og ef það er minna en það fer með neðri listanum 177 00:13:00,000 --> 00:13:03,000 og þá skiptir það aftur, gerir það sama virka 178 00:13:03,000 --> 00:13:07,000 alla leið niður þar til hún finnur miðpunkt til að vera jafn gildi sjálfrar. 179 00:13:07,000 --> 00:13:10,000 Hægri. 180 00:13:10,000 --> 00:13:12,000 >> Hvers vegna ekki sama við? 181 00:13:12,000 --> 00:13:20,000 Af hverju tölum við um tvöfaldur leit móti línuleg leit? 182 00:13:20,000 --> 00:13:22,000 Já. 183 00:13:22,000 --> 00:13:24,000 Binary er mikið hraðar, þannig að ef þú tvöfalda stærð af the vandamál 184 00:13:24,000 --> 00:13:27,000 það tekur eitt skref fremur en tvisvar sinnum eins og margir. 185 00:13:27,000 --> 00:13:29,000 Einmitt. 186 00:13:29,000 --> 00:13:31,000 Það er frábært svar. 187 00:13:31,000 --> 00:13:36,000 Línuleg leit er mjög mikið að skoða einn þáttur í einu, 188 00:13:36,000 --> 00:13:39,000 og eins og við sáum á fyrsta degi fyrirlestri 189 00:13:39,000 --> 00:13:42,000 Þegar Davíð fór í gegnum símaskrá dæmi hans 190 00:13:42,000 --> 00:13:45,000 og reif út eina síðu í símaskránni í einu 191 00:13:45,000 --> 00:13:47,000 og haldið að gera það aftur og aftur og aftur, 192 00:13:47,000 --> 00:13:51,000 það er að fara að taka hann mjög langan tíma til að finna einhver í símaskránni, 193 00:13:51,000 --> 00:13:55,000 Nema, auðvitað, hann var að leita að einhverjum í upphafi stafrófsins. 194 00:13:55,000 --> 00:14:00,000 Með leit tvöfaldur, þú getur farið mikið hraðar, 195 00:14:00,000 --> 00:14:05,000 og það er ekki bara tvisvar eins hratt eða 3 sinnum eins hratt eða 4 sinnum eins hratt. 196 00:14:05,000 --> 00:14:13,000 En vandamálið verður minni og minni og minni mun hraðar. 197 00:14:13,000 --> 00:14:17,000 Til að skýra þetta, munum við byrja að tala um hvað er að gerast 198 00:14:17,000 --> 00:14:21,000 þegar við skrifa tvöfaldur leit. 199 00:14:21,000 --> 00:14:27,000 Vandamálið á móti er að ef ég hef fjölbreytta tölum, 200 00:14:27,000 --> 00:14:40,000 segja, 1, 2, 3, 5, 7, 23, 45, 78, 12323, 201 00:14:40,000 --> 00:14:47,000 og síðan 9 með tonn af 0s eftir það, 202 00:14:47,000 --> 00:14:52,000 Við viljum vera fær um að reikna út raunverulega fljótt hvað er í 203 00:14:52,000 --> 00:14:57,000 þetta fylki af tölum. 204 00:14:57,000 --> 00:15:00,000 Ég veit að þetta virðist svolítið kjánalegt og svolítið háttuð, 205 00:15:00,000 --> 00:15:02,000 því núna er það. 206 00:15:02,000 --> 00:15:05,000 Við höfum fjölda sem ekki hafa mjög marga þætti í því, 207 00:15:05,000 --> 00:15:08,000 og ef ég spyr einn af þér að reikna út hvort 208 00:15:08,000 --> 00:15:11,000 23 er í fylkinu, getur þú gert það nokkuð fljótt 209 00:15:11,000 --> 00:15:16,000 bara með því að glancing á þetta og segja mér já eða nei. 210 00:15:16,000 --> 00:15:20,000 Flaumi til íhuga er ímynda sér ef það voru, segja, 211 00:15:20,000 --> 00:15:27,000 Excel töflureikni með 10.000 raðir, 20.000 raðir. 212 00:15:27,000 --> 00:15:31,000 Auðvitað getur þú gert stjórn f eða stjórna F og líta eitthvað upp. 213 00:15:31,000 --> 00:15:33,000 Þú getur einnig notað síur og leita efni, 214 00:15:33,000 --> 00:15:37,000 en ef þú þarft að horfa í gegnum þessi skrá línu fyrir línu fyrir línu, 215 00:15:37,000 --> 00:15:40,000 það myndi taka þig langan tíma að finna það. 216 00:15:40,000 --> 00:15:42,000 Það er góður af eins og í símaskránni dæmi líka þar 217 00:15:42,000 --> 00:15:44,000 enginn lítur í gegnum símaskrá eina síðu í einu. 218 00:15:44,000 --> 00:15:47,000 Venjulega, þeir opna það til miðju, 219 00:15:47,000 --> 00:15:50,000 eða í tilfelli af a einhver fjöldi af bókum í síma og orðabækur þar 220 00:15:50,000 --> 00:15:54,000 þú í raun hefur það fært inn á fyrsta stafinn, 221 00:15:54,000 --> 00:16:01,000 þú flettir til að fyrsta bréfi og opna og byrja að fara í gegnum það. 222 00:16:01,000 --> 00:16:03,000 >> Minna mig á nafninu þínu aftur. >> Sam. 223 00:16:03,000 --> 00:16:05,000 Sam. 224 00:16:05,000 --> 00:16:11,000 Eins og Sam segir að línuleg leit ferli er að fara að vera mjög hægur, 225 00:16:11,000 --> 00:16:15,000 og í stað þess að við leit tvöfaldur, hvernig þetta virkar er að 226 00:16:15,000 --> 00:16:21,000 í hvert skipti sem við förum í gegnum endurtekning á að leita reiknirit okkar, 227 00:16:21,000 --> 00:16:27,000 við erum að fara að skipta á lista í tvennt, í meginatriðum, 228 00:16:27,000 --> 00:16:33,000 í tvo smærri listum. 229 00:16:33,000 --> 00:16:39,000 Og þá á næsta endurtekning af the lykkja, munum við skipta því aftur 230 00:16:39,000 --> 00:16:44,000 í öðrum smærri listum. 231 00:16:44,000 --> 00:16:48,000 Eins og þú geta sjá, vandamálið heldur fá minni og minni 232 00:16:48,000 --> 00:16:55,000 vegna þess að við halda hent helmingi listanum hvert einasta skipti. 233 00:16:55,000 --> 00:16:59,000 Hvernig er þetta fargið vinna? 234 00:16:59,000 --> 00:17:05,000 Rétt eins og áminning, hvað við erum að fara að gera ef við værum tölva 235 00:17:05,000 --> 00:17:11,000 og við vorum að segja, að leita að númer 5 á þessum lista 236 00:17:11,000 --> 00:17:15,000 er að við myndum velja tölu í miðjunni. 237 00:17:15,000 --> 00:17:26,000 Í miðju á þessum lista, af því að það eru 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 tölur, 238 00:17:26,000 --> 00:17:32,000 viljum við velja númer annaðhvort 4. stöðu eða 5. stöðu, 239 00:17:32,000 --> 00:17:38,000 og við myndum kalla það á miðju listanum okkar. 240 00:17:38,000 --> 00:17:42,000 Veldu fjölda í miðju. 241 00:17:42,000 --> 00:17:51,000 Þá, rétt eins og Sam sagði, við munum prófa að sjá hvort þessi tala er jöfn 242 00:17:51,000 --> 00:17:59,000 að tala um að við viljum fá eða viðeigandi númer okkar. 243 00:17:59,000 --> 00:18:06,000 Ef það er jafnt, þá höfum við fundið það. Við vinna. 244 00:18:06,000 --> 00:18:12,000 Ef það er ekki jafn, þá eru nokkrar tilvikum. 245 00:18:12,000 --> 00:18:15,000 Þau tvö mál eru annaðhvort hefur fjöldi að vera meiri en sá fjöldi sem við erum að horfa á, 246 00:18:15,000 --> 00:18:19,000 eða það er minna en. 247 00:18:19,000 --> 00:18:25,000 Ef það er meira, hreyfa við til hægri. 248 00:18:25,000 --> 00:18:33,000 Og ef það er minna, hreyfa við til vinstri. 249 00:18:33,000 --> 00:18:41,000 Og þá erum við að endurtaka allt ferlið aftur 250 00:18:41,000 --> 00:18:48,000 annaðhvort á hægri hluta eða vinstri hluta á listanum. 251 00:18:48,000 --> 00:18:51,000 >> Fyrsta vandamálið í kafla í dag er að reikna út 252 00:18:51,000 --> 00:18:55,000 hvernig getum við í raun að byrja að tjá þetta í C kóða. 253 00:18:55,000 --> 00:18:58,000 Við höfum fengið sauðakóðanum hér. 254 00:18:58,000 --> 00:19:04,000 Það sem við munum byrja að gera er ég draga upp vörumerki-nýtt rými, 255 00:19:04,000 --> 00:19:09,000 vista þessa breytingu þannig að við höfum þessar athugasemdir til seinna, 256 00:19:09,000 --> 00:19:20,000 Við eyðum allt þetta, og þá afrita og líma frá vandanum setja 257 00:19:20,000 --> 00:19:26,000 þessar upplýsingar í rými okkar, og vonandi ekki brjóta. 258 00:19:26,000 --> 00:19:28,000 Perfect. 259 00:19:28,000 --> 00:19:33,000 Ef þú krakkar að gera, afrita og líma þennan kóða inn í nýja rúm, 260 00:19:33,000 --> 00:19:43,000 í auða einn. 261 00:19:43,000 --> 00:19:47,000 Reynum Daníel. Ef þú safna saman og keyra þetta forrit, virkar það? 262 00:19:47,000 --> 00:19:49,000 Nei >> Hvað er hún að segja? 263 00:19:49,000 --> 00:19:53,000 Hún segir stjórn nær enda ekki ógilt virka. 264 00:19:53,000 --> 00:19:55,000 Já, svo látið mig reyna að keyra það. 265 00:19:55,000 --> 00:19:59,000 Hafið þið séð þetta áður? Veistu hvað þetta þýðir? 266 00:19:59,000 --> 00:20:01,000 Jæja, við skulum kryfja þetta svolítið. 267 00:20:01,000 --> 00:20:10,000 Það er að segja á file.c á línu 9, 1. dálki við höfum villa, rétt eins og þú sagðir, 268 00:20:10,000 --> 00:20:16,000 og það segir að það stafar af villa viðvörun og gerð aftur viðvörun. 269 00:20:16,000 --> 00:20:18,000 Það lítur út eins og eitthvað sem er að gerast við aftur gerð, sem er vit í. 270 00:20:18,000 --> 00:20:21,000 Við höfum fengið ekki ógilt virka, sem þýðir að við höfum fengið aðgerð 271 00:20:21,000 --> 00:20:24,000 sem ekki aftur tóm. 272 00:20:24,000 --> 00:20:27,000 A ógilt virka er eitt sem lítur svona út: 273 00:20:27,000 --> 00:20:35,000 ógilt foo (), og það er ógilt vegna þess að aftur tegund er ógilt, 274 00:20:35,000 --> 00:20:38,000 sem þýðir að ef við hefðum eitthvað hér 275 00:20:38,000 --> 00:20:45,000 eins og aftur 1, viljum við fá þýðanda villa fyrir þetta. 276 00:20:45,000 --> 00:20:49,000 Hins vegar höfum við ekki ógilt virka. 277 00:20:49,000 --> 00:20:51,000 Ekki ógilt virka okkar í þessu tilfelli er að leita virka okkar 278 00:20:51,000 --> 00:20:56,000 því að hún hefur aftur gerð Bool. 279 00:20:56,000 --> 00:20:59,000 Þegar það er að segja að eftirlit nær lok ekki ógilt virka, 280 00:20:59,000 --> 00:21:02,000 það er vegna þess að leita er ekki til baka yfirlýsingu. 281 00:21:02,000 --> 00:21:04,000 Það er ekki aftur neitt af bool tegund. 282 00:21:04,000 --> 00:21:09,000 >> Við getum lagað það, og hvað þú krakkar hugsa 283 00:21:09,000 --> 00:21:13,000 leit ætti aftur sjálfgefið? 284 00:21:13,000 --> 00:21:16,000 Hvað ætti að vera aftur sjálfgefið gildi leit? 285 00:21:16,000 --> 00:21:19,000 Vegna þess að það er það sem við getum sett í lokin. 286 00:21:19,000 --> 00:21:21,000 Charlotte, hefur þú einhverjar-? 287 00:21:21,000 --> 00:21:23,000 Satt eða ósatt? >> Satt eða ósatt. 288 00:21:23,000 --> 00:21:26,000 Hver einn? 289 00:21:26,000 --> 00:21:28,000 False. Ég veit ekki. 290 00:21:28,000 --> 00:21:30,000 False? Við skulum reyna það. 291 00:21:30,000 --> 00:21:32,000 Hvers vegna vildi þú segja return false? Það er frábært innsæi. 292 00:21:32,000 --> 00:21:35,000 [Charlotte] Ég veit ekki. 293 00:21:35,000 --> 00:21:39,000 Við ætlum að fara aftur rangt í þessu tilfelli vegna þess að þetta mun vera sjálfgefið okkar 294 00:21:39,000 --> 00:21:44,000 Ef fyrir sumir ástæða the listi er tómur eða nálin 295 00:21:44,000 --> 00:21:46,000 sem við erum að leita að er ekki til. 296 00:21:46,000 --> 00:21:50,000 Þá á enda, ef við aftur ekki satt fyrr í þessa aðgerð, 297 00:21:50,000 --> 00:21:55,000 við vitum alltaf að þessi aðgerð mun segja Nei, það er ekki í fylkinu. 298 00:21:55,000 --> 00:21:58,000 Það er ekki í Heysátan. 299 00:21:58,000 --> 00:22:03,000 Nú ef við saman og keyra það-láttu mig bjarga þessu svo við getum draga það upp. 300 00:22:03,000 --> 00:22:08,000 Nú ef við saman og hlaupa program okkar, byggir það. 301 00:22:08,000 --> 00:22:12,000 Við fáum smá hvetja okkar. 302 00:22:12,000 --> 00:22:20,000 Ef ég lenti 4-uh-oh. 303 00:22:20,000 --> 00:22:25,000 Það var ekki prenta út neitt. Það lítur út eins og allt endaði vel. 304 00:22:25,000 --> 00:22:35,000 Við verðum að fylla þetta inn 305 00:22:35,000 --> 00:22:39,000 Við ræddum um reiknirit í sauðakóðanum svolítið síðan. 306 00:22:39,000 --> 00:22:44,000 Leyfðu mér að sjá, nema þetta, 307 00:22:44,000 --> 00:22:49,000 og ég ætla að draga þessi reiknirit upp aftur. 308 00:22:49,000 --> 00:22:51,000 Við skulum ná þessu gaur. Nope. 309 00:22:51,000 --> 00:22:58,000 Það er það. 310 00:22:58,000 --> 00:23:03,000 Hvernig gerum við þetta? 311 00:23:03,000 --> 00:23:11,000 Hvað væri góð stefna að byrja á þennan kóða? 312 00:23:11,000 --> 00:23:16,000 Þú þarft að velja tölu í miðjunni. 313 00:23:16,000 --> 00:23:23,000 Hvernig sæki við fjölda í miðri fylking? 314 00:23:23,000 --> 00:23:25,000 Allar uppástungur? 315 00:23:25,000 --> 00:23:27,000 [Nemandi] Strlen deilt með 2. 316 00:23:27,000 --> 00:23:32,000 Strlen deilt með 2. Það er a mikill einn. 317 00:23:32,000 --> 00:23:35,000 Strlen vinnur með sérstökum konar fylki. 318 00:23:35,000 --> 00:23:38,000 Hvers konar fylki? 319 00:23:38,000 --> 00:23:44,000 Band fylki, eðli fylki. 320 00:23:44,000 --> 00:23:48,000 Það er þessi sama tegund af hugmynd sem við viljum að sækja, 321 00:23:48,000 --> 00:23:52,000 en við getum ekki notað strlen því við höfum ekki fjölda stafa. 322 00:23:52,000 --> 00:23:55,000 Við höfum fjölda ints. 323 00:23:55,000 --> 00:23:58,000 En hvað þýðir strlen fá fyrir okkur? 324 00:23:58,000 --> 00:24:01,000 Veistu hvað það fær fyrir okkur? 325 00:24:01,000 --> 00:24:03,000 [Nemandi] Strlen fær okkur lengd. 326 00:24:03,000 --> 00:24:05,000 Einmitt fær það okkur lengd. 327 00:24:05,000 --> 00:24:09,000 Strlen fær lengd fylkisins fyrir okkur. 328 00:24:09,000 --> 00:24:14,000 >> Hvernig fáum við að í tvöfaldur leita kerfi okkar? 329 00:24:14,000 --> 00:24:18,000 Hvernig viltu fá lengd array? 330 00:24:18,000 --> 00:24:20,000 [Nemandi] Strlen? 331 00:24:20,000 --> 00:24:25,000 Hægt er að fá lengd á rétt snið C band fylki með strlen. 332 00:24:25,000 --> 00:24:31,000 Vandamálið, þó, er að við höfum ekki band fylki. 333 00:24:31,000 --> 00:24:36,000 Ef við lítum til baka á þessum kóða, höfum við þetta heiltölu fylki. 334 00:24:36,000 --> 00:24:38,000 Hvernig vitum við hversu lengi það er? 335 00:24:38,000 --> 00:24:44,000 [Nemandi] Er jafngilt einn fyrir endapunkt eins int l eða eitthvað? 336 00:24:44,000 --> 00:24:49,000 Það kemur í ljós að það er í raun ekki, og það á þann hátt, er 337 00:24:49,000 --> 00:24:52,000 einn af þeim hlutum sem er bara gott að vita um C, 338 00:24:52,000 --> 00:24:57,000 að það er engin leið til að fá lengd fylki 339 00:24:57,000 --> 00:24:59,000 Ef allt sem ég gef þér er fylki. 340 00:24:59,000 --> 00:25:02,000 Ástæðan það virkar með strengi, ástæðan strlen verk, 341 00:25:02,000 --> 00:25:06,000 er vegna þess að ef strengur er rétt sniðinn, 342 00:25:06,000 --> 00:25:12,000 það verður að sérstakar \ 0 staf aftast. 343 00:25:12,000 --> 00:25:16,000 >> Þú getur líka ímyndað þér ef þú ert með óviðeigandi sniðinn band 344 00:25:16,000 --> 00:25:20,000 og það er engin \ 0 karakter þar, þá er allt sem virkar ekki. 345 00:25:20,000 --> 00:25:22,000 [Nemandi] Getur þú bætt \ 0? 346 00:25:22,000 --> 00:25:24,000 Við gæti í þessu tilfelli. 347 00:25:24,000 --> 00:25:29,000 Við gætum bætt einhverskonar \ 0 348 00:25:29,000 --> 00:25:33,000 eða einhverskonar kynna eðli og þá nota það. 349 00:25:33,000 --> 00:25:36,000 En það er ekki alveg að fara að vinna 350 00:25:36,000 --> 00:25:40,000 vegna þess að \ 0 er fyrir bleikju tegund, 351 00:25:40,000 --> 00:25:43,000 og hér höfum við fengið ints. 352 00:25:43,000 --> 00:25:46,000 The annar hlutur er að ef við værum að nota sérstakt gildi 353 00:25:46,000 --> 00:25:49,000 eins og -1 til að merkja enda fylki 354 00:25:49,000 --> 00:25:54,000 þá gátum við aldrei geyma -1 í heiltölu fylki okkar. 355 00:25:54,000 --> 00:25:56,000 Við myndum vera fastur. 356 00:25:56,000 --> 00:26:00,000 Það kemur í ljós að eina leiðin til að fá lengd 357 00:26:00,000 --> 00:26:03,000 af fjölda í C er að í raun muna það 358 00:26:03,000 --> 00:26:08,000 þegar þú setur það upp og þá fara framhjá það í kring með the array 359 00:26:08,000 --> 00:26:14,000 þannig að þegar ég er með fall sem er að fara að gera sumir vinna 360 00:26:14,000 --> 00:26:18,000 um fjölda heiltalna eða flot eða tvöfaldar eða hvað hefur þú, 361 00:26:18,000 --> 00:26:22,000 Ég þarf líka að gefa aðgerðina lengd fylkisins er, 362 00:26:22,000 --> 00:26:26,000 og það er nákvæmlega það sem við höfum gert hér í leit virka. 363 00:26:26,000 --> 00:26:30,000 Ef þú lítur út, það sem við höfum gert þegar við fara í fylking okkar hér, 364 00:26:30,000 --> 00:26:36,000 við framhjá líka í lengd, stærð. 365 00:26:36,000 --> 00:26:41,000 Það gerist bara að við höfum kallað þessa breytu hér, 366 00:26:41,000 --> 00:26:43,000 þessa breytu eða rifrildi. 367 00:26:43,000 --> 00:26:46,000 Þetta er kallað viðfang lista fall er eða breytu listanum, 368 00:26:46,000 --> 00:26:51,000 og þetta eru líka kölluð rök eða breytur. 369 00:26:51,000 --> 00:26:53,000 Fólk notar mismunandi hugtök á mismunandi tímum. 370 00:26:53,000 --> 00:26:55,000 Ég skipti stundum þá sjálfur. 371 00:26:55,000 --> 00:27:00,000 Það bara vill svo til að þessi breyta hér heitir álíka 372 00:27:00,000 --> 00:27:03,000 þessu skilgreina # upp hér. 373 00:27:03,000 --> 00:27:06,000 En þeir eru ekki það sama. 374 00:27:06,000 --> 00:27:11,000 Eignfærslu skiptir máli. 375 00:27:11,000 --> 00:27:14,000 >> Ef þú lítur á það sem gerist hér, lýsa við 376 00:27:14,000 --> 00:27:18,000 int array okkar, sem við höfum kallað númer. 377 00:27:18,000 --> 00:27:23,000 Við höfum gefið það stærð okkar, sem samsvarar okkar # skilgreina upp á toppinn. 378 00:27:23,000 --> 00:27:27,000 Það er að fara að vera 8. 379 00:27:27,000 --> 00:27:35,000 Og svo þegar við köllum þá leita virka okkar niðri, 380 00:27:35,000 --> 00:27:40,000 við fara í fjölda sem við viljum að leita að, sem við höfum beðið, 381 00:27:40,000 --> 00:27:43,000 fengið frá notandanum. 382 00:27:43,000 --> 00:27:46,000 Við fara í fylking, þessi númer, 383 00:27:46,000 --> 00:27:51,000 og þá erum við líka að fara í stærð fylkisins, 384 00:27:51,000 --> 00:27:57,000 og þá verðmæti stærð 8 verður geymd 385 00:27:57,000 --> 00:28:01,000 eða samþykkt þessari heiltölubreytu heitir stærð. 386 00:28:01,000 --> 00:28:08,000 Við höfum stærð fylkisins. 387 00:28:08,000 --> 00:28:11,000 Nú ef við förum aftur í það sem við vorum að tala um áðan, 388 00:28:11,000 --> 00:28:14,000 Ég held Missy kom upp lið sem það sem við þurftum að gera er að fá lengd fylkisins 389 00:28:14,000 --> 00:28:20,000 og deilum í hana með 2, og það mun gefa okkur miðpunkt. 390 00:28:20,000 --> 00:28:22,000 Við skulum sjá. 391 00:28:22,000 --> 00:28:25,000 Get ég einhvern skrifa þetta og vista það í rúm þeirra? 392 00:28:25,000 --> 00:28:27,000 Hvað um Leila? 393 00:28:27,000 --> 00:28:31,000 Get ég að skrifa þetta á? 394 00:28:31,000 --> 00:28:35,000 Skrifaðu fyrstu línuna þar sem þú tekur lengd fylkisins og fá miðpunkt 395 00:28:35,000 --> 00:28:41,000 og geyma í nýjum breytu. 396 00:28:41,000 --> 00:28:44,000 Ég skal gefa þér nokkrar sekúndur. Ertu tilbúinn? 397 00:28:44,000 --> 00:28:46,000 [Námsmaður inaudible] 398 00:28:46,000 --> 00:28:50,000 Jú, gæti ég að reikna miðpunkt 399 00:28:50,000 --> 00:28:55,000 á Haystack array inni the leita virka 400 00:28:55,000 --> 00:29:03,000 með lengd Heysátan fylkisins, sem er stærð breytu? 401 00:29:03,000 --> 00:29:08,000 Ekkert erfiður hér. 402 00:29:08,000 --> 00:29:12,000 [Leila] Bara stærð / 2 og bara- 403 00:29:12,000 --> 00:29:17,000 Og vista það, og ýta á Vista hnappinn hérna efst, 404 00:29:17,000 --> 00:29:19,000 og við munum draga það upp. 405 00:29:19,000 --> 00:29:22,000 Perfect. 406 00:29:22,000 --> 00:29:28,000 Svona. Awesome. 407 00:29:28,000 --> 00:29:30,000 >> Eins og er, mun þetta þýða? 408 00:29:30,000 --> 00:29:32,000 [Leila] Nei, það þarf að vera meiri. 409 00:29:32,000 --> 00:29:34,000 [Nate] Já, svo hvað við þurfum að gera? 410 00:29:34,000 --> 00:29:36,000 [Leila] Eins int miðju eða eitthvað. 411 00:29:36,000 --> 00:29:41,000 Awesome. Já, við skulum gera það, int miðpunkt = stærð. 412 00:29:41,000 --> 00:29:44,000 Mun þetta þýða? 413 00:29:44,000 --> 00:29:47,000 Við skulum eyða þessari athugasemd og fá það út af the vegur. 414 00:29:47,000 --> 00:29:50,000 Hvað mun ekki saman um þetta? 415 00:29:50,000 --> 00:29:52,000 Við erum ekki að gera neitt með heiltölu, 416 00:29:52,000 --> 00:29:55,000 þannig að við þurfum að prenta það eða eitthvað svoleiðis. 417 00:29:55,000 --> 00:29:58,000 Já, nákvæmlega. 418 00:29:58,000 --> 00:30:00,000 Við munum fá ónotað breytu. 419 00:30:00,000 --> 00:30:02,000 Hvað annað er ekki að fara að vinna þetta? 420 00:30:02,000 --> 00:30:06,000 Ég held að þú sagðir eitthvað, Sam. Semikommum. 421 00:30:06,000 --> 00:30:08,000 Já, ég er vantar þeim semikommum. 422 00:30:08,000 --> 00:30:14,000 Það er að fara að vera stöðug hlutur yfir the rás af the orð. 423 00:30:14,000 --> 00:30:17,000 Endanleg sem ég geri er að ég setja nokkrar hvítt pláss á hvorri hlið 424 00:30:17,000 --> 00:30:23,000 þessa rekstraraðila hér, þar sem það er yfirleitt hvernig við gerum það 425 00:30:23,000 --> 00:30:26,000 í samræmi við stíl fylgja okkar. 426 00:30:26,000 --> 00:30:29,000 Við höfum fengið miðpunkt fylking okkar. 427 00:30:29,000 --> 00:30:32,000 Nú ef við minnumst aftur á reiknirit okkar, 428 00:30:32,000 --> 00:30:37,000 það var annað skrefið sem við þurftum að gera þegar við höfum miðpunkt? 429 00:30:37,000 --> 00:30:42,000 [Nemandi] Ef það er meiri [inaudible]. 430 00:30:42,000 --> 00:30:48,000 Já, þannig að við verðum að gera einhvers konar samanburð, og hvað erum við að bera saman hér? 431 00:30:48,000 --> 00:30:53,000 Þú segir ef það er meira en. Hvað er það í þeirri setningu að vísa til? 432 00:30:53,000 --> 00:30:57,000 Talan sem kemur upp, ef það er meira en miðju, þá fara upp í fylki? 433 00:30:57,000 --> 00:31:05,000 Einmitt, svo kemur sú tala sem upp þegar við- 434 00:31:05,000 --> 00:31:10,000 Nálin, þannig að við erum að bera saman við nálinni 435 00:31:10,000 --> 00:31:12,000 Og hvað erum við að bera saman gegn nálinni? 436 00:31:12,000 --> 00:31:15,000 Vegna þess að nálin er það sem við erum að leita að. 437 00:31:15,000 --> 00:31:18,000 Við erum að bera saman það að fá að miðju. 438 00:31:18,000 --> 00:31:21,000 >> En það gera vit í að athuga 439 00:31:21,000 --> 00:31:27,000 Ef nálin = miðpunkt? 440 00:31:27,000 --> 00:31:32,000 Er það skynsamleg? 441 00:31:32,000 --> 00:31:35,000 Er einhver ósammála? 442 00:31:35,000 --> 00:31:40,000 Við skulum gefa það a reyna, ef (nál == miðpunkt). 443 00:31:40,000 --> 00:31:42,000 [Nemandi] Ert þú printf fundið það. 444 00:31:42,000 --> 00:31:51,000 [Nate] printf ("Við fundum það \ n"); 445 00:31:51,000 --> 00:31:56,000 Annars-Ég ætla að byrja að gera eitthvað öðruvísi hér. 446 00:31:56,000 --> 00:32:00,000 Ég ætla að byrja að setja axlabönd kring ef yfirlýsingar allra tíma 447 00:32:00,000 --> 00:32:05,000 bara vegna þess að ef við bætum fleiri efni, svo 448 00:32:05,000 --> 00:32:07,000 Við fæ ekki vistþýðendur. 449 00:32:07,000 --> 00:32:09,000 Já, Sam. Þú hefur got a lið. 450 00:32:09,000 --> 00:32:12,000 Vandamálið er að miðpunkt táknar stöðu í fylking, 451 00:32:12,000 --> 00:32:15,000 en þú getur fengið það til að tákna gildi í þeirri stöðu fylkisins. 452 00:32:15,000 --> 00:32:17,000 Þetta er frábær punktur. 453 00:32:17,000 --> 00:32:19,000 Vissir allir heyra hvað Sam sagði? 454 00:32:19,000 --> 00:32:22,000 Hann sagði að miðpunkt sem er 455 00:32:22,000 --> 00:32:28,000 táknar bara stöðu í fylkinu, en það er ekki í raun þáttur í fylki. 456 00:32:28,000 --> 00:32:30,000 Ef þú hugsa um kóðann sem skrifað núna, 457 00:32:30,000 --> 00:32:35,000 Ef við skoðum þetta fylki niður hér, sem hefur 8 þætti í henni, 458 00:32:35,000 --> 00:32:39,000 Hvert er gildi þess að fara miðpunkt til að vera í þessu hlutverki? 459 00:32:39,000 --> 00:32:41,000 [Nemandi] 4. 460 00:32:41,000 --> 00:32:45,000 [Nate] 4. 461 00:32:45,000 --> 00:32:51,000 Ef við lítum á fjölda 4 - 462 00:32:51,000 --> 00:32:54,000 og við getum bara keyrt þennan kóða og setja smá sorglegt andlit hér 463 00:32:54,000 --> 00:32:58,000 vegna þess að við ekki finna það, ef við keyra þennan kóða 464 00:32:58,000 --> 00:33:04,000 eins og er núna, senda það, bygging, láttu mig skruna niður, 465 00:33:04,000 --> 00:33:09,000 og ef við erum að leita að númer 4, 466 00:33:09,000 --> 00:33:18,000 okkur fannst það, en við fengum ekki að fá þetta til printf já. 467 00:33:18,000 --> 00:33:23,000 Ein ástæðan er að við vissum ekki aftur satt, 468 00:33:23,000 --> 00:33:26,000 en við fengum að finna raunverulega númer 4? 469 00:33:26,000 --> 00:33:28,000 Og Sam er að segja nei. 470 00:33:28,000 --> 00:33:31,000 Hvað höfum vér fundið? 471 00:33:31,000 --> 00:33:35,000 Við fundum mjög miðpunkt, sem ef við skoðum fjölda hérna, 472 00:33:35,000 --> 00:33:38,000 það er að fara að vera þáttur í vísitölu 4 sem við erum að horfa á, 473 00:33:38,000 --> 00:33:42,000 sem er 23. 474 00:33:42,000 --> 00:33:46,000 >> Hvernig fáum við reyndar að þáttur á miðju 475 00:33:46,000 --> 00:33:48,000 og ekki bara miðpunkt sig? 476 00:33:48,000 --> 00:33:52,000 [Nemandi] Við myndum inn bleikju eða eitthvað? 477 00:33:52,000 --> 00:33:55,000 Hvað myndi það gera, bara út af forvitni? 478 00:33:55,000 --> 00:33:57,000 Getur þú vandaður aðeins meira? 479 00:33:57,000 --> 00:34:02,000 Þú þarft að breyta stöðu í fjölda, 480 00:34:02,000 --> 00:34:05,000 Svo þú hefur fengið að gera sumir tengsl-Ég held að það er bleikja, en það gæti ekki verið. 481 00:34:05,000 --> 00:34:07,000 Já, það er góður punktur. 482 00:34:07,000 --> 00:34:12,000 Við höfum verið að gera mikið af þessu umbreyta stöðum í chars, Þessir stafir, 483 00:34:12,000 --> 00:34:14,000 í fyrstu tveimur vandamál setur. 484 00:34:14,000 --> 00:34:18,000 Það kemur í ljós að hér, þetta er næstum eins 485 00:34:18,000 --> 00:34:24,000 aðgangur að ith staf innan band, ef það er vit í. 486 00:34:24,000 --> 00:34:30,000 Hér viljum við fá aðgang miðpunkt frumefni. 487 00:34:30,000 --> 00:34:34,000 Hvernig eigum við að gera það? 488 00:34:34,000 --> 00:34:39,000 Kevin, hefur þú einhverjar tillögur hvernig við gætum gert það? 489 00:34:39,000 --> 00:34:44,000 Þú gætir gert Haystack, opið krappi, miðjan, lokað krappi. 490 00:34:44,000 --> 00:34:46,000 Getur þú skrifa það fyrir okkur? 491 00:34:46,000 --> 00:34:51,000 Vista það hér, og við munum draga þá upp. 492 00:34:51,000 --> 00:34:56,000 Við erum að horfa á þessa línu 9, 493 00:34:56,000 --> 00:34:59,000 og við erum að átta sig á að við viljum ekki að bera nálina á miðju, 494 00:34:59,000 --> 00:35:03,000 en í staðinn viljum við að bera nálinni 495 00:35:03,000 --> 00:35:07,000 að frumefni í miðpunkt stöðu innan array Heysátan okkar. 496 00:35:07,000 --> 00:35:10,000 Cool. 497 00:35:10,000 --> 00:35:12,000 Svona. 498 00:35:12,000 --> 00:35:15,000 Já, það lítur mjög gott, ef (nál == Heysátan [miðpunkt]). 499 00:35:15,000 --> 00:35:18,000 Við fundum það. 500 00:35:18,000 --> 00:35:22,000 Nú ef við keyra kóða-we'll aftur upp smá- 501 00:35:22,000 --> 00:35:26,000 það safnar, það keyrir, og nú ef við lítum á 4, 502 00:35:26,000 --> 00:35:30,000 við höfum ekki fundið það því nú erum við í raun að fá númer 23. 503 00:35:30,000 --> 00:35:33,000 Við erum að fá gildið 23 og það er það sem við erum að bera saman að nál okkar. 504 00:35:33,000 --> 00:35:35,000 En það er gott. Það er skref í rétta átt. 505 00:35:35,000 --> 00:35:37,000 >> Það er það sem við erum að reyna að gera. 506 00:35:37,000 --> 00:35:40,000 Við erum ekki að reyna að bera saman nálinni gegn stöðum í fylkinu 507 00:35:40,000 --> 00:35:44,000 heldur gegn raunverulegum þætti í fylki. 508 00:35:44,000 --> 00:35:49,000 Ef við lítum aftur nú á næsta skref í reiknirit okkar, 509 00:35:49,000 --> 00:35:51,000 hvað er næsta skref? 510 00:35:51,000 --> 00:35:57,000 Leila umtal þegar það stuttlega. 511 00:35:57,000 --> 00:36:00,000 [Námsmaður] Athugaðu að sjá hvort það er meiri en eða minna en og ákveða hvaða leið að fara. 512 00:36:00,000 --> 00:36:03,000 [Nate] Já, hvernig myndum við gera það? 513 00:36:03,000 --> 00:36:07,000 Getur þú sett í einhverju-Ég vista þessa útgáfu, 514 00:36:07,000 --> 00:36:13,000 og þá ef þú setur í nokkrar línur sem munu gera það. 515 00:36:13,000 --> 00:36:15,000 Já, Charlotte. >> Ég er með spurningu. 516 00:36:15,000 --> 00:36:19,000 Ætti það ekki að vera miðpunkt - 1 því fyrsta er 517 00:36:19,000 --> 00:36:26,000 þ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ð? 518 00:36:26,000 --> 00:36:30,000 Já, og önnur vandamál við sem er- 519 00:36:30,000 --> 00:36:35,000 það er mikill fengur, því að það er að fara að enda gerast hugsanlega 520 00:36:35,000 --> 00:36:42,000 ef við halda áfram og við ekki alltaf að stilla í upphafi? 521 00:36:42,000 --> 00:36:46,000 Ég giska á hvað við gætum endað að gera er að reyna að fá aðgang 522 00:36:46,000 --> 00:36:49,000 þáttur á 8. stöðu í fylkinu, 523 00:36:49,000 --> 00:36:53,000 sem í þessu tilfelli er ekki til. 524 00:36:53,000 --> 00:36:56,000 Við munum vilja til að gera einhvers konar bókhald fyrir því 525 00:36:56,000 --> 00:36:59,000 að við höfum nokkur núll flokkun. 526 00:36:59,000 --> 00:37:05,000 [Charlotte] Því miður, ég ætlaði miðpunkt - 1 í hornklofum. 527 00:37:05,000 --> 00:37:08,000 Við getum gert það. 528 00:37:08,000 --> 00:37:10,000 Við munum koma aftur til þetta mál í bara smá. 529 00:37:10,000 --> 00:37:13,000 Þegar við byrjum að fá til the raunverulegur lykkja, 530 00:37:13,000 --> 00:37:16,000 það er þegar við munum virkilega sjá þetta koma inn í leik. 531 00:37:16,000 --> 00:37:21,000 Fyrir the tími tilvera, við getum gert þetta, en þú ert alveg rétt. 532 00:37:21,000 --> 00:37:28,000 Það núll flokkun mun hafa áhrif að við þurfum að gera grein fyrir. 533 00:37:28,000 --> 00:37:30,000 Við skulum sjá. 534 00:37:30,000 --> 00:37:34,000 >> Hvernig er meiri en og minna en-? 535 00:37:34,000 --> 00:37:36,000 [Nemandi] ég hvernig á að gera meira en og minna en hluti. 536 00:37:36,000 --> 00:37:41,000 Ég var bara ekki viss hvað á að prenta ef þú sérð að það er minna en Heysátan miðpunkt eða meiri en. 537 00:37:41,000 --> 00:37:43,000 Hér get ég bjarga því I've- 538 00:37:43,000 --> 00:37:47,000 [Nate] Já, ef þú hefur vistað það sem þú hefur fengið, og við munum draga það upp. 539 00:37:47,000 --> 00:37:49,000 Svona. 540 00:37:49,000 --> 00:37:51,000 [Nemandi] Og ég setti spurningarmerki fyrir það sem ég ekki veit. 541 00:37:51,000 --> 00:37:54,000 [Nate] Þetta lítur vel út. 542 00:37:54,000 --> 00:37:58,000 Hér höfum við fengið spurningarmerki vegna þess að við enn veit ekki 543 00:37:58,000 --> 00:38:06,000 hvað við erum að fara að alveg að gera enn. 544 00:38:06,000 --> 00:38:12,000 Hvað myndum við vilja gera-Úps, við höfum fengið nokkrar axlabönd allt angurvær á okkur. 545 00:38:12,000 --> 00:38:15,000 Við munum leiðrétta þessi axlabönd. 546 00:38:15,000 --> 00:38:19,000 Svona. 547 00:38:19,000 --> 00:38:22,000 Og svo hvað við viljum gera, samkvæmt reiknirit okkar, 548 00:38:22,000 --> 00:38:27,000 ef við finn ekki nálina? 549 00:38:27,000 --> 00:38:32,000 Segja að ræða að nálin er minna en það sem við erum að horfa á. Kevin. 550 00:38:32,000 --> 00:38:34,000 Aðeins að líta á vinstri helming. 551 00:38:34,000 --> 00:38:40,000 Einmitt, þannig að við munum setja athugasemd á hér sem segir "líta á vinstri helming." 552 00:38:40,000 --> 00:38:46,000 Og ef nálin er meiri en Heysátan á miðju, hvað við viljum gera? 553 00:38:46,000 --> 00:38:48,000 [Nemandi] Svo þú horfir á réttum helming. 554 00:38:48,000 --> 00:38:53,000 Horfðu á hægri hluta, "líta á hægri hluta." 555 00:38:53,000 --> 00:38:58,000 Ekki of subbulegur. 556 00:38:58,000 --> 00:39:05,000 Jæja, svo á þessu stigi, eru hlutirnir að leita nokkuð gott. 557 00:39:05,000 --> 00:39:13,000 Vandinn við númerið sem skrifað er það? 558 00:39:13,000 --> 00:39:15,000 [Nemandi] Þú þarft ekki endapunktar fyrir helminga. 559 00:39:15,000 --> 00:39:18,000 Einmitt, höfum við ekki endapunktar fyrir helminga. 560 00:39:18,000 --> 00:39:20,000 Við einnig erum bara að fara að fara í gegnum þetta einu sinni. 561 00:39:20,000 --> 00:39:23,000 Við erum bara að fara að horfa á einn miðpunkt. 562 00:39:23,000 --> 00:39:27,000 Annaðhvort þáttur er það, eða það er ekki. 563 00:39:27,000 --> 00:39:34,000 Til þess að ljúka þessu, þá þurfum við að gera einhvers konar endurtekningu. 564 00:39:34,000 --> 00:39:39,000 Við þurfum að halda áfram að endurtaka þangað til við sjáum að 565 00:39:39,000 --> 00:39:43,000 annaðhvort frumefni er það vegna þess að við höfum minnkað niður og að lokum fannst það, 566 00:39:43,000 --> 00:39:46,000 eða það er ekki þar vegna þess að við höfum litið í gegnum allt það 567 00:39:46,000 --> 00:39:52,000 í viðeigandi helminga í fylkingu og fann að ekkert er þar. 568 00:39:52,000 --> 00:39:56,000 >> Alltaf þegar við höfum fengið þetta endurtekning í gangi, hvað ætlum við að nota? 569 00:39:56,000 --> 00:39:58,000 [Nemandi] A lykkja. 570 00:39:58,000 --> 00:40:00,000 Sumir tegund af lykkju. Já. 571 00:40:00,000 --> 00:40:03,000 [Nemandi] Getum við gert do-while lykkju og hafa það gera það og þá á meðan 572 00:40:03,000 --> 00:40:10,000 nálin er ekki ekki jafn-Ég viss þar sem ég var að fara með það. 573 00:40:10,000 --> 00:40:18,000 En góður af eins og að gera það svo lengi sem það er ekki jafn gildi sem notandi inntak. 574 00:40:18,000 --> 00:40:21,000 Já, þannig að við skulum sjá, hvernig gæti þetta skrifa sig? 575 00:40:21,000 --> 00:40:23,000 Þú sagðir við skulum nota do-while lykkju. 576 00:40:23,000 --> 00:40:26,000 Hvaðan á ég Start? 577 00:40:26,000 --> 00:40:33,000 [Nemandi] Rétt eftir stærð / 2. 578 00:40:33,000 --> 00:40:42,000 [Nate] Jæja, og hvað ætlum við að gera? 579 00:40:42,000 --> 00:40:44,000 Við munum fylla í síðar. 580 00:40:44,000 --> 00:40:46,000 Hvað ætlum við að gera? 581 00:40:46,000 --> 00:40:49,000 [Nemandi] Ekki að við viljum gera allt efni sem við höfum í ef hluta? 582 00:40:49,000 --> 00:40:52,000 [Nate] Gera þetta allt, frábært. 583 00:40:52,000 --> 00:40:55,000 Afrita og líma. 584 00:40:55,000 --> 00:40:59,000 Ó, maður. 585 00:40:59,000 --> 00:41:03,000 Við skulum sjá hvort þetta virkar, ef við getum flipann þetta yfir. 586 00:41:03,000 --> 00:41:08,000 Beautiful. 587 00:41:08,000 --> 00:41:16,000 Jæja, og við að vista þetta þannig að þú krakkar hafa það. 588 00:41:16,000 --> 00:41:21,000 Allt í lagi, og við erum að fara að gera þetta á meðan- 589 00:41:21,000 --> 00:41:25,000 það var á meðan ástand sem þú varst eftir? 590 00:41:25,000 --> 00:41:31,000 [Nemandi] meðan nálin er ekki jöfn, svo eins og upphrópunarmerki. 591 00:41:31,000 --> 00:41:37,000 En ég er ekki viss um nákvæmlega hvað það er ennþá. 592 00:41:37,000 --> 00:41:39,000 [Nate] Já, þetta er ein leið til að gera það. 593 00:41:39,000 --> 00:41:41,000 Sam, gera þú hafa a athugasemd? 594 00:41:41,000 --> 00:41:43,000 [Sam] ég mundi þegar ég horfði á vídeó, 595 00:41:43,000 --> 00:41:48,000 Ég tók screenshot af einu af-eins og þegar við gerðum sauðakóðanum fyrir það, 596 00:41:48,000 --> 00:41:52,000 það var einhver tengsl á milli max og min. 597 00:41:52,000 --> 00:41:58,000 Ég held að það var eitthvað eins og ef Max er alltaf minni en mín. 598 00:41:58,000 --> 00:42:00,000 Fékk það. 599 00:42:00,000 --> 00:42:04,000 [Sam] eða eins ef hámark er ekki minna en mín eða eitthvað svoleiðis, 600 00:42:04,000 --> 00:42:06,000 vegna þess að það myndi þýða að þú hefur leitað allt. 601 00:42:06,000 --> 00:42:13,000 >> Já, svo hvað gerir það hljóð eins og max og mín var að vísa til? 602 00:42:13,000 --> 00:42:16,000 [Sam] gildum sem-heiltölur sem eru að fara að breyta 603 00:42:16,000 --> 00:42:18,000 miðað við hvar við setjum miðpunkt. 604 00:42:18,000 --> 00:42:20,000 Einmitt. 605 00:42:20,000 --> 00:42:24,000 [Sam] Á þeim tímapunkti, það er að fara að [inaudible] reikna max og mín. 606 00:42:24,000 --> 00:42:29,000 Miðpunktur er þetta max og mín hugmynd. 607 00:42:29,000 --> 00:42:35,000 Er það skynsamleg til gott fólk? 608 00:42:35,000 --> 00:42:39,000 Ef við værum að byrja að horfa á hvernig við erum að fara að gera þessa endurtekningu, 609 00:42:39,000 --> 00:42:43,000 þú ert alveg rétt að við viljum að nota einhvers konar ekki-while lykkju. 610 00:42:43,000 --> 00:42:49,000 En ég held að ef við munum það sem er að gerast á staðnum þessa array 611 00:42:49,000 --> 00:42:53,000 og hvað er í raun að gerast-Ég ætla að skrifa hérna- 612 00:42:53,000 --> 00:42:58,000 á fyrsta endurtekning af tvöfaldur leit, hefur-við 613 00:42:58,000 --> 00:43:05,000 Ég ætla að nota b-og e til að tákna upphaf. 614 00:43:05,000 --> 00:43:10,000 Og þá enda fylking okkar. 615 00:43:10,000 --> 00:43:14,000 Við vitum að í upphafi er á 4 rétt hérna, 616 00:43:14,000 --> 00:43:18,000 og við vitum að hætta er á 108. 617 00:43:18,000 --> 00:43:23,000 Segja að við erum að leita að númer 15. 618 00:43:23,000 --> 00:43:27,000 Í fyrsta skipti sem við gerum þetta, eins og við sáum áðan, 619 00:43:27,000 --> 00:43:30,000 miðpunkt er annað hvort að fara að vera 16 eða 23 620 00:43:30,000 --> 00:43:34,000 eftir því hvernig við reiknum það út. 621 00:43:34,000 --> 00:43:37,000 Þar jafnt deila í miðju myndi gefa okkur þetta rúm 622 00:43:37,000 --> 00:43:42,000 milli 16 og 23, við getum ekki jafnt skipt henni 623 00:43:42,000 --> 00:43:47,000 eða skipta því og fá á sanna miðpunkt. 624 00:43:47,000 --> 00:43:49,000 Við munum líta á 16. 625 00:43:49,000 --> 00:43:55,000 Við munum gera sér grein fyrir "Hey, 16> 15 sem við erum að leita að." 626 00:43:55,000 --> 00:43:59,000 Að þá líta á vinstri hluta fylkisins 627 00:43:59,000 --> 00:44:03,000 það sem við munum á endanum gera er hent 628 00:44:03,000 --> 00:44:07,000 Þetta allt efri hluta 629 00:44:07,000 --> 00:44:16,000 og sagði: "Allt í lagi, nú endapunktur okkar er að fara að vera hér." 630 00:44:16,000 --> 00:44:22,000 Í næsta endurtekning af lykkju okkar, við erum nú að horfa á þennan fjölda, 631 00:44:22,000 --> 00:44:25,000 raun hafa hent þennan hluta því nú 632 00:44:25,000 --> 00:44:30,000 ef við erum að taka miðpunkt að vera munur á upphafi og endi, 633 00:44:30,000 --> 00:44:34,000 finnum miðpunkt okkar að vera 8, 634 00:44:34,000 --> 00:44:40,000 sem við getum þá prófa 8 til að sjá hvar það er í tengslum við fjölda sem við erum að leita að, 635 00:44:40,000 --> 00:44:44,000 15, kemst að því að 15 er meira 636 00:44:44,000 --> 00:44:49,000 þannig að við verðum að fara í hægri hluta á listanum, 637 00:44:49,000 --> 00:44:51,000 sem við vitum af því að við erum menn, og við getum séð það. 638 00:44:51,000 --> 00:44:54,000 Við vitum að rétt hluta er að fara að vera þar sem við finnum það, 639 00:44:54,000 --> 00:45:01,000 en tölvan veit ekki, svo það sem við munum gera er að við munum í raun 640 00:45:01,000 --> 00:45:04,000 hafa það að fara upp, og nú er upphafið og endir 641 00:45:04,000 --> 00:45:11,000 eru á sama stað, svo miðpunkt verður aðeins númer á listanum á þeim tímapunkti, 642 00:45:11,000 --> 00:45:16,000 sem er 15, og við höfum fundið það. 643 00:45:16,000 --> 00:45:21,000 Er að varpa ljósi á hvar þetta allt max og mín tákn er að fara, 644 00:45:21,000 --> 00:45:24,000 halda utan um endapunkta í fylki í því skyni að reikna út 645 00:45:24,000 --> 00:45:35,000 hvernig á að þrengja það niður? 646 00:45:35,000 --> 00:45:42,000 >> Hvað myndi gerast ef þetta væri ekki jafn 15 núna? 647 00:45:42,000 --> 00:45:52,000 Hvað ef við vorum að leita að 15 og í staðinn, þessi tala var líka 16? 648 00:45:52,000 --> 00:45:54,000 Við myndi segja, "Ó, það er meira. 649 00:45:54,000 --> 00:45:57,000 Við viljum fara aftur til vinstri. " 650 00:45:57,000 --> 00:46:01,000 Og við myndum færa e okkar til hægri, 651 00:46:01,000 --> 00:46:06,000 á hver benda að við höfum endapunktur sem væri misvísandi. 652 00:46:06,000 --> 00:46:09,000 Það myndi ekki vera fær til að leita að fleiri þætti 653 00:46:09,000 --> 00:46:13,000 því að nú höfum við endapunkt okkar og byrjun benda okkar, 654 00:46:13,000 --> 00:46:16,000 Max okkar og mín okkar eru nú hreifi. 655 00:46:16,000 --> 00:46:23,000 Við leit í gegnum allt fylkisins. Við getum ekki fundið neitt. 656 00:46:23,000 --> 00:46:27,000 Það er að benda á þar sem við myndum vilja að segja, "Allt í lagi, við erum að fara að hætta þessum reiknirit. 657 00:46:27,000 --> 00:46:34,000 Við höfum ekki fundið neitt. Við vitum að það er ekki hér. " 658 00:46:34,000 --> 00:46:36,000 Hvernig er þetta að fara? 659 00:46:36,000 --> 00:46:40,000 [Nemandi] Hvernig nákvæmlega er tölva kveikja á enda? 660 00:46:40,000 --> 00:46:45,000 Hvernig virkar enda endar fyrir upphaf? 661 00:46:45,000 --> 00:46:48,000 Endalok endar fyrir upphaf 662 00:46:48,000 --> 00:46:54,000 vegna stærðfræði sem við erum að fara að gera í hvert skipti sem við gerum þetta. 663 00:46:54,000 --> 00:47:00,000 Leiðin sem við skipta er ef þú horfir á í fyrsta skipti sem við gerum þetta skipti 664 00:47:00,000 --> 00:47:03,000 þar sem við höfum frá klukkan 4 og enda 665 00:47:03,000 --> 00:47:13,000 alla leið niður í 108 og miðpunkt okkar, segjum, á 16 - 666 00:47:13,000 --> 00:47:20,000 Ég ætla að færa þetta aftur til 15-ef við erum að leita að 15, 667 00:47:20,000 --> 00:47:25,000 við vissum að það sem við gerðum þegar við athugum á 16 og sá að það var meiri 668 00:47:25,000 --> 00:47:28,000 og langaði að henda öllu hægri hluta lista, 669 00:47:28,000 --> 00:47:36,000 sáum við að það sem við vildum að gera er að færa þessa e hérna. 670 00:47:36,000 --> 00:47:44,000 Í rauninni fékk e flutt til einn fyrir miðju. 671 00:47:44,000 --> 00:47:48,000 Sömuleiðis, þegar við gerðum þessa endurtekningu reiknirit 672 00:47:48,000 --> 00:47:51,000 og miðpunkt var 8, 673 00:47:51,000 --> 00:47:55,000 Við höfum komist að 8 <15, svo við vildum að færa b 674 00:47:55,000 --> 00:48:00,000 einn yfir miðju. 675 00:48:00,000 --> 00:48:07,000 Nú eru upphafið og endirinn bæði saman á þessum 15. 676 00:48:07,000 --> 00:48:10,000 >> Ef við hafði verið að gerast til að leita að einhverju öðru gildi, ekki 15, 677 00:48:10,000 --> 00:48:14,000 eða ef 15 hefði í staðinn verið 16, 678 00:48:14,000 --> 00:48:20,000 við hefðum komist að því að e-við viljum að flytja einn fyrir miðju. 679 00:48:20,000 --> 00:48:33,000 Nú e væri það hreifi minna en b. 680 00:48:33,000 --> 00:48:39,000 Við skulum ganga í gegnum hvernig við enda í raun allt erfðaskrá þessa reiknirit. 681 00:48:39,000 --> 00:48:44,000 Við vitum að við viljum hafa þetta miðpunkt útreikning. 682 00:48:44,000 --> 00:48:48,000 Við vitum líka að við viljum fylgjast með upphaf og endi í fylkinu 683 00:48:48,000 --> 00:48:51,000 núverandi array okkar svo við getum reikna út 684 00:48:51,000 --> 00:48:56,000 þar sem vinstri helmingur listanum er og þar sem hægri helmingur á listanum er. 685 00:48:56,000 --> 00:49:03,000 Við gerum það með annað hvort að byrja og enda, 686 00:49:03,000 --> 00:49:07,000 eða við getum kallað þá mín og max. 687 00:49:07,000 --> 00:49:10,000 Ég nota byrja og enda þessa tíma. 688 00:49:10,000 --> 00:49:15,000 Þegar við byrjum, ef við lítum til baka á dæmi hérna, 689 00:49:15,000 --> 00:49:20,000 upphaf okkar var sett á upphafi array, sem eðlilegt. 690 00:49:20,000 --> 00:49:25,000 Hvaða vísitala var þetta? Hvað ætti okkar byrja að? 691 00:49:25,000 --> 00:49:27,000 Daniel. 692 00:49:27,000 --> 00:49:30,000 [Daniel] Haystack [0]. 693 00:49:30,000 --> 00:49:37,000 [Nate] Já, svo við gætum setja það jafn Heysátan [0]. 694 00:49:37,000 --> 00:49:40,000 Vandamálið, þó, er að þetta gefur okkur ekki stöðu fyrsta frumefni. 695 00:49:40,000 --> 00:49:45,000 Það gefur okkur vísitölu fyrstu frumefni eða raunvirði á þeim fyrstu stöðu. 696 00:49:45,000 --> 00:49:47,000 [Nemandi] Það mun umbreyta til .20? 697 00:49:47,000 --> 00:49:52,000 [Nate] Hvað þetta mun gera er-vel, það mun ekki gera allir umbreyta. 698 00:49:52,000 --> 00:49:56,000 Hvað það mun gera það mun geyma 4 í byrja, 699 00:49:56,000 --> 00:49:59,000 og þá verður erfitt að gera samanburð við byrja 700 00:49:59,000 --> 00:50:03,000 því að byrja að vera að halda gildi 4, 701 00:50:03,000 --> 00:50:06,000 sem er upphaf array okkar, 702 00:50:06,000 --> 00:50:08,000 en við viljum fylgjast með vísitölur í fylki 703 00:50:08,000 --> 00:50:11,000 öfugt við gildi. 704 00:50:11,000 --> 00:50:17,000 Við munum í raun að nota 0, eins og þessi. 705 00:50:17,000 --> 00:50:20,000 Fyrir lok array-Charlotte kom þetta upp aðeins fyrr. 706 00:50:20,000 --> 00:50:23,000 Þetta er þar sem við munum taka tillit til núll flokkun. 707 00:50:23,000 --> 00:50:25,000 >> Charlotte, sem er enda fylkisins? 708 00:50:25,000 --> 00:50:28,000 Hvað er vísitalan í lok? 709 00:50:28,000 --> 00:50:30,000 [Charlotte] Size - 1. 710 00:50:30,000 --> 00:50:32,000 Já, og hvaða stærð ætti við að nota? 711 00:50:32,000 --> 00:50:35,000 Ættum við að nota fjármagn stærð eða lágstafir stærð? 712 00:50:35,000 --> 00:50:37,000 Capital stærð. 713 00:50:37,000 --> 00:50:42,000 Í þessu tilfelli, gætum við notað fjármagn stærð. 714 00:50:42,000 --> 00:50:45,000 Ef við vildum þessa aðgerð til að vera færanlegt 715 00:50:45,000 --> 00:50:48,000 og nota þetta virka í öðrum forritum, 716 00:50:48,000 --> 00:50:50,000 getum við í raun að nota lágstafi stærð. 717 00:50:50,000 --> 00:50:52,000 Það er allt í lagi líka. 718 00:50:52,000 --> 00:51:01,000 En Charlotte er alveg rétt að við viljum hafa stærð - 1. 719 00:51:01,000 --> 00:51:03,000 Á þessum tímapunkti- 720 00:51:03,000 --> 00:51:05,000 [Nemandi] Hvernig er það sem þú getur notað hástafi stærð? 721 00:51:05,000 --> 00:51:07,000 Hvernig er það að við gætum notað hástafi stærð? 722 00:51:07,000 --> 00:51:13,000 Það kemur í ljós að þessir # skilgreinir eru í raun, 723 00:51:13,000 --> 00:51:19,000 undir hetta, texta eins og finna og skipta, ef það er vit í. 724 00:51:19,000 --> 00:51:24,000 Þegar þú saman númerið þitt er forvinnu áfanga 725 00:51:24,000 --> 00:51:27,000 af þýðanda fer í gegnum skrána, 726 00:51:27,000 --> 00:51:31,000 og það lítur út fyrir allt sem þú hefur skrifað höfuðborg stærð, 727 00:51:31,000 --> 00:51:39,000 og það kemur þessi texti bókstaflega með 8, alveg eins og þessi. 728 00:51:39,000 --> 00:51:42,000 Í þeim skilningi er þetta mjög mismunandi frá breytu. 729 00:51:42,000 --> 00:51:45,000 Það þýðir ekki að taka upp allir pláss í minninu. 730 00:51:45,000 --> 00:51:52,000 Það er einfaldur texti Skipta bragð. 731 00:51:52,000 --> 00:51:57,000 Í þessu tilfelli erum við að fara að nota stærð. 732 00:51:57,000 --> 00:52:01,000 Héðan við viljum að gera einhvers konar endurtekningu, 733 00:52:01,000 --> 00:52:03,000 og við erum á réttri leið með do-while lykkju okkar. 734 00:52:03,000 --> 00:52:08,000 Við viljum til að gera eitthvað þar til ástand er ekki að halda lengur, 735 00:52:08,000 --> 00:52:12,000 og eins og við sáum áðan, sáum við að það ástand 736 00:52:12,000 --> 00:52:19,000 var reyndar að við viljum ekki enda 737 00:52:19,000 --> 00:52:24,000 að vera minna en að byrja. 738 00:52:24,000 --> 00:52:26,000 >> Þetta er hætt ástand okkar. 739 00:52:26,000 --> 00:52:35,000 Ef þetta gerist, viljum við að hætta og segja eins og "Hey, við höfum ekki fundið neitt." 740 00:52:35,000 --> 00:52:43,000 Til að tjá þetta, viljum við nota einhvers konar lykkju. 741 00:52:43,000 --> 00:52:49,000 Í þessu tilfelli, það vildi vera a do-while lykkju, a for lykkju, á meðan lykkja? 742 00:52:49,000 --> 00:52:51,000 Við höfum do-while lykkju hér. 743 00:52:51,000 --> 00:52:53,000 Ert þú krakkar eins og þeirri nálgun? 744 00:52:53,000 --> 00:52:59,000 Finnst þér að við ættum að reyna aðra nálgun? 745 00:52:59,000 --> 00:53:01,000 Kevin, einhverjar hugsanir? 746 00:53:01,000 --> 00:53:06,000 Við gætum haft while lykkju vegna þess að við vitum hámarki 747 00:53:06,000 --> 00:53:11,000 yrði meiri en mín á að byrja engu að síður. 748 00:53:11,000 --> 00:53:14,000 Já, þannig að það er engin frumstilling sem þarf að gerast. 749 00:53:14,000 --> 00:53:17,000 Þeir gera-á meðan lykkja er frábært þegar þú ert að frumstilla eitthvað 750 00:53:17,000 --> 00:53:21,000 fyrir þá próf, en hér 751 00:53:21,000 --> 00:53:26,000 við vitum að við erum ekki að fara að halda reinitializing bæði byrja og enda 752 00:53:26,000 --> 00:53:28,000 hverri lotu hliðar. 753 00:53:28,000 --> 00:53:32,000 Við vitum að við viljum að frumstilla þá, þá athuga ástand okkar. 754 00:53:32,000 --> 00:53:38,000 Í þessu tilfelli, ég í raun fara með einföldum while lykkju. 755 00:53:38,000 --> 00:53:44,000 Það kemur í ljós að gera-á meðan lykkja er notuð nokkuð sjaldan. 756 00:53:44,000 --> 00:53:49,000 A einhver fjöldi af stöðum ekki einu sinni að kenna ekki þegar lykkjur. 757 00:53:49,000 --> 00:53:53,000 Þeir eru góðir fyrir meðhöndlun notandi inntak, þannig að við höfum séð mikið af þeim hingað til. 758 00:53:53,000 --> 00:53:59,000 En eðlilegt og þegar lykkjur eru miklu algengari. 759 00:53:59,000 --> 00:54:03,000 Það kemur í ljós að þetta ástand eins og skrifað 760 00:54:03,000 --> 00:54:09,000 mun ekki raunverulega gera okkur mikið gott, og hvers vegna er það? 761 00:54:09,000 --> 00:54:11,000 Fyrirgefðu, ég veit ekki nafnið þitt. 762 00:54:11,000 --> 00:54:13,000 Ég er Jerry. >> Miður? 763 00:54:13,000 --> 00:54:15,000 Það er B-O-R-U-I. 764 00:54:15,000 --> 00:54:18,000 Ó, allt í lagi. 765 00:54:18,000 --> 00:54:23,000 Ég sé þig ekki á listanum mínum. 766 00:54:23,000 --> 00:54:26,000 Ó, er það vegna þess að-ó, það er vit í. 767 00:54:26,000 --> 00:54:31,000 Ert þú með hugmynd um hvers vegna þetta á meðan lykkja gæti ekki vinna eins og ætlað, 768 00:54:31,000 --> 00:54:38,000 eins og skrifað með ástandi? 769 00:54:38,000 --> 00:54:43,000 [Jerry] Þú átt eins og þú vilt allt draslið eftir hann í-? 770 00:54:43,000 --> 00:54:46,000 Já, svo það er einn. 771 00:54:46,000 --> 00:54:49,000 Við gætum þurft að setja allt þetta efni í while lykkju, sem er algerlega satt. 772 00:54:49,000 --> 00:54:55,000 The annar hlutur sem er svolítið vandamál, þó, er að þetta ástand er ekki vinna. 773 00:54:55,000 --> 00:54:57,000 [Nemandi] Þú þarft að fletta henni. 774 00:54:57,000 --> 00:55:04,000 Einmitt, þannig að þetta ástand mun ekki alltaf vera satt í upphafi þannig að við ræddum um það. 775 00:55:04,000 --> 00:55:08,000 Við viljum til að gera eitthvað til loka 00:55:13,000 en við viljum gera eitthvað á meðan 777 00:55:13,000 --> 00:55:21,000 byrja ≤ enda. 778 00:55:21,000 --> 00:55:24,000 >> Það er það viðsnúningur á rökfræði þar. 779 00:55:24,000 --> 00:55:27,000 Ég er sekur um að gera þeim mistökum allan tímann. 780 00:55:27,000 --> 00:55:31,000 [Nemandi] Hvers vegna er það að vera minna en eða jafnt? 781 00:55:31,000 --> 00:55:33,000 Þar man þér málið sem við fengum að 782 00:55:33,000 --> 00:55:36,000 þar var aðeins einn þáttur og við vorum niður, 783 00:55:36,000 --> 00:55:43,000 og við vorum að horfa á bara 15 í fylking okkar? 784 00:55:43,000 --> 00:55:47,000 Og upphaf okkar og endi okkar voru sama frumefni. 785 00:55:47,000 --> 00:55:50,000 Við viljum tryggja að við tökum þessi mál. 786 00:55:50,000 --> 00:55:54,000 Ef við gerðum a beint minna en, 787 00:55:54,000 --> 00:55:58,000 við viljum bara vera fær um að fá niður til 2-þáttur fylkisins. 788 00:55:58,000 --> 00:56:06,000 Þegar við komum niður að síðustu frumefni, ef það væri þáttur okkar, við myndum aldrei finna það. 789 00:56:06,000 --> 00:56:10,000 Nú hér, getum við gert nákvæmlega eins og þú varst að segja. 790 00:56:10,000 --> 00:56:15,000 Við getum byrjað plopping efni beint í the miðja af lykkju meðan okkar. 791 00:56:15,000 --> 00:56:20,000 Við getum plop í miðju okkar. 792 00:56:20,000 --> 00:56:24,000 Við getum tekið öll þessi ef yfirlýsingar, 793 00:56:24,000 --> 00:56:30,000 draga þá út úr þessum do-while lykkju, 794 00:56:30,000 --> 00:56:34,000 plop þá í, 795 00:56:34,000 --> 00:56:39,000 hreinsa það upp a lítill hluti, 796 00:56:39,000 --> 00:56:48,000 og ég ætla að fara á undan og vista þessa útgáfu. 797 00:56:48,000 --> 00:56:53,000 Og á þessum tímapunkti, við erum að fá mjög nálægt. 798 00:56:53,000 --> 00:56:55,000 Sam. 799 00:56:55,000 --> 00:56:58,000 Ég held að þú þarft einnig að hafa int miðpunkt = stærð - 1/2. 800 00:56:58,000 --> 00:57:01,000 Fékk það, stærð - 1/2. 801 00:57:01,000 --> 00:57:05,000 Er eitthvað annað sem við þurfum að breyta um þessi lína? 802 00:57:05,000 --> 00:57:10,000 Það var góður afli. 803 00:57:10,000 --> 00:57:14,000 >> Hvað stærð að gera? Erum við að breyta alltaf stærð? 804 00:57:14,000 --> 00:57:17,000 Til þess að halda línu svona, verðum við að breyta stærð. 805 00:57:17,000 --> 00:57:21,000 Við verðum að breyta stærð í hvert skipti sem við förum í kringum til hliðar. 806 00:57:21,000 --> 00:57:25,000 En man þegar við vorum að fara í gegnum dæmi bara svolítið fyrr, 807 00:57:25,000 --> 00:57:30,000 og við höfðum í upphafi á 4 808 00:57:30,000 --> 00:57:33,000 og enda alla leið yfir á 108? 809 00:57:33,000 --> 00:57:35,000 Hvernig fengum við reikna miðpunkt? 810 00:57:35,000 --> 00:57:38,000 Vorum með stærð? 811 00:57:38,000 --> 00:57:40,000 Eða við vorum með að byrja og enda í staðinn? 812 00:57:40,000 --> 00:57:42,000 Það er munurinn á lokum og upphafi. 813 00:57:42,000 --> 00:57:50,000 Einmitt, og hvernig nákvæmlega ætti ég að skrifa það, Charlotte? 814 00:57:50,000 --> 00:57:52,000 Bara enda - byrja. 815 00:57:52,000 --> 00:57:55,000 Þú vilt ekki að gera - 1 816 00:57:55,000 --> 00:57:58,000 því - 1 hefur verið í enda og byrja nú þegar. 817 00:57:58,000 --> 00:58:00,000 [Nate] Great, þú ert alveg rétt. 818 00:58:00,000 --> 00:58:03,000 Við þurfum ekki að gera - 1 vegna þess að - 1 hefur verið með 819 00:58:03,000 --> 00:58:08,000 og grein fyrir þegar við frumstilla lok breytu. 820 00:58:08,000 --> 00:58:11,000 >> Er eitthvað annað sem ég þarf að gera setningafræðilega til að hafa þessa línu skynsamleg? 821 00:58:11,000 --> 00:58:13,000 [Nemandi] Plus byrja. >> Plus byrja? 822 00:58:13,000 --> 00:58:15,000 [Nemandi] Í lok. 823 00:58:15,000 --> 00:58:20,000 Vegna þess að það er aðeins reiknað hálfa lengd. 824 00:58:20,000 --> 00:58:26,000 Þú þarft að bæta við að byrja. 825 00:58:26,000 --> 00:58:31,000 [Nate] Hvað myndi þetta reikna fyrir okkur? 826 00:58:31,000 --> 00:58:35,000 Ef við hugsum um lok á þessum fyrsta endurtekning á lykkju, 827 00:58:35,000 --> 00:58:40,000 enda er að fara að vera í vísitölu stöðu 7. 828 00:58:40,000 --> 00:58:43,000 Byrja er í stöðu 0. 829 00:58:43,000 --> 00:58:47,000 Mundu, við erum að leita að annað hvort 830 00:58:47,000 --> 00:58:52,000 Staða 3 eða stöðu 4. 831 00:58:52,000 --> 00:58:56,000 Ef við skoðum þessa stærðfræði, bara til að gera það svolítið meira áþreifanlegur, 832 00:58:56,000 --> 00:59:02,000 setja nokkrar tölur hér, höfum við 7, 0, 833 00:59:02,000 --> 00:59:10,000 svo 7-0, og þá / 2 834 00:59:10,000 --> 00:59:19,000 er 3 í heiltölu deild, sem er. 835 00:59:19,000 --> 00:59:26,000 Þá þurfum við að þá bæta við aftur okkar byrja? 836 00:59:26,000 --> 00:59:28,000 Við gerum ekki í þessu tilfelli. 837 00:59:28,000 --> 00:59:31,000 Á fyrstu endurtekning, það verður fínt því að byrja er 0. 838 00:59:31,000 --> 00:59:36,000 En eins og við framfarir, eigum við í raun öll bara þörf 839 00:59:36,000 --> 00:59:42,000 endir - byrja / 2. 840 00:59:42,000 --> 00:59:46,000 Það er eitt annað bragð hér, og það er nefnilega einn af framar. 841 00:59:46,000 --> 00:59:49,000 [Nemandi] Ekki þurfum við sviga? 842 00:59:49,000 --> 00:59:53,000 [Nate] Einmitt, og það er vegna þess að ef við gerum ekki setja þessar sviga, 843 00:59:53,000 --> 00:59:58,000 þá er þetta lína verða túlkuð í staðinn 844 00:59:58,000 --> 01:00:09,000 sem (endir) - (byrja / 2), sem við ákveðið vil ekki. 845 01:00:09,000 --> 01:00:11,000 Horfa út fyrir þá forgang reglum. 846 01:00:11,000 --> 01:00:15,000 [Nemandi] Hvers vegna er það ekki enda + byrja? 847 01:00:15,000 --> 01:00:17,000 Hvers vegna er það ekki enda + byrja? 848 01:00:17,000 --> 01:00:19,000 [Nemandi] Hvers vegna er það ekki? 849 01:00:19,000 --> 01:00:24,000 Hvers vegna væri það +? 850 01:00:24,000 --> 01:00:26,000 Ég held að þú ert rétt. 851 01:00:26,000 --> 01:00:28,000 [Nemandi] Vegna þess að það er að meðaltali? 852 01:00:28,000 --> 01:00:31,000 [Nate] End + byrja, þú ert alveg rétt. 853 01:00:31,000 --> 01:00:34,000 Vá, goofed ég algerlega. Þú ert rétt. 854 01:00:34,000 --> 01:00:39,000 Ef við vorum að gera mínus, myndum við vilja til bæta við að byrja aftur inn 855 01:00:39,000 --> 01:00:43,000 Í þessu tilfelli, þú ert mjög rétt að við viljum taka meðaltal tveggja, 856 01:00:43,000 --> 01:00:45,000 þannig að við viljum að bæta þeim, í stað þess að draga þá. 857 01:00:45,000 --> 01:00:49,000 [Nemandi] Það myndi einnig vinna ef þú gerðir enda - byrja / 2 + byrja. 858 01:00:49,000 --> 01:00:55,000 Það væri ef við gera-ég trúi því. 859 01:00:55,000 --> 01:01:00,000 >> Til dæmis, ef við vorum að horfa á að byrja, 860 01:01:00,000 --> 01:01:04,000 og við færst það hérna 861 01:01:04,000 --> 01:01:08,000 í 15. 862 01:01:08,000 --> 01:01:12,000 Nú byrja er á stöðu 2. 863 01:01:12,000 --> 01:01:15,000 End er á stöðu 7. 864 01:01:15,000 --> 01:01:21,000 Ef við drögum þá fáum við 5. 865 01:01:21,000 --> 01:01:24,000 Skiptu því með 2, fáum við 2. 866 01:01:24,000 --> 01:01:27,000 Og þá erum við að bæta við 2 aftur, 867 01:01:27,000 --> 01:01:30,000 og það fær okkur til 4. stöðu, 868 01:01:30,000 --> 01:01:33,000 sem er hérna, sem er miðpunkt. 869 01:01:33,000 --> 01:01:36,000 [Nemandi] Ekki þurfum við að sjá um umbúðir? 870 01:01:36,000 --> 01:01:39,000 Í hvaða skilningi þarf við að annast umbúðir? 871 01:01:39,000 --> 01:01:43,000 Ef summa eða mismunur 872 01:01:43,000 --> 01:01:45,000 eftir því hvernig við gerum það er ekki slétt tala. 873 01:01:45,000 --> 01:01:49,000 Þá tölva gets ráðvilltur hvort þegar það er 2,5; 874 01:01:49,000 --> 01:01:52,000 þú fara til vinstri eða hægri til að ákvarða hver er miðpunkt? 875 01:01:52,000 --> 01:01:54,000 Fékk það. 876 01:01:54,000 --> 01:01:56,000 Það kemur í ljós að við heiltölu deild, 877 01:01:56,000 --> 01:01:59,000 við gerum ekki alltaf að fá þessar fljótandi tölur benda. 878 01:01:59,000 --> 01:02:01,000 Við fáum aldrei aukastaf. 879 01:02:01,000 --> 01:02:04,000 Það er algerlega hunsaðar. 880 01:02:04,000 --> 01:02:08,000 Ef þú hafa a tölva skipta tvær int breytur, 881 01:02:08,000 --> 01:02:11,000 og einn er 7, og hitt er 2, 882 01:02:11,000 --> 01:02:13,000 þú munt ekki fá 3,5 vegna. 883 01:02:13,000 --> 01:02:16,000 Það mun fá 3. 884 01:02:16,000 --> 01:02:19,000 Afgangurinn verður hent, svo það er í raun Námundun 885 01:02:19,000 --> 01:02:24,000 ekki umferð heldur hæð, ef þið þekkir það í stærðfræði, 886 01:02:24,000 --> 01:02:27,000 þar sem þú hendir alveg aukastaf, 887 01:02:27,000 --> 01:02:31,000 og svo þú ert í raun Stytti það niður í næstu 888 01:02:31,000 --> 01:02:33,000 heild stöðu, að næstu heilu tölu. 889 01:02:33,000 --> 01:02:38,000 [Nemandi] En þá er það erfitt vegna þess að ef þú ert með fjölbreytta 7 þáttum 890 01:02:38,000 --> 01:02:43,000 þá tekur það sjálfkrafa 3. þáttur úr miðpunkt stað 4.. 891 01:02:43,000 --> 01:02:46,000 Hvernig að takast á við það? 892 01:02:46,000 --> 01:02:49,000 Það er erfitt vegna þess að ef við hefðum fjölda 7, 893 01:02:49,000 --> 01:02:54,000 það myndi velja 3 í stað 4. 894 01:02:54,000 --> 01:02:56,000 Gætirðu útskýrt aðeins meira? 895 01:02:56,000 --> 01:02:59,000 [Nemandi] Vegna þess að ef þú ert með 7 þætti þá 4. þáttur 896 01:02:59,000 --> 01:03:04,000 væri miðpunkt, ekki satt? 897 01:03:04,000 --> 01:03:07,000 Mundu athugasemd um að vera núll verðtryggð, þó. 898 01:03:07,000 --> 01:03:10,000 [Nemandi] Já, svo í stað 3. Það myndi vera miðpunkt. 899 01:03:10,000 --> 01:03:12,000 Já. 900 01:03:12,000 --> 01:03:16,000 Ó, allt í lagi. Ég sé hvað þú átt við. 901 01:03:16,000 --> 01:03:19,000 Það er skrýtin tilfinning, eins og við að venjast þessu öllu hugmyndinni um 902 01:03:19,000 --> 01:03:22,000 losna við aukastöfum. 903 01:03:22,000 --> 01:03:26,000 Þetta er frábær punktur. 904 01:03:26,000 --> 01:03:30,000 Við skulum klára þetta upp. 905 01:03:30,000 --> 01:03:32,000 Við höfum reiknað miðpunkt okkar. 906 01:03:32,000 --> 01:03:37,000 >> Við erum að prófa að sjá hvort nál okkar er jafn miðju gildi. 907 01:03:37,000 --> 01:03:41,000 Við erum prentun að við fundið það, en í raun, hvað við viljum gera í þessum aðstæðum? 908 01:03:41,000 --> 01:03:46,000 Við höfum fundið það, þannig að við viljum láta sem hringir vita að við fundum það. 909 01:03:46,000 --> 01:03:49,000 Við höfum fengið fall sem er a Boolean tegund virka. 910 01:03:49,000 --> 01:03:54,000 Leiðin sem við merki til þess sem hringir í aðgerð okkar að við erum tilbúin til að fara 911 01:03:54,000 --> 01:03:58,000 er við segjum, "Hey, það er satt." 912 01:03:58,000 --> 01:04:00,000 Hvernig ættum við að gera það, Kevin? 913 01:04:00,000 --> 01:04:02,000 Þú ert nodding höfuðið. >> [Kevin] Add aftur satt. 914 01:04:02,000 --> 01:04:06,000 [Nate] Einmitt, aftur satt. 915 01:04:06,000 --> 01:04:12,000 Nú, ef það er ekki jafn, hvernig ættum við að líta á vinstri helmingi? 916 01:04:12,000 --> 01:04:16,000 Einhverjar hugmyndir? 917 01:04:16,000 --> 01:04:18,000 Stella, einhverjar hugmyndir? 918 01:04:18,000 --> 01:04:21,000 Þú þarft að setja nýja stöðu fyrir árslok. 919 01:04:21,000 --> 01:04:23,000 Já. 920 01:04:23,000 --> 01:04:29,000 Þannig að við verðum að gera stöðu miðpunkt - enda. 921 01:04:29,000 --> 01:04:33,000 Frábært. 922 01:04:33,000 --> 01:04:36,000 Við þurfum að setja nýja stöðu fyrir lok 923 01:04:36,000 --> 01:04:38,000 að líta á vinstri helming. 924 01:04:38,000 --> 01:04:41,000 Þetta var það sem við töluðum um áður þar sem 925 01:04:41,000 --> 01:04:44,000 Ég að halda áfram að fara aftur að þessu dæmi. 926 01:04:44,000 --> 01:04:50,000 Ég byrja hér, og þá hef ég The End alla leið hérna. 927 01:04:50,000 --> 01:04:53,000 >> Aftur, ef við erum að leita að 15, og miðpunkt okkar er í 16, 928 01:04:53,000 --> 01:04:56,000 og við skiljum, "Oops, 16 er meiri. 929 01:04:56,000 --> 01:04:59,000 Við viljum fara í vinstri helming. " 930 01:04:59,000 --> 01:05:02,000 Við myndum þá að færa enda á 15, 931 01:05:02,000 --> 01:05:06,000 og það gerum við með því að taka einn frá miðju 932 01:05:06,000 --> 01:05:09,000 og setja það sem nýtt enda okkar. 933 01:05:09,000 --> 01:05:12,000 Sömuleiðis, ef við viljum líta á hægri hluta, hvernig myndum við gera það? 934 01:05:12,000 --> 01:05:14,000 Ertu með hugmynd? 935 01:05:14,000 --> 01:05:22,000 [Nemandi] Þú stillir bara að byrja að miðju + 1. 936 01:05:22,000 --> 01:05:24,000 [Nate] Great. 937 01:05:24,000 --> 01:05:29,000 Og nú er að ræða sem við finn ekki neitt, 938 01:05:29,000 --> 01:05:32,000 er að fá gætt af fyrir okkur? 939 01:05:32,000 --> 01:05:36,000 Daníel er að fá gætt af fyrir okkur? 940 01:05:36,000 --> 01:05:38,000 [Daniel] Nei 941 01:05:38,000 --> 01:05:40,000 [Nate] Ef við tökum það í gegnum allt fylki og við finn ekki neitt, 942 01:05:40,000 --> 01:05:42,000 þar yrði að vera gætt af, eða ættum við að hugsa um það? 943 01:05:42,000 --> 01:05:44,000 [Daniel] The meðan ástand. 944 01:05:44,000 --> 01:05:48,000 [Nate] Já, á meðan ástand, nákvæmlega. 945 01:05:48,000 --> 01:05:51,000 Það verður að gæta þess að fara í gegnum allt array ef við finn ekki neitt. 946 01:05:51,000 --> 01:05:53,000 Þetta meðan lykkja mun enda. 947 01:05:53,000 --> 01:05:56,000 Við munum aldrei hafa fundur this ástand, 948 01:05:56,000 --> 01:06:03,000 og við getum aftur rangar. 949 01:06:03,000 --> 01:06:10,000 Við getum einnig skilið þetta ef hér svona 950 01:06:10,000 --> 01:06:14,000 því ef þetta ef staðhæfing er satt, 951 01:06:14,000 --> 01:06:16,000 og hlutverk okkar aftur, 952 01:06:16,000 --> 01:06:21,000 og svo við munum fyrst og fremst hætta þessa aðgerð á þessum tímapunkti 953 01:06:21,000 --> 01:06:24,000 þegar við aftur satt. 954 01:06:24,000 --> 01:06:28,000 En hvað gerist með þessari uppbyggingu hér? 955 01:06:28,000 --> 01:06:34,000 Mun þetta virka alveg, eða er nokkur rökrétt galli þar? 956 01:06:34,000 --> 01:06:37,000 >> Það er einhver rökrétt galli þar með hvernig það er sett upp. 957 01:06:37,000 --> 01:06:40,000 Hvað gæti það verið? 958 01:06:40,000 --> 01:06:43,000 [Nemandi] Hvers vegna þarft þú að - og + 1s? 959 01:06:43,000 --> 01:06:47,000 Það setur array okkar upp að nýju vinstri helmingur okkar og hægri helming. 960 01:06:47,000 --> 01:06:51,000 [Nemandi] En af hverju getur þú ekki gert það án þess að - 1s og + 1s? 961 01:06:51,000 --> 01:06:53,000 [Nate] Við gætum setja það jafnt á miðju? 962 01:06:53,000 --> 01:07:04,000 Hvað gæti verið erfitt um það? 963 01:07:04,000 --> 01:07:08,000 [Nemandi] Ég giska á að það er óhagkvæmt vegna þess að þú ert að athuga gildi sem þegar hefur verið athugað. 964 01:07:08,000 --> 01:07:11,000 [Nate] Einmitt, svo er Sam algerlega rétt. 965 01:07:11,000 --> 01:07:15,000 Ef þú stillir á enda og byrja jafn miðju 966 01:07:15,000 --> 01:07:18,000 stað - 1 og + 1 reflectively, 967 01:07:18,000 --> 01:07:22,000 einhvern tíma í framtíðinni munum við á endanum að stöðva miðpunkt aftur. 968 01:07:22,000 --> 01:07:26,000 [Nemandi] Ég byrjaði pset, og svo ég hafði eitthvað eins og þessi 969 01:07:26,000 --> 01:07:30,000 þar sem ég gleymdi + 1, og það festist í óendanlega lykkju. 970 01:07:30,000 --> 01:07:34,000 Einmitt vegna þess að á einhverjum tímapunkti sem þú ert aldrei að fara að fá að byrja og enda 971 01:07:34,000 --> 01:07:39,000 að í raun skarast. 972 01:07:39,000 --> 01:07:41,000 Cool. 973 01:07:41,000 --> 01:07:44,000 Það er eitt rökrétt galli, og það er að það ætti örugglega að vera 974 01:07:44,000 --> 01:07:48,000 er annað hvort. 975 01:07:48,000 --> 01:07:55,000 Hvers vegna kann að vera? 976 01:07:55,000 --> 01:07:59,000 >> Ástæðan er ef það er ekki annað ef-sástu hana, Kevin? 977 01:07:59,000 --> 01:08:02,000 [Kevin] Já, vegna þess að þú ert að breyta endastað. 978 01:08:02,000 --> 01:08:05,000 [Nate] Einmitt. 979 01:08:05,000 --> 01:08:07,000 Við erum að breyta endapunkti, 980 01:08:07,000 --> 01:08:12,000 og ef það er skrifað svona-we'll gera bil á milli- 981 01:08:12,000 --> 01:08:14,000 það mun athuga þetta mál. 982 01:08:14,000 --> 01:08:18,000 Þetta mál, ef það tekst, mun hætta út af aðgerðina. 983 01:08:18,000 --> 01:08:21,000 Þá mun athuga þetta á næsta tilfelli, 984 01:08:21,000 --> 01:08:24,000 og ef þetta tekst, mun það stilla endapunkt, 985 01:08:24,000 --> 01:08:28,000 og þá mun það halda áfram og athuga þetta mál. 986 01:08:28,000 --> 01:08:31,000 En á þessum tímapunkti, gera við viljum ekki að það að halda áfram að skoða. 987 01:08:31,000 --> 01:08:35,000 Sem betur fer, höfum við endurstilla ekki miðpunkt hér, 988 01:08:35,000 --> 01:08:39,000 og við vitum að þetta mál mun ekki ná árangri. 989 01:08:39,000 --> 01:08:44,000 En við viljum örugglega að setja annað hvort í það 990 01:08:44,000 --> 01:08:48,000 jafnvel þó að kannski í þessu tilfelli 991 01:08:48,000 --> 01:08:52,000 þar sem við erum ekki að breyta miðpunkt, myndi það gera a mismunur? 992 01:08:52,000 --> 01:08:54,000 Nei, vegna þess að þessi mál eru allt einir. 993 01:08:54,000 --> 01:08:58,000 Aftur, slæmt minn. 994 01:08:58,000 --> 01:09:01,000 Við gerum ekki, held ég, þarf þetta annað hvort. 995 01:09:01,000 --> 01:09:05,000 Við getum gefa það a reyna og keyra það og sjá hvað gerist. 996 01:09:05,000 --> 01:09:08,000 Building, villa kom upp. 997 01:09:08,000 --> 01:09:12,000 Það er líklega vegna þess að ég fór þetta B og er E í hér. 998 01:09:12,000 --> 01:09:14,000 Þarf ég að hafa einhverjar fleiri af þeim upp á toppinn? 999 01:09:14,000 --> 01:09:16,000 Það lítur ekki eins og það. 1000 01:09:16,000 --> 01:09:20,000 Við minnka, byggja, 1001 01:09:20,000 --> 01:09:24,000 Þar fer, svo nú ef við leit að 15, 1002 01:09:24,000 --> 01:09:28,000 já. 1003 01:09:28,000 --> 01:09:30,000 Leyfðu mér að þysja inn 1004 01:09:30,000 --> 01:09:33,000 15, já. Við getum keyrt það aftur. 1005 01:09:33,000 --> 01:09:36,000 Senda kóðann, byggja, hlaupandi. 1006 01:09:36,000 --> 01:09:41,000 Við getum leitað að einhverju eins og 13, 1007 01:09:41,000 --> 01:09:45,000 og við fáum ekki neitt að prenta út, svo það er ekki að finna það fyrir okkur. 1008 01:09:45,000 --> 01:09:51,000 Það er frábært, því það er ekki á listanum okkar. 1009 01:09:51,000 --> 01:09:53,000 >> Við erum nú út á tíma. 1010 01:09:53,000 --> 01:09:55,000 Það er að fara að vera það fyrir þessa viku. 1011 01:09:55,000 --> 01:10:00,000 Takk fyrir að taka þátt, og sjá þig seinna. 1012 01:10:00,000 --> 01:10:02,000 >> [CS50.TV]