1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [Oddelek 3] [manj udoben] 2 00:00:03,000 --> 00:00:05,000 >> [Nate Hardison] [Harvard University] 3 00:00:05,000 --> 00:00:08,000 >> [To je CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:10,000 >> V redu, začnimo. 5 00:00:10,000 --> 00:00:13,000 Dobrodošli v tednu 4 CS50. 6 00:00:13,000 --> 00:00:19,000 Če vidva odprla spletni brskalnik in odprla pset 3, 7 00:00:19,000 --> 00:00:23,000 Boj z CS50, bomo začeli dogaja 8 00:00:23,000 --> 00:00:26,000 z delom vprašanja tam. 9 00:00:26,000 --> 00:00:32,000 Tako kot prejšnji teden, bomo delali v CS50 prostorov, 10 00:00:32,000 --> 00:00:35,000 če boste tudi, da potegnite navzgor, kot tudi, 11 00:00:35,000 --> 00:00:43,000 in če greš naprej in obiščite to povezavo, da sem dobil tu na vrhu. 12 00:00:43,000 --> 00:00:45,000 To je čas, da bi začeli. 13 00:00:45,000 --> 00:00:51,000 Imamo našo malo hi programa tukaj. Nič noro. 14 00:00:51,000 --> 00:00:55,000 Ena od prvih stvari, ki jih želim storiti z vami danes je šel čez nekaj rešitev 15 00:00:55,000 --> 00:00:58,000 Set za Težava 1, naravi primer rešitev, 16 00:00:58,000 --> 00:01:03,000 samo zato, da boste dobili občutek za kakšne vrste osebja kode piše, 17 00:01:03,000 --> 00:01:07,000 kakšne kode drugimi učenci pišejo, 18 00:01:07,000 --> 00:01:10,000 in so si lahko pogled na to, ker vem, da je čudno 19 00:01:10,000 --> 00:01:14,000 ko boste poslali rešitev nekega problema niz in dobil pripombe 20 00:01:14,000 --> 00:01:18,000 na svojo različico, ampak včasih je koristno, da vidite, kako drugi ljudje to storil, 21 00:01:18,000 --> 00:01:22,000 še posebej tisti, ki so lepo videti. 22 00:01:22,000 --> 00:01:27,000 Za večino del, sem bil res navdušen nad rešitvami, ki proizvaja fantje. 23 00:01:27,000 --> 00:01:31,000 Nisem še začeli iskati svoje 2s Set problem, ampak če si kaj takega prvi, 24 00:01:31,000 --> 00:01:34,000 to ne pomeni nič, ampak dobrih stvari. 25 00:01:34,000 --> 00:01:40,000 >> Če pogledate moje revizij, začnimo vso pot navzdol na revizije 1, 26 00:01:40,000 --> 00:01:47,000 in bomo na hitro pogledamo na rešitev Mario. 27 00:01:47,000 --> 00:01:54,000 Če potegnem gor, ti programi, da se bomo predstavili pravilna. 28 00:01:54,000 --> 00:01:56,000 Ni bilo pravilnost vprašanja s temi problemi, ampak, 29 00:01:56,000 --> 00:01:59,000 želimo govoriti malo informacij o različnih vprašanjih načrtovanja 30 00:01:59,000 --> 00:02:03,000 da so bili tu uporabljeni. 31 00:02:03,000 --> 00:02:08,000 Ena od stvari, ki se je zanimivo rešitev 32 00:02:08,000 --> 00:02:11,000 je, da se uporablja ta nov konstrukt, imenovan funt opredeliti, 33 00:02:11,000 --> 00:02:15,000 včasih imenujemo tudi hašiš opredeliti. 34 00:02:15,000 --> 00:02:18,000 Naj približati tem tukaj. 35 00:02:18,000 --> 00:02:24,000 # Define vam omogoča, da imena teh številk v programu. 36 00:02:24,000 --> 00:02:28,000 V tem primeru je največja višina piramide v Mario 37 00:02:28,000 --> 00:02:34,000 je 23 in ne 23, kot da bi v moji kodi- 38 00:02:34,000 --> 00:02:37,000 mi bi jo, kot trdi kodiranje 23 - 39 00:02:37,000 --> 00:02:43,000 Namesto tega daje ime MAX_HEIGHT na to številko, 40 00:02:43,000 --> 00:02:48,000 tako da tukaj v moji do-while zanko 41 00:02:48,000 --> 00:02:51,000 lahko dejansko nanašajo na MAX_HEIGHT 42 00:02:51,000 --> 00:02:55,000 namesto da bi število 23 palcev 43 00:02:55,000 --> 00:02:57,000 [Študent] Kaj je prednost s tem? 44 00:02:57,000 --> 00:02:59,000 To je veliko vprašanje. 45 00:02:59,000 --> 00:03:03,000 Ena je berljivost. 46 00:03:03,000 --> 00:03:08,000 Prednost uporabe te # define je berljivost. 47 00:03:08,000 --> 00:03:11,000 Ko berem te kode, vidim, kaj se dogaja. 48 00:03:11,000 --> 00:03:15,000 >> Vidim, da sem v takem stanju, da smo testiranje 49 00:03:15,000 --> 00:03:19,000 za višino pa <0, ki bi jih lahko opredelili tudi 50 00:03:19,000 --> 00:03:22,000 da je najmanjša višina ali višina min. 51 00:03:22,000 --> 00:03:25,000 Druga prednost je, da lahko potem preberite preostanek proge za prikaz 52 00:03:25,000 --> 00:03:30,000 da smo tudi preverjanje zagotoviti, da višina ne presega višine max, 53 00:03:30,000 --> 00:03:35,000 ker bomo še naprej, medtem ko je višina večja od višine maks. 54 00:03:35,000 --> 00:03:40,000 Druga prednost je, če sem pomanjšanje malo tu- 55 00:03:40,000 --> 00:03:49,000 če sem teči ta program in ga poženem, recimo, z 23 prav zdaj, 56 00:03:49,000 --> 00:03:52,000 se bo izpisal vse vrstice 23, tako kot to. 57 00:03:52,000 --> 00:03:54,000 Ampak rekel sem želel spremeniti višino max, 58 00:03:54,000 --> 00:03:57,000 in zdaj želim, da se omeji maksimalno višino piramide 59 00:03:57,000 --> 00:04:06,000 da je edini pravi človek, da je funky. 60 00:04:06,000 --> 00:04:14,000 # Vključujejo , # define MAX_HEIGHT, 61 00:04:14,000 --> 00:04:18,000 in recimo, da smo želeli določiti ga je enak 10. 62 00:04:18,000 --> 00:04:22,000 Zdaj v tem trenutku, vse, kar sem moral storiti je spremeniti v tej enem mestu. 63 00:04:22,000 --> 00:04:27,000 Lahko prevedem kodo, in zdaj, če sem poskusil in vnesite 12, 64 00:04:27,000 --> 00:04:30,000 bo uren mi še enkrat. 65 00:04:30,000 --> 00:04:33,000 V tem primeru, bomo le z uporabo MAX_HEIGHT enkrat. 66 00:04:33,000 --> 00:04:37,000 Saj ne, da je velik šop trave, da gredo v 67 00:04:37,000 --> 00:04:40,000 in ga spremenite v while zanko, če želite. 68 00:04:40,000 --> 00:04:44,000 Toda v programih, kjer se sklicujete na isto čarobno številko 69 00:04:44,000 --> 00:04:47,000 znova in znova, to # define mehanizem je zelo priročen 70 00:04:47,000 --> 00:04:52,000 ker ste spremenili to enkrat na vrhu spisa, je običajno, kjer ste postavili ju- 71 00:04:52,000 --> 00:04:57,000 in spremembe giblje skozi ostale datoteke. 72 00:04:57,000 --> 00:05:02,000 >> Druge stvari, ki sem jih želel opozoriti na to nalogo, da sem mislil videti res lepo, 73 00:05:02,000 --> 00:05:05,000 1 je poimenovanje spremenljivk. 74 00:05:05,000 --> 00:05:14,000 Vidite tukaj, da imamo celih spremenljivke, imenovane vrstice in ti višina. 75 00:05:14,000 --> 00:05:20,000 Prostori, haše, saj pomaga, da koda malo bolj berljivo, 76 00:05:20,000 --> 00:05:25,000 Zato je malo bolj razumljivo, kaj se dejansko dogaja. 77 00:05:25,000 --> 00:05:31,000 To je v nasprotju z uporabo, na primer, naključnih črk 78 00:05:31,000 --> 00:05:35,000 ali pa samo klobasanje v celoti. 79 00:05:35,000 --> 00:05:39,000 Zadnja stvar, bom poudaril, da je v for zanke, 80 00:05:39,000 --> 00:05:45,000 Pogosto so ti Iterator spremenljivke, ti števci, ki jih uporabljate v vašem for zanke, 81 00:05:45,000 --> 00:05:51,000 je standard in konvencionalne jim začne z i in nato J in nato k 82 00:05:51,000 --> 00:05:54,000 in bo od tam, če potrebujete več spremenljivk, 83 00:05:54,000 --> 00:05:56,000 in to je samo konvencija. 84 00:05:56,000 --> 00:05:58,000 Obstaja veliko konvencij. 85 00:05:58,000 --> 00:06:00,000 To je odvisno od programskega jezika, ki ga uporabljate. 86 00:06:00,000 --> 00:06:04,000 Toda v C, smo ponavadi začnejo z i. 87 00:06:04,000 --> 00:06:08,000 To nima nobenega smisla uporabljati, recimo, ali b 88 00:06:08,000 --> 00:06:13,000 odvisno od situacije. 89 00:06:13,000 --> 00:06:15,000 To je bilo za to. 90 00:06:15,000 --> 00:06:25,000 Če zdaj dvigni Revizija 2, boste videli drugo Mario, 91 00:06:25,000 --> 00:06:29,000 in to je podoben drugemu tistega, ki smo ga pravkar videli, 92 00:06:29,000 --> 00:06:32,000 vendar pa nekaj nekako kul. 93 00:06:32,000 --> 00:06:38,000 Če se ozremo na tem oddelku, tukaj notri notranja zanka, 94 00:06:38,000 --> 00:06:44,000 oni z nekaj norega videti sintakso prav v tej vrstici. 95 00:06:44,000 --> 00:06:47,000 To se imenuje ternarna operater. 96 00:06:47,000 --> 00:06:53,000 To je, če drug izjavo strniti v eno vrstico. 97 00:06:53,000 --> 00:06:57,000 Pogoj je ta del v oklepajih. 98 00:06:57,000 --> 00:07:05,000 To je enako rekel, če j 00:07:10,000 In potem, kaj je vsebina tega, če bi blok sta prostor 100 00:07:10,000 --> 00:07:16,000 in potem je vsebina, kaj bi še lahko so to #. 101 00:07:16,000 --> 00:07:20,000 To je v bistvu dodeljevanju prostora za te spremenljivke. 102 00:07:20,000 --> 00:07:24,000 To je dajanje prostora na vsebino bloka spremenljivke, 103 00:07:24,000 --> 00:07:29,000 če je ta pogoj izpolnjen, in če ta pogoj ni izpolnjen, 104 00:07:29,000 --> 00:07:32,000 Nato blok spremenljivka dobi to #. 105 00:07:32,000 --> 00:07:37,000 In potem, seveda, namesto izgradnje celotne niz 106 00:07:37,000 --> 00:07:43,000 tiskanje in vse, kar je na koncu ta rešitev je natisne en znak naenkrat. 107 00:07:43,000 --> 00:07:48,000 Precej kul. 108 00:07:48,000 --> 00:07:53,000 >> Še nekaj stvari gledati. Mi bomo prešli na pohlepen. 109 00:07:53,000 --> 00:07:58,000 Zdaj, če pogledamo požrešen, ta prva rešitev 110 00:07:58,000 --> 00:08:00,000 uporablja ti # opredeljuje zelo malo. 111 00:08:00,000 --> 00:08:06,000 Imamo ena konstanta je opredeljeno za vsako od različnih številk v tem programu. 112 00:08:06,000 --> 00:08:12,000 Imamo eno za centov na dolar, eno za prostore, Dimes, nikelj, in penijev, 113 00:08:12,000 --> 00:08:15,000 in zdaj, če smo se pomaknite navzdol in prebral kodo, 114 00:08:15,000 --> 00:08:22,000 lahko vidimo standardno naredi vse, medtem ko zanke tiskanje ven. 115 00:08:22,000 --> 00:08:25,000 Nekako Bistvo tega problema zaveda, da je 116 00:08:25,000 --> 00:08:29,000 ste morali spremeniti plovec, da si preberete od uporabnika na celo 117 00:08:29,000 --> 00:08:32,000 natančno math, in to zato, ker 118 00:08:32,000 --> 00:08:36,000 s plavajočo vejico, kot smo govorili v predavanju na kratko, 119 00:08:36,000 --> 00:08:41,000 ni mogoče natančno predstavljajo vsak vrednost na številko vrstice 120 00:08:41,000 --> 00:08:47,000 saj obstaja neskončno mnogo vrednosti med 3 in, recimo, celo 3,1. 121 00:08:47,000 --> 00:08:54,000 Lahko imaš 3,01 in 3,001 in 3,0001, in lahko naprej. 122 00:08:54,000 --> 00:09:00,000 Izkazalo se je, ko delate z denarjem, pogosto želite pretvoriti 123 00:09:00,000 --> 00:09:05,000 v obliki, celo tako, da ne boste izgubili penijev in da je vrsta stvari. 124 00:09:05,000 --> 00:09:09,000 S tem, da je bila ključna in zaokroževanja. 125 00:09:09,000 --> 00:09:14,000 Ta rešitev se uporablja povsem preprost, veliko algoritem, 126 00:09:14,000 --> 00:09:17,000 ki decremented število preostalih centov, prvič po četrtletjih, 127 00:09:17,000 --> 00:09:19,000 nato pa z drobižem, nato Nickels, nato penijev, 128 00:09:19,000 --> 00:09:24,000 in dodal, da je število kovancev vsakič. 129 00:09:24,000 --> 00:09:31,000 >> Druga rešitev, da bomo videli, ko sem pomanjšavo in pojdite revizije 4, 130 00:09:31,000 --> 00:09:40,000 je imel zelo podoben začetek, ampak namesto tega uporabiti div in mod 131 00:09:40,000 --> 00:09:44,000 Pravica tukaj za izračun števila centov. 132 00:09:44,000 --> 00:09:50,000 To je število četrtletij je enako številu centov deljeno s 25, 133 00:09:50,000 --> 00:09:53,000 In razlog za to je, ker deluje delamo celo število delitev, 134 00:09:53,000 --> 00:09:58,000 tako da je ostanek zavržemo. 135 00:09:58,000 --> 00:10:02,000 [Študent] Ali moramo komentirati iskanje? 136 00:10:02,000 --> 00:10:05,000 Res je odvisno. 137 00:10:05,000 --> 00:10:08,000 [Študent] boš komentiral več kot kodo tukaj. 138 00:10:08,000 --> 00:10:16,000 Ja, in zato obstaja kup različnih filozofij o tem. 139 00:10:16,000 --> 00:10:21,000 Moja osebna filozofija je, da vaša koda je res resnica, 140 00:10:21,000 --> 00:10:24,000 kot kodo, kaj je dejansko izvajajo na računalniku, 141 00:10:24,000 --> 00:10:29,000 zato bi bilo treba kodo tako berljivi kot je mogoče, da ne zahtevajo toliko pripomb. 142 00:10:29,000 --> 00:10:33,000 To je dejal, če delaš stvari, ki so nekako zapleteno matematično 143 00:10:33,000 --> 00:10:38,000 ali algoritmično, je dobro, da so pripombe, tako da lahko 144 00:10:38,000 --> 00:10:43,000 dodamo še eno razsežnost, tretja plast, da kdor bere svojo kodo. 145 00:10:43,000 --> 00:10:49,000 V teh rešitev, pogosto so komentirale precej bolj samo zato, ker 146 00:10:49,000 --> 00:10:52,000 želimo, da bi lahko njihovo distribucijo in so ljudje, ki jih poberem 147 00:10:52,000 --> 00:10:56,000 in jih bere zelo enostavno. 148 00:10:56,000 --> 00:11:05,000 Ampak vsekakor se strinjam, da je to težko. 149 00:11:05,000 --> 00:11:07,000 [Študent] Toda, ko ste v dvomih, pojdite težji? 150 00:11:07,000 --> 00:11:10,000 Če ste v dvomih, pojdite težji. 151 00:11:10,000 --> 00:11:17,000 Nekateri ljudje bodo rekli včasih Vračilo 0 ali kaj podobnega. 152 00:11:17,000 --> 00:11:20,000 Mislim, da je neumno razmišljanje. 153 00:11:20,000 --> 00:11:22,000 Jasno je, da je to, kar se dogaja. 154 00:11:22,000 --> 00:11:25,000 Ne rabim angleščini povedati, da. 155 00:11:25,000 --> 00:11:28,000 Včasih ljudje pišejo stvari, kot so "kthxbai!" 156 00:11:28,000 --> 00:11:32,000 To je malo bolj sladek pa tudi ne- 157 00:11:32,000 --> 00:11:35,000 da se to ne bi razliko med komentiranje točk ali ne. 158 00:11:35,000 --> 00:11:41,000 Tovrstne ugotovitve so le ha, ha, ha. 159 00:11:41,000 --> 00:11:43,000 Kul. 160 00:11:43,000 --> 00:11:48,000 >> Na tej točki, začnimo delati na problemu Set 3 del vprašanj. 161 00:11:48,000 --> 00:11:52,000 Če vi vleči to spet, 162 00:11:52,000 --> 00:11:55,000 tako kot prejšnji teden, ne bomo na ogled kratke hlače v tem oddelku. 163 00:11:55,000 --> 00:12:00,000 Pustili bomo, da počnete v prostem času in se pogovorite o vprašanjih. 164 00:12:00,000 --> 00:12:05,000 Toda zdaj, v tem razdelku bomo porabili malo več časa 165 00:12:05,000 --> 00:12:11,000 Govorimo o manj kodiranja osnov 166 00:12:11,000 --> 00:12:15,000 kot smo prejšnji teden, in namesto, da bomo bolj osredotočiti na 167 00:12:15,000 --> 00:12:22,000 malo več teorije, zato govorimo o binarnem iskanju in nato razvrščanje. 168 00:12:22,000 --> 00:12:27,000 Od tistih, ki ste bili po skupaj s predavanjem, 169 00:12:27,000 --> 00:12:30,000 lahko nekdo, dajte mi ponovno na tisto, kar je razlika 170 00:12:30,000 --> 00:12:35,000 med binarnega iskanja in linearno iskanje? 171 00:12:35,000 --> 00:12:37,000 Kaj se dogaja? Seveda. 172 00:12:37,000 --> 00:12:42,000 Linearni zadetkov iskanja prek vsakega elementa v seznamu razvrščeni 173 00:12:42,000 --> 00:12:45,000 enega po enega po enega po enega po enega, 174 00:12:45,000 --> 00:12:50,000 in binarno iskanje deli seznama v 2 skupini, 175 00:12:50,000 --> 00:12:57,000 Preveri, če vrednosti ključev, ki ga iščete, je večja ali manjša od vrednosti središčem 176 00:12:57,000 --> 00:13:00,000 ki ste ga pravkar našli, in če je manj, kot gre v spodnjem seznamu 177 00:13:00,000 --> 00:13:03,000 in potem deli še enkrat, pa isto funkcijo 178 00:13:03,000 --> 00:13:07,000 vso pot navzdol, dokler se ne ugotovi, srednjo vrednost, enaka vrednosti same. 179 00:13:07,000 --> 00:13:10,000 Prav. 180 00:13:10,000 --> 00:13:12,000 >> Zakaj nam je mar? 181 00:13:12,000 --> 00:13:20,000 Zakaj govorimo o binarnem iskanju primerjavi z linearnim iskanju? 182 00:13:20,000 --> 00:13:22,000 Ja. 183 00:13:22,000 --> 00:13:24,000 Binarni je veliko hitreje, tako da, če se dvakrat na velikost problema 184 00:13:24,000 --> 00:13:27,000 je potrebno še en korak namesto dvakrat toliko. 185 00:13:27,000 --> 00:13:29,000 Točno tako. 186 00:13:29,000 --> 00:13:31,000 To je odličen odgovor. 187 00:13:31,000 --> 00:13:36,000 Linearni iskanje je zelo preverjanje en element naenkrat, 188 00:13:36,000 --> 00:13:39,000 in kot smo videli že prvi dan na predavanju 189 00:13:39,000 --> 00:13:42,000 Ko je David šel s svojim zgledom imenika 190 00:13:42,000 --> 00:13:45,000 in iztrga eno stran imenika naenkrat 191 00:13:45,000 --> 00:13:47,000 in hraniti tem, da znova in znova in znova, 192 00:13:47,000 --> 00:13:51,000 to se dogaja, da ga zelo dolgo časa, da bi našli nikogar v imeniku, 193 00:13:51,000 --> 00:13:55,000 razen, seveda, je iskal nekoga na samem začetku abecede. 194 00:13:55,000 --> 00:14:00,000 Z binarnega iskanja, lahko greš na veliko hitreje, 195 00:14:00,000 --> 00:14:05,000 in to ne samo dvakrat hitreje ali 3-krat hitrejši ali 4-krat hitrejši. 196 00:14:05,000 --> 00:14:13,000 Ampak problem postane manjši in manjši in manjši, veliko hitreje. 197 00:14:13,000 --> 00:14:17,000 Za ponazoritev, bomo začeli govoriti o tem, kaj se dogaja 198 00:14:17,000 --> 00:14:21,000 ko smo napisali binarno iskanje. 199 00:14:21,000 --> 00:14:27,000 Problem pri roki je, da če imam niz številk, 200 00:14:27,000 --> 00:14:40,000 recimo, 1, 2, 3, 5, 7, 23, 45, 78, 12323, 201 00:14:40,000 --> 00:14:47,000 nato pa 9 s tono 0s po njej, 202 00:14:47,000 --> 00:14:52,000 želimo, da bi lahko ugotovili zelo hitro, kar je v 203 00:14:52,000 --> 00:14:57,000 Ta niz številk. 204 00:14:57,000 --> 00:15:00,000 Vem, da se zdi to malo neumno in malo izmišljene, 205 00:15:00,000 --> 00:15:02,000 ker zdaj je. 206 00:15:02,000 --> 00:15:05,000 Imamo množico, ki nima zelo veliko elementov v njem, 207 00:15:05,000 --> 00:15:08,000 in če sem vprašal enega od vas, da ugotovimo, ali ne 208 00:15:08,000 --> 00:15:11,000 23 je v polju, lahko to storite zelo hitro 209 00:15:11,000 --> 00:15:16,000 Samo z Že pogled na to in mi povedal, da ali ne. 210 00:15:16,000 --> 00:15:20,000 Analogni, ki menijo, predstavljaj si, če bi bilo to, recimo, 211 00:15:20,000 --> 00:15:27,000 preglednico Excel z 10.000 vrstic, 20.000 vrstic. 212 00:15:27,000 --> 00:15:31,000 Seveda, to lahko storite ukaz F ali nadzornega F in poglej kaj gor. 213 00:15:31,000 --> 00:15:33,000 Prav tako lahko uporabite filtre in iskanje stvari, 214 00:15:33,000 --> 00:15:37,000 ampak če bi moral gledati skozi to datoteko po vrsticah z vrvico, 215 00:15:37,000 --> 00:15:40,000 bi trajalo dolgo časa, da ga najdejo. 216 00:15:40,000 --> 00:15:42,000 To je nekako tako kot v primeru telefonskega imenika, tudi če 217 00:15:42,000 --> 00:15:44,000 nihče ne gleda skozi knjigo telefona strani ena naenkrat. 218 00:15:44,000 --> 00:15:47,000 Značilno je, da se jo odpre na sredino, 219 00:15:47,000 --> 00:15:50,000 ali v primeru veliko imenikov in slovarjev po 220 00:15:50,000 --> 00:15:54,000 ste pravzaprav je vtipkali na prvo črko, 221 00:15:54,000 --> 00:16:01,000 ste flip to prvo pismo in odpreti in začeti tekoč skozi. 222 00:16:01,000 --> 00:16:03,000 >> Spomni me vaše ime še enkrat. >> Sam. 223 00:16:03,000 --> 00:16:05,000 Sam. 224 00:16:05,000 --> 00:16:11,000 Kot Sam je dejal, da je linearen proces iskanja se bo res počasi, 225 00:16:11,000 --> 00:16:15,000 in namesto z binarnega iskanja, kako to deluje, je, da 226 00:16:15,000 --> 00:16:21,000 vsakič, ko gremo skozi ponovitev naše iskalno algoritem, 227 00:16:21,000 --> 00:16:27,000 bomo razdelili seznam na pol, v bistvu, 228 00:16:27,000 --> 00:16:33,000 v dve manjši sezname. 229 00:16:33,000 --> 00:16:39,000 In potem v naslednji ponovitvi zanke, ga bomo ponovno delijo 230 00:16:39,000 --> 00:16:44,000 v drugih manjših seznamov. 231 00:16:44,000 --> 00:16:48,000 Kot lahko vidite, je težava ohranja vse manjši in manjši 232 00:16:48,000 --> 00:16:55,000 saj bo v tem izloči polovico seznama vsak čas. 233 00:16:55,000 --> 00:16:59,000 Kako to zavreči deluje? 234 00:16:59,000 --> 00:17:05,000 Tako kot opozorilo, kaj bomo storili, če bi bili računalnik 235 00:17:05,000 --> 00:17:11,000 in smo bili, recimo, iskanje števila 5 na tem seznamu 236 00:17:11,000 --> 00:17:15,000 je, da bi izbrali številko v sredini. 237 00:17:15,000 --> 00:17:26,000 V sredini tega seznama, saj so 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 številk, 238 00:17:26,000 --> 00:17:32,000 da bomo izbrali številko ali na 4. mestu ali na 5. mestu, 239 00:17:32,000 --> 00:17:38,000 in bi rečemo, da je na sredini našega seznama. 240 00:17:38,000 --> 00:17:42,000 Izberite številko v sredini. 241 00:17:42,000 --> 00:17:51,000 Potem, tako kot Sam je dejal, bomo test, da vidim, če je to število enako 242 00:17:51,000 --> 00:17:59,000 na številko, ki jo želimo dobiti ali naši želeno številko. 243 00:17:59,000 --> 00:18:06,000 Če je enaka, nato pa smo ga našli. Zmagali smo. 244 00:18:06,000 --> 00:18:12,000 Če to ni enako, potem obstaja nekaj primerov. 245 00:18:12,000 --> 00:18:15,000 Oba primera sta bodisi število mora biti večje od števila Iščemo, 246 00:18:15,000 --> 00:18:19,000 ali pa je manj kot. 247 00:18:19,000 --> 00:18:25,000 Če je več, gremo na desno. 248 00:18:25,000 --> 00:18:33,000 In če je manj, gremo na levo. 249 00:18:33,000 --> 00:18:41,000 In potem ponoviti celotni postopek še enkrat 250 00:18:41,000 --> 00:18:48,000 bodisi na desni polovici ali levi polovici seznama. 251 00:18:48,000 --> 00:18:51,000 >> Prvi problem v oddelku današnji je, da ugotovimo 252 00:18:51,000 --> 00:18:55,000 kako lahko dejansko začeli izražati to oznako C. 253 00:18:55,000 --> 00:18:58,000 Imamo psevdokod tukaj. 254 00:18:58,000 --> 00:19:04,000 Kaj bomo s tem začeli ukvarjati se bom dvigni popolnoma nov prostor, 255 00:19:04,000 --> 00:19:09,000 razen tega pregleda, tako da imamo te zapiske za kasneje, 256 00:19:09,000 --> 00:19:20,000 bomo izbrisati vse to, potem pa kopirate in prilepite iz problemskega sklopa 257 00:19:20,000 --> 00:19:26,000 ta podatek v naših prostorih, in upajmo, da to ne zlomi. 258 00:19:26,000 --> 00:19:28,000 Popolno. 259 00:19:28,000 --> 00:19:33,000 Če vi vsi storili, kopiraj in prilepi to kodo v svoj novi prostor, 260 00:19:33,000 --> 00:19:43,000 v prazno eno. 261 00:19:43,000 --> 00:19:47,000 Poskusimo Daniela. Če Prevedite in poženite ta program, ne deluje? 262 00:19:47,000 --> 00:19:49,000 Ne >> Kaj je rekel? 263 00:19:49,000 --> 00:19:53,000 Pravi nadzor doseže konec ni nična funkcijo. 264 00:19:53,000 --> 00:19:55,000 Ja, zato naj ga poskusite teče. 265 00:19:55,000 --> 00:19:59,000 Ste vi videli to? Ali veste, kaj to pomeni? 266 00:19:59,000 --> 00:20:01,000 V redu, secirati to malo. 267 00:20:01,000 --> 00:20:10,000 To je rekel na file.c v vrstici 9 stolpca 1 smo napako, tako kot si rekel, 268 00:20:10,000 --> 00:20:16,000 in pravi, da je izhajajoč iz napake opozorila in opozorila povratnega tipa. 269 00:20:16,000 --> 00:20:18,000 Izgleda, da se nekaj dogaja s povratno tipa, ki ima smisel. 270 00:20:18,000 --> 00:20:21,000 Imamo ne nična funkcijo, kar pomeni, da imamo funkcijo 271 00:20:21,000 --> 00:20:24,000 da se ne vrne neveljavne. 272 00:20:24,000 --> 00:20:27,000 Void funkcija je tista, ki izgleda takole: 273 00:20:27,000 --> 00:20:35,000 nična foo (), in to je ničen, ker je donos tip nična, 274 00:20:35,000 --> 00:20:38,000 kar pomeni, da če bi imeli kaj tukaj 275 00:20:38,000 --> 00:20:45,000 kot zameno 1, bi dobili prevajalnik za to napako. 276 00:20:45,000 --> 00:20:49,000 Vendar pa imamo non-nična funkcijo. 277 00:20:49,000 --> 00:20:51,000 Naša ni nična funkcija v tem primeru je naša funkcija iskanja 278 00:20:51,000 --> 00:20:56,000 ker ima povratno tip int. 279 00:20:56,000 --> 00:20:59,000 Ko se govori, da je nadzor izteče brez void funkcijo, 280 00:20:59,000 --> 00:21:02,000 to je zato, ker iskanje nima povratnega izjavo. 281 00:21:02,000 --> 00:21:04,000 To se ne vrača ničesar tipa int. 282 00:21:04,000 --> 00:21:09,000 >> Mi lahko popraviš, in kaj mislita 283 00:21:09,000 --> 00:21:13,000 Iskanje treba vrniti privzeto? 284 00:21:13,000 --> 00:21:16,000 Kakšna bi morala biti privzeta vrnjeno vrednost iskanju? 285 00:21:16,000 --> 00:21:19,000 Ker to je tisto, kar bomo lahko na koncu. 286 00:21:19,000 --> 00:21:21,000 Charlotte, imaš vse,? 287 00:21:21,000 --> 00:21:23,000 Drži ali ne drži? >> Drži ali ne drži. 288 00:21:23,000 --> 00:21:26,000 Katera? 289 00:21:26,000 --> 00:21:28,000 False. Ne vem. 290 00:21:28,000 --> 00:21:30,000 False? Poskusimo. 291 00:21:30,000 --> 00:21:32,000 Zakaj bi rekli, da vrnitev ne drži? To je dobro intuicijo. 292 00:21:32,000 --> 00:21:35,000 [Charlotte] Ne vem. 293 00:21:35,000 --> 00:21:39,000 Bomo vrne false v tem primeru, saj bo to naš privzeto 294 00:21:39,000 --> 00:21:44,000 če iz nekega razloga je seznam prazen, ali pa se igla 295 00:21:44,000 --> 00:21:46,000 da iščemo, ne obstaja. 296 00:21:46,000 --> 00:21:50,000 Potem pa čisto na koncu, če se ne bomo vrnili res že v tej funkciji, 297 00:21:50,000 --> 00:21:55,000 smo vedno vedeli, da bo ta funkcija rekel Nope, to ni v polje. 298 00:21:55,000 --> 00:21:58,000 To ni v kopici sena. 299 00:21:58,000 --> 00:22:03,000 Zdaj, če želimo zbrati in prost dostop to, kaj mi rešiti to, da bomo lahko ga potegnite navzgor. 300 00:22:03,000 --> 00:22:08,000 Zdaj, če želimo pripraviti in voditi naš program, se gradi. 301 00:22:08,000 --> 00:22:12,000 Smo dobili našo malo uren. 302 00:22:12,000 --> 00:22:20,000 Če sem zadel 4-uh-oh. 303 00:22:20,000 --> 00:22:25,000 Ni natisniti ničesar. Zdi se, kot da je vse končalo dobro. 304 00:22:25,000 --> 00:22:35,000 Moramo izpolniti to noter 305 00:22:35,000 --> 00:22:39,000 Pogovarjala sva se o algoritmu v Psevdokoda malo nazaj. 306 00:22:39,000 --> 00:22:44,000 Naj vidim, razen tega, 307 00:22:44,000 --> 00:22:49,000 in jaz bom pritisnil na algoritem spet nazaj. 308 00:22:49,000 --> 00:22:51,000 Gremo tega tipa. Ne. 309 00:22:51,000 --> 00:22:58,000 Tukaj je. 310 00:22:58,000 --> 00:23:03,000 Kako to storiti? 311 00:23:03,000 --> 00:23:11,000 Kaj bi bilo dobro strategijo za zagon te kode? 312 00:23:11,000 --> 00:23:16,000 Moraš izbrati številko na sredini. 313 00:23:16,000 --> 00:23:23,000 Kako izbrati številko v sredini niza? 314 00:23:23,000 --> 00:23:25,000 Vsi predlogi? 315 00:23:25,000 --> 00:23:27,000 [Študent] strlen deljeno z 2. 316 00:23:27,000 --> 00:23:32,000 Strlen deljeno z 2. To je eno veliko. 317 00:23:32,000 --> 00:23:35,000 Strlen dela s posebnimi vrstami nizi. 318 00:23:35,000 --> 00:23:38,000 Kakšne vrste polj? 319 00:23:38,000 --> 00:23:44,000 String nizi znakov polja. 320 00:23:44,000 --> 00:23:48,000 To je ta ista vrsta koncepta, ki ga želimo uporabiti, 321 00:23:48,000 --> 00:23:52,000 vendar ne smemo uporabljati strlen, ker nimamo niz znakov. 322 00:23:52,000 --> 00:23:55,000 Imamo vrsto ints. 323 00:23:55,000 --> 00:23:58,000 Toda kaj strlen dobil za nas? 324 00:23:58,000 --> 00:24:01,000 Ali veste, kaj je dobil za nas? 325 00:24:01,000 --> 00:24:03,000 [Študent] strlen dobi nam dolžino. 326 00:24:03,000 --> 00:24:05,000 Točno tako, da postane nam dolžino. 327 00:24:05,000 --> 00:24:09,000 Strlen dobi trajanja niza za nas. 328 00:24:09,000 --> 00:24:14,000 >> Kako bomo to dosegli, da je v našem programu binarnega iskanja? 329 00:24:14,000 --> 00:24:18,000 Kako bi dobil dolžino array? 330 00:24:18,000 --> 00:24:20,000 [Študent] strlen? 331 00:24:20,000 --> 00:24:25,000 Lahko dobite dolžino pravilno oblikovano niz niz C s strlen. 332 00:24:25,000 --> 00:24:31,000 Problem pa je, da nimamo niz niz. 333 00:24:31,000 --> 00:24:36,000 Če se ozremo na to oznako, imamo to celoštevilsko matriko. 334 00:24:36,000 --> 00:24:38,000 Kako vemo, kako dolgo je to? 335 00:24:38,000 --> 00:24:44,000 [Študent] Ali obstaja ekvivalent 1 za končne točke, kot so int l, ali kaj? 336 00:24:44,000 --> 00:24:49,000 Izkazalo se je, da pravzaprav ni, in tako na nek način je to 337 00:24:49,000 --> 00:24:52,000 ena od tistih stvari, ki je samo dobro vedeti o C, 338 00:24:52,000 --> 00:24:57,000 da ne obstaja način, da dobite dolžino niza 339 00:24:57,000 --> 00:24:59,000 Če vse, kar vam je matrika. 340 00:24:59,000 --> 00:25:02,000 Razlog, da deluje s strunami, razlog strlen dela, 341 00:25:02,000 --> 00:25:06,000 Kajti če je niz pravilno oblikovana, 342 00:25:06,000 --> 00:25:12,000 da bo imel ta poseben 0 \ znaka na samem koncu. 343 00:25:12,000 --> 00:25:16,000 >> Prav tako lahko predstavljate, če imate nepravilno oblikovan niz 344 00:25:16,000 --> 00:25:20,000 in ni \ 0 znakov ni, potem je vsa stvar ne deluje. 345 00:25:20,000 --> 00:25:22,000 [Študent] Lahko dodate \ 0? 346 00:25:22,000 --> 00:25:24,000 Lahko bi v tem primeru. 347 00:25:24,000 --> 00:25:29,000 Lahko bi dodali neke vrste \ 0 348 00:25:29,000 --> 00:25:33,000 ali nekakšen ki pomeni znak in nato uporabimo. 349 00:25:33,000 --> 00:25:36,000 Ampak to se ne bo delovalo dokaj 350 00:25:36,000 --> 00:25:40,000 ker \ 0 je za char tipa, 351 00:25:40,000 --> 00:25:43,000 in tukaj imamo ints. 352 00:25:43,000 --> 00:25:46,000 Druga stvar je, če smo bili, da uporabite posebno vrednost 353 00:25:46,000 --> 00:25:49,000 kot -1, ki označuje konec matrike 354 00:25:49,000 --> 00:25:54,000 potem nikoli ne bi shranjevanje -1 v naših celih nizi. 355 00:25:54,000 --> 00:25:56,000 Mi bi obtičala. 356 00:25:56,000 --> 00:26:00,000 Izkazalo se je, da je edini način, da dobite dolžino 357 00:26:00,000 --> 00:26:03,000 od array v C je dejansko zapomniti 358 00:26:03,000 --> 00:26:08,000 Ko ga je ustanovil in ga prenesti okoli z matriko 359 00:26:08,000 --> 00:26:14,000 tako da, ko sem imel nalogo, da se dogaja, da naredite nekaj dela 360 00:26:14,000 --> 00:26:18,000 na paleto cela ali pa na vodi ali podvoji ali kaj ste, 361 00:26:18,000 --> 00:26:22,000 Prav tako je treba, da je funkcija array dolžine, 362 00:26:22,000 --> 00:26:26,000 in to je točno to, kar smo storili tukaj, v iskalno funkcijo. 363 00:26:26,000 --> 00:26:30,000 Če pogledamo, kaj smo storili, ko se peljemo v naši matriki tukaj 364 00:26:30,000 --> 00:26:36,000 smo tudi pass po dolžini, velikosti. 365 00:26:36,000 --> 00:26:41,000 Prav tako se zgodi, da smo jo poimenovali to spremenljivko tukaj, 366 00:26:41,000 --> 00:26:43,000 ta parameter ali argument. 367 00:26:43,000 --> 00:26:46,000 To se imenuje funkcija, je argument seznam ali seznam parametrov, 368 00:26:46,000 --> 00:26:51,000 in se to imenuje tudi trditve ali parametri. 369 00:26:51,000 --> 00:26:53,000 Ljudje uporabljajo različne izraze, ob različnih časih. 370 00:26:53,000 --> 00:26:55,000 Včasih zamenjajte jih sam. 371 00:26:55,000 --> 00:27:00,000 Samo tako se zgodi, da se ta spremenljivka tukaj imenovan podobno 372 00:27:00,000 --> 00:27:03,000 za to # define tukaj. 373 00:27:03,000 --> 00:27:06,000 Ampak oni niso ista stvar. 374 00:27:06,000 --> 00:27:11,000 Kapitalizacija ne zadeva. 375 00:27:11,000 --> 00:27:14,000 >> Če pogledamo, kaj se dogaja tukaj izjavljamo, 376 00:27:14,000 --> 00:27:18,000 Naša int matrika, ki smo ga imenuje številke. 377 00:27:18,000 --> 00:27:23,000 Mi smo mu dala svojo velikost, ki ustreza naši # define na vrhu. 378 00:27:23,000 --> 00:27:27,000 To se dogaja, da je 8. 379 00:27:27,000 --> 00:27:35,000 In potem, ko smo potem pokličete našo funkcijo za iskanje spodaj, 380 00:27:35,000 --> 00:27:40,000 peljemo v številu želimo iskati, ki smo ga pozove, 381 00:27:40,000 --> 00:27:43,000 gotten od uporabnika. 382 00:27:43,000 --> 00:27:46,000 Peljemo v polju, to številke, 383 00:27:46,000 --> 00:27:51,000 in potem imamo tudi prehod v velikosti matrike, 384 00:27:51,000 --> 00:27:57,000 in potem se shrani vrednost velikosti 8 385 00:27:57,000 --> 00:28:01,000 ali opravil s tem celo spremenljivko imenovano velikosti. 386 00:28:01,000 --> 00:28:08,000 Imamo velikost matrike. 387 00:28:08,000 --> 00:28:11,000 Zdaj, če gremo nazaj na to, kar smo govorili že prej, 388 00:28:11,000 --> 00:28:14,000 Mislim, da Missy pripeljal poudaril, da tisto, kar je potrebno storiti, je dobil dolžino niza 389 00:28:14,000 --> 00:28:20,000 in ga delimo z 2, in da nam bo dalo srednjo. 390 00:28:20,000 --> 00:28:22,000 Pa poglejmo. 391 00:28:22,000 --> 00:28:25,000 Ali imam lahko nekdo napisati in ga shrani v prostoru? 392 00:28:25,000 --> 00:28:27,000 Kaj pa Leila? 393 00:28:27,000 --> 00:28:31,000 Ali imam lahko pišete to? 394 00:28:31,000 --> 00:28:35,000 Napišite prvo vrstico, kjer ste vzeli na dolžino niza, in dobili srednjo vrednost 395 00:28:35,000 --> 00:28:41,000 in ga shranite na nove spremenljivke. 396 00:28:41,000 --> 00:28:44,000 Dam ti nekaj sekund. Ste pripravljeni? 397 00:28:44,000 --> 00:28:46,000 [Student neslišno] 398 00:28:46,000 --> 00:28:50,000 Seveda, bi sem vam izračuna srednjo vrednost 399 00:28:50,000 --> 00:28:55,000 v senu matrike znotraj funkcije iskanja 400 00:28:55,000 --> 00:29:03,000 z dolžino senu niz, ki je spremenljiva velikost? 401 00:29:03,000 --> 00:29:08,000 Nič zapleteno tukaj. 402 00:29:08,000 --> 00:29:12,000 [Leila] Samo velikost / 2 in samo- 403 00:29:12,000 --> 00:29:17,000 In jo shranite, in kliknite na gumb Save tu na vrhu, 404 00:29:17,000 --> 00:29:19,000 in bomo ga potegnite navzgor. 405 00:29:19,000 --> 00:29:22,000 Popolno. 406 00:29:22,000 --> 00:29:28,000 Takole. Neverjetno. 407 00:29:28,000 --> 00:29:30,000 >> Ker je to sestaviti? 408 00:29:30,000 --> 00:29:32,000 [Leila] Ne, to mora biti višja. 409 00:29:32,000 --> 00:29:34,000 [Nate] Ja, kaj moramo narediti? 410 00:29:34,000 --> 00:29:36,000 [Leila] Kot int sredini ali kaj podobnega. 411 00:29:36,000 --> 00:29:41,000 Neverjetno. Ja, kaj je storil, int sredina = velikost. 412 00:29:41,000 --> 00:29:44,000 Bo to sestaviti? 413 00:29:44,000 --> 00:29:47,000 Naj izbrisati komentar in ga spraviti ven s poti. 414 00:29:47,000 --> 00:29:50,000 Kaj ne bo sestavil o tem? 415 00:29:50,000 --> 00:29:52,000 Ne delamo nič s celo število, 416 00:29:52,000 --> 00:29:55,000 zato moramo natisniti to ali kaj podobnega. 417 00:29:55,000 --> 00:29:58,000 Ja, točno tako. 418 00:29:58,000 --> 00:30:00,000 Dobili bomo neuporabljeno spremenljivke. 419 00:30:00,000 --> 00:30:02,000 Kaj vse še ne bo šlo za to? 420 00:30:02,000 --> 00:30:06,000 Mislim, da si nekaj rekel, Sam. Podpičji. 421 00:30:06,000 --> 00:30:08,000 Ja, manjka ti podpičji. 422 00:30:08,000 --> 00:30:14,000 To se dogaja, da je stalnica v življenju ves čas mandata. 423 00:30:14,000 --> 00:30:17,000 Zadnja stvar, bom naredil je, da bom dal nekaj praznega prostora na obeh straneh 424 00:30:17,000 --> 00:30:23,000 tega subjekta v tej zadevi, ker je to običajno, kako to storiti 425 00:30:23,000 --> 00:30:26,000 po našem slogu priročnika. 426 00:30:26,000 --> 00:30:29,000 Imamo srednjo vrednost našega matrike. 427 00:30:29,000 --> 00:30:32,000 Zdaj, če se spomnimo nazaj na naš algoritem, 428 00:30:32,000 --> 00:30:37,000 kaj je naslednji korak, da smo morali storiti, ko bomo imeli srednjo vrednost? 429 00:30:37,000 --> 00:30:42,000 [Študent] Če je to večji [neslišno]. 430 00:30:42,000 --> 00:30:48,000 Ja, zato moramo narediti neke vrste primerjave, in kaj smo primerjali tukaj? 431 00:30:48,000 --> 00:30:53,000 Rekel si, če je večji od. Kaj je v tem stavku se nanaša na? 432 00:30:53,000 --> 00:30:57,000 Številka, ki pride gor, če je to več kot v sredini, nato pa pojdite do array? 433 00:30:57,000 --> 00:31:05,000 Točno tako število, ki pride, ko- 434 00:31:05,000 --> 00:31:10,000 Kazalec, tako da smo v primerjavi z iglo, 435 00:31:10,000 --> 00:31:12,000 in kaj smo primerjali glede na igli? 436 00:31:12,000 --> 00:31:15,000 Ker je igla je tisto, kar smo iskali. 437 00:31:15,000 --> 00:31:18,000 Mi smo ga primerjali, da bi dobili na sredini. 438 00:31:18,000 --> 00:31:21,000 >> Toda, ali je smiselno, da preverite, 439 00:31:21,000 --> 00:31:27,000 Če igla = sredina? 440 00:31:27,000 --> 00:31:32,000 Ima to smisel? 441 00:31:32,000 --> 00:31:35,000 Ali kdo ne strinja? 442 00:31:35,000 --> 00:31:40,000 Dajmo mu poskusiti, če (igla == sredini). 443 00:31:40,000 --> 00:31:42,000 [Študent] Ali printf si ga našel. 444 00:31:42,000 --> 00:31:51,000 [Nate] printf ("Našli smo ga \ n!"); 445 00:31:51,000 --> 00:31:56,000 V nasprotnem primeru, grem, da začnete delati nekaj drugega tukaj. 446 00:31:56,000 --> 00:32:00,000 Jaz bom za začetek dajanja izjav naramnice okoli, če ves čas 447 00:32:00,000 --> 00:32:05,000 samo zato, ker če bomo dodali še več stvari, potem 448 00:32:05,000 --> 00:32:07,000 ne bomo dobili prevajalniki. 449 00:32:07,000 --> 00:32:09,000 Ja, Sam. Imaš prav. 450 00:32:09,000 --> 00:32:12,000 Težava je v tem, da je sredina predstavlja položaj v matriki, 451 00:32:12,000 --> 00:32:15,000 vendar pa lahko dobite, da je vrednost v tem položaju array. 452 00:32:15,000 --> 00:32:17,000 To je odlična točka. 453 00:32:17,000 --> 00:32:19,000 Ste vsi slišali, kaj Sam je rekel? 454 00:32:19,000 --> 00:32:22,000 Dejal je, da je to srednji 455 00:32:22,000 --> 00:32:28,000 predstavlja le položaj v matriki, vendar to ni dejanski element v matriki. 456 00:32:28,000 --> 00:32:30,000 Če menite, da o kodeksu kakor je zapisano zdaj, 457 00:32:30,000 --> 00:32:35,000 če se ozremo na tem polju tukaj, ki ima 8 elementov v njem, 458 00:32:35,000 --> 00:32:39,000 Kakšna je vrednost sredina bo v tej funkciji? 459 00:32:39,000 --> 00:32:41,000 [Študent] 4. 460 00:32:41,000 --> 00:32:45,000 [Nate] 4. 461 00:32:45,000 --> 00:32:51,000 Če se ozremo na številko 4 - 462 00:32:51,000 --> 00:32:54,000 in bomo lahko šele prost dostop to kodo in dal malo žalosten obraz tukaj 463 00:32:54,000 --> 00:32:58,000 saj ni zdelo, če vodimo to kodo 464 00:32:58,000 --> 00:33:04,000 kot je sedaj, ga naložite, stavbe, naj se pomaknite navzdol 465 00:33:04,000 --> 00:33:09,000 in če gledamo na številke 4 466 00:33:09,000 --> 00:33:18,000 smo ga našli, pa nismo dobili to printf ja. 467 00:33:18,000 --> 00:33:23,000 Eden od razlogov je, da se nismo vrnili res, 468 00:33:23,000 --> 00:33:26,000 vendar pa smo res našli številne 4? 469 00:33:26,000 --> 00:33:28,000 In Sam ne govorim. 470 00:33:28,000 --> 00:33:31,000 Kaj smo našli? 471 00:33:31,000 --> 00:33:35,000 Smo res pokazala srednjo vrednost, ki je, če gledamo na matrike tukaj, 472 00:33:35,000 --> 00:33:38,000 to se dogaja, da je element na indeksu 4, ki jih gledaš, 473 00:33:38,000 --> 00:33:42,000 kar je 23. 474 00:33:42,000 --> 00:33:46,000 >> Kako bomo dejansko dobili ta element v sredini 475 00:33:46,000 --> 00:33:48,000 in ne samo sredina sama? 476 00:33:48,000 --> 00:33:52,000 [Študent] želimo vnesti znak ali kaj? 477 00:33:52,000 --> 00:33:55,000 Kaj bi to naredil, samo iz radovednosti? 478 00:33:55,000 --> 00:33:57,000 Lahko poveste malo več? 479 00:33:57,000 --> 00:34:02,000 Moraš spremeniti položaj v številu, 480 00:34:02,000 --> 00:34:05,000 Tako moraš narediti neka povezava, mislim, da je znak, vendar ne bi bilo. 481 00:34:05,000 --> 00:34:07,000 Ja, to je dobro izhodišče. 482 00:34:07,000 --> 00:34:12,000 Smo bili delaš veliko tega konvertaze mest v znakov, teh znakov, 483 00:34:12,000 --> 00:34:14,000 V prvih dveh problemskih sklopov. 484 00:34:14,000 --> 00:34:18,000 Izkazalo se je, da je tukaj, je to skoraj podobno 485 00:34:18,000 --> 00:34:24,000 dostop do wi znak v nizu, če je to smiselno. 486 00:34:24,000 --> 00:34:30,000 Tu želimo dostopati v sredini elementa. 487 00:34:30,000 --> 00:34:34,000 Kako bomo to storili? 488 00:34:34,000 --> 00:34:39,000 Kevin, ali imate kakšne predloge, kako bi lahko to naredil? 489 00:34:39,000 --> 00:34:44,000 Lahko bi naredil senu, oklepaj, v sredini, zaprta nosilec. 490 00:34:44,000 --> 00:34:46,000 Lahko napišete, da je za nas? 491 00:34:46,000 --> 00:34:51,000 Shranite jo v tukaj in potegnite bomo tako naredili. 492 00:34:51,000 --> 00:34:56,000 Iščemo tej progi 9, 493 00:34:56,000 --> 00:34:59,000 in smo spoznali, da si ne želimo primerjati iglo na sredini, 494 00:34:59,000 --> 00:35:03,000 namesto tega pa smo želeli primerjati iglo 495 00:35:03,000 --> 00:35:07,000 elementu na sredini položaja v naši senu matrike. 496 00:35:07,000 --> 00:35:10,000 Kul. 497 00:35:10,000 --> 00:35:12,000 Takole. 498 00:35:12,000 --> 00:35:15,000 Ja, to izgleda precej dobro, če (igla == senu [sredina]). 499 00:35:15,000 --> 00:35:18,000 Našli smo ga. 500 00:35:18,000 --> 00:35:22,000 Zdaj, če želimo zagnati kodo bova nazaj gor, malo- 501 00:35:22,000 --> 00:35:26,000 se pripravlja, da teče, in zdaj, če pogledamo na 4, 502 00:35:26,000 --> 00:35:30,000 nismo našli, ker zdaj smo dejansko dobili številko 23. 503 00:35:30,000 --> 00:35:33,000 Gremo na vrednost 23, in to je tisto, kar smo v primerjavi z našo iglo. 504 00:35:33,000 --> 00:35:35,000 Ampak to je dobro. To je korak v pravo smer. 505 00:35:35,000 --> 00:35:37,000 >> To je tisto, kar smo poskušali narediti. 506 00:35:37,000 --> 00:35:40,000 Ne bomo poskušali primerjati iglo proti pozicije v matriki 507 00:35:40,000 --> 00:35:44,000 ampak glede na dejanske elemente v matriki. 508 00:35:44,000 --> 00:35:49,000 Če se ozremo nazaj, zdaj na naslednji korak v našem algoritmu 509 00:35:49,000 --> 00:35:51,000 kaj je naslednji korak? 510 00:35:51,000 --> 00:35:57,000 Leila že omenil na kratko. 511 00:35:57,000 --> 00:36:00,000 [Študent] Preverite, če je večja ali manjša od in se nato odloči, v katero smer se premika. 512 00:36:00,000 --> 00:36:03,000 [Nate] Ja, kako bi to naredili? 513 00:36:03,000 --> 00:36:07,000 Ali lahko dal v nekaj-Bom rešiti to revizijo, 514 00:36:07,000 --> 00:36:13,000 in potem, če si dal na nekaterih progah, ki bo naredil to. 515 00:36:13,000 --> 00:36:15,000 Ja, Charlotte. >> Imam vprašanje. 516 00:36:15,000 --> 00:36:19,000 Ali ne bi bilo sredini - 1, saj je prva stvar, ki je 517 00:36:19,000 --> 00:36:26,000 to je 0 indeksira, tako da, če damo 4, to dejansko ni znakov, ki ga iščemo? 518 00:36:26,000 --> 00:36:30,000 Ja, in drugi problem pri tem je, 519 00:36:30,000 --> 00:36:35,000 To je velik ulov, saj je, kaj se bo zgodilo na koncu morda 520 00:36:35,000 --> 00:36:42,000 če bomo naprej in se ne bomo nikoli prilagodijo na začetku? 521 00:36:42,000 --> 00:36:46,000 Mislim, kaj bi lahko na koncu delaš poskuša dostopati 522 00:36:46,000 --> 00:36:49,000 element na 8. mesto matrike, 523 00:36:49,000 --> 00:36:53,000 ki v tem primeru ne obstaja. 524 00:36:53,000 --> 00:36:56,000 Bomo želeli narediti neke vrste računovodstva za to, 525 00:36:56,000 --> 00:36:59,000 da imamo neke nič indeksiranja. 526 00:36:59,000 --> 00:37:05,000 [Charlotte] Oprosti, mislil sem srednjo - 1 v oglatih oklepajih. 527 00:37:05,000 --> 00:37:08,000 To lahko storimo. 528 00:37:08,000 --> 00:37:10,000 Vrnila se bova k temu vprašanju v zelo malo. 529 00:37:10,000 --> 00:37:13,000 Ko smo začeli, da bi dobili dejanski zanka, 530 00:37:13,000 --> 00:37:16,000 da je, ko bomo res videli to pride v poštev. 531 00:37:16,000 --> 00:37:21,000 Za zdaj, bomo to naredili, ampak ti si popolnoma prav. 532 00:37:21,000 --> 00:37:28,000 To bo nič kazalo vpliva, da moramo obračunati. 533 00:37:28,000 --> 00:37:30,000 Pa poglejmo. 534 00:37:30,000 --> 00:37:34,000 >> Kako je večja od manj kot-? 535 00:37:34,000 --> 00:37:36,000 [Študent] bom, kako to storiti, in več kot manj del. 536 00:37:36,000 --> 00:37:41,000 Pravkar sem bil prepričan, kaj natisniti, če se vam zdi, da je manj kot v senu sredini ali več. 537 00:37:41,000 --> 00:37:43,000 Tukaj lahko shranite kar I've- 538 00:37:43,000 --> 00:37:47,000 [Nate] Ja, če shranite kar imaš, in bomo ga potegnite navzgor. 539 00:37:47,000 --> 00:37:49,000 Takole. 540 00:37:49,000 --> 00:37:51,000 [Študent] In sem dal vprałaje za kar nisem vedel. 541 00:37:51,000 --> 00:37:54,000 [Nate] To izgleda super. 542 00:37:54,000 --> 00:37:58,000 Tu imamo vprałaje, ker še vedno ne vem 543 00:37:58,000 --> 00:38:06,000 kaj bomo narediti še precej. 544 00:38:06,000 --> 00:38:12,000 Kaj bi želeli narediti-ups, imamo nekaj funky naramnic vse na nas. 545 00:38:12,000 --> 00:38:15,000 Mi bomo popraviti te aparata. 546 00:38:15,000 --> 00:38:19,000 Takole. 547 00:38:19,000 --> 00:38:22,000 In tako se kaj želimo narediti, glede na naš algoritem, 548 00:38:22,000 --> 00:38:27,000 Če ne bomo našli igle? 549 00:38:27,000 --> 00:38:32,000 Recimo v primeru, da je igla manj od tistega, kar smo iskali na. Kevin. 550 00:38:32,000 --> 00:38:34,000 Samo poglej levo polovico. 551 00:38:34,000 --> 00:38:40,000 Točno, tako da bomo dal komentar v tukaj, ki pravi "pogled na levo polovico." 552 00:38:40,000 --> 00:38:46,000 In če je igla večja od senu na sredini, kaj želimo storiti? 553 00:38:46,000 --> 00:38:48,000 [Študent] Potem pogledaš na desni polovici. 554 00:38:48,000 --> 00:38:53,000 Pogled na desni polovici, "pogled na desni polovici." 555 00:38:53,000 --> 00:38:58,000 Ne preveč slabo. 556 00:38:58,000 --> 00:39:05,000 Ok, tako da na tej točki, so stvari videti precej dobro. 557 00:39:05,000 --> 00:39:13,000 Težava z oznako kakor je zapisano, kaj? 558 00:39:13,000 --> 00:39:15,000 [Študent] Nimaš končne točke za polovicama. 559 00:39:15,000 --> 00:39:18,000 V redu, nimamo končne točke za polovicama. 560 00:39:18,000 --> 00:39:20,000 Prav tako so le, da bo šel skozi to enkrat. 561 00:39:20,000 --> 00:39:23,000 Mi smo le, da bo pogled na eno sredini. 562 00:39:23,000 --> 00:39:27,000 Ali je element obstaja, ali pa je ni. 563 00:39:27,000 --> 00:39:34,000 Za dokončanje tega, bomo morali narediti neke vrste ponovitev. 564 00:39:34,000 --> 00:39:39,000 Moramo se ponavljajo, dokler ne ugotovijo, da 565 00:39:39,000 --> 00:39:43,000 bodisi element je tam zato, ker smo zožil in končno našel, 566 00:39:43,000 --> 00:39:46,000 ali to ni tam, ker smo pogledal skozi vse stvari, 567 00:39:46,000 --> 00:39:52,000 v ustreznih polovici polja, in ugotovila, da ni nič tam. 568 00:39:52,000 --> 00:39:56,000 >> Kadarkoli smo dobili to ponavljanje dogaja, kaj bomo za uporabo? 569 00:39:56,000 --> 00:39:58,000 [Študent] zanka. 570 00:39:58,000 --> 00:40:00,000 Neke vrste zanke. Da. 571 00:40:00,000 --> 00:40:03,000 [Študent] Lahko naredimo do-while zanko in jo naredil, nato pa 572 00:40:03,000 --> 00:40:10,000 igla ni enako-Nisem prepričan, če sem šel s tem. 573 00:40:10,000 --> 00:40:18,000 Ampak nekako kot to, da dokler ni enaka vrednosti, ki jih uporabnik vložek. 574 00:40:18,000 --> 00:40:21,000 Ja, pa poglejmo, kako bi to sama napišem? 575 00:40:21,000 --> 00:40:23,000 Rekel si, da greva uporabo do-while zanko. 576 00:40:23,000 --> 00:40:26,000 Če pa to začelo? 577 00:40:26,000 --> 00:40:33,000 [Študent] Takoj po velikosti / 2. 578 00:40:33,000 --> 00:40:42,000 [Nate] Ok, in kaj bomo storili? 579 00:40:42,000 --> 00:40:44,000 Bomo izpolnite časa kasneje. 580 00:40:44,000 --> 00:40:46,000 Kaj bomo naredili? 581 00:40:46,000 --> 00:40:49,000 [Študent] Ne želimo storiti vse stvari, ki jih imamo v if dela? 582 00:40:49,000 --> 00:40:52,000 [Nate] Ali vse te stvari, super. 583 00:40:52,000 --> 00:40:55,000 Kopiranje in lepljenje. 584 00:40:55,000 --> 00:40:59,000 Oh, človek. 585 00:40:59,000 --> 00:41:03,000 Poglejmo, če to deluje, če bomo lahko jeziček tole. 586 00:41:03,000 --> 00:41:08,000 Čudovito. 587 00:41:08,000 --> 00:41:16,000 Ok, to rešimo tako vi ga imate. 588 00:41:16,000 --> 00:41:21,000 V redu, in bomo to naredili ob- 589 00:41:21,000 --> 00:41:25,000 kaj je pa pogoj, da si potem? 590 00:41:25,000 --> 00:41:31,000 [Študent] Medtem ko se igla ni enako, tako kot klicaj. 591 00:41:31,000 --> 00:41:37,000 Ampak ne vem točno, kaj je še. 592 00:41:37,000 --> 00:41:39,000 [Nate] Ja, to je eden od načinov, da to storite. 593 00:41:39,000 --> 00:41:41,000 Sam, imate komentar? 594 00:41:41,000 --> 00:41:43,000 [Sam] sem se spomnil, ko sem pogledal video posnetke, 595 00:41:43,000 --> 00:41:48,000 Vzel sem screenshot enega od podobnih, ko smo naredili psevdokod za to, 596 00:41:48,000 --> 00:41:52,000 je bilo nekaj razmerje med max in min. 597 00:41:52,000 --> 00:41:58,000 Mislim, da je bilo nekaj podobnega, če max je vedno manj kot minuto. 598 00:41:58,000 --> 00:42:00,000 Razumem. 599 00:42:00,000 --> 00:42:04,000 [Sam] Ali je všeč, če max ni manj kot minuto ali kaj podobnega, 600 00:42:04,000 --> 00:42:06,000 saj bi to pomenilo, da je vse, kar ste iskali. 601 00:42:06,000 --> 00:42:13,000 >> Ja, pa kaj se sliši kot max in min so bili nanaša? 602 00:42:13,000 --> 00:42:16,000 [Sam] Vrednosti da-cela števila, ki se bodo spremenile 603 00:42:16,000 --> 00:42:18,000 glede na katerih smo dali srednjo vrednost. 604 00:42:18,000 --> 00:42:20,000 Točno tako. 605 00:42:20,000 --> 00:42:24,000 [Sam] Na tej točki, da se bo [neslišno] izračunati max in min. 606 00:42:24,000 --> 00:42:29,000 Središčna točka je to max in min ideja. 607 00:42:29,000 --> 00:42:35,000 Ali to smiselno ljudje? 608 00:42:35,000 --> 00:42:39,000 Če bi začeli videti, kako bomo to storiti ponovitev, 609 00:42:39,000 --> 00:42:43,000 imaš popolnoma prav, da želimo uporabiti neke vrste do-while zanko. 610 00:42:43,000 --> 00:42:49,000 Ampak mislim, da če se spomnimo, kaj se dogaja na kraju samem te matrike 611 00:42:49,000 --> 00:42:53,000 in kaj se pravzaprav dogaja, grem, da napišete tukaj, 612 00:42:53,000 --> 00:42:58,000 na zelo prvi ponovitvi binarnega iskanja, imamo- 613 00:42:58,000 --> 00:43:05,000 Bom uporabila B in E, ki označuje začetek. 614 00:43:05,000 --> 00:43:10,000 In potem je konec naše matrike. 615 00:43:10,000 --> 00:43:14,000 Vemo, da je začetek pri 4 pravici tukaj, 616 00:43:14,000 --> 00:43:18,000 in vemo, da je konec na 108. 617 00:43:18,000 --> 00:43:23,000 Povejte nam iščete številko 15. 618 00:43:23,000 --> 00:43:27,000 Prvič smo to naredili, kot smo videli prej, 619 00:43:27,000 --> 00:43:30,000 sredina, bodisi bo 16 ali 23 620 00:43:30,000 --> 00:43:34,000 odvisno od tega, kako izračunamo stvari. 621 00:43:34,000 --> 00:43:37,000 Ker enakomerno razdelitev na sredini bi nam ta prostor 622 00:43:37,000 --> 00:43:42,000 med 16 in 23, ne moremo enakomerno razdelite 623 00:43:42,000 --> 00:43:47,000 ali ga je treba razdeliti in se ob pravem sredini. 624 00:43:47,000 --> 00:43:49,000 Bomo pogled na 16 let. 625 00:43:49,000 --> 00:43:55,000 Bomo spoznali: "Hej, 16> 15, ki ga iščemo." 626 00:43:55,000 --> 00:43:59,000 Če pa pogledaš na levi polovici matrike 627 00:43:59,000 --> 00:44:03,000 kaj bomo na koncu delaš je zavržemo 628 00:44:03,000 --> 00:44:07,000 ta celoten zgornji del 629 00:44:07,000 --> 00:44:16,000 in rekel: "V redu, zdaj je naša končna točka je, da bo tukaj." 630 00:44:16,000 --> 00:44:22,000 Naslednja ponovitev naše zanke, smo sedaj si ogleduje ta niz, 631 00:44:22,000 --> 00:44:25,000 dejansko ko se zavrže ta del, ker zdaj 632 00:44:25,000 --> 00:44:30,000 če smo vzeli srednjo vrednost, da razlika med začetkom in koncem, 633 00:44:30,000 --> 00:44:34,000 smo ugotovili, da naši sredini, da je 8, 634 00:44:34,000 --> 00:44:40,000 , ki jih lahko nato test 8, kje je v primerjavi s številom, ki ga iščemo, 635 00:44:40,000 --> 00:44:44,000 15, ugotovili, da je 15 več, 636 00:44:44,000 --> 00:44:49,000 Tako smo se preselili na desnem delu seznama, 637 00:44:49,000 --> 00:44:51,000 za katero vemo, ker smo ljudje, in smo ga lahko videli. 638 00:44:51,000 --> 00:44:54,000 Vemo, da je pravica del se bo, če ga najdemo, 639 00:44:54,000 --> 00:45:01,000 vendar računalnik ne ve, da je to tisto, kar bom naredil, je, da bomo dejansko 640 00:45:01,000 --> 00:45:04,000 so to gor, zdaj pa je začetek in konec 641 00:45:04,000 --> 00:45:11,000 so na istem mestu, tako da je sredina postane le številka na seznamu na tej točki, 642 00:45:11,000 --> 00:45:16,000 kar je 15, mi pa smo ga našli. 643 00:45:16,000 --> 00:45:21,000 Ali to delno osvetlile o tem, kje je vsa ta max in min zapis se dogaja, 644 00:45:21,000 --> 00:45:24,000 sledenja končne točke v niz, da bi ugotovili, 645 00:45:24,000 --> 00:45:35,000 kako zmanjšati stvari dol? 646 00:45:35,000 --> 00:45:42,000 >> Kaj bi se zgodilo, če bi bilo to ni enako 15 zdaj? 647 00:45:42,000 --> 00:45:52,000 Kaj pa, če smo iskali 15. in namesto tega, da je ta številka bila tudi 16? 648 00:45:52,000 --> 00:45:54,000 Mi bi rekli, "Oh, to je več. 649 00:45:54,000 --> 00:45:57,000 Želimo, da se vrnete na levi strani. " 650 00:45:57,000 --> 00:46:01,000 In sva se premaknete naš e na desno, 651 00:46:01,000 --> 00:46:06,000 Takrat imamo končno točko, da bi bilo nasprotujoče. 652 00:46:06,000 --> 00:46:09,000 Ne bi mogli iskati vse več elementov 653 00:46:09,000 --> 00:46:13,000 ker zdaj imamo končno točko in začetno točko, naše 654 00:46:13,000 --> 00:46:16,000 Naša največja in naša min, zdaj obrnilo. 655 00:46:16,000 --> 00:46:23,000 Iščemo prek celotnega niza. Ne moremo najti ničesar. 656 00:46:23,000 --> 00:46:27,000 To je točka, na kateri bi se želimo povedati, "Ok, bomo ustavili ta algoritem. 657 00:46:27,000 --> 00:46:34,000 Nismo našli ničesar. Vemo, da je ni tukaj. " 658 00:46:34,000 --> 00:46:36,000 Kako se to dogaja? 659 00:46:36,000 --> 00:46:40,000 [Študent] Kako točno se računalnik preklopi na koncu? 660 00:46:40,000 --> 00:46:45,000 Kako koncu končal pred začetkom? 661 00:46:45,000 --> 00:46:48,000 Konec konča pred začetkom 662 00:46:48,000 --> 00:46:54,000 zaradi matematike, ki ga bomo narediti vsakič, ko to stori. 663 00:46:54,000 --> 00:47:00,000 Pot smo zamenjali je, če pogledamo zelo prvič to storimo swap 664 00:47:00,000 --> 00:47:03,000 kjer imamo na začetek in konec 4 665 00:47:03,000 --> 00:47:13,000 vso pot navzdol na 108 in naša sredina, recimo, na 16 - 666 00:47:13,000 --> 00:47:20,000 Jaz grem v prikrivati ​​to nazaj do 15-če iščeš 15, 667 00:47:20,000 --> 00:47:25,000 smo vedeli, da to, kar smo storili, ko smo pregledali 16 in videl, da je večja 668 00:47:25,000 --> 00:47:28,000 in želel zavreči celoten desni del seznama, 669 00:47:28,000 --> 00:47:36,000 smo videli, da tisto, kar smo želeli storiti, je premakniti e tukaj. 670 00:47:36,000 --> 00:47:44,000 Dejansko dobil e preselil v 1 pred sredini. 671 00:47:44,000 --> 00:47:48,000 Tudi, ko smo to ponovitev algoritma 672 00:47:48,000 --> 00:47:51,000 in sredina je bila ob 8, 673 00:47:51,000 --> 00:47:55,000 smo ugotovili, da je 8 <15, zato smo želeli premakniti b 674 00:47:55,000 --> 00:48:00,000 1 preteklosti sredini. 675 00:48:00,000 --> 00:48:07,000 Zdaj, začetek in konec sta skupaj v tem 15. 676 00:48:07,000 --> 00:48:10,000 >> Če bi se dogajalo, da si za kakšno drugo vrednost, ne pa 15, 677 00:48:10,000 --> 00:48:14,000 ali če bi to bil 15 namesto 16, 678 00:48:14,000 --> 00:48:20,000 smo ugotovili, da bi se e želimo premakniti 1 pred sredini. 679 00:48:20,000 --> 00:48:33,000 Zdaj bi e tam obrnil manj kot b. 680 00:48:33,000 --> 00:48:39,000 Sprehodimo se skozi kako smo dejansko na koncu to kodiranje algoritem. 681 00:48:39,000 --> 00:48:44,000 Vemo, da želimo, da je to razpolovišča izračun. 682 00:48:44,000 --> 00:48:48,000 Vemo tudi, da želimo slediti začetek in konec polja, 683 00:48:48,000 --> 00:48:51,000 našega trenutnega niza, tako da lahko ugotovimo, 684 00:48:51,000 --> 00:48:56,000 če je to leva polovica seznama je in če je desna polovica seznama je. 685 00:48:56,000 --> 00:49:03,000 Mi, ki bodisi z začetka in konca, 686 00:49:03,000 --> 00:49:07,000 ali lahko rečemo min in max. 687 00:49:07,000 --> 00:49:10,000 Uporabil bom začeti in končati ta čas. 688 00:49:10,000 --> 00:49:15,000 Ko smo začeli, če se ozremo nazaj v našem primeru tukaj, 689 00:49:15,000 --> 00:49:20,000 naš začetek je bil na samem začetku niza, kot je naravna. 690 00:49:20,000 --> 00:49:25,000 Kaj je indeks to? Kaj naj bi začeli naše? 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] Ja, tako bi jo lahko postavi na senu [0]. 694 00:49:37,000 --> 00:49:40,000 Problem pa je, da nam ni položaj prvega elementa. 695 00:49:40,000 --> 00:49:45,000 To nam daje indeks prvega elementa ali dejansko vrednostjo v tistem prvem mestu. 696 00:49:45,000 --> 00:49:47,000 [Študent], ki bo pretvoriti v 0,20? 697 00:49:47,000 --> 00:49:52,000 [Nate] Kaj bo to storiti, je, dobro, da ne bo naredil nobene konverzije. 698 00:49:52,000 --> 00:49:56,000 Kaj bo naredil, je, da bo shranjevanje 4 leta začeli, 699 00:49:56,000 --> 00:49:59,000 in potem bo težko za primerjavo pred začetkom 700 00:49:59,000 --> 00:50:03,000 ker se bo začelo se ima vrednost 4, 701 00:50:03,000 --> 00:50:06,000 ki je začetek našega niza, 702 00:50:06,000 --> 00:50:08,000 vendar želimo, da bi spremljali indeksi v matriki 703 00:50:08,000 --> 00:50:11,000 v nasprotju z vrednotami. 704 00:50:11,000 --> 00:50:17,000 Bomo dejansko uporabo 0, kot je ta. 705 00:50:17,000 --> 00:50:20,000 Za konec array-Charlotte prinesel to gor malo prej. 706 00:50:20,000 --> 00:50:23,000 To je, če bomo upoštevali nič indeksiranja. 707 00:50:23,000 --> 00:50:25,000 >> Charlotte, kaj je konec niza? 708 00:50:25,000 --> 00:50:28,000 Kaj je indeks na koncu? 709 00:50:28,000 --> 00:50:30,000 [Charlotte] Velikost - 1. 710 00:50:30,000 --> 00:50:32,000 Ja, in katera velikost moramo uporabiti? 711 00:50:32,000 --> 00:50:35,000 Moramo uporabiti kapitalsko velikosti ali male črke velikosti? 712 00:50:35,000 --> 00:50:37,000 Kapital velikost. 713 00:50:37,000 --> 00:50:42,000 V tem primeru bi lahko uporabili kapitalske velikosti. 714 00:50:42,000 --> 00:50:45,000 Če bi želeli to funkcijo za prenosne 715 00:50:45,000 --> 00:50:48,000 in uporabo te funkcije v drugih programih, 716 00:50:48,000 --> 00:50:50,000 lahko dejansko uporabljajo male črke velikosti. 717 00:50:50,000 --> 00:50:52,000 Saj je v redu preveč. 718 00:50:52,000 --> 00:51:01,000 Ampak Charlotte je popolnoma prav, da želimo imeti velikost - 1. 719 00:51:01,000 --> 00:51:03,000 Na tej točki, 720 00:51:03,000 --> 00:51:05,000 [Študent] Kako to, da lahko uporabite velike črke velikosti? 721 00:51:05,000 --> 00:51:07,000 Kako to, da smo lahko uporabite velike črke velikosti? 722 00:51:07,000 --> 00:51:13,000 Izkazalo se je, da gre res # določa, 723 00:51:13,000 --> 00:51:19,000 pod pokrovom motorja, kot je bil tekst in jih zamenjajte, če je to smiselno. 724 00:51:19,000 --> 00:51:24,000 Ko prevedete kodo, predobdelava faza 725 00:51:24,000 --> 00:51:27,000 od prevajalnika gre skozi spisa, 726 00:51:27,000 --> 00:51:31,000 in išče povsod, da ste napisali kapitala velikosti, 727 00:51:31,000 --> 00:51:39,000 in nadomešča besedilo, da dobesedno z 8, kar tako. 728 00:51:39,000 --> 00:51:42,000 V tem smislu je to zelo razlikuje od spremenljivke. 729 00:51:42,000 --> 00:51:45,000 To ne zavzame nobenega prostora v pomnilniku. 730 00:51:45,000 --> 00:51:52,000 To je enostavno besedilo zamenjajte trik. 731 00:51:52,000 --> 00:51:57,000 V tem primeru, bomo uporabljati velikost. 732 00:51:57,000 --> 00:52:01,000 Od tu si želimo narediti neko vrsto ponavljanja, 733 00:52:01,000 --> 00:52:03,000 in da smo na pravi poti z našimi do-while zanko. 734 00:52:03,000 --> 00:52:08,000 Želimo nekaj narediti, dokler pogoj ne drži več, 735 00:52:08,000 --> 00:52:12,000 in kot smo videli prej, smo videli, da je ta pogoj 736 00:52:12,000 --> 00:52:19,000 je res, da ne želimo konec 737 00:52:19,000 --> 00:52:24,000 na manj kot začeti. 738 00:52:24,000 --> 00:52:26,000 >> To je naša ustavljanja stanje. 739 00:52:26,000 --> 00:52:35,000 Če se to zgodi, želimo ustaviti in razglasi kot, "Ej, nismo našli ničesar." 740 00:52:35,000 --> 00:52:43,000 Če želite izraziti to, si želimo, da uporaba neke vrste zanke. 741 00:52:43,000 --> 00:52:49,000 V tem primeru bi bilo do-while zanko, zanke for, while zanko? 742 00:52:49,000 --> 00:52:51,000 Imamo do-while zanko tukaj. 743 00:52:51,000 --> 00:52:53,000 Ali ste vi, kot ta pristop? 744 00:52:53,000 --> 00:52:59,000 Ali menite, da bi morali poskusiti drugačen pristop? 745 00:52:59,000 --> 00:53:01,000 Kevin, vse misli? 746 00:53:01,000 --> 00:53:06,000 Lahko bi imeli while zanko, saj vemo, največ 747 00:53:06,000 --> 00:53:11,000 bi bila večja od min na začetku nekako. 748 00:53:11,000 --> 00:53:14,000 Ja, tako da ni inicializacijo, da se mora zgoditi. 749 00:53:14,000 --> 00:53:17,000 Ti do-while zank so super, če imate kaj za inicializacijo 750 00:53:17,000 --> 00:53:21,000 pred tem testiranje, ker je tukaj 751 00:53:21,000 --> 00:53:26,000 vemo, da ne bomo, da bo tako reinitializing začne in konča 752 00:53:26,000 --> 00:53:28,000 Vsak krog zanke. 753 00:53:28,000 --> 00:53:32,000 Vemo, da jih želimo inicializacijo, potem preverite naše stanje. 754 00:53:32,000 --> 00:53:38,000 V tem primeru bom dejansko šel s preprosto zanko, medtem ko. 755 00:53:38,000 --> 00:53:44,000 Izkazalo se je, da se naredi medtem ko zanke uporabljajo precej redko. 756 00:53:44,000 --> 00:53:49,000 Veliko krajev sploh ne učijo, medtem ko se zanke. 757 00:53:49,000 --> 00:53:53,000 Oni so dobri za ravnanje vnos uporabnika, tako da smo videli veliko od njih doslej. 758 00:53:53,000 --> 00:53:59,000 Ampak normalno, in medtem ko zanke so veliko bolj pogosti. 759 00:53:59,000 --> 00:54:03,000 Izkazalo se je, da je ta pogoj kot je zapisano 760 00:54:03,000 --> 00:54:09,000 Ne bo nam res veliko dobrega, in zakaj je to? 761 00:54:09,000 --> 00:54:11,000 Žal mi je, ne vem tvojega imena. 762 00:54:11,000 --> 00:54:13,000 Jaz sem Jerry. >> Prosim? 763 00:54:13,000 --> 00:54:15,000 To je B-O-R-U-I. 764 00:54:15,000 --> 00:54:18,000 Oh, v redu. 765 00:54:18,000 --> 00:54:23,000 Jaz ne vidim na mojem seznamu. 766 00:54:23,000 --> 00:54:26,000 Oh, to je zato, ker, oh, to ima smisel. 767 00:54:26,000 --> 00:54:31,000 Imate idejo, zakaj to, medtem ko zanke ne bodo delovali kot je bilo predvideno, 768 00:54:31,000 --> 00:54:38,000 kot je napisano s pogojem? 769 00:54:38,000 --> 00:54:43,000 [Jerry] Misliš, da želite vse stvari, potem ko je v samem? 770 00:54:43,000 --> 00:54:46,000 Ja, to je ena. 771 00:54:46,000 --> 00:54:49,000 Morda bomo morali dati vse te stvari v while zanko, ki je popolnoma res. 772 00:54:49,000 --> 00:54:55,000 Druga stvar, ki je malo bolj problematično pa je, da ta pogoj ne deluje. 773 00:54:55,000 --> 00:54:57,000 [Študent] Moraš ga flip. 774 00:54:57,000 --> 00:55:04,000 Točno, tako da ta pogoj ne bo nikoli res prvotno pot smo se pogovarjali o tem. 775 00:55:04,000 --> 00:55:08,000 Želimo nekaj narediti do konca leta 00:55:13,000 vendar želimo narediti nekaj, medtem ko 777 00:55:13,000 --> 00:55:21,000 začetek ≤ konec. 778 00:55:21,000 --> 00:55:24,000 >> Tam je, da je obrnjeno logiko tam. 779 00:55:24,000 --> 00:55:27,000 Jaz sem kriv bi te napake ves čas. 780 00:55:27,000 --> 00:55:31,000 [Študent] Zakaj je biti manjša ali enaka? 781 00:55:31,000 --> 00:55:33,000 Ker se spomnim primera, da smo prišli do 782 00:55:33,000 --> 00:55:36,000 če je bil samo en element, in smo bili dol, 783 00:55:36,000 --> 00:55:43,000 in smo iskali na samo 15 v naši array? 784 00:55:43,000 --> 00:55:47,000 In naš začetek in naš namen je bilo isto element. 785 00:55:47,000 --> 00:55:50,000 Želimo zagotoviti, da ravnamo ta primer. 786 00:55:50,000 --> 00:55:54,000 Če smo ravno manjša 787 00:55:54,000 --> 00:55:58,000 mi bi lahko le dol z 2-element matrike. 788 00:55:58,000 --> 00:56:06,000 Ko smo prišli do tega zadnjega elementa, če bi bilo naše element, ne bi nikoli našli. 789 00:56:06,000 --> 00:56:10,000 Zdaj je tu, lahko naredimo točno tako kot si rekel. 790 00:56:10,000 --> 00:56:15,000 Začnemo lahko plopping stvari prav v sredini našega while zanko. 791 00:56:15,000 --> 00:56:20,000 Mi lahko plop v naši sredini. 792 00:56:20,000 --> 00:56:24,000 Mi lahko vse to, če izjave, 793 00:56:24,000 --> 00:56:30,000 jih potegnite iz tega ne počne, medtem ko zanke, 794 00:56:30,000 --> 00:56:34,000 plop jih v, 795 00:56:34,000 --> 00:56:39,000 čiščenje stvari malo, 796 00:56:39,000 --> 00:56:48,000 in grem naprej in shranite revizijo. 797 00:56:48,000 --> 00:56:53,000 In na tej točki, smo dobili zelo blizu. 798 00:56:53,000 --> 00:56:55,000 Sam. 799 00:56:55,000 --> 00:56:58,000 Mislim, da imate tudi, da imajo srednjo vrednost int velikost = - 1/2. 800 00:56:58,000 --> 00:57:01,000 Imam ga, velikost - 1/2. 801 00:57:01,000 --> 00:57:05,000 Je še kaj, kar moramo spremeniti o tej vrsti? 802 00:57:05,000 --> 00:57:10,000 To je bil dober ulov. 803 00:57:10,000 --> 00:57:14,000 >> Kaj velikost storiti? Ali bomo kdaj spreminjanje velikosti? 804 00:57:14,000 --> 00:57:17,000 Da bi ohranili linijo, kot je ta, da moramo spremeniti velikost. 805 00:57:17,000 --> 00:57:21,000 Moramo spremeniti velikost vsakič, ko smo šli okoli za zanko. 806 00:57:21,000 --> 00:57:25,000 Ampak, se spomniš, ko smo šli skozi naš primer malce prej, 807 00:57:25,000 --> 00:57:30,000 in smo imeli na začetku 4 808 00:57:30,000 --> 00:57:33,000 in na koncu vse tako kot pri 108? 809 00:57:33,000 --> 00:57:35,000 Kako smo izračunali srednjo vrednost? 810 00:57:35,000 --> 00:57:38,000 Smo z uporabo velikosti? 811 00:57:38,000 --> 00:57:40,000 Ali smo s pomočjo začne in konča namesto tega? 812 00:57:40,000 --> 00:57:42,000 To je razlika med koncem in začetkom. 813 00:57:42,000 --> 00:57:50,000 Točno tako, in kako točno naj napišem, da je Charlotte? 814 00:57:50,000 --> 00:57:52,000 Samo konec - začetek. 815 00:57:52,000 --> 00:57:55,000 Če ne bi bilo treba storiti - 1 816 00:57:55,000 --> 00:57:58,000 ker - je bil vključen 1 na koncu in začnete že. 817 00:57:58,000 --> 00:58:00,000 [Nate] Super, da si popolnoma prav. 818 00:58:00,000 --> 00:58:03,000 Mi ne bi bilo treba storiti - 1, ker to - je bil vključen 1 819 00:58:03,000 --> 00:58:08,000 in je predstavljal, ko smo inicializacijo spremenljivke konec. 820 00:58:08,000 --> 00:58:11,000 >> Je še kaj moram storiti, da sintaktično ta vrstica smiselno? 821 00:58:11,000 --> 00:58:13,000 [Študent] Plus začel. >> Plus začeti? 822 00:58:13,000 --> 00:58:15,000 [Študent] Na koncu. 823 00:58:15,000 --> 00:58:20,000 Ker je izračunana le polovico dolžine. 824 00:58:20,000 --> 00:58:26,000 Dodati morate začeti. 825 00:58:26,000 --> 00:58:31,000 [Nate] Kaj bi to izračunali za nas? 826 00:58:31,000 --> 00:58:35,000 Če razmišljamo o koncu o tem zelo prvi ponovitvi zanke, 827 00:58:35,000 --> 00:58:40,000 konec se bo položaj v indeksu 7. 828 00:58:40,000 --> 00:58:43,000 Začeti je na položaju 0. 829 00:58:43,000 --> 00:58:47,000 Ne pozabite, da smo iskali bodisi 830 00:58:47,000 --> 00:58:52,000 Stališče 3 ali 4 položaj. 831 00:58:52,000 --> 00:58:56,000 Če pogledamo ta matematika, samo, da bi bilo malo bolj oprijemljivo, 832 00:58:56,000 --> 00:59:02,000 dal nekaj številk, imamo 7, 0, 833 00:59:02,000 --> 00:59:10,000 Tako 7-0, nato pa / 2 834 00:59:10,000 --> 00:59:19,000 je 3 leta celo delitev, da je. 835 00:59:19,000 --> 00:59:26,000 Potem se moramo vrniti nato dodajte naša začeti? 836 00:59:26,000 --> 00:59:28,000 Mi v tem primeru ni. 837 00:59:28,000 --> 00:59:31,000 Že prvi ponovitvi, bo to v redu, ker je 0 begin. 838 00:59:31,000 --> 00:59:36,000 Toda, kot smo napredek, bomo res vsi potrebujejo samo 839 00:59:36,000 --> 00:59:42,000 Konec - Začetek / 2. 840 00:59:42,000 --> 00:59:46,000 Še en trik tukaj, in da je to ena od prednosti. 841 00:59:46,000 --> 00:59:49,000 [Študent] Ali potrebujemo oklepaje? 842 00:59:49,000 --> 00:59:53,000 [Nate] Točno tako, in da je zato, ker če ne bomo dal te oklepaje, 843 00:59:53,000 --> 00:59:58,000 potem se bo ta postavka razlagati namesto 844 00:59:58,000 --> 01:00:09,000 kot (konec) - (začetek / 2), ki vsekakor ne želimo. 845 01:00:09,000 --> 01:00:11,000 Pazi za tiste, pravila prednost. 846 01:00:11,000 --> 01:00:15,000 [Študent] Zakaj se ne konča + začeti? 847 01:00:15,000 --> 01:00:17,000 Zakaj se ne konča + začeti? 848 01:00:17,000 --> 01:00:19,000 [Študent] Zakaj ni tega? 849 01:00:19,000 --> 01:00:24,000 Zakaj bi bilo +? 850 01:00:24,000 --> 01:00:26,000 Mislim, da imaš prav. 851 01:00:26,000 --> 01:00:28,000 [Študent] Ker je to povprečje? 852 01:00:28,000 --> 01:00:31,000 [Nate] Konec + začeti, si popolnoma prav. 853 01:00:31,000 --> 01:00:34,000 Vau, sem popolnoma zaspal. Prav imaš. 854 01:00:34,000 --> 01:00:39,000 Če bomo delali minus, bi želeli dodati začel nazaj noter 855 01:00:39,000 --> 01:00:43,000 V tem primeru, ste zelo prav, da želimo, da se povprečje dveh, 856 01:00:43,000 --> 01:00:45,000 tako da nam jih želite dodati, v nasprotju z njihovo odštevanje. 857 01:00:45,000 --> 01:00:49,000 [Študent] Prav tako bi delovalo, če si konec - Začetek / 2 + začeti. 858 01:00:49,000 --> 01:00:55,000 Poleg tega bi bila, če mi-Verjamem. 859 01:00:55,000 --> 01:01:00,000 >> Na primer, če smo iskali na začetek, 860 01:01:00,000 --> 01:01:04,000 in jo preusmerila tja 861 01:01:04,000 --> 01:01:08,000 do 15 let. 862 01:01:08,000 --> 01:01:12,000 Začele so se na mestu 2. 863 01:01:12,000 --> 01:01:15,000 Konec je na mestu 7. 864 01:01:15,000 --> 01:01:21,000 Če jih odštejemo, dobimo 5. 865 01:01:21,000 --> 01:01:24,000 To delite s 2, dobimo 2. 866 01:01:24,000 --> 01:01:27,000 In potem dodamo 2 nazaj, 867 01:01:27,000 --> 01:01:30,000 in da nam pride na 4. mesto, 868 01:01:30,000 --> 01:01:33,000 , ki je tukaj, ki je sredina. 869 01:01:33,000 --> 01:01:36,000 [Študent] Ali moramo poskrbeti za zavijanje? 870 01:01:36,000 --> 01:01:39,000 V kakšnem smislu pa moramo skrbeti za zavijanje? 871 01:01:39,000 --> 01:01:43,000 Če vsota ali razlika med 872 01:01:43,000 --> 01:01:45,000 odvisno od tega, kako to storiti, ni sodo število. 873 01:01:45,000 --> 01:01:49,000 Potem se računalnik zamenjati, ali ko je 2,5; 874 01:01:49,000 --> 01:01:52,000 ne premaknete v levo ali v desno, da ugotovita, ki je sredina? 875 01:01:52,000 --> 01:01:54,000 Razumem. 876 01:01:54,000 --> 01:01:56,000 Izkazalo se je, da s celo enoto, 877 01:01:56,000 --> 01:01:59,000 ne bomo nikoli dobili te številke s plavajočo vejico. 878 01:01:59,000 --> 01:02:01,000 Nikoli nismo dobili decimalke. 879 01:02:01,000 --> 01:02:04,000 To je popolnoma zavreči. 880 01:02:04,000 --> 01:02:08,000 Če imate računalnik delite 2 int spremenljivke, 881 01:02:08,000 --> 01:02:11,000 in ena 7, druga pa 2, 882 01:02:11,000 --> 01:02:13,000 ne boste dobili 3,5, kot rezultat. 883 01:02:13,000 --> 01:02:16,000 To bo dobil 3. 884 01:02:16,000 --> 01:02:19,000 Preostanek bodo zavržene, tako da je dejansko zaokroževanje 885 01:02:19,000 --> 01:02:24,000 ni okrogla, ampak tla, če ste vi poznate, da pri matematiki, 886 01:02:24,000 --> 01:02:27,000 če ste popolnoma zavreči decimalke, 887 01:02:27,000 --> 01:02:31,000 in tako si v bistvu ga oklesti navzdol na najbližjo 888 01:02:31,000 --> 01:02:33,000 celota položaj, na najbližje celo število. 889 01:02:33,000 --> 01:02:38,000 [Študent] Ampak potem je to problem, ker če imate paleto 7 elementov 890 01:02:38,000 --> 01:02:43,000 Takrat samodejno posname 3. element iz sredini namesto 4.. 891 01:02:43,000 --> 01:02:46,000 Kako ravnati s tem? 892 01:02:46,000 --> 01:02:49,000 To je problematično, saj če bi imeli niz 7, 893 01:02:49,000 --> 01:02:54,000 da bi izbrali v 3. namesto na 4. mestu. 894 01:02:54,000 --> 01:02:56,000 Ali lahko pojasnite, malo več? 895 01:02:56,000 --> 01:02:59,000 [Študent] Ker če imate 7 elementov, potem 4. element 896 01:02:59,000 --> 01:03:04,000 bi bila sredina, kajne? 897 01:03:04,000 --> 01:03:07,000 Ne pozabite, vaš komentar o tem, da nič indeksirane, čeprav. 898 01:03:07,000 --> 01:03:10,000 [Študent] Ja, tako na 3. položaju. To bi bila sredina. 899 01:03:10,000 --> 01:03:12,000 Ja. 900 01:03:12,000 --> 01:03:16,000 Oh, v redu. Vem, kaj misliš. 901 01:03:16,000 --> 01:03:19,000 To je čudno, saj navadimo na to celotno idejo 902 01:03:19,000 --> 01:03:22,000 kako se znebiti decimalk. 903 01:03:22,000 --> 01:03:26,000 To je odlična točka. 904 01:03:26,000 --> 01:03:30,000 Končajmo to gor. 905 01:03:30,000 --> 01:03:32,000 Mi smo našo izračuna srednjo vrednost. 906 01:03:32,000 --> 01:03:37,000 >> Mi smo testiranje, da vidim, če je naša igla je enaka srednji vrednosti. 907 01:03:37,000 --> 01:03:41,000 Mi tiskanje, ki smo ga našli, ampak res, kaj želimo narediti v tem primeru? 908 01:03:41,000 --> 01:03:46,000 Mi smo ga našli, zato smo želeli, da naj klicatelj vedel, da smo ga našli. 909 01:03:46,000 --> 01:03:49,000 Dobili smo nalogo, ki je logična funkcija tipkal. 910 01:03:49,000 --> 01:03:54,000 Pot nas opozori s pojasnilom našega delovanja, da smo pripravljeni za odhod 911 01:03:54,000 --> 01:03:58,000 se mi rekel: "Hej, ali je to res." 912 01:03:58,000 --> 01:04:00,000 Kako bi to naredil, Kevin? 913 01:04:00,000 --> 01:04:02,000 Ti premikajočo glavo. >> [Kevin] Dodajte vrnitev res. 914 01:04:02,000 --> 01:04:06,000 [Nate] Točno tako, return true. 915 01:04:06,000 --> 01:04:12,000 Zdaj, če to ni enako, kako bi se ozremo na levo polovico? 916 01:04:12,000 --> 01:04:16,000 Vse ideje? 917 01:04:16,000 --> 01:04:18,000 Stella, vse ideje? 918 01:04:18,000 --> 01:04:21,000 Morate določiti nov položaj za konec. 919 01:04:21,000 --> 01:04:23,000 Ja. 920 01:04:23,000 --> 01:04:29,000 Zato moramo narediti položaj sredini - konec. 921 01:04:29,000 --> 01:04:33,000 Čudovito. 922 01:04:33,000 --> 01:04:36,000 Moramo določiti nov položaj za konec 923 01:04:36,000 --> 01:04:38,000 pogled na levo polovico. 924 01:04:38,000 --> 01:04:41,000 To je tisto, kar smo že prej govorili, kjer 925 01:04:41,000 --> 01:04:44,000 Držim vrača v ta primer. 926 01:04:44,000 --> 01:04:50,000 Sem začel tukaj, in potem sem na koncu vse poti tukaj. 927 01:04:50,000 --> 01:04:53,000 >> Tudi, če iščemo 15, in naša sredina je na 16, 928 01:04:53,000 --> 01:04:56,000 in se zavedamo, "Ups, je 16 več. 929 01:04:56,000 --> 01:04:59,000 Želimo, da se premaknete na levo polovico. " 930 01:04:59,000 --> 01:05:02,000 Mi bi premaknite na konec 15, 931 01:05:02,000 --> 01:05:06,000 in delamo, da jih jemljemo 1 iz srednje 932 01:05:06,000 --> 01:05:09,000 in nastavitve, ki, kot je naš novi konca. 933 01:05:09,000 --> 01:05:12,000 Prav tako, če bomo želeli videti na desni polovici, kako bi to naredili? 934 01:05:12,000 --> 01:05:14,000 Imate idejo? 935 01:05:14,000 --> 01:05:22,000 [Študent] Vi samo nastavite začeli razpolovišča + 1. 936 01:05:22,000 --> 01:05:24,000 [Nate] Čudovito. 937 01:05:24,000 --> 01:05:29,000 In zdaj, v primeru, da ne najdemo ničesar, 938 01:05:29,000 --> 01:05:32,000 ne da bi dobili poskrbljeno za nas? 939 01:05:32,000 --> 01:05:36,000 Daniel, ne dobite, da je poskrbljeno za nas? 940 01:05:36,000 --> 01:05:38,000 [Daniel] No 941 01:05:38,000 --> 01:05:40,000 [Nate] Če nam bo uspelo skozi celoten niz in ne najdemo ničesar, 942 01:05:40,000 --> 01:05:42,000 če bi se ta poskrbljeno, ali pa bi morali poskrbeti za to? 943 01:05:42,000 --> 01:05:44,000 [Daniel] pa pogoj. 944 01:05:44,000 --> 01:05:48,000 [Nate] Ja, medtem ko je stanje, točno. 945 01:05:48,000 --> 01:05:51,000 To bo poskrbel, da bi šel skozi celoten niz, če ne bomo ničesar našli. 946 01:05:51,000 --> 01:05:53,000 To pa zanka se bo končala. 947 01:05:53,000 --> 01:05:56,000 Nikoli nismo naleteli bo to stanje, 948 01:05:56,000 --> 01:06:03,000 in se lahko vrnemo false. 949 01:06:03,000 --> 01:06:10,000 Mi lahko pustite tudi to, če sem takole 950 01:06:10,000 --> 01:06:14,000 ker če je to res, če izjavo, 951 01:06:14,000 --> 01:06:16,000 in bo naša funkcija vrne, 952 01:06:16,000 --> 01:06:21,000 in tako bomo na osnovi prekiniti ta funkcija na tej točki 953 01:06:21,000 --> 01:06:24,000 Ko se vrnemo, res. 954 01:06:24,000 --> 01:06:28,000 Toda kaj se zgodi s to strukturo tukaj? 955 01:06:28,000 --> 01:06:34,000 Bo to delovalo v celoti, ali pa je nekaj logično napaka tam? 956 01:06:34,000 --> 01:06:37,000 >> Tukaj je nekaj logično napako tam, s tem, kako se je ustanovljena. 957 01:06:37,000 --> 01:06:40,000 Kaj bi lahko bilo? 958 01:06:40,000 --> 01:06:43,000 [Študent] Zakaj potrebujemo - in + 1s? 959 01:06:43,000 --> 01:06:47,000 To postavlja našo paleto gor, da je naša nova leva polovica in desno polovico. 960 01:06:47,000 --> 01:06:51,000 [Študent] Ampak zakaj nisi mogel to storiti brez - 1s in + 1s? 961 01:06:51,000 --> 01:06:53,000 [Nate] Lahko bi ga postavi na sredini? 962 01:06:53,000 --> 01:07:04,000 Kaj bi lahko bilo problematično glede tega? 963 01:07:04,000 --> 01:07:08,000 [Študent] Mislim, da je neučinkovito, ker ste preverjanje vrednosti, ki je že potrjeno. 964 01:07:08,000 --> 01:07:11,000 [Nate] Točno tako Sam je popolnoma v redu. 965 01:07:11,000 --> 01:07:15,000 Če nastavite konec in začeti enako sredini 966 01:07:15,000 --> 01:07:18,000 namesto - 1 + 1 in refleksivno, 967 01:07:18,000 --> 01:07:22,000 na neki točki v prihodnosti bomo končali srednjo preverjanje znova. 968 01:07:22,000 --> 01:07:26,000 [Študent], sem začel pset, nato pa sem imel nekaj takega 969 01:07:26,000 --> 01:07:30,000 kjer sem pozabil + 1, in je obtičala v neskončno zanko. 970 01:07:30,000 --> 01:07:34,000 Seveda, ker na neki točki nikoli ne boš, da se začne in konča 971 01:07:34,000 --> 01:07:39,000 dejansko prekrivata. 972 01:07:39,000 --> 01:07:41,000 Kul. 973 01:07:41,000 --> 01:07:44,000 Še ena logična napaka, in to je, da bi to zagotovo 974 01:07:44,000 --> 01:07:48,000 if. 975 01:07:48,000 --> 01:07:55,000 Zakaj bi to lahko bilo? 976 01:07:55,000 --> 01:07:59,000 >> Razlog za to je, če ni drugega, če-si videl to, Kevin? 977 01:07:59,000 --> 01:08:02,000 [Kevin] Ja, ker ste spreminjanje končne točke. 978 01:08:02,000 --> 01:08:05,000 [Nate] Točno tako. 979 01:08:05,000 --> 01:08:07,000 Mi smo spreminja končno točko, 980 01:08:07,000 --> 01:08:12,000 in če je napisal, kot je ta-Bomo lahko presledke med- 981 01:08:12,000 --> 01:08:14,000 da bo preveril ta primer. 982 01:08:14,000 --> 01:08:18,000 Ta primer, če mu ne uspe, bo preklic, iz funkcije. 983 01:08:18,000 --> 01:08:21,000 Nato bo preveril to naslednji primer, 984 01:08:21,000 --> 01:08:24,000 in če to uspe, bo nastavitev končne točke, 985 01:08:24,000 --> 01:08:28,000 nato pa se bo nadaljevalo in preverite ta primer. 986 01:08:28,000 --> 01:08:31,000 Toda na tej točki, ne želimo, da še naprej preverjam. 987 01:08:31,000 --> 01:08:35,000 Na srečo nismo ponastaviti srednjo tukaj, 988 01:08:35,000 --> 01:08:39,000 in vemo, da v tem primeru ne bo uspelo. 989 01:08:39,000 --> 01:08:44,000 Ampak definitivno želim postaviti drugega, če tam 990 01:08:44,000 --> 01:08:48,000 čeprav je morda, v tem primeru 991 01:08:48,000 --> 01:08:52,000 saj smo ne prilagaja srednjo vrednost, bi to pomembno? 992 01:08:52,000 --> 01:08:54,000 Ne, ker so ti primeri so na voljo samo. 993 01:08:54,000 --> 01:08:58,000 Še enkrat, moja napaka. 994 01:08:58,000 --> 01:09:01,000 Ne, mislim, da potrebujem drugega, če. 995 01:09:01,000 --> 01:09:05,000 Lahko, da ga poskusite in ga zaženite in videli, kaj se bo zgodilo. 996 01:09:05,000 --> 01:09:08,000 Zgradba, je prišlo do napake. 997 01:09:08,000 --> 01:09:12,000 To je verjetno zato, ker sem pustil ti b in e je tukaj. 998 01:09:12,000 --> 01:09:14,000 Ali imam vse več tistih, ki na vrhu? 999 01:09:14,000 --> 01:09:16,000 To ne izgleda tako. 1000 01:09:16,000 --> 01:09:20,000 Mi pomanjšati, gradnjo, 1001 01:09:20,000 --> 01:09:24,000 tam gre, tako da zdaj, če iščemo 15, 1002 01:09:24,000 --> 01:09:28,000 ja. 1003 01:09:28,000 --> 01:09:30,000 Naj povečate palca 1004 01:09:30,000 --> 01:09:33,000 15, ja. Lahko ga ponovno zaženete. 1005 01:09:33,000 --> 01:09:36,000 Nalaganje izvorne kode, gradnjo, tek. 1006 01:09:36,000 --> 01:09:41,000 Mi lahko iščete nekaj kot 13, 1007 01:09:41,000 --> 01:09:45,000 in ne bomo dobili ničesar tiskanje, tako da to ni ugotovila, da za nas. 1008 01:09:45,000 --> 01:09:51,000 To je super, ker to ni v našem seznamu. 1009 01:09:51,000 --> 01:09:53,000 >> Zdaj smo prepozno. 1010 01:09:53,000 --> 01:09:55,000 To se dogaja, da se je za ta teden. 1011 01:09:55,000 --> 01:10:00,000 Hvala za vstop, in se vidimo kasneje. 1012 01:10:00,000 --> 01:10:02,000 >> [CS50.TV]