1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [3. §] [Kevesebb Comfortable] 2 00:00:03,000 --> 00:00:05,000 >> [Nate Hardison] [Harvard Egyetem] 3 00:00:05,000 --> 00:00:08,000 >> [Ez a CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:10,000 >> Rendben, kezdjük. 5 00:00:10,000 --> 00:00:13,000 Üdvözöljük a héten 4-CS50. 6 00:00:13,000 --> 00:00:19,000 Ha a srácok nyit egy böngészőt, és nyissa ki Pset 3, 7 00:00:19,000 --> 00:00:23,000 Scramble a CS50, fogunk kezdeni megy 8 00:00:23,000 --> 00:00:26,000 a szakasz a kérdések ott. 9 00:00:26,000 --> 00:00:32,000 Csakúgy, mint a múlt héten, fogunk dolgozni CS50 Spaces, 10 00:00:32,000 --> 00:00:35,000 Ha akkor is húzza, hogy ki is, 11 00:00:35,000 --> 00:00:43,000 és ha megy előre, és látogasson meg ezt a linket, hogy kaptam ide a tetején. 12 00:00:43,000 --> 00:00:45,000 Itt az ideje, hogy elkezdjük. 13 00:00:45,000 --> 00:00:51,000 Megvan a mi kis hi program itt. Semmi őrült. 14 00:00:51,000 --> 00:00:55,000 Az egyik első dolog, amit akarok veletek ma megy át néhány megoldás 15 00:00:55,000 --> 00:00:58,000 A probléma Set 1, ilyen példa megoldások 16 00:00:58,000 --> 00:01:03,000 csak azért, hogy kedvet kapjanak, hogy milyen kód személyzet írás, 17 00:01:03,000 --> 00:01:07,000 milyen kód többi diák írunk, 18 00:01:07,000 --> 00:01:10,000 és veszel egy pillantást, mert tudom, hogy ez furcsa 19 00:01:10,000 --> 00:01:14,000 ha be megoldást a problémára meg, és kap észrevételek 20 00:01:14,000 --> 00:01:18,000 a saját verzióját, de néha hasznos látni, mások hogyan csinálta, 21 00:01:18,000 --> 00:01:22,000 különösen azokat, amelyek szép látszó. 22 00:01:22,000 --> 00:01:27,000 A legtöbb, én nagyon lenyűgözött a megoldásokat, hogy ti elő. 23 00:01:27,000 --> 00:01:31,000 Még nem kezdődött nézi a Problem Set 2s, de ha ők valami, mint az első, 24 00:01:31,000 --> 00:01:34,000 azt jelenti, hogy semmi, de a jó dolgok. 25 00:01:34,000 --> 00:01:40,000 >> Ha megnézed az én felülvizsgálata, kezdjük egészen a Revision 1, 26 00:01:40,000 --> 00:01:47,000 és megyünk, hogy egy gyors pillantást a Mario megoldást. 27 00:01:47,000 --> 00:01:54,000 Ha kihúzza ezt fel, ezek a programok, hogy fogunk bemutatni helyesek. 28 00:01:54,000 --> 00:01:56,000 Ben nem volt helyességét kérdések ezeket a problémákat, hanem inkább, 29 00:01:56,000 --> 00:01:59,000 akarunk beszélni egy kicsit, ami a különböző tervezési kérdések 30 00:01:59,000 --> 00:02:03,000 ben éppen használt itt. 31 00:02:03,000 --> 00:02:08,000 Az egyik dolog, ami érdekes volt, ami a megoldás 32 00:02:08,000 --> 00:02:11,000 az, hogy használják ezt az új konstrukciót nevű font meghatározni, 33 00:02:11,000 --> 00:02:15,000 néha nevezik még mint egy hash meghatározni. 34 00:02:15,000 --> 00:02:18,000 Hadd nagyítani itt. 35 00:02:18,000 --> 00:02:24,000 A # define lehetővé teszi, hogy neveket ezeket a számokat a programban. 36 00:02:24,000 --> 00:02:28,000 Ebben az esetben, a maximális magasságot a piramis Mario 37 00:02:28,000 --> 00:02:34,000 volt, 23 és ahelyett, hogy a 23 my code- 38 00:02:34,000 --> 00:02:37,000 mi lenne, nézze meg, hogy a kemény kódolás 23 - 39 00:02:37,000 --> 00:02:43,000 ehelyett ez adja a nevét MAX_HEIGHT e számot, 40 00:02:43,000 --> 00:02:48,000 annak érdekében, hogy ide az én do-while ciklus 41 00:02:48,000 --> 00:02:51,000 akkor valóban, nézze meg a MAX_HEIGHT 42 00:02:51,000 --> 00:02:55,000 ahelyett, hogy a szám 23 hüvelyk 43 00:02:55,000 --> 00:02:57,000 [Diák] Mi az előnye ennek, hogy? 44 00:02:57,000 --> 00:02:59,000 Ez egy jó kérdés. 45 00:02:59,000 --> 00:03:03,000 Az egyik az olvashatóságot. 46 00:03:03,000 --> 00:03:08,000 Egyik előnye használatával # define van olvashatóságot. 47 00:03:08,000 --> 00:03:11,000 Amikor olvasom ezt a kódot, látom, hogy mi folyik itt. 48 00:03:11,000 --> 00:03:15,000 >> Látom, ebben az állapotban, hogy itt vagyunk tesztelés 49 00:03:15,000 --> 00:03:19,000 a magasság, hogy <0, amit lehetett is meghatározott 50 00:03:19,000 --> 00:03:22,000 hogy egy minimális magasság, vagy a magasság min. 51 00:03:22,000 --> 00:03:25,000 A másik előnye, hogy tudok majd olvassa el a többi sort, hogy lásd 52 00:03:25,000 --> 00:03:30,000 hogy mi is ellenőrzi, hogy győződjön meg arról, hogy magassága nem nagyobb, mint a max magasság, 53 00:03:30,000 --> 00:03:35,000 mert megyünk tovább, míg a magassága nagyobb, mint a maximális magasságot. 54 00:03:35,000 --> 00:03:40,000 A másik előny, ha kicsinyíteni egy kicsit itt- 55 00:03:40,000 --> 00:03:49,000 ha futtatni ezt a programot, és elindul, mondjuk, 23 most, 56 00:03:49,000 --> 00:03:52,000 kiírja a 23 sort csak úgy. 57 00:03:52,000 --> 00:03:54,000 De azt akartam változtatni a max magasság, 58 00:03:54,000 --> 00:03:57,000 és most azt akarom, hogy korlátozza a maximális magasság piramisok 59 00:03:57,000 --> 00:04:06,000 hogy csak mondja ember, volt funky. 60 00:04:06,000 --> 00:04:14,000 # Include , # define MAX_HEIGHT, 61 00:04:14,000 --> 00:04:18,000 és mondjuk akartuk állítani egyenlő 10-ig. 62 00:04:18,000 --> 00:04:22,000 Most, ezen a ponton, annyit kellett tennem, hogy változtatni ebben az egy helyen. 63 00:04:22,000 --> 00:04:27,000 Tudom újrafordítani a kódot, és most ha megpróbálom, és írja be 12, 64 00:04:27,000 --> 00:04:30,000 akkor kérni fogja megint. 65 00:04:30,000 --> 00:04:33,000 Ebben az esetben, mi csak használ MAX_HEIGHT egyszer. 66 00:04:33,000 --> 00:04:37,000 Ez nem olyan nagy gond bemenni 67 00:04:37,000 --> 00:04:40,000 és változtassa meg a while ciklus, ha kell. 68 00:04:40,000 --> 00:04:44,000 De a programokban, ahol te hivatkozva ugyanazt a bűvös számot 69 00:04:44,000 --> 00:04:47,000 újra és újra, a # define mechanizmus valóban hasznos 70 00:04:47,000 --> 00:04:52,000 mert csak változtatni egyszer a tetején a fájl-ez általában hová tette őket, 71 00:04:52,000 --> 00:04:57,000 és a változás átszivárog a többi fájlt. 72 00:04:57,000 --> 00:05:02,000 >> Más dolog akartam megjegyezni ezt a feladatot, hogy azt hittem nézett igazán szép, 73 00:05:02,000 --> 00:05:05,000 az egyik volt az elnevezése a változók. 74 00:05:05,000 --> 00:05:14,000 Látod, hogy itt megvan integer változók nevű sort és a hívott magasságát. 75 00:05:14,000 --> 00:05:20,000 Spaces, hash, ez segít, hogy a kódot egy kicsit olvashatóbb, 76 00:05:20,000 --> 00:05:25,000 teszi, hogy egy kicsit érthető, hogy mi folyik itt valójában. 77 00:05:25,000 --> 00:05:31,000 Ez ellentétben van a használó, mondjuk, véletlen betűk 78 00:05:31,000 --> 00:05:35,000 vagy csak halandzsa összesen. 79 00:05:35,000 --> 00:05:39,000 Az utolsó dolog, amit majd rámutatni, hogy a hurkok, 80 00:05:39,000 --> 00:05:45,000 gyakran ezek iterator változók, ezek a számlálók, hogy használja a számára hurkok, 81 00:05:45,000 --> 00:05:51,000 ez a szabvány és a hagyományos kezdeni őket vagy i, majd a j és k, majd 82 00:05:51,000 --> 00:05:54,000 és folyik onnan, ha szüksége van több változó, 83 00:05:54,000 --> 00:05:56,000 és ez csak egy ilyen egyezmény. 84 00:05:56,000 --> 00:05:58,000 Sok egyezményeket. 85 00:05:58,000 --> 00:06:00,000 Attól függ, hogy a programozási nyelv, amit használ. 86 00:06:00,000 --> 00:06:04,000 De C, tipikusan azzal kezdik, i. 87 00:06:04,000 --> 00:06:08,000 Ennek nincs értelme használni, mondjuk, a vagy a b 88 00:06:08,000 --> 00:06:13,000 a helyzettől függően. 89 00:06:13,000 --> 00:06:15,000 Ennyi ez. 90 00:06:15,000 --> 00:06:25,000 Ha most húzza fel Rev. 2, akkor egy másik, Mario, 91 00:06:25,000 --> 00:06:29,000 és ez hasonló a másik, hogy csak látta, 92 00:06:29,000 --> 00:06:32,000 de ez nem valami fajta cool. 93 00:06:32,000 --> 00:06:38,000 Ha megnézzük ezt a részt itt belül a belső for ciklus, 94 00:06:38,000 --> 00:06:44,000 ők segítségével néhány őrült keresi szintaxist itt van ebben a sorban. 95 00:06:44,000 --> 00:06:47,000 Ez az úgynevezett hármas operátor. 96 00:06:47,000 --> 00:06:53,000 Ez egy, ha mást nyilatkozatot sűrűsödnek egy sort. 97 00:06:53,000 --> 00:06:57,000 Az a feltétel, ez részben a zárójelben. 98 00:06:57,000 --> 00:07:05,000 Ez egyenértékű a mondás, ha j 00:07:10,000 És akkor mi a tartalma, hogy ha a mondat lenne a tér 100 00:07:10,000 --> 00:07:16,000 majd a tartalmát, amit a más lenne itt a #. 101 00:07:16,000 --> 00:07:20,000 Ez lényegében hozzárendel egy helyet ezt a változót. 102 00:07:20,000 --> 00:07:24,000 Ez elhelyez egy helyet a tartalmát a tömb változó, 103 00:07:24,000 --> 00:07:29,000 ha ez a feltétel teljesül, és ha a feltétel nem teljesül, 104 00:07:29,000 --> 00:07:32,000 akkor a blokk változó megkapja ezt a #. 105 00:07:32,000 --> 00:07:37,000 És aztán, persze, ahelyett, hogy az épület egy teljes szöveg 106 00:07:37,000 --> 00:07:43,000 és nyomtatás mindent a végén ez a megoldás kinyomtatja egy karaktert egy időben. 107 00:07:43,000 --> 00:07:48,000 Pretty cool. 108 00:07:48,000 --> 00:07:53,000 >> Egy másik pár dolog, hogy nézd meg. Fogunk lépni kapzsi. 109 00:07:53,000 --> 00:07:58,000 Most, ha megnézzük a kapzsi, az első megoldás 110 00:07:58,000 --> 00:08:00,000 használja ezeket # meghatározza egy kicsit. 111 00:08:00,000 --> 00:08:06,000 Van egy állandó meghatározott minden egyes különböző számok ebben a programban. 112 00:08:06,000 --> 00:08:12,000 Van egy-egy cent dollár, egy negyed, Dimes, Nickels, és fillérekért, 113 00:08:12,000 --> 00:08:15,000 és most ha görgessen le, és olvasd el a kódot, 114 00:08:15,000 --> 00:08:22,000 láthatjuk a standard do-while ciklus nyomtatás mindent. 115 00:08:22,000 --> 00:08:25,000 Kind of a középpontjában az a probléma is rájött, hogy 116 00:08:25,000 --> 00:08:29,000 ha szükséges, átalakítani a float, hogy elolvassa-ból, hogy a felhasználó egy egész 117 00:08:29,000 --> 00:08:32,000 hogy pontosan ezt a matek, és ez azért van, mert 118 00:08:32,000 --> 00:08:36,000 A lebegőpontos számok, mint beszélgettünk előadás röviden 119 00:08:36,000 --> 00:08:41,000 ez nem lehet pontosan képviselje minden egyes érték a számegyenesen 120 00:08:41,000 --> 00:08:47,000 mert végtelen sok értéke 3 és, mondjuk, 3,1 még. 121 00:08:47,000 --> 00:08:54,000 Egyszerre 3,01 és 3,001 és 3,0001, és akkor folyamatosan megy. 122 00:08:54,000 --> 00:09:00,000 Kiderült, hogy amikor dolgozik, pénzt, gyakran szeretnénk konvertálni 123 00:09:00,000 --> 00:09:05,000 figyelembe integer formátumban, hogy ön nem veszít fillérekért és ilyesmi. 124 00:09:05,000 --> 00:09:09,000 Ezzel, hogy a kerekítés és a kulcsfontosságú volt. 125 00:09:09,000 --> 00:09:14,000 Ez a megoldás használható a tökéletesen egyenes, nagy algoritmus, 126 00:09:14,000 --> 00:09:17,000 amely csökkentjük számát cent maradt, először negyedévben, 127 00:09:17,000 --> 00:09:19,000 majd Dimes, majd Nickels, majd fillérekért, 128 00:09:19,000 --> 00:09:24,000 , és hozzátéve, hogy a szám az érmék minden egyes alkalommal. 129 00:09:24,000 --> 00:09:31,000 >> A másik megoldás, hogy majd meglátjuk, ahogy kicsinyítés és menj Revision 4, 130 00:09:31,000 --> 00:09:40,000 Volt egy nagyon hasonló elején, de ehelyett div és mod 131 00:09:40,000 --> 00:09:44,000 jog ide kiszámításához számának cent. 132 00:09:44,000 --> 00:09:50,000 Ez a szám a negyedek megegyezik a számát cent osztva 25, 133 00:09:50,000 --> 00:09:53,000 és az ok ez működik, mert csinálunk egész osztás, 134 00:09:53,000 --> 00:09:58,000 így ez öntsük a maradékot. 135 00:09:58,000 --> 00:10:02,000 [Student] Muszáj véleményét a keresést? 136 00:10:02,000 --> 00:10:05,000 Tényleg attól függ. 137 00:10:05,000 --> 00:10:08,000 [Student] Te kommentálva több kódot itt. 138 00:10:08,000 --> 00:10:16,000 Igen, így van egy csomó különböző filozófiák erre. 139 00:10:16,000 --> 00:10:21,000 Az én személyes filozófiám az, hogy a kód valóban az igazság, 140 00:10:21,000 --> 00:10:24,000 mint a kód az, ami valójában végrehajtó a számítógépen, 141 00:10:24,000 --> 00:10:29,000 és így a kódot kell lenniük olvasható a lehető nem teszi szükségessé, mint sok hozzászólás. 142 00:10:29,000 --> 00:10:33,000 Igaz, amikor a dolgok, hogy az a fajta trükkös matematikailag 143 00:10:33,000 --> 00:10:38,000 vagy algoritmikusan, jó Komment azokat, így Ön 144 00:10:38,000 --> 00:10:43,000 adjunk hozzá egy extra dimenzióval, egy extra réteg aki olvas a kódot. 145 00:10:43,000 --> 00:10:49,000 E megoldások gyakran megjegyzésbe erőteljesebben csak azért, mert 146 00:10:49,000 --> 00:10:52,000 azt akarjuk, hogy képes legyen terjeszteni őket, és az emberek értük 147 00:10:52,000 --> 00:10:56,000 és olvassa el elég könnyen. 148 00:10:56,000 --> 00:11:05,000 De biztosan, Egyetértek azzal, hogy ez a nehéz. 149 00:11:05,000 --> 00:11:07,000 [Student] De kétség esetén, menj nehezebb? 150 00:11:07,000 --> 00:11:10,000 Ha kétségeid vannak, menj nehezebb. 151 00:11:10,000 --> 00:11:17,000 Egyesek néha azt mondják return 0, vagy valami ilyesmi. 152 00:11:17,000 --> 00:11:20,000 Azt hiszem, ez egy nevetséges megjegyzést. 153 00:11:20,000 --> 00:11:22,000 Egyértelmű, hogy ez mi történik. 154 00:11:22,000 --> 00:11:25,000 Nem kell angolul mondani nekem. 155 00:11:25,000 --> 00:11:28,000 Néha az emberek fogja írni dolgokat, mint a "kthxbai!" 156 00:11:28,000 --> 00:11:32,000 Ez aranyos, hanem a nem- 157 00:11:32,000 --> 00:11:35,000 ez nem teszi a különbség kommentálva pont vagy sem. 158 00:11:35,000 --> 00:11:41,000 E típusú megjegyzés csak ha, ha. 159 00:11:41,000 --> 00:11:43,000 Cool. 160 00:11:43,000 --> 00:11:48,000 >> Ezen a ponton, kezdjük dolgozni a probléma Set 3 részén kérdésekre. 161 00:11:48,000 --> 00:11:52,000 Ha a srácok húzza ezt fel újra, 162 00:11:52,000 --> 00:11:55,000 mint a múlt héten, nem fogunk nézni a rövidnadrág ebben a fejezetben. 163 00:11:55,000 --> 00:12:00,000 Fogjuk srácok csinálni a saját idő és beszélni a kérdéseket. 164 00:12:00,000 --> 00:12:05,000 De most, ebben a fejezetben fogunk tölteni egy kis időt 165 00:12:05,000 --> 00:12:11,000 beszél kevesebbet a kódoló alapokat 166 00:12:11,000 --> 00:12:15,000 mint mi a múlt héten, és helyette fogunk nagyobb hangsúlyt fektet 167 00:12:15,000 --> 00:12:22,000 egy kicsit több az elmélet, így beszél bináris keresés, majd a válogatás. 168 00:12:22,000 --> 00:12:27,000 Azoktól, akik már követően együtt az előadás, 169 00:12:27,000 --> 00:12:30,000 tud valaki adjon nekem egy bedugni mi a különbség 170 00:12:30,000 --> 00:12:35,000 közötti bináris keresés és lineáris keresést? 171 00:12:35,000 --> 00:12:37,000 Mi folyik itt? Persze. 172 00:12:37,000 --> 00:12:42,000 Lineáris keresés keresések keresztül minden eleme a rendezett lista 173 00:12:42,000 --> 00:12:45,000 egyenként egy egy-egy, 174 00:12:45,000 --> 00:12:50,000 és bináris keresés osztja a listát 2 csoportra, 175 00:12:50,000 --> 00:12:57,000 ellenőrzi, hogy a kulcs értéke, amit keresett nagyobb vagy kisebb, mint a középpont érték 176 00:12:57,000 --> 00:13:00,000 hogy csak talált, és ha ez kevesebb, mint magától az alsó lista 177 00:13:00,000 --> 00:13:03,000 majd oszt hogy ismét, nem ugyanazt a funkciót 178 00:13:03,000 --> 00:13:07,000 egészen addig, amíg meg nem találja a felezőpontja legyen egyenlő az érték is. 179 00:13:07,000 --> 00:13:10,000 Rendben. 180 00:13:10,000 --> 00:13:12,000 >> Miért érdekel? 181 00:13:12,000 --> 00:13:20,000 Miért beszélünk bináris keresés versus lineáris keresést? 182 00:13:20,000 --> 00:13:22,000 Igen. 183 00:13:22,000 --> 00:13:24,000 Binary sokkal gyorsabb, így ha kétszer a méret a probléma 184 00:13:24,000 --> 00:13:27,000 vesz egy lépés helyett kétszer annyi. 185 00:13:27,000 --> 00:13:29,000 Pontosan. 186 00:13:29,000 --> 00:13:31,000 Ez egy jó válasz. 187 00:13:31,000 --> 00:13:36,000 Lineáris keresés nagyon ellenőrzi az egyik eleme egy időben, 188 00:13:36,000 --> 00:13:39,000 és mint láttuk az első nap előadás 189 00:13:39,000 --> 00:13:42,000 Amikor Dávid ment keresztül a telefonkönyvben például 190 00:13:42,000 --> 00:13:45,000 és kitépték egy oldal a telefonkönyv egy időben 191 00:13:45,000 --> 00:13:47,000 és folyamatosan csinálja újra és újra és újra, 192 00:13:47,000 --> 00:13:51,000 ez fog tartani neki egy nagyon hosszú idő, hogy megtalálja valaki a telefonkönyvben, 193 00:13:51,000 --> 00:13:55,000 kivéve persze, ő keresett valakit legelején az ábécé. 194 00:13:55,000 --> 00:14:00,000 A bináris keresés, akkor lehet menni egy sokkal gyorsabb, 195 00:14:00,000 --> 00:14:05,000 és ez nem csak kétszer olyan gyors, vagy 3-szor olyan gyors, vagy 4-szer olyan gyorsan. 196 00:14:05,000 --> 00:14:13,000 De a probléma egyre kisebb és kisebb és kisebb sokkal gyorsabb. 197 00:14:13,000 --> 00:14:17,000 Ennek illusztrálására, akkor elkezd beszélni arról, hogy mi folyik itt 198 00:14:17,000 --> 00:14:21,000 amikor levelet bináris keresés. 199 00:14:21,000 --> 00:14:27,000 A probléma viszont az, hogy ha van egy sor számok, 200 00:14:27,000 --> 00:14:40,000 mondjuk, 1, 2, 3, 5, 7, 23, 45, 78, 12.323, 201 00:14:40,000 --> 00:14:47,000 majd 9 egy csomó 0s után, 202 00:14:47,000 --> 00:14:52,000 azt akarjuk, hogy képes legyen kitalálni, hogy nagyon gyorsan, hogy mi van 203 00:14:52,000 --> 00:14:57,000 ezt a tömböt a számok. 204 00:14:57,000 --> 00:15:00,000 Tudom, hogy ez úgy tűnik, egy kicsit buta, és egy kicsit kitalált, 205 00:15:00,000 --> 00:15:02,000 mert most van. 206 00:15:02,000 --> 00:15:05,000 Van egy tömb, amely nem nagyon sok eleme benne, 207 00:15:05,000 --> 00:15:08,000 és ha megkérdezem az egyik, hogy kitaláljuk, vagy nem 208 00:15:08,000 --> 00:15:11,000 23 van a tömb, meg tudod csinálni, hogy elég gyorsan 209 00:15:11,000 --> 00:15:16,000 csak a pillantva ezt, és azt mondja igen vagy nem. 210 00:15:16,000 --> 00:15:20,000 Az analóg, hogy fontolja meg elképzelni, ha ez, mondjuk, 211 00:15:20,000 --> 00:15:27,000 Excel táblázatkezelő 10.000 sorok, 20.000 sorokat. 212 00:15:27,000 --> 00:15:31,000 Persze, meg tudod csinálni a parancsot F vagy az ellenőrző F és keresni valamit. 213 00:15:31,000 --> 00:15:33,000 Ön is használja a szűrőket és a keresési stuff, 214 00:15:33,000 --> 00:15:37,000 de ha kellett, hogy nézze át a fájlt soronként sorra, 215 00:15:37,000 --> 00:15:40,000 lenne szükség egy hosszú idő, hogy megtalálja. 216 00:15:40,000 --> 00:15:42,000 Ez olyan, mint a telefonkönyvben példa is, ahol 217 00:15:42,000 --> 00:15:44,000 senki sem úgy néz ki, egy telefonkönyvet egy oldalt egy időben. 218 00:15:44,000 --> 00:15:47,000 Jellemzően ők nyissa meg a középső, 219 00:15:47,000 --> 00:15:50,000 illetve abban az esetben, egy csomó telefon könyvek és szótárak, ha 220 00:15:50,000 --> 00:15:54,000 Ön ténylegesen nem írtunk az első levelet, 221 00:15:54,000 --> 00:16:01,000 flip hogy az első levelet, és nyissa ki és indítsa megy keresztül ott. 222 00:16:01,000 --> 00:16:03,000 >> Emlékeztessen a neved. >> Sam. 223 00:16:03,000 --> 00:16:05,000 Sam. 224 00:16:05,000 --> 00:16:11,000 Mint Sam azt mondta, hogy a lineáris keresési folyamat lesz nagyon lassú, 225 00:16:11,000 --> 00:16:15,000 és helyette a bináris keresés, az Így működik az, hogy a 226 00:16:15,000 --> 00:16:21,000 minden alkalommal, amikor megyünk keresztül iterációs mi kereső algoritmus, 227 00:16:21,000 --> 00:16:27,000 fogunk osztani a lista fele, lényegében 228 00:16:27,000 --> 00:16:33,000 két kisebb listákat. 229 00:16:33,000 --> 00:16:39,000 És aztán a következő iteráció a hurok, akkor osszuk újra 230 00:16:39,000 --> 00:16:44,000 más kisebb listákat. 231 00:16:44,000 --> 00:16:48,000 Mint látható, a probléma folyamatosan egyre kisebb és kisebb 232 00:16:48,000 --> 00:16:55,000 mert megtartjuk visszadobás felét a lista minden egyes alkalommal. 233 00:16:55,000 --> 00:16:59,000 Hogyan működik ez a visszaengedett munkát? 234 00:16:59,000 --> 00:17:05,000 Csak emlékeztetőül, hogy mit fogunk tenni, ha mi voltunk a számítógép 235 00:17:05,000 --> 00:17:11,000 és azt is, mondjuk, keressük a 5-ös szám a listán 236 00:17:11,000 --> 00:17:15,000 az, hogy mi lenne, válasszon egy számot a közepén. 237 00:17:15,000 --> 00:17:26,000 A közepén a lista, mert az 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 szám, 238 00:17:26,000 --> 00:17:32,000 mi lenne felvenni a szám akár a 4. pozíció, illetve az 5. pozíció, 239 00:17:32,000 --> 00:17:38,000 és azt nevezném, hogy a közepén a lista. 240 00:17:38,000 --> 00:17:42,000 Pick szám közepén. 241 00:17:42,000 --> 00:17:51,000 Aztán, ahogy Sam azt mondta, akkor ellenőrizze, hogy ha ez a szám megegyezik 242 00:17:51,000 --> 00:17:59,000 A szám, amit akarnak, vagy a kívánt számot. 243 00:17:59,000 --> 00:18:06,000 Ha ez megegyezik, akkor találtuk meg. Mi nyerni. 244 00:18:06,000 --> 00:18:12,000 Ha ez nem egyenlő, akkor van egy pár esetben. 245 00:18:12,000 --> 00:18:15,000 A két eset vagy a szám nagyobb lesz, mint a keresünk, 246 00:18:15,000 --> 00:18:19,000 vagy ez kevesebb. 247 00:18:19,000 --> 00:18:25,000 Ha ez nagyobb, haladunk jobbra. 248 00:18:25,000 --> 00:18:33,000 És ha ez kevesebb, akkor lépjen a bal oldalon. 249 00:18:33,000 --> 00:18:41,000 És akkor ismételjük meg az egész folyamatot újra 250 00:18:41,000 --> 00:18:48,000 sem a jobb oldalán vagy a bal fele a listán. 251 00:18:48,000 --> 00:18:51,000 >> Az első probléma a mai szakasz kitalálni 252 00:18:51,000 --> 00:18:55,000 hogyan tudjuk valójában kezdeni, hogy ezt a C kódot. 253 00:18:55,000 --> 00:18:58,000 Megvan a pszeudokód itt. 254 00:18:58,000 --> 00:19:04,000 Mit fogunk kezdeni ezzel a Kihúzom egy vadonatúj space, 255 00:19:04,000 --> 00:19:09,000 menteni a felülvizsgálat annak érdekében, hogy már ezek a jegyzetek a későbbi, 256 00:19:09,000 --> 00:19:20,000 fogjuk törölni az összes e, majd másolja a probléma set 257 00:19:20,000 --> 00:19:26,000 ezt az információt a tereket, és remélhetőleg ez nem törik el. 258 00:19:26,000 --> 00:19:28,000 Tökéletes. 259 00:19:28,000 --> 00:19:33,000 Ha a srácok mind ezt, másolja és illessze be ezt a kódot az új helyet, 260 00:19:33,000 --> 00:19:43,000 egy üres 1. 261 00:19:43,000 --> 00:19:47,000 Próbáljuk meg Daniel. Ha fordításához és futtatásához a program működik? 262 00:19:47,000 --> 00:19:49,000 No. >> Ez mit mond? 263 00:19:49,000 --> 00:19:53,000 Azt mondja, a vezérlő eléri end of non-void funkciót. 264 00:19:53,000 --> 00:19:55,000 Igen, hadd próbálja fut. 265 00:19:55,000 --> 00:19:59,000 Láttátok ezt korábban? Tudja, hogy ez mit jelent? 266 00:19:59,000 --> 00:20:01,000 Oké, boncolgatni ezt egy kicsit. 267 00:20:01,000 --> 00:20:10,000 Ez mondja meg file.c on line 9, 1 oszlop van egy hiba, ahogy mondtad, 268 00:20:10,000 --> 00:20:16,000 és azt mondja, hogy ez fakadó hiba figyelmeztetést és a visszatérési típus figyelmeztetést. 269 00:20:16,000 --> 00:20:18,000 Úgy néz ki, mintha valami folyik a visszatérési típusa, ami teljesen érthető. 270 00:20:18,000 --> 00:20:21,000 Van egy non-void függvényt, ami azt jelenti, hogy van egy funkció 271 00:20:21,000 --> 00:20:24,000 hogy nem tér vissza semmis. 272 00:20:24,000 --> 00:20:27,000 A void függvény az egyik, hogy így néz ki: 273 00:20:27,000 --> 00:20:35,000 void foo (), és ez semmis, mivel a visszatérési típusa void, 274 00:20:35,000 --> 00:20:38,000 ami azt jelenti, hogy ha volt valami itt 275 00:20:38,000 --> 00:20:45,000 mint a return 1, akkor lennék a fordító hibát erre. 276 00:20:45,000 --> 00:20:49,000 Azonban van egy non-void funkciót. 277 00:20:49,000 --> 00:20:51,000 A non-void funkció ebben az esetben a keresési funkció 278 00:20:51,000 --> 00:20:56,000 mert van egy visszatérési típus bool. 279 00:20:56,000 --> 00:20:59,000 Amikor mondja, hogy az ellenőrzési eléri a végét nem void funkció, 280 00:20:59,000 --> 00:21:02,000 azért, mert keresésre nincs return utasítást. 281 00:21:02,000 --> 00:21:04,000 Ez nem vissza semmit típusú bool. 282 00:21:04,000 --> 00:21:09,000 >> Meg tudod oldani, hogy az, és mit gondoltok, srácok 283 00:21:09,000 --> 00:21:13,000 keresés vissza kell alapértelmezés szerint? 284 00:21:13,000 --> 00:21:16,000 Milyen legyen az alapértelmezett visszatérési értéke search? 285 00:21:16,000 --> 00:21:19,000 Mert ez az, amit tudunk rakni a végén. 286 00:21:19,000 --> 00:21:21,000 Charlotte, van valami-? 287 00:21:21,000 --> 00:21:23,000 Igaz vagy hamis? >> Igaz vagy hamis. 288 00:21:23,000 --> 00:21:26,000 Melyik? 289 00:21:26,000 --> 00:21:28,000 Hamis. Nem tudom. 290 00:21:28,000 --> 00:21:30,000 Hamis? Próbáljuk meg. 291 00:21:30,000 --> 00:21:32,000 Miért mondod return false? Ez nagyszerű intuíció. 292 00:21:32,000 --> 00:21:35,000 [Charlotte] Nem tudom. 293 00:21:35,000 --> 00:21:39,000 Megyünk vissza false ebben az esetben, mivel ez lesz a mi alap 294 00:21:39,000 --> 00:21:44,000 Ha valamilyen okból a lista üres, vagy a tű 295 00:21:44,000 --> 00:21:46,000 hogy keresünk nem létezik. 296 00:21:46,000 --> 00:21:50,000 Aztán a legvégén, ha nem tér vissza true korábban ezt a funkciót, 297 00:21:50,000 --> 00:21:55,000 mindig tudjuk, hogy ez a funkció azt mondják dehogy, ez nem a tömbben. 298 00:21:55,000 --> 00:21:58,000 Ez nem a szénakazalban. 299 00:21:58,000 --> 00:22:03,000 Most, ha fordítani és futtatni, hadd mentse ezt így tudjuk húzza fel. 300 00:22:03,000 --> 00:22:08,000 Most, ha fordítani és futtatni a programot, hogy épít. 301 00:22:08,000 --> 00:22:12,000 Kapunk mi kis gyors. 302 00:22:12,000 --> 00:22:20,000 Ha megüt 4-uh-oh. 303 00:22:20,000 --> 00:22:25,000 Ez nem fog kiírni semmit. Úgy tűnik, mintha minden rendben befejeződött. 304 00:22:25,000 --> 00:22:35,000 Van, hogy töltse be ezt a 305 00:22:35,000 --> 00:22:39,000 Beszéltünk az algoritmus pszeudokód egy kicsit ezelőtt. 306 00:22:39,000 --> 00:22:44,000 Hadd lássam, kivéve ezt, 307 00:22:44,000 --> 00:22:49,000 és én húzni, hogy az algoritmus vissza újra. 308 00:22:49,000 --> 00:22:51,000 Nézzük sújtotta ezt a fickót. Nem. 309 00:22:51,000 --> 00:22:58,000 Ott van. 310 00:22:58,000 --> 00:23:03,000 Hogyan tudjuk ezt megtenni? 311 00:23:03,000 --> 00:23:11,000 Mi lenne a jó stratégia kiindulási ki ezt a kódot? 312 00:23:11,000 --> 00:23:16,000 Meg kell, hogy válasszon egy számot a közepén. 313 00:23:16,000 --> 00:23:23,000 Hogyan válasszon egy számot a közepén egy tömb? 314 00:23:23,000 --> 00:23:25,000 Valami javaslat? 315 00:23:25,000 --> 00:23:27,000 [Student] strlen osztva 2. 316 00:23:27,000 --> 00:23:32,000 Strlen osztva 2. Ez egy nagyon szép kép. 317 00:23:32,000 --> 00:23:35,000 Strlen működik speciális típusú tömbök. 318 00:23:35,000 --> 00:23:38,000 Milyen tömbök? 319 00:23:38,000 --> 00:23:44,000 Karakterlánc tömbök, karakter tömbök. 320 00:23:44,000 --> 00:23:48,000 Ez ugyanaz a fajta koncepció, hogy szeretnénk alkalmazni, 321 00:23:48,000 --> 00:23:52,000 de ezért nem használhatja strlen, mert nincs egy sor karakter. 322 00:23:52,000 --> 00:23:55,000 Van egy sor ints. 323 00:23:55,000 --> 00:23:58,000 De mit strlen kap számunkra? 324 00:23:58,000 --> 00:24:01,000 Tudod, mi ez lesz nekünk? 325 00:24:01,000 --> 00:24:03,000 [Student] strlen lesz nekünk a hosszát. 326 00:24:03,000 --> 00:24:05,000 Pontosan, ez lesz nekünk a hosszát. 327 00:24:05,000 --> 00:24:09,000 Strlen kapja a hossza a tömb számunkra. 328 00:24:09,000 --> 00:24:14,000 >> Hogyan jutunk, hogy a bináris kereső program? 329 00:24:14,000 --> 00:24:18,000 Hogyan kap a hosszát egy tömb? 330 00:24:18,000 --> 00:24:20,000 [Student] strlen? 331 00:24:20,000 --> 00:24:25,000 Tudod kap a hossza egy megfelelően formázott C karakterlánc tömböt strlen. 332 00:24:25,000 --> 00:24:31,000 A probléma azonban az, hogy nincs egy string tömb. 333 00:24:31,000 --> 00:24:36,000 Ha megnézzük vissza ezt a kódot, itt van ez egész tömb. 334 00:24:36,000 --> 00:24:38,000 Honnan tudjuk, hogy meddig van? 335 00:24:38,000 --> 00:24:44,000 [Diák] Van egy egyenértékű egy a végpont, mint int l, vagy valami? 336 00:24:44,000 --> 00:24:49,000 Kiderült, hogy valójában nem az, és oly módon, ez 337 00:24:49,000 --> 00:24:52,000 egyike azoknak a dolgoknak, hogy ez csak jó tudni C, 338 00:24:52,000 --> 00:24:57,000 , hogy nincs módja, hogy a hossza egy tömb 339 00:24:57,000 --> 00:24:59,000 ha minden adok neked, a tömbben. 340 00:24:59,000 --> 00:25:02,000 Ennek az az oka, hogy működik vonósok, az ok strlen működik, 341 00:25:02,000 --> 00:25:06,000 azért van, mert ha egy string megfelelően formázott, 342 00:25:06,000 --> 00:25:12,000 akkor azt, hogy külön \ 0 karaktert a legvégén. 343 00:25:12,000 --> 00:25:16,000 >> Azt is képzeld el, ha van egy megfelelően formázott karakterlánc 344 00:25:16,000 --> 00:25:20,000 és nincs \ 0 karakter van, akkor az egész dolog nem működik. 345 00:25:20,000 --> 00:25:22,000 [Student] Tud hozzá a \ 0? 346 00:25:22,000 --> 00:25:24,000 Mi volna ebben az esetben. 347 00:25:24,000 --> 00:25:29,000 Mi lehet hozzá valamiféle \ 0 348 00:25:29,000 --> 00:25:33,000 vagy valamilyen jelölő karaktert, majd használni. 349 00:25:33,000 --> 00:25:36,000 De ez nem igazán fog működni 350 00:25:36,000 --> 00:25:40,000 mert a \ 0 egy char típusú, 351 00:25:40,000 --> 00:25:43,000 és itt megvan ints. 352 00:25:43,000 --> 00:25:46,000 A másik dolog az, ha nem volt, hogy egy speciális érték 353 00:25:46,000 --> 00:25:49,000 mint a -1 és a végét egy tömb 354 00:25:49,000 --> 00:25:54,000 akkor soha nem tároljuk a -1 a mi egész tömbök. 355 00:25:54,000 --> 00:25:56,000 Mi lenne beragadt. 356 00:25:56,000 --> 00:26:00,000 Kiderül, hogy az egyetlen módja annak, hogy a hossz 357 00:26:00,000 --> 00:26:03,000 egy tömb C-ben, hogy valóban emlékezni rá 358 00:26:03,000 --> 00:26:08,000 amikor beállítani, majd add körül az array 359 00:26:08,000 --> 00:26:14,000 annak érdekében, hogy ha van egy funkció, amely megy, hogy némi munkát 360 00:26:14,000 --> 00:26:18,000 egy sor egész vagy úszók vagy páros, vagy mi van veled, 361 00:26:18,000 --> 00:26:22,000 Azt is meg kell adni a függvény a tömb hossza, 362 00:26:22,000 --> 00:26:26,000 , és hogy pontosan mit tettünk itt a keresés funkciót. 363 00:26:26,000 --> 00:26:30,000 Ha megnézzük, mit tettünk, amikor átadjuk a tömbben van, 364 00:26:30,000 --> 00:26:36,000 mi is át a hossza, a méretet. 365 00:26:36,000 --> 00:26:41,000 Ez csak előfordul, hogy mi ez a változó hívott ide, 366 00:26:41,000 --> 00:26:43,000 ezt a paramétert vagy érvelés. 367 00:26:43,000 --> 00:26:46,000 Ezt nevezzük a függvény argumentum lista vagy paraméter lista, 368 00:26:46,000 --> 00:26:51,000 és ezeket is nevezik érveket és paramétereket. 369 00:26:51,000 --> 00:26:53,000 Az emberek különböző fogalmakat különböző időpontokban. 370 00:26:53,000 --> 00:26:55,000 Néha cserélje őket magamnak. 371 00:26:55,000 --> 00:27:00,000 Ez csak azért történik, hogy ez a változó itt a neve hasonlóan 372 00:27:00,000 --> 00:27:03,000 E # define itt. 373 00:27:03,000 --> 00:27:06,000 De ők nem ugyanaz a dolog. 374 00:27:06,000 --> 00:27:11,000 Az aktiválás nem számít. 375 00:27:11,000 --> 00:27:14,000 >> Ha megnézzük, hogy mi történik itt, hogy állapítsa 376 00:27:14,000 --> 00:27:18,000 mi int tömb, amit már hívott számokat. 377 00:27:18,000 --> 00:27:23,000 Már adta azt a méretet, amely megfelel a mi # define fel a tetején. 378 00:27:23,000 --> 00:27:27,000 Ez lesz 8. 379 00:27:27,000 --> 00:27:35,000 És aztán, amikor majd hívja fel a keresési funkció lent, 380 00:27:35,000 --> 00:27:40,000 átadjuk a számot akarunk keresni, amit már a rendszer kéri, 381 00:27:40,000 --> 00:27:43,000 ütött a felhasználó elől. 382 00:27:43,000 --> 00:27:46,000 Elhaladunk a tömb, ez a szám, 383 00:27:46,000 --> 00:27:51,000 és akkor is át kell adni a méret a tömb, 384 00:27:51,000 --> 00:27:57,000 , majd az értékét 8-as méret lesz tárolva 385 00:27:57,000 --> 00:28:01,000 vagy meghaladták e integer nevű változó méret. 386 00:28:01,000 --> 00:28:08,000 Megvan a méret a tömb. 387 00:28:08,000 --> 00:28:11,000 Most, ha megyünk vissza, hogy mit beszéltünk korábban, 388 00:28:11,000 --> 00:28:14,000 Azt hiszem, Missy nevelt a lényeg, hogy mit kellett tennie, hogy a hossza a tömb 389 00:28:14,000 --> 00:28:20,000 és elosztjuk 2-vel, és ez ad nekünk a középpont. 390 00:28:20,000 --> 00:28:22,000 Lássuk. 391 00:28:22,000 --> 00:28:25,000 Kaphatok valaki írni ezt, és mentse el a helyet? 392 00:28:25,000 --> 00:28:27,000 Mit szólnál Leila? 393 00:28:27,000 --> 00:28:31,000 Kaphatok írsz ezt? 394 00:28:31,000 --> 00:28:35,000 Írjuk be az első sorban, ahol meghozzák a hossza a tömb és kap a középpont 395 00:28:35,000 --> 00:28:41,000 és tárolja egy új változót. 396 00:28:41,000 --> 00:28:44,000 Adok egy pár másodpercig. Készen állsz? 397 00:28:44,000 --> 00:28:46,000 [Student hallható] 398 00:28:46,000 --> 00:28:50,000 Persze, tudtam volna akkor kiszámítja a középpont 399 00:28:50,000 --> 00:28:55,000 a szénakazalban tömb belsejében a keresési funkció 400 00:28:55,000 --> 00:29:03,000 felhasználásával a hossza a szénakazalban tömb, amely az a méret változó? 401 00:29:03,000 --> 00:29:08,000 Semmi trükkös itt. 402 00:29:08,000 --> 00:29:12,000 [Leila] Csak méret / 2 és just- 403 00:29:12,000 --> 00:29:17,000 És menteni, és nyomja meg a Mentés gombot ide a tetején, 404 00:29:17,000 --> 00:29:19,000 és mi húzza fel. 405 00:29:19,000 --> 00:29:22,000 Tökéletes. 406 00:29:22,000 --> 00:29:28,000 Ott vagyunk. Félelmetes. 407 00:29:28,000 --> 00:29:30,000 >> Ahogy az, lesz ez fordítani? 408 00:29:30,000 --> 00:29:32,000 [Leila] Nem, nem kell magasabb. 409 00:29:32,000 --> 00:29:34,000 [Nate] Igen, mit kell tennem? 410 00:29:34,000 --> 00:29:36,000 [Leila] Like int felezőpontja vagy ilyesmi. 411 00:29:36,000 --> 00:29:41,000 Félelmetes. Igen, csináljuk meg, hogy int középpont = méretét. 412 00:29:41,000 --> 00:29:44,000 Vajon ez összeállításához? 413 00:29:44,000 --> 00:29:47,000 Nézzük törölni ezt a megjegyzést, és kap ez az útból. 414 00:29:47,000 --> 00:29:50,000 Mi nem fog lefordulni erről? 415 00:29:50,000 --> 00:29:52,000 Mi nem csinál semmit egész szám, 416 00:29:52,000 --> 00:29:55,000 így kell nyomtatni, vagy valami ilyesmi. 417 00:29:55,000 --> 00:29:58,000 Igen, pontosan. 418 00:29:58,000 --> 00:30:00,000 Majd kap egy használt változó. 419 00:30:00,000 --> 00:30:02,000 Mi mást nem fog működni erről? 420 00:30:02,000 --> 00:30:06,000 Azt hiszem, mondtam valamit, Sam. Pontosvessző. 421 00:30:06,000 --> 00:30:08,000 Igen, én vagyok hiányzik a pontosvessző. 422 00:30:08,000 --> 00:30:14,000 Ez lesz egy állandó dolog az egész folyamán a kifejezés. 423 00:30:14,000 --> 00:30:17,000 Az utolsó dolog, amit megteszek, hogy én majd egy kis fehér tér mindkét oldalán 424 00:30:17,000 --> 00:30:23,000 E operátor itt, hiszen ez tipikusan hogyan csináljuk 425 00:30:23,000 --> 00:30:26,000 szerint a mi stílusunk útmutatót. 426 00:30:26,000 --> 00:30:29,000 Megvan a felezőpontja a tömb. 427 00:30:29,000 --> 00:30:32,000 Most, ha arra gondolunk vissza a algoritmus, 428 00:30:32,000 --> 00:30:37,000 mi volt a második lépés, hogy mi volt a teendő, ha már a középpont? 429 00:30:37,000 --> 00:30:42,000 [Student] Ha ez nagyobb [hallhatatlan]. 430 00:30:42,000 --> 00:30:48,000 Igen, így kell tennünk, hogy valamilyen összehasonlítás, és mit keresünk képest itt? 431 00:30:48,000 --> 00:30:53,000 Azt mondta, ha nagyobb, mint. Mi abban a mondatban utal? 432 00:30:53,000 --> 00:30:57,000 A szám jön ki, ha ez nagyobb, mint a középpont, akkor menj fel a tömb? 433 00:30:57,000 --> 00:31:05,000 Pontosan, így a szám jön ki, amikor- 434 00:31:05,000 --> 00:31:10,000 A tű, úgyhogy képest a tűt, 435 00:31:10,000 --> 00:31:12,000 és mi vagyunk összehasonlítjuk ellen a tű? 436 00:31:12,000 --> 00:31:15,000 Mivel a tű, amit keresünk. 437 00:31:15,000 --> 00:31:18,000 Mi összehasonlítva, hogy a középpont. 438 00:31:18,000 --> 00:31:21,000 >> De mi értelme, hogy ellenőrizze, hogy 439 00:31:21,000 --> 00:31:27,000 ha a tű = középpontja? 440 00:31:27,000 --> 00:31:32,000 Van ennek értelme? 441 00:31:32,000 --> 00:31:35,000 Van valaki nem ért egyet? 442 00:31:35,000 --> 00:31:40,000 Hadd próbálja ki, ha a (tű == középpont). 443 00:31:40,000 --> 00:31:42,000 [Student] Nem printf megtalálta. 444 00:31:42,000 --> 00:31:51,000 [Nate] printf ("Megtaláltuk! \ N"); 445 00:31:51,000 --> 00:31:56,000 Egyébként-Megyek kezdeni csinál valami mást itt. 446 00:31:56,000 --> 00:32:00,000 Fogom kezdeni üzembe zárójelek körül, ha kimutatások minden alkalommal 447 00:32:00,000 --> 00:32:05,000 csak azért, mert ha még több cucc, akkor 448 00:32:05,000 --> 00:32:07,000 nem kap a fordító. 449 00:32:07,000 --> 00:32:09,000 Igen, Sam. Van egy pont. 450 00:32:09,000 --> 00:32:12,000 A probléma az, hogy a középpontját jelenti pozícióját a tömb, 451 00:32:12,000 --> 00:32:15,000 de lehet kapni, hogy képviselje az értéket ebben a helyzetben a tömb. 452 00:32:15,000 --> 00:32:17,000 Ez egy jó pont. 453 00:32:17,000 --> 00:32:19,000 Vajon mindenki hallja, amit Sam mondott? 454 00:32:19,000 --> 00:32:22,000 Azt mondta, hogy középpontja mint 455 00:32:22,000 --> 00:32:28,000 jelent csak egy pozíciót a tömbben, de ez nem az aktuális elem a tömbben. 456 00:32:28,000 --> 00:32:30,000 Ha úgy gondolja, a kódot írt most, 457 00:32:30,000 --> 00:32:35,000 ha megnézzük ezt a tömböt ide, amely 8 lencsetag azt, 458 00:32:35,000 --> 00:32:39,000 mi az értéke a középpont lesz az ezt a funkciót? 459 00:32:39,000 --> 00:32:41,000 [Student] 4. 460 00:32:41,000 --> 00:32:45,000 [Nate] 4. 461 00:32:45,000 --> 00:32:51,000 Ha megnézzük a 4-es szám - 462 00:32:51,000 --> 00:32:54,000 és mi is csak futtatni ezt a kódot, és hogy egy kicsit szomorú arcot itt 463 00:32:54,000 --> 00:32:58,000 mert nem találják meg, ha fut a kód 464 00:32:58,000 --> 00:33:04,000 mint most, feltöltéssel, épületnek, hadd lapozás 465 00:33:04,000 --> 00:33:09,000 és ha megnézzük a 4-es számú, 466 00:33:09,000 --> 00:33:18,000 találtuk meg, de nem kap ez a printf igen. 467 00:33:18,000 --> 00:33:23,000 Ennek egyik oka az, hogy nem tért vissza igaz, 468 00:33:23,000 --> 00:33:26,000 de nem igazán találja a 4-es szám? 469 00:33:26,000 --> 00:33:28,000 És Sam nemet mond. 470 00:33:28,000 --> 00:33:31,000 Mit találunk? 471 00:33:31,000 --> 00:33:35,000 Igazán megtaláltuk a középpont, amely, ha megnézzük a tömb itt lenn, 472 00:33:35,000 --> 00:33:38,000 ez lesz az elem az index 4, hogy keresünk, 473 00:33:38,000 --> 00:33:42,000 amely 23. 474 00:33:42,000 --> 00:33:46,000 >> Hogyan valójában kap ez az elem a középpont 475 00:33:46,000 --> 00:33:48,000 és nem csak a középpont magát? 476 00:33:48,000 --> 00:33:52,000 [Student] Azt írja char, vagy valami? 477 00:33:52,000 --> 00:33:55,000 Mi lenne, hogy nem, csak kíváncsiságból? 478 00:33:55,000 --> 00:33:57,000 Tud kidolgozni egy kicsit? 479 00:33:57,000 --> 00:34:02,000 Meg kell, hogy átalakítsa a helyzetét a száma, 480 00:34:02,000 --> 00:34:05,000 így van, hogy néhány kapcsolat-Azt hiszem char, de lehet, hogy nem. 481 00:34:05,000 --> 00:34:07,000 Igen, ez egy jó pont. 482 00:34:07,000 --> 00:34:12,000 Már sokat tesz ennek a konvertáló pozíciók a karakter, ezeket a karaktereket, 483 00:34:12,000 --> 00:34:14,000 az első két probléma készletek. 484 00:34:14,000 --> 00:34:18,000 Kiderül, hogy itt van, ez majdnem hasonló 485 00:34:18,000 --> 00:34:24,000 hozzáférés az i-edik karaktere egy string, ha van értelme. 486 00:34:24,000 --> 00:34:30,000 Itt szeretnénk elérni a középpont elem. 487 00:34:30,000 --> 00:34:34,000 Hogyan csináljuk ezt? 488 00:34:34,000 --> 00:34:39,000 Kevin, van valami javaslata, hogyan lehet csinálni? 489 00:34:39,000 --> 00:34:44,000 Lehet csinálni szénakazalban, nyitó zárójel, mid, zárt konzol. 490 00:34:44,000 --> 00:34:46,000 Tudsz írni, hogy nekünk? 491 00:34:46,000 --> 00:34:51,000 Mentsd el itt, és mi húzza azt fel. 492 00:34:51,000 --> 00:34:56,000 Mi nézi most ezt a sort 9, 493 00:34:56,000 --> 00:34:59,000 és mi észre, hogy nem akarjuk összehasonlítani a tűt a középpont, 494 00:34:59,000 --> 00:35:03,000 hanem szeretnénk összehasonlítani a tű 495 00:35:03,000 --> 00:35:07,000 az elem pozícióban középponti a mi haystack tömb. 496 00:35:07,000 --> 00:35:10,000 Cool. 497 00:35:10,000 --> 00:35:12,000 Ott vagyunk. 498 00:35:12,000 --> 00:35:15,000 Igen, jól néz ki, ha a (tű == szénakazalban [felezőpontja]). 499 00:35:15,000 --> 00:35:18,000 Megtaláltuk. 500 00:35:18,000 --> 00:35:22,000 Most, ha fut a kód-Majd vissza egy kicsit, 501 00:35:22,000 --> 00:35:26,000 lefordítja, fut, és most ha megnézzük 4, 502 00:35:26,000 --> 00:35:30,000 mi nem találják meg, mert most vagyunk valójában rá a 23-as szám. 503 00:35:30,000 --> 00:35:33,000 Mi egyre az érték 23, és ez az, amit mi képest a tűt. 504 00:35:33,000 --> 00:35:35,000 De ez jó. Ez egy lépés a helyes irányba. 505 00:35:35,000 --> 00:35:37,000 >> Ez az, amit mi próbálunk csinálni. 506 00:35:37,000 --> 00:35:40,000 Nem akarunk összehasonlítani a tűt pozícióik fedezésére a tömbben 507 00:35:40,000 --> 00:35:44,000 hanem az ellen a tényleges elemeit a tömbben. 508 00:35:44,000 --> 00:35:49,000 Ha megnézzük vissza most a következő lépés a mi algoritmus, 509 00:35:49,000 --> 00:35:51,000 mi a következő lépés? 510 00:35:51,000 --> 00:35:57,000 Leila már említettük röviden. 511 00:35:57,000 --> 00:36:00,000 [Student] Nézze meg, hogy ez nagyobb vagy kisebb, mint majd eldönteni, hogy melyik irányba kell fordítani. 512 00:36:00,000 --> 00:36:03,000 [Nate] Igen, hogyan tesszük ezt? 513 00:36:03,000 --> 00:36:07,000 Tudsz tenni egyes-Majd mentse ezt felülvizsgálat 514 00:36:07,000 --> 00:36:13,000 majd ha betesz néhány sor, amely tenni. 515 00:36:13,000 --> 00:36:15,000 Igen, Charlotte. >> Lenne egy kérdésem. 516 00:36:15,000 --> 00:36:19,000 Ha nem lenne középpontja - 1, mert az első dolog 517 00:36:19,000 --> 00:36:26,000 ez 0 indexelt, így ha teszünk 4, ez valójában nem a karakter, akit keresünk? 518 00:36:26,000 --> 00:36:30,000 Igen, és a másik problémája, hogy a jelentése- 519 00:36:30,000 --> 00:36:35,000 ez egy nagy fogás, mert mi a végén történik esetleg 520 00:36:35,000 --> 00:36:42,000 ha folyamatosan mozgásban, és soha ne állítsa be az elején? 521 00:36:42,000 --> 00:36:46,000 Azt hiszem, mi is a végén csinál próbál hozzáférni 522 00:36:46,000 --> 00:36:49,000 az elem a 8. pozíció a tömb, 523 00:36:49,000 --> 00:36:53,000 amely a jelen esetben nem áll fenn. 524 00:36:53,000 --> 00:36:56,000 Mi akarsz valamilyen számviteli azt a tényt, 525 00:36:56,000 --> 00:36:59,000 hogy van néhány nulla indexelés. 526 00:36:59,000 --> 00:37:05,000 [Charlotte] Bocs, úgy értettem felezőpontja - 1 a szögletes zárójelben. 527 00:37:05,000 --> 00:37:08,000 Meg tudjuk csinálni. 528 00:37:08,000 --> 00:37:10,000 Majd visszatérünk erre a kérdésre csak egy kicsit. 529 00:37:10,000 --> 00:37:13,000 Ha egyszer elkezdünk, hogy a tényleges looping, 530 00:37:13,000 --> 00:37:16,000 ez az, amikor majd tényleg lássa jöhet számításba. 531 00:37:16,000 --> 00:37:21,000 Egyelőre, meg tudjuk csinálni ezt, de te teljesen igaza van. 532 00:37:21,000 --> 00:37:28,000 Ez nulla indexelési hatással lesz, hogy meg kell elszámolni. 533 00:37:28,000 --> 00:37:30,000 Lássuk. 534 00:37:30,000 --> 00:37:34,000 >> Hogy van a nagyobb és kisebb, mint a-? 535 00:37:34,000 --> 00:37:36,000 [Student] értem, hogyan kell csinálni a nagyobb és a kisebb rész. 536 00:37:36,000 --> 00:37:41,000 Csak nem voltam biztos benne, mit nyomtatni, ha úgy találják, hogy ez kevesebb, mint a szénakazalban középpontját vagy annál nagyobb. 537 00:37:41,000 --> 00:37:43,000 Itt lehet menteni, amit I've- 538 00:37:43,000 --> 00:37:47,000 [Nate] Ja, ha menteni mit tudsz, és mi húzza fel. 539 00:37:47,000 --> 00:37:49,000 Ott vagyunk. 540 00:37:49,000 --> 00:37:51,000 [Student] És tettem kérdőjelet, amit nem tudtam. 541 00:37:51,000 --> 00:37:54,000 [Nate] Ez jól néz ki. 542 00:37:54,000 --> 00:37:58,000 Itt megvan a kérdőjel, mert még mindig nem tudom, 543 00:37:58,000 --> 00:38:06,000 hogy mit fogunk csinálni elég még. 544 00:38:06,000 --> 00:38:12,000 Mit akarunk csinálni, hoppá, most már van néhány melles összes funky minket. 545 00:38:12,000 --> 00:38:15,000 Majd korrektek e fogszabályozó. 546 00:38:15,000 --> 00:38:19,000 Ott vagyunk. 547 00:38:19,000 --> 00:38:22,000 És mit akarsz csinálni, ahogy mi algoritmus, 548 00:38:22,000 --> 00:38:27,000 Ha nem találjuk meg a tűt? 549 00:38:27,000 --> 00:38:32,000 Mondja el, abban az esetben, hogy a tű nem kevesebb, mint amit keresünk. Kevin. 550 00:38:32,000 --> 00:38:34,000 Csak nézd meg a bal fele. 551 00:38:34,000 --> 00:38:40,000 Rendben, tehát akkor tesz egy megjegyzést itt, hogy azt mondja: "nézd meg a bal fele." 552 00:38:40,000 --> 00:38:46,000 És ha a tű nagyobb, mint a szénakazalban középpontjától, mit akarunk csinálni? 553 00:38:46,000 --> 00:38:48,000 [Student] Akkor nézd meg a jobb felét. 554 00:38:48,000 --> 00:38:53,000 Nézd meg a jobb oldalán, "nézz jobbra fele." 555 00:38:53,000 --> 00:38:58,000 Nem túl kopott. 556 00:38:58,000 --> 00:39:05,000 Oké, tehát ezen a ponton, a dolgok keres nagyon jó. 557 00:39:05,000 --> 00:39:13,000 A probléma a kód, amit írt? 558 00:39:13,000 --> 00:39:15,000 [Student] Nem végpontok a felét. 559 00:39:15,000 --> 00:39:18,000 Igaz, nincs végpontok a felét. 560 00:39:18,000 --> 00:39:20,000 Mi is csak menni keresztül egyszer. 561 00:39:20,000 --> 00:39:23,000 Mi csak fog nézni egy középpont. 562 00:39:23,000 --> 00:39:27,000 Vagy az elem ott van, vagy nincs. 563 00:39:27,000 --> 00:39:34,000 Annak érdekében, hogy befejezzük ezt, akkor kell csinálni valamilyen ismétlés. 564 00:39:34,000 --> 00:39:39,000 Meg kell tartani ismétlése, amíg azt látjuk, hogy 565 00:39:39,000 --> 00:39:43,000 vagy az elem van ott, mert mi már szűkült le, és végül megtalálta azt, 566 00:39:43,000 --> 00:39:46,000 vagy ez nem ott, mert mi már úgy nézett végig a dolgot 567 00:39:46,000 --> 00:39:52,000 megfelelő fele a tömb és megállapította, hogy semmi sem ott. 568 00:39:52,000 --> 00:39:56,000 >> Amikor megvan ez ismétlés megy, mit fogunk használni? 569 00:39:56,000 --> 00:39:58,000 [Student] A hurok. 570 00:39:58,000 --> 00:40:00,000 Valamilyen hurok. Igen. 571 00:40:00,000 --> 00:40:03,000 [Student] Meg tudjuk csinálni a do-while ciklus, és azt csinálni, majd miközben 572 00:40:03,000 --> 00:40:10,000 A tűt nem egyenlő-Nem vagyok benne biztos, ha én megyek vele. 573 00:40:10,000 --> 00:40:18,000 De olyan, mint ezt, hogy amíg az nem azonos az értéket a felhasználói bevitel. 574 00:40:18,000 --> 00:40:21,000 Igen, lássuk, hogyan lehet ezt a levelet magának? 575 00:40:21,000 --> 00:40:23,000 Azt mondta, hadd használja a do-while ciklus. 576 00:40:23,000 --> 00:40:26,000 Amennyiben ez a do kezdete? 577 00:40:26,000 --> 00:40:33,000 [Student] Közvetlenül a méret / 2. 578 00:40:33,000 --> 00:40:42,000 [Nate] Oké, és mit fogunk csinálni? 579 00:40:42,000 --> 00:40:44,000 Majd töltse ki a, míg később. 580 00:40:44,000 --> 00:40:46,000 Mit fogunk csinálni? 581 00:40:46,000 --> 00:40:49,000 [Student] Nem akarunk tenni az összes cucc van az ha a rész? 582 00:40:49,000 --> 00:40:52,000 [Nate] Vajon minden ezt a cuccot, remek. 583 00:40:52,000 --> 00:40:55,000 Másolás és beillesztés. 584 00:40:55,000 --> 00:40:59,000 Ó, ember. 585 00:40:59,000 --> 00:41:03,000 Lássuk, ez működik, ha tudunk lapon ezt át. 586 00:41:03,000 --> 00:41:08,000 Gyönyörű. 587 00:41:08,000 --> 00:41:16,000 Oké, és mi mentse ez így nektek van ez. 588 00:41:16,000 --> 00:41:21,000 Rendben, és mi lesz, hogy ezt while- 589 00:41:21,000 --> 00:41:25,000 mi volt a feltétel, míg voltál utána? 590 00:41:25,000 --> 00:41:31,000 [Student] Bár a tűt nem azonos, így például a felkiáltójel. 591 00:41:31,000 --> 00:41:37,000 De nem vagyok benne biztos, hogy pontosan mi van még. 592 00:41:37,000 --> 00:41:39,000 [Nate] Igen, ez az egyik módja annak, hogy csináld. 593 00:41:39,000 --> 00:41:41,000 Sam, van kommentezni? 594 00:41:41,000 --> 00:41:43,000 [Sam] eszembe jutott, amikor néztem a videókat, 595 00:41:43,000 --> 00:41:48,000 Vettem egy screenshot az egyik, mint amikor megcsináltuk a pszeudokód rá, 596 00:41:48,000 --> 00:41:52,000 volt némi kapcsolata max és min. 597 00:41:52,000 --> 00:41:58,000 Azt hiszem, valami hasonlót, ha max egyre kevesebb min. 598 00:41:58,000 --> 00:42:00,000 Megvan. 599 00:42:00,000 --> 00:42:04,000 [Sam] Vagy mint ha max nem kevesebb min, vagy valami ilyesmi, 600 00:42:04,000 --> 00:42:06,000 mivel ez azt jelentené, hogy már keresett mindent. 601 00:42:06,000 --> 00:42:13,000 >> Igen, mit hangzik max és min arra hivatkozva? 602 00:42:13,000 --> 00:42:16,000 [Sam] Values, hogy a-egészek, hogy meg fognak változni 603 00:42:16,000 --> 00:42:18,000 képest, ahol tesszük a középpont. 604 00:42:18,000 --> 00:42:20,000 Pontosan. 605 00:42:20,000 --> 00:42:24,000 [Sam] Ezen a ponton, ez lesz a [hallhatatlan] kiszámítja a max és min. 606 00:42:24,000 --> 00:42:29,000 Középpont ez a max és min ötlet. 607 00:42:29,000 --> 00:42:35,000 Van ennek értelme az emberek? 608 00:42:35,000 --> 00:42:39,000 Ha kellett volna kezdeni, hogy hogyan fogjuk ezt iteráció, 609 00:42:39,000 --> 00:42:43,000 teljesen igazad van, hogy szeretnénk használni valamilyen do-while hurok. 610 00:42:43,000 --> 00:42:49,000 De azt hiszem, ha arra gondolunk, hogy mi folyik az azonnali e tömb 611 00:42:49,000 --> 00:42:53,000 és mi történik valójában, megyek írni ide- 612 00:42:53,000 --> 00:42:58,000 a legelső iterációs bináris keresés, mi- 613 00:42:58,000 --> 00:43:05,000 Fogom használni b és e jelölésére a kezdet. 614 00:43:05,000 --> 00:43:10,000 És akkor a végén a tömb. 615 00:43:10,000 --> 00:43:14,000 Tudjuk, hogy az elején a 4 jobb ide, 616 00:43:14,000 --> 00:43:18,000 és tudjuk, hogy a végén van 108. 617 00:43:18,000 --> 00:43:23,000 Mondja el, mi keressük a szám 15. 618 00:43:23,000 --> 00:43:27,000 Az első alkalom, hogy ezt, mint korábban láttuk, 619 00:43:27,000 --> 00:43:30,000 középpontját van vagy lesz 16 vagy 23 620 00:43:30,000 --> 00:43:34,000 attól függően, hogy hogyan számítják a dolgokat. 621 00:43:34,000 --> 00:43:37,000 Mivel egyenletesen elosztjuk a középső adna nekünk ezt a helyet 622 00:43:37,000 --> 00:43:42,000 között, 16 és 23, nem tudjuk egyenletesen osztjuk 623 00:43:42,000 --> 00:43:47,000 vagy oszd meg és kap egy igazi középpontja. 624 00:43:47,000 --> 00:43:49,000 Majd nézd meg 16. 625 00:43:49,000 --> 00:43:55,000 Majd észre: "Hé, 16> 15, hogy mi keresünk." 626 00:43:55,000 --> 00:43:59,000 Ahhoz, hogy akkor nézd meg a bal fele a tömb 627 00:43:59,000 --> 00:44:03,000 mi lesz a végén csinál, öntsük 628 00:44:03,000 --> 00:44:07,000 az egész felső része 629 00:44:07,000 --> 00:44:16,000 és azt mondja: "Oké, most a végpont lesz itt." 630 00:44:16,000 --> 00:44:22,000 A következő iteráció a hurok, akkor most nézi most ezt a tömböt, 631 00:44:22,000 --> 00:44:25,000 hatékonyan miután dobni ezt a részét, mert most 632 00:44:25,000 --> 00:44:30,000 ha mi visszük a középpontját, hogy a különbség a kezdet és a vég, 633 00:44:30,000 --> 00:44:34,000 találunk a felezőpontja legyen 8, 634 00:44:34,000 --> 00:44:40,000 amit aztán 8 tesztelni, hogy hol van viszonyítva számot keresünk, 635 00:44:40,000 --> 00:44:44,000 15, úgy találják, hogy 15 nagyobb, 636 00:44:44,000 --> 00:44:49,000 így meg kell mozgatni a jobb része a lista 637 00:44:49,000 --> 00:44:51,000 amelyről tudjuk, mert emberek vagyunk, és látjuk azt. 638 00:44:51,000 --> 00:44:54,000 Tudjuk, hogy a megfelelő rész lesz, ha megtaláljuk, 639 00:44:54,000 --> 00:45:01,000 de a számítógép nem tudja, hogy így fogjuk tenni mi vagyunk Majd valójában 640 00:45:01,000 --> 00:45:04,000 már ez megy fel, és most a kezdet és a vég 641 00:45:04,000 --> 00:45:11,000 az ugyanazon a helyen, így a középpontja lesz az egyetlen szám, a lista azon a ponton, 642 00:45:11,000 --> 00:45:16,000 amely 15, és mi már megtaláltuk. 643 00:45:16,000 --> 00:45:21,000 Ez azt némi fényt, ha ez az egész max és min jelölést megy, 644 00:45:21,000 --> 00:45:24,000 nyomon követése a végpontok a tömb, hogy kitaláljuk, 645 00:45:24,000 --> 00:45:35,000 hogyan, hogy szűkítse a dolgokat? 646 00:45:35,000 --> 00:45:42,000 >> Mi történne, ha ez nem azonos a 15 most? 647 00:45:42,000 --> 00:45:52,000 Mi van, ha kerestünk 15 és ahelyett, hogy ez a szám szintén 16? 648 00:45:52,000 --> 00:45:54,000 Mi azt mondjuk, hogy "Ó, ez nagyobb. 649 00:45:54,000 --> 00:45:57,000 Azt akarjuk, hogy menjen vissza a bal oldalon. " 650 00:45:57,000 --> 00:46:01,000 És mi lenne áthelyezni az e jobbra, 651 00:46:01,000 --> 00:46:06,000 ezen a ponton van egy végpont lenne ellentétes. 652 00:46:06,000 --> 00:46:09,000 Nem lenne képes megkereséséhez több elemből 653 00:46:09,000 --> 00:46:13,000 mert most már a végpont és a kezdőpont, 654 00:46:13,000 --> 00:46:16,000 a max és a min, már tükrözött. 655 00:46:16,000 --> 00:46:23,000 Megkeressük az egész tömb. Nem talál semmit. 656 00:46:23,000 --> 00:46:27,000 Ez az a pont, amit akarna mondani, hogy "Oké, fogjuk megállítani ezt algoritmus. 657 00:46:27,000 --> 00:46:34,000 Nem találtunk semmit. Tudjuk, hogy nincs itt. " 658 00:46:34,000 --> 00:46:36,000 Hogy megy ez? 659 00:46:36,000 --> 00:46:40,000 [Student] Hogy pontosan ez a számítógép kapcsolja a végén? 660 00:46:40,000 --> 00:46:45,000 Hogyan végén végül kezdete előtt? 661 00:46:45,000 --> 00:46:48,000 A vég végül kezdete előtt 662 00:46:48,000 --> 00:46:54,000 mert a matematika, hogy mi csinálunk minden alkalommal, amikor ezt. 663 00:46:54,000 --> 00:47:00,000 Ahogy mi cserélni, ha megnézi az első alkalom, hogy ezt csere 664 00:47:00,000 --> 00:47:03,000 ahol van az kezdődő 4 és a vég 665 00:47:03,000 --> 00:47:13,000 egészen a 108 és a középpont, mondjuk, a 16 - 666 00:47:13,000 --> 00:47:20,000 Fogom állítani ezt a back-15-ha keresünk a 15, 667 00:47:20,000 --> 00:47:25,000 tudtuk, hogy mit csináltunk, amikor ellenőrizték a 16, és látta, hogy a nagyobb 668 00:47:25,000 --> 00:47:28,000 és szerette volna megválni az egész jobb része a lista 669 00:47:28,000 --> 00:47:36,000 láttuk, hogy amit akartam csinálni a mozgáshoz ezt e itt. 670 00:47:36,000 --> 00:47:44,000 Valójában az e GOT költözött egyik előtt a középpont. 671 00:47:44,000 --> 00:47:48,000 Hasonlóképpen, amikor ezt tette iterációs az algoritmus 672 00:47:48,000 --> 00:47:51,000 és a középponti volt 8, 673 00:47:51,000 --> 00:47:55,000 azt találtuk, hogy a 8 <15, ezért akartuk mozgatni a b 674 00:47:55,000 --> 00:48:00,000 1 múltban a középpont. 675 00:48:00,000 --> 00:48:07,000 Most, a kezdet és a vég egyaránt egymás mellett 15. 676 00:48:07,000 --> 00:48:10,000 >> Ha azt történt, hogy keressen más érték, nem 15, 677 00:48:10,000 --> 00:48:14,000 vagy ha ez a 15 helyett már a 16, 678 00:48:14,000 --> 00:48:20,000 mi lenne találtuk, hogy az e akarunk áthelyezni egy előtt a középpont. 679 00:48:20,000 --> 00:48:33,000 Most e ott lesz tükrözött kevesebb, mint a b. 680 00:48:33,000 --> 00:48:39,000 Sétáljunk át, hogy hogyan valójában a végén ezt a kódoló algoritmust. 681 00:48:39,000 --> 00:48:44,000 Tudjuk, hogy azt akarjuk, hogy ez a számítás középpontját. 682 00:48:44,000 --> 00:48:48,000 Tudjuk azt is, hogy szeretnénk követni az elején és a végén a tömb 683 00:48:48,000 --> 00:48:51,000 A jelenlegi tömb, így tudjuk kitalálni 684 00:48:51,000 --> 00:48:56,000 ahol ez a bal fele a lista, és ahol a jobb felét a lista. 685 00:48:56,000 --> 00:49:03,000 Tesszük, hogy akár kezdődik és végződik, 686 00:49:03,000 --> 00:49:07,000 vagy mi lehet hívni őket, min és max. 687 00:49:07,000 --> 00:49:10,000 Fogom használni kezdetének és végének ebben az időben. 688 00:49:10,000 --> 00:49:15,000 Mikor kezdődik, ha megnézzük vissza a példa itt lenn, 689 00:49:15,000 --> 00:49:20,000 a kezdet volt állítva a kezdetektől a tömb, mint természetes. 690 00:49:20,000 --> 00:49:25,000 Mi index volt ez? Mit kell kezdeni a mi kell? 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] Igen, tudtuk állítani egyenlő szénakazalban [0]. 694 00:49:37,000 --> 00:49:40,000 A probléma azonban az, hogy ez ad nekünk nem ez a helyzet, az első elem. 695 00:49:40,000 --> 00:49:45,000 Ez ad nekünk az index az első elem vagy a tényleges értéket, hogy az első helyen. 696 00:49:45,000 --> 00:49:47,000 [Student] Ez majd konvertálni 0,20? 697 00:49:47,000 --> 00:49:52,000 [Nate] Mi ez csinál van-nos, nem fog semmilyen konverziót. 698 00:49:52,000 --> 00:49:56,000 Mit fog tenni ez tárolja a 4-ben kezdődik, 699 00:49:56,000 --> 00:49:59,000 és akkor nehéz lesz, hogy összehasonlításokat ellen kezd 700 00:49:59,000 --> 00:50:03,000 mert Begin fog tartani a értéke 4, 701 00:50:03,000 --> 00:50:06,000 amely a kezdete a mi tömb, 702 00:50:06,000 --> 00:50:08,000 de mi szeretnénk követni az indexek a tömbben 703 00:50:08,000 --> 00:50:11,000 szemben az értékeket. 704 00:50:11,000 --> 00:50:17,000 Majd ténylegesen használja a 0, ilyesmi. 705 00:50:17,000 --> 00:50:20,000 A végén a tömb-Charlotte hozta ezt fel egy kicsit korábban. 706 00:50:20,000 --> 00:50:23,000 Ez az, ahol akkor figyelembe kell venni a nulla indexelés. 707 00:50:23,000 --> 00:50:25,000 >> Charlotte, mi a végén a tömb? 708 00:50:25,000 --> 00:50:28,000 Mi az az index a végén? 709 00:50:28,000 --> 00:50:30,000 [Charlotte] Méret - 1. 710 00:50:30,000 --> 00:50:32,000 Igen, és milyen méretű kellene kezelhető? 711 00:50:32,000 --> 00:50:35,000 Ha az általunk használt tőke mérete vagy kisbetűs méret? 712 00:50:35,000 --> 00:50:37,000 Capital méret. 713 00:50:37,000 --> 00:50:42,000 Ebben az esetben is jönne tőkéjük méretét. 714 00:50:42,000 --> 00:50:45,000 Ha akartuk ezt a funkciót, hogy a hordozható 715 00:50:45,000 --> 00:50:48,000 és használja ezt a funkciót más programok, 716 00:50:48,000 --> 00:50:50,000 tudjuk ténylegesen használni kisbetűvel méretét. 717 00:50:50,000 --> 00:50:52,000 Ez rendben is. 718 00:50:52,000 --> 00:51:01,000 De Charlotte teljesen igaza van, hogy azt akarjuk, hogy méret - 1. 719 00:51:01,000 --> 00:51:03,000 Ezen a ponton, 720 00:51:03,000 --> 00:51:05,000 [Student] Hogyan van az, hogy segítségével nagybetűs méret? 721 00:51:05,000 --> 00:51:07,000 Hogy van az, hogy mi jönne nagybetűs méret? 722 00:51:07,000 --> 00:51:13,000 Kiderült, hogy ezek a # meghatározza tényleg, 723 00:51:13,000 --> 00:51:19,000 a motorháztető alatt, a szöveg, mint a keresés és csere, ha van értelme. 724 00:51:19,000 --> 00:51:24,000 Amikor lefordítod a kódot, az előfeldolgozás fázis 725 00:51:24,000 --> 00:51:27,000 a fordító megy keresztül a fájlt, 726 00:51:27,000 --> 00:51:31,000 és úgy néz ki mindenhol, hogy írtam a tőke mérete, 727 00:51:31,000 --> 00:51:39,000 és ez helyettesíti a szöveget szó szerint egy 8, csak úgy. 728 00:51:39,000 --> 00:51:42,000 Ebben az értelemben ez nagyon más, mint egy változó. 729 00:51:42,000 --> 00:51:45,000 Ez nem foglalnak el helyet a memóriában. 730 00:51:45,000 --> 00:51:52,000 Ez egy egyszerű szöveges replace trükk. 731 00:51:52,000 --> 00:51:57,000 Ebben az esetben fogjuk használni méretét. 732 00:51:57,000 --> 00:52:01,000 Innen mi akarsz valamilyen ismétlés, 733 00:52:01,000 --> 00:52:03,000 és mi vagyunk a helyes úton a mi do-while hurok. 734 00:52:03,000 --> 00:52:08,000 Azt akarjuk, hogy valamit tenni, amíg a feltétel nem teljesül többé, 735 00:52:08,000 --> 00:52:12,000 és mint korábban láttuk, láttuk, hogy ez a feltétel 736 00:52:12,000 --> 00:52:19,000 Valóban, hogy mi nem akarjuk, hogy a végén 737 00:52:19,000 --> 00:52:24,000 kevesebb lesz, mint a kezdődik. 738 00:52:24,000 --> 00:52:26,000 >> Ez a mi megállási feltétel. 739 00:52:26,000 --> 00:52:35,000 Ha ez bekövetkezik, azt akarjuk, hogy hagyja abba, és állapítsa meg, mint a "Hé, nem találtunk semmit." 740 00:52:35,000 --> 00:52:43,000 Ahhoz, hogy ezt az, mi szeretnénk használni valamilyen hurok. 741 00:52:43,000 --> 00:52:49,000 Ebben az esetben az lenne a do-while, a for ciklus egy while? 742 00:52:49,000 --> 00:52:51,000 Van egy do-while itt. 743 00:52:51,000 --> 00:52:53,000 Srácok, mint ez a megközelítés? 744 00:52:53,000 --> 00:52:59,000 Gondolod, hogy meg kell próbálnunk egy másik megközelítés? 745 00:52:59,000 --> 00:53:01,000 Kevin, minden gondolat? 746 00:53:01,000 --> 00:53:06,000 Mi is van egy while ciklus, mert tudjuk, maximum 747 00:53:06,000 --> 00:53:11,000 nagyobb lenne, mint a minimális az elején egyébként. 748 00:53:11,000 --> 00:53:14,000 Igen, így nincs inicializálási hogy kell történnie. 749 00:53:14,000 --> 00:53:17,000 Ezek a do-while ciklusok nagyon, amikor el kell initialize valami 750 00:53:17,000 --> 00:53:21,000 addig tesztelés, mivel itt 751 00:53:21,000 --> 00:53:26,000 tudjuk, hogy nem fogunk tartani újrainicializálásával mind kezdődik és végződik 752 00:53:26,000 --> 00:53:28,000 minden körben a hurok. 753 00:53:28,000 --> 00:53:32,000 Tudjuk, hogy akarjuk inicializálni őket, majd ellenőrizze az állapotát. 754 00:53:32,000 --> 00:53:38,000 Ebben az esetben, én tényleg menni egy egyszerű while ciklus. 755 00:53:38,000 --> 00:53:44,000 Kiderül, hogy a do-while ciklusok használata meglehetősen ritkán. 756 00:53:44,000 --> 00:53:49,000 Sok helyen nem is tanítják ezt while ciklusok. 757 00:53:49,000 --> 00:53:53,000 Ők jó kezelése felhasználói bemenetet, így láttunk egy csomó közülük eddig. 758 00:53:53,000 --> 00:53:59,000 De a normális és a while ciklusok sokkal gyakoribb. 759 00:53:59,000 --> 00:54:03,000 Kiderült, hogy ez a feltétel írásbeli 760 00:54:03,000 --> 00:54:09,000 nem fog valóban nekünk sok jó, és miért van ez? 761 00:54:09,000 --> 00:54:11,000 Sajnálom, de nem tudom a nevét. 762 00:54:11,000 --> 00:54:13,000 Én vagyok Jerry. >> Tessék? 763 00:54:13,000 --> 00:54:15,000 Ez a B-O-R-U-I. 764 00:54:15,000 --> 00:54:18,000 Ó, oké. 765 00:54:18,000 --> 00:54:23,000 Én nem látom a listámon. 766 00:54:23,000 --> 00:54:26,000 Ó, ez azért van, mert ó, hogy van értelme. 767 00:54:26,000 --> 00:54:31,000 Van egy ötletem, hogy miért ez a while ciklus esetleg nem működik megfelelően, 768 00:54:31,000 --> 00:54:38,000 az írásos azzal a feltétellel? 769 00:54:38,000 --> 00:54:43,000 [Jerry] Úgy érted, mint szeretné az összes dolgot, miután a-? 770 00:54:43,000 --> 00:54:46,000 Igen, ez az egyik. 771 00:54:46,000 --> 00:54:49,000 Meg lehet, hogy az összes ezt a cuccot a while ciklus, ami teljesen igaz. 772 00:54:49,000 --> 00:54:55,000 A másik dolog, hogy ez egy kicsit problémás, de az, hogy ez a feltétel nem működik. 773 00:54:55,000 --> 00:54:57,000 [Student] Meg kell flip azt. 774 00:54:57,000 --> 00:55:04,000 Rendben, tehát ez a feltétel soha nem lesz igaz, kezdetben, ahogy mi beszéltünk róla. 775 00:55:04,000 --> 00:55:08,000 Azt akarjuk, hogy valamit csinálni végéig 00:55:13,000 de mi szeretnénk tenni valamit, miközben 777 00:55:13,000 --> 00:55:21,000 kezdődik ≤ végén. 778 00:55:21,000 --> 00:55:24,000 >> Van, hogy fordított a logika is. 779 00:55:24,000 --> 00:55:27,000 Én vagyok bűnös, hogy e hibák egész idő alatt. 780 00:55:27,000 --> 00:55:31,000 [Student] Miért kell kisebb vagy egyenlő, mint a? 781 00:55:31,000 --> 00:55:33,000 Mert emlékszel a helyzet, hogy eljutottunk 782 00:55:33,000 --> 00:55:36,000 ahol nem volt csak egy eleme, és mi is le, 783 00:55:36,000 --> 00:55:43,000 és mi kerestünk mindössze a 15 a tömbben? 784 00:55:43,000 --> 00:55:47,000 És a kezdete és a vége ugyanaz volt elem. 785 00:55:47,000 --> 00:55:50,000 Azt szeretnénk, hogy győződjön meg arról, hogy kezeljük az ügyben. 786 00:55:50,000 --> 00:55:54,000 Ha volt egy egyenes kisebb, 787 00:55:54,000 --> 00:55:58,000 mi csak akkor tudja, hogy le a 2-elemű tömb. 788 00:55:58,000 --> 00:56:06,000 Amint megvan le, hogy az utolsó elem, ha ez a mi elem, akkor soha nem találják meg. 789 00:56:06,000 --> 00:56:10,000 Most itt van, amit tehetünk, pontosan olyan, mint te mondtál. 790 00:56:10,000 --> 00:56:15,000 Mi lehet kezdeni plopping cucc egyenesen a közepén a while ciklus. 791 00:56:15,000 --> 00:56:20,000 Mi lehet puff a mi középpont. 792 00:56:20,000 --> 00:56:24,000 Mi lehet venni az összes ilyen, ha nyilatkozatok, 793 00:56:24,000 --> 00:56:30,000 húzza ki őket e do-while hurok, 794 00:56:30,000 --> 00:56:34,000 puff őket, 795 00:56:34,000 --> 00:56:39,000 tisztítsa meg a dolgokat egy kicsit, 796 00:56:39,000 --> 00:56:48,000 és én megyek előre, és mentse a felülvizsgálat. 797 00:56:48,000 --> 00:56:53,000 És ezen a ponton, mi megvagyunk elég közel. 798 00:56:53,000 --> 00:56:55,000 Sam. 799 00:56:55,000 --> 00:56:58,000 Azt hiszem, akkor is van, hogy int középpontját = méret - 1/2. 800 00:56:58,000 --> 00:57:01,000 Megvan, méret - 1/2. 801 00:57:01,000 --> 00:57:05,000 Van még valami, meg kell változtatnunk erről a vonalat? 802 00:57:05,000 --> 00:57:10,000 Ez egy jó fogás. 803 00:57:10,000 --> 00:57:14,000 >> Mit jelent a méret csinálni? Vagyunk állandóan változó mérete? 804 00:57:14,000 --> 00:57:17,000 Annak érdekében, hogy a vonal, mint ez, meg kell változtatni a méretét. 805 00:57:17,000 --> 00:57:21,000 Meg kell változtatni a méretét minden alkalommal, amikor megy körül a hurok. 806 00:57:21,000 --> 00:57:25,000 De ne felejtsd el, amikor mentünk keresztül például csak egy kicsit korábban, 807 00:57:25,000 --> 00:57:30,000 és mi volt az elején a 4 808 00:57:30,000 --> 00:57:33,000 és a vég az egész úton át a 108? 809 00:57:33,000 --> 00:57:35,000 Hogyan számoljuk ki a középpont? 810 00:57:35,000 --> 00:57:38,000 Vajon mi a méret? 811 00:57:38,000 --> 00:57:40,000 Vagy használta kezdődik és végződik helyette? 812 00:57:40,000 --> 00:57:42,000 Ez a különbség a végén és az elején. 813 00:57:42,000 --> 00:57:50,000 Pontosan, és pontosan hogyan írjak, hogy Charlotte? 814 00:57:50,000 --> 00:57:52,000 Csak a végén - kezdődik. 815 00:57:52,000 --> 00:57:55,000 Ugye nem kell tennie a - 1 816 00:57:55,000 --> 00:57:58,000 mert az - 1 bekerült a végén kezdődik, és a már. 817 00:57:58,000 --> 00:58:00,000 [Nate] Nagy, teljesen igazad van. 818 00:58:00,000 --> 00:58:03,000 Nem kell, hogy ezt a - 1 mert - 1 bekerült 819 00:58:03,000 --> 00:58:08,000 és elszámolni, amikor inicializálja a végén változó. 820 00:58:08,000 --> 00:58:11,000 >> Van még valami, amit meg kell tennem szintaktikailag hogy ezt a vonalat értelme? 821 00:58:11,000 --> 00:58:13,000 [Student] Plus megkezdéséhez. >> Plus kezdődik? 822 00:58:13,000 --> 00:58:15,000 [Student] a végén. 823 00:58:15,000 --> 00:58:20,000 Mert csak számított hosszának felét. 824 00:58:20,000 --> 00:58:26,000 Meg kell adni a kezdeni. 825 00:58:26,000 --> 00:58:31,000 [Nate] Mi lenne ez kiszámítja nekünk? 826 00:58:31,000 --> 00:58:35,000 Ha belegondolunk végén ezen a legelső iteráció a hurok 827 00:58:35,000 --> 00:58:40,000 vége lesz a helyén index 7. 828 00:58:40,000 --> 00:58:43,000 Kezdje a 0 pozícióban. 829 00:58:43,000 --> 00:58:47,000 Ne feledje, hogy keresünk vagy 830 00:58:47,000 --> 00:58:52,000 pozíció 3 vagy 4-helyzetben. 831 00:58:52,000 --> 00:58:56,000 Ha megnézzük ezt a matek, csak azért, hogy egy kicsit konkrétabb, 832 00:58:56,000 --> 00:59:02,000 egy kis szám van, már 7, 0, 833 00:59:02,000 --> 00:59:10,000 így 7-0, majd a / 2 834 00:59:10,000 --> 00:59:19,000 3, az egész részleg, ami. 835 00:59:19,000 --> 00:59:26,000 Akkor van szükségünk, hogy akkor add vissza a mi kezdődik? 836 00:59:26,000 --> 00:59:28,000 Mi nem ebben az esetben. 837 00:59:28,000 --> 00:59:31,000 Az első iteráció, akkor minden rendben lesz, mert begin értéke 0. 838 00:59:31,000 --> 00:59:36,000 De ahogy haladunk, mi tényleg minden csak szüksége van 839 00:59:36,000 --> 00:59:42,000 end - kezdődik / 2. 840 00:59:42,000 --> 00:59:46,000 Van még egy trükk, és ez vagyis az egyik elsőbbséget. 841 00:59:46,000 --> 00:59:49,000 [Student] Szükségünk van zárójelben? 842 00:59:49,000 --> 00:59:53,000 [Nate] Pontosan, és ez azért van, mert ha nem, hogy ezeket zárójelben 843 00:59:53,000 --> 00:59:58,000 akkor ez a sor kell értelmezni, hanem 844 00:59:58,000 --> 01:00:09,000 A (vége) - (kezdődik / 2), amit biztosan nem akar. 845 01:00:09,000 --> 01:00:11,000 Vigyázz az ilyen elsőbbségi szabályokat. 846 01:00:11,000 --> 01:00:15,000 [Student] miért nem ér véget + elkezdeni? 847 01:00:15,000 --> 01:00:17,000 Miért nem akkor ér véget + elkezdeni? 848 01:00:17,000 --> 01:00:19,000 [Student] Miért nem az? 849 01:00:19,000 --> 01:00:24,000 Miért lenne +? 850 01:00:24,000 --> 01:00:26,000 Azt hiszem, igazad van. 851 01:00:26,000 --> 01:00:28,000 [Student] Mert ez átlag? 852 01:00:28,000 --> 01:00:31,000 [Nate] End + kezdődik, teljesen igazad van. 853 01:00:31,000 --> 01:00:34,000 Wow, én teljesen elrontottam. Igazad van. 854 01:00:34,000 --> 01:00:39,000 Ha csinálunk a mínusz, mi lenne szeretnénk hozzáadni kezdődik újra be 855 01:00:39,000 --> 01:00:43,000 Ebben az esetben, nagyon helyes, hogy azt szeretné, hogy az átlag a két, 856 01:00:43,000 --> 01:00:45,000 így akarok hozzá őket, szemben a kivonáshoz őket. 857 01:00:45,000 --> 01:00:49,000 [Student] Azt is működik, ha te end - kezdődik / 2 + kezdődik. 858 01:00:49,000 --> 01:00:55,000 Ez lenne, ha mi, azt hiszem. 859 01:00:55,000 --> 01:01:00,000 >> Például, ha voltunk nézi most kezdődik, 860 01:01:00,000 --> 01:01:04,000 és mi tolódott át ide 861 01:01:04,000 --> 01:01:08,000 hogy a 15. 862 01:01:08,000 --> 01:01:12,000 Most kezdődik a 2-es pozícióba. 863 01:01:12,000 --> 01:01:15,000 Végén van a 7-helyzetben. 864 01:01:15,000 --> 01:01:21,000 Ha kivonni őket, kap 5. 865 01:01:21,000 --> 01:01:24,000 Osszuk el, hogy a 2, akkor kap 2. 866 01:01:24,000 --> 01:01:27,000 És akkor adjunk hozzá 2 vissza, 867 01:01:27,000 --> 01:01:30,000 és hogy lesz számunkra, hogy a 4. pozíció, 868 01:01:30,000 --> 01:01:33,000 ami itt, ami a középpont. 869 01:01:33,000 --> 01:01:36,000 [Student] Nem kell vigyázni a csomagolás? 870 01:01:36,000 --> 01:01:39,000 Milyen értelemben van szükségünk, hogy vigyázzon a csomagolás? 871 01:01:39,000 --> 01:01:43,000 Ha az összeg vagy a különbsége 872 01:01:43,000 --> 01:01:45,000 attól függően, hogy hogyan csináljuk, nem páros szám. 873 01:01:45,000 --> 01:01:49,000 Ezután a számítógép összezavarodik-e, ha ez 2,5; 874 01:01:49,000 --> 01:01:52,000 nem mozog balra vagy jobbra, hogy melyik az a felezőpontja? 875 01:01:52,000 --> 01:01:54,000 Megvan. 876 01:01:54,000 --> 01:01:56,000 Kiderül, hogy az egész osztály, 877 01:01:56,000 --> 01:01:59,000 mi soha nem kap ilyen lebegőpontos számokat. 878 01:01:59,000 --> 01:02:01,000 Mi soha nem kap a tizedes. 879 01:02:01,000 --> 01:02:04,000 Ez teljesen dobni. 880 01:02:04,000 --> 01:02:08,000 Ha van egy számítógép osztani 2 int változó, 881 01:02:08,000 --> 01:02:11,000 és egy 7, és a másik jelentése 2, 882 01:02:11,000 --> 01:02:13,000 nem kap 3,5 következtében. 883 01:02:13,000 --> 01:02:16,000 Ez lesz 3. 884 01:02:16,000 --> 01:02:19,000 A fennmaradó fogják dobni, így hatékonyan kerekítést 885 01:02:19,000 --> 01:02:24,000 Nem kerek, hanem a padló, ha a srácok ismeri, hogy a matematika, 886 01:02:24,000 --> 01:02:27,000 ahol teljesen megválni a tizedes, 887 01:02:27,000 --> 01:02:31,000 és így te lényegében csonkolása le a legközelebbi 888 01:02:31,000 --> 01:02:33,000 Az egész helyzet, a legközelebbi egész számra. 889 01:02:33,000 --> 01:02:38,000 [Student] De akkor ez problémás, mert ha van egy sor 7 lencsetag 890 01:02:38,000 --> 01:02:43,000 akkor hogy automatikusan úgy 3. elemét ki a középpont helyett a 4-én. 891 01:02:43,000 --> 01:02:46,000 Hogyan bánjunk vele? 892 01:02:46,000 --> 01:02:49,000 Ez problematikus, mert ha volt egy sor 7, 893 01:02:49,000 --> 01:02:54,000 ez felvenni 3. helyett a 4-én. 894 01:02:54,000 --> 01:02:56,000 Meg tudná magyarázni egy kicsit? 895 01:02:56,000 --> 01:02:59,000 [Student] Mert ha 7 lencsetag, akkor a 4. elem 896 01:02:59,000 --> 01:03:04,000 lenne a középpont, ugye? 897 01:03:04,000 --> 01:03:07,000 Ne felejtse el a véleményét erről, hogy nulla indexelt, mégis. 898 01:03:07,000 --> 01:03:10,000 [Student] Igen, 3-helyzetben. Ez lenne a középpont. 899 01:03:10,000 --> 01:03:12,000 Igen. 900 01:03:12,000 --> 01:03:16,000 Ó, oké. Értem, mire gondolsz. 901 01:03:16,000 --> 01:03:19,000 Ez furcsa, hiszen szokni ezt az egész fogalma 902 01:03:19,000 --> 01:03:22,000 megszabadulni a tizedes. 903 01:03:22,000 --> 01:03:26,000 Ez egy jó pont. 904 01:03:26,000 --> 01:03:30,000 Fejezzük ezt fel. 905 01:03:30,000 --> 01:03:32,000 Már kiszámítani a középpont. 906 01:03:32,000 --> 01:03:37,000 >> Mi tesztelése, hogy ha a tű megegyezik a középső értéket. 907 01:03:37,000 --> 01:03:41,000 Mi nyomtat, hogy megtaláltuk, de tényleg, mit akarunk csinálni ebben a helyzetben? 908 01:03:41,000 --> 01:03:46,000 Úgy találtuk, így azt akarja, hogy a hívó fél tudja, hogy megtaláltuk. 909 01:03:46,000 --> 01:03:49,000 Van egy funkció, amely egy boolean típusú funkciót. 910 01:03:49,000 --> 01:03:54,000 Ahogy azt jelzi, hogy a hívó felet a funkció, hogy mi vagyunk kész 911 01:03:54,000 --> 01:03:58,000 van azt mondani: "Hé, ez igaz." 912 01:03:58,000 --> 01:04:00,000 Hogyan tesszük ezt, Kevin? 913 01:04:00,000 --> 01:04:02,000 Te bólogató fejed. >> [Kevin] Add vissza igaz. 914 01:04:02,000 --> 01:04:06,000 [Nate] Pontosan, vissza igaz. 915 01:04:06,000 --> 01:04:12,000 Nos, ha ez nem egyenlő, hogyan nézzük a bal fele? 916 01:04:12,000 --> 01:04:16,000 Valami ötlet? 917 01:04:16,000 --> 01:04:18,000 Stella, valami ötleted? 918 01:04:18,000 --> 01:04:21,000 Be kell állítani egy új pozíciót végén. 919 01:04:21,000 --> 01:04:23,000 Igen. 920 01:04:23,000 --> 01:04:29,000 Így kell tennünk álláspontja középpont - a végén. 921 01:04:29,000 --> 01:04:33,000 Remek. 922 01:04:33,000 --> 01:04:36,000 Meg kell állítani egy új pozíciót a végén 923 01:04:36,000 --> 01:04:38,000 hogy nézd meg a bal fele. 924 01:04:38,000 --> 01:04:41,000 Ez volt az, amiről beszéltünk előtt, ahol 925 01:04:41,000 --> 01:04:44,000 Én folyamatosan megy vissza ezt a példát. 926 01:04:44,000 --> 01:04:50,000 Én az itt kezdődik, és aztán már a végén egészen ide. 927 01:04:50,000 --> 01:04:53,000 >> Ismét, ha keresünk, 15, és a középpont van 16, 928 01:04:53,000 --> 01:04:56,000 és rájövünk, "Oops, 16 nagyobb. 929 01:04:56,000 --> 01:04:59,000 Azt akarjuk mozgatni a bal fele. " 930 01:04:59,000 --> 01:05:02,000 Szeretnénk majd mozgassa a végén a 15, 931 01:05:02,000 --> 01:05:06,000 és mi, hogy a vevő 1-re a középpont 932 01:05:06,000 --> 01:05:09,000 és meghatározza, hogy mivel az új vége. 933 01:05:09,000 --> 01:05:12,000 Hasonlóképpen, ha azt akarjuk, hogy nézd meg a jobb fele, hogyan tesszük ezt? 934 01:05:12,000 --> 01:05:14,000 Van egy ötleted? 935 01:05:14,000 --> 01:05:22,000 [Student] Csak állítva kezdődik felezőpontja + 1. 936 01:05:22,000 --> 01:05:24,000 [Nate] Nagy. 937 01:05:24,000 --> 01:05:29,000 És most az a helyzet, hogy nem találunk semmit, 938 01:05:29,000 --> 01:05:32,000 jelent, hogy kap gondoskodott nekünk? 939 01:05:32,000 --> 01:05:36,000 Daniel, nem kap, hogy gondoskodott a számunkra? 940 01:05:36,000 --> 01:05:38,000 [Daniel] Nem 941 01:05:38,000 --> 01:05:40,000 [Nate] Ha tudjuk csinálni az egész tömb, és nem találunk semmit, 942 01:05:40,000 --> 01:05:42,000 hol lenne, hogy kell gondoskodni, vagy kéne vigyázni rá? 943 01:05:42,000 --> 01:05:44,000 [Daniel] A while feltételt. 944 01:05:44,000 --> 01:05:48,000 [Nate] Ja, miközben feltételt, pontosan. 945 01:05:48,000 --> 01:05:51,000 Ez gondoskodik megy az egész tömb, ha nem találunk semmit. 946 01:05:51,000 --> 01:05:53,000 Ez a while ciklus véget ér. 947 01:05:53,000 --> 01:05:56,000 Mi soha nem találkoztak ennek a feltételnek, 948 01:05:56,000 --> 01:06:03,000 és mi vissza hamis. 949 01:06:03,000 --> 01:06:10,000 Azt is hagyjuk ezt, ha itt ilyen 950 01:06:10,000 --> 01:06:14,000 mert ha ezt, ha az állítás igaz, 951 01:06:14,000 --> 01:06:16,000 és a függvény visszatér, 952 01:06:16,000 --> 01:06:21,000 és így lényegében Majd megszakítja ezt a funkciót, ezen a ponton 953 01:06:21,000 --> 01:06:24,000 amikor visszatérünk igaz. 954 01:06:24,000 --> 01:06:28,000 De mi történik ezzel a struktúra itt? 955 01:06:28,000 --> 01:06:34,000 Vajon ez a munka teljesen, vagy van valamilyen logikai hiba ott? 956 01:06:34,000 --> 01:06:37,000 >> Van némi logikai hiba ott van, azzal, ahogyan ez létre. 957 01:06:37,000 --> 01:06:40,000 Mi lehet ez? 958 01:06:40,000 --> 01:06:43,000 [Student] Miért van szükség a - és + 1s? 959 01:06:43,000 --> 01:06:47,000 Ez beállítja a tömb fel, hogy az új bal felét és jobb fele. 960 01:06:47,000 --> 01:06:51,000 [Student] De miért nem csinálod nélkül - 1 és + 1s? 961 01:06:51,000 --> 01:06:53,000 [Nate] tudtuk állítsa megegyezik a középpont? 962 01:06:53,000 --> 01:07:04,000 Mi lehet problematikus erről? 963 01:07:04,000 --> 01:07:08,000 [Student] Azt hiszem, ez nem hatékony, mert te ellenőrzését egy értéket, ami már ellenőrizték. 964 01:07:08,000 --> 01:07:11,000 [Nate] Pontosan, így Sam teljesen igaza van. 965 01:07:11,000 --> 01:07:15,000 Ha a vége és kezdődik megegyezik a középpont 966 01:07:15,000 --> 01:07:18,000 helyett - 1 és + 1 megfontoltan, 967 01:07:18,000 --> 01:07:22,000 valamikor a jövőben fogunk a végén ellenőrzi a középpont újra. 968 01:07:22,000 --> 01:07:26,000 [Student] elkezdtem a Pset, aztán volt valami ilyesmi 969 01:07:26,000 --> 01:07:30,000 ahol Elfelejtettem a + 1, és ez ragadt egy végtelen ciklusba. 970 01:07:30,000 --> 01:07:34,000 Persze, mert egy bizonyos ponton, amit soha nem fog kap kezdődik és végződik 971 01:07:34,000 --> 01:07:39,000 hogy valóban átfedés. 972 01:07:39,000 --> 01:07:41,000 Cool. 973 01:07:41,000 --> 01:07:44,000 Van még egy logikai hiba, és ez az, hogy ez határozottan 974 01:07:44,000 --> 01:07:48,000 az else if. 975 01:07:48,000 --> 01:07:55,000 Miért lenne az? 976 01:07:55,000 --> 01:07:59,000 >> Ennek az az oka, ha ez nem más, ha-nem látod, Kevin? 977 01:07:59,000 --> 01:08:02,000 [Kevin] Igen, mert te megváltoztatja a végpont. 978 01:08:02,000 --> 01:08:05,000 [Nate] Pontosan. 979 01:08:05,000 --> 01:08:07,000 Mi változik a végpont, 980 01:08:07,000 --> 01:08:12,000 és ha ez van írva, mint ez-Majd készíts terek között, 981 01:08:12,000 --> 01:08:14,000 fogja vizsgálni az ügyet. 982 01:08:14,000 --> 01:08:18,000 Ebben az esetben, ha ez sikerül, megszakítja ki a funkciót. 983 01:08:18,000 --> 01:08:21,000 Ezután ellenőrizni fogja ez a következő esetben, 984 01:08:21,000 --> 01:08:24,000 és ha ez sikerül, akkor állítsa be a végpontot, 985 01:08:24,000 --> 01:08:28,000 és akkor fog folytatódni, és ellenőrizze, ebben az ügyben. 986 01:08:28,000 --> 01:08:31,000 De ezen a ponton, nem akarjuk, hogy tovább vizsgálja. 987 01:08:31,000 --> 01:08:35,000 Szerencsére, már nem állítja alaphelyzetbe a középpont van, 988 01:08:35,000 --> 01:08:39,000 és tudjuk, hogy ebben az esetben nem fog sikerülni. 989 01:08:39,000 --> 01:08:44,000 De mi feltétlenül akar tenni a más, ha ott 990 01:08:44,000 --> 01:08:48,000 annak ellenére, hogy az erő-ebben az esetben 991 01:08:48,000 --> 01:08:52,000 mivel nem vagyunk kiigazításáról felezőpontja lenne, hogy különbséget tenni? 992 01:08:52,000 --> 01:08:54,000 Nem, mert ezekben az esetekben a kizárólagos. 993 01:08:54,000 --> 01:08:58,000 Ismét én hibám. 994 01:08:58,000 --> 01:09:01,000 Nem, azt hiszem, szükségünk van erre else if. 995 01:09:01,000 --> 01:09:05,000 Tudunk próbálja ki és fuss, és meglátjuk, mi történik. 996 01:09:05,000 --> 01:09:08,000 Épület, hiba történt. 997 01:09:08,000 --> 01:09:12,000 Ez valószínűleg azért, mert hagytam ezeket reggelivel és e itt van. 998 01:09:12,000 --> 01:09:14,000 Muszáj tovább e fel a csúcsra? 999 01:09:14,000 --> 01:09:16,000 Nem úgy néz ki, mint ez. 1000 01:09:16,000 --> 01:09:20,000 Mi kicsinyítés, épít, 1001 01:09:20,000 --> 01:09:24,000 ott megy, úgyhogy most ha keresni 15, 1002 01:09:24,000 --> 01:09:28,000 Igen. 1003 01:09:28,000 --> 01:09:30,000 Hadd Nagyítás 1004 01:09:30,000 --> 01:09:33,000 15, igen. Mi lehet futtatni újra. 1005 01:09:33,000 --> 01:09:36,000 Feltöltése forráskód, építési, futás. 1006 01:09:36,000 --> 01:09:41,000 Mi lehet keresni valami ilyesmit 13, 1007 01:09:41,000 --> 01:09:45,000 és nem kap semmit nyomtat ki, tehát nem állapította meg, hogy a számunkra. 1008 01:09:45,000 --> 01:09:51,000 Ez nagyszerű, mert ez nem a mi listán. 1009 01:09:51,000 --> 01:09:53,000 >> Most már az idő. 1010 01:09:53,000 --> 01:09:55,000 Ez lesz, hogy ezen a héten. 1011 01:09:55,000 --> 01:10:00,000 Köszönjük, hogy csatlakozott, és később találkozunk. 1012 01:10:00,000 --> 01:10:02,000 >> [CS50.TV]