1 00:00:00,000 --> 00:00:10,982 2 00:00:10,982 --> 00:00:11,940 DAVID Malan: Dobre. 3 00:00:11,940 --> 00:00:16,470 Tak toto je CS50, a to je Teraz štart troch týždni. 4 00:00:16,470 --> 00:00:19,960 >> Takže až do teraz, máme bolo písanie programov v jazyku C 5 00:00:19,960 --> 00:00:23,210 ktoré vyzerajú trochu niečo ako toto. 6 00:00:23,210 --> 00:00:25,470 Takže máme pár ostré obsahuje v hornej časti. 7 00:00:25,470 --> 00:00:28,490 Máme int, hlavné, void, a potom sa niečo urobiť v stredu, 8 00:00:28,490 --> 00:00:30,590 niektorá časť kódu vnútri tejto funkcie. 9 00:00:30,590 --> 00:00:34,170 Ale kľúč je skutočnosť, že sme sa tu hovorí neplatné. 10 00:00:34,170 --> 00:00:39,320 Takže neplatné, všetky z tejto doby, špecifikuje že tento program pri spustení, 11 00:00:39,320 --> 00:00:41,300 možné spustiť len pomocou jeho názvu. 12 00:00:41,300 --> 00:00:46,330 Nedá zadať žiadne iné slová alebo Čísla za menom programu, ak 13 00:00:46,330 --> 00:00:46,830 spustením. 14 00:00:46,830 --> 00:00:51,200 Tak napríklad, ak program bol zostavené do súboru s názvom Dobrý deň, 15 00:00:51,200 --> 00:00:53,480 by ste mohli urobiť ./hello, ale to je všetko. 16 00:00:53,480 --> 00:00:56,750 >> Jediný spôsob, ako by ste mohli prispievať k tomuto programu 17 00:00:56,750 --> 00:00:57,960 je volaním funkcie. 18 00:00:57,960 --> 00:00:59,790 Napríklad, čo sa funkcie sme používali doteraz 19 00:00:59,790 --> 00:01:00,950 získať vstup od užívateľa? 20 00:01:00,950 --> 00:01:02,117 >> Divákov: Získať reťazec. 21 00:01:02,117 --> 00:01:04,700 DAVID Malan: Ak chcete získať reťazec, alebo dostať int, alebo ste videli ostatné, 22 00:01:04,700 --> 00:01:07,630 aj keď ste používali doteraz, ako sa dlhé, dlhé a podobne. 23 00:01:07,630 --> 00:01:09,380 Ale dajme tomu, že sme naozaj chcete začať 24 00:01:09,380 --> 00:01:12,760 písanie programov, ktoré sú len o málo viac univerzálny, a, úprimne povedané, trochu viac 25 00:01:12,760 --> 00:01:15,090 ako príkazy, ktoré ste Dostali, dúfajme, 26 00:01:15,090 --> 00:01:16,550 trochu zvyknutí. 27 00:01:16,550 --> 00:01:18,560 Rovnako ako cd priestoru Dropbox. 28 00:01:18,560 --> 00:01:20,800 To, samozrejme, zmeny adresár, za predpokladu, že 29 00:01:20,800 --> 00:01:23,590 ste na Johna Harvarde domova adresár, do vášho Dropbox zložky. 30 00:01:23,590 --> 00:01:27,380 Medzitým sa príkaz ako je tento vytvorí nový adresár s názvom pset2, 31 00:01:27,380 --> 00:01:30,290 Ako ste si možno už ani bude čoskoro problém nastaviť dva. 32 00:01:30,290 --> 00:01:33,970 Uistite sa Dobrý deň, samozrejme, je príkaz že vytvára program s názvom ahoj 33 00:01:33,970 --> 00:01:35,770 zo súboru s názvom ahoj bodka c. 34 00:01:35,770 --> 00:01:39,140 A v každom z nich prípady, teraz sme mali 35 00:01:39,140 --> 00:01:43,620 poskytnúť argument na takzvaný príkazový riadok, blikanie rýchle, 36 00:01:43,620 --> 00:01:48,540 takže make vie, čo stavať, a tak že mkdir vie, čo zložku, ktorú chcete vytvoriť, 37 00:01:48,540 --> 00:01:51,110 a aby cd vie kam chcete ísť. 38 00:01:51,110 --> 00:01:54,720 Ale až do teraz, máme stále hovoríš že hlavným Vaša predvolené funkcie, 39 00:01:54,720 --> 00:01:58,500 má void výraz vnútri týchto zátvorkách, 40 00:01:58,500 --> 00:02:01,250 čo znamená, že nemôže mať žiadne argumenty. 41 00:02:01,250 --> 00:02:03,240 >> Tak začína dnes, čo budeme robiť 42 00:02:03,240 --> 00:02:06,270 sa, ideme na začiatok podporovať také veci ešte. 43 00:02:06,270 --> 00:02:08,990 V skutočnosti, v tomto prípade, ktorý vám nie sú zvyčajne ručne zadať, 44 00:02:08,990 --> 00:02:11,130 Uistite sa robí pre nás nie sú 45 00:02:11,130 --> 00:02:15,840 jeden, ale jeden, dva, tri ďalšie struny Po skončení programu je pomenovaný 46 00:02:15,840 --> 00:02:16,850 zvonenie. 47 00:02:16,850 --> 00:02:18,240 Tak ako to dosiahnuť? 48 00:02:18,240 --> 00:02:20,260 >> No, začína dnes, v prípadoch, keď chceme 49 00:02:20,260 --> 00:02:22,855 poskytovať prostredníctvom vstupu takzvaný príkazový riadok, 50 00:02:22,855 --> 00:02:24,980 budeme začať pridávať tu to, čo je v yellow-- 51 00:02:24,980 --> 00:02:30,520 výmenou za neplatné s int argc čiarkou string argv zátvorka zátvorka. 52 00:02:30,520 --> 00:02:32,520 Teraz je to zaujímavé pár dôvodov. 53 00:02:32,520 --> 00:02:35,690 Po prvé, bude to nám napísať programy, ktoré sú o niečo väčšiu dynamiku. 54 00:02:35,690 --> 00:02:37,570 Ale viac presvedčivo, bude to otvoriť 55 00:02:37,570 --> 00:02:40,340 teraz rozhovor, aby sa čo poľa môže naozaj 56 00:02:40,340 --> 00:02:43,300 byť použité, za to, čo reťazec Naozaj je pod kapotou, 57 00:02:43,300 --> 00:02:47,320 až do budúceho týždňa, kedy začneme potápanie v ešte hlbšie, ako je stroj 58 00:02:47,320 --> 00:02:48,590 aby všetky tieto veci práce. 59 00:02:48,590 --> 00:02:51,920 Ale teraz, poďme kresliť, Možno, obraz. 60 00:02:51,920 --> 00:02:54,950 >> Keď napíšete program s hlavným vyhlásil, 61 00:02:54,950 --> 00:02:58,810 týmto spôsobom, tak, že hlavný prijíma dva argumenty, int 62 00:02:58,810 --> 00:03:03,233 a-- aký typ dát je druhý argument? 63 00:03:03,233 --> 00:03:04,529 >> DIVÁKOV: Array. 64 00:03:04,529 --> 00:03:05,320 DAVID Malan: Array. 65 00:03:05,320 --> 00:03:09,170 Takže to vyzerá na prvý pohľad ako by to string, ale všimnite si hranatých zátvoriek. 66 00:03:09,170 --> 00:03:12,760 Pripomeňme, minule sme uviedli na trh Pojem poľa. 67 00:03:12,760 --> 00:03:16,210 A polia používajú hranaté zátvorky v niekoľkých súvislostiach. 68 00:03:16,210 --> 00:03:19,160 Môžete použiť na námestí držiaky ísť do poľa 69 00:03:19,160 --> 00:03:22,710 a získanie určitého prvku, ako je držiak 0 alebo 1 alebo držiak držiak 2. 70 00:03:22,710 --> 00:03:25,500 Ale videli sme, ak je krátko, minulý týždeň, že je tiež 71 00:03:25,500 --> 00:03:28,790 použiť tieto hranaté zátvorky pre deklarovať veľkosť poľa, 72 00:03:28,790 --> 00:03:31,790 ak vopred viete, koľko ints alebo koľko reťazca alebo čokoľvek 73 00:03:31,790 --> 00:03:32,630 vlastne chcú. 74 00:03:32,630 --> 00:03:34,790 Tak to dopadá tu tretina kontext tu 75 00:03:34,790 --> 00:03:37,890 ktorá nemá číslo vnútri z hranatých zátvorkách. 76 00:03:37,890 --> 00:03:41,920 Ak zadáte, ako som sa tu, názov niečo ako argv, 77 00:03:41,920 --> 00:03:44,550 čo je len ozdobný spôsob, ako hovorí argument, vektor, ktorý 78 00:03:44,550 --> 00:03:47,750 je ďalší ozdobný spôsob, ako hovorí niekoľko argumentov, 79 00:03:47,750 --> 00:03:50,870 zátvorka zátvorka len Znamená to, že nemusíte nutne 80 00:03:50,870 --> 00:03:52,960 vedieť vopred, ako veľký pole bude, 81 00:03:52,960 --> 00:03:55,070 ale viete, že to bude pole. 82 00:03:55,070 --> 00:03:57,320 Takže ak neviete, číslo nedávajte to tam, 83 00:03:57,320 --> 00:04:01,160 pre zátvorka zátvorka znamená, že argv nie je reťazec, 84 00:04:01,160 --> 00:04:03,124 ale pole reťazcov. 85 00:04:03,124 --> 00:04:05,040 Takže syntakticky, ak máte spomínať minulý týždeň, 86 00:04:05,040 --> 00:04:09,460 je to veľmi podobné, ako keby sme povedali niečo ako int veku otvorený držiak, 87 00:04:09,460 --> 00:04:10,984 a potom niečo neskôr. 88 00:04:10,984 --> 00:04:12,150 Takže to, čo to vyzerá? 89 00:04:12,150 --> 00:04:13,399 Poďme sa vlastne nakresliť obrázok. 90 00:04:13,399 --> 00:04:18,756 Takže pri spustení tohto programu s hlavnými mať dva argumenty sú definované vo vnútri 91 00:04:18,756 --> 00:04:21,339 z tých zátvoriek, je v podstate najmenej dva kusy 92 00:04:21,339 --> 00:04:23,560 pamäte podal na vás pod kapotou. 93 00:04:23,560 --> 00:04:26,550 Raz, keď som si kreslí ako tento obdĺžnik, sa bude nazývaný argc. 94 00:04:26,550 --> 00:04:30,645 A rovnako ako rýchlu rekapituláciu, čo je typ dát argc? 95 00:04:30,645 --> 00:04:31,270 Takže je to int. 96 00:04:31,270 --> 00:04:33,480 Takže číslo bude ísť argc-- zákrutách 97 00:04:33,480 --> 00:04:35,660 na to, že je skratka pre počet argumentov. 98 00:04:35,660 --> 00:04:38,887 Medzitým som vypracované argv ako pole. 99 00:04:38,887 --> 00:04:40,970 A ja naozaj neviem ako dlho to bude, 100 00:04:40,970 --> 00:04:42,470 takže pre dnešné účely dot dot dot. 101 00:04:42,470 --> 00:04:43,636 To by mohlo dostať nejaké dĺžky. 102 00:04:43,636 --> 00:04:45,640 Ale ja som tu na obrázku najmenej štyri obdĺžniky. 103 00:04:45,640 --> 00:04:50,970 Takže argv kus pamäte, ktorá uchováva string string string dot dot dot 104 00:04:50,970 --> 00:04:53,950 a argc je len jeden kus pamäte na celé číslo. 105 00:04:53,950 --> 00:04:55,710 >> Takže buďme trochu presnejšie. 106 00:04:55,710 --> 00:04:59,200 Ak keď mám struny v tomto poli, nazvaný 107 00:04:59,200 --> 00:05:03,290 argv, chcem, aby si na ne individuálne, rovnako ako minulý týždeň, 108 00:05:03,290 --> 00:05:05,670 budeme používať notáciu ako argv držiaku 0 109 00:05:05,670 --> 00:05:07,650 Ak chcete získať prvá vec poľa. 110 00:05:07,650 --> 00:05:10,440 Argv držiak 1, aby si Druhá vec, a tak ďalej. 111 00:05:10,440 --> 00:05:14,597 Kľúčom je tu je, že sme stále 0 indexed-- stále počítať od 0. 112 00:05:14,597 --> 00:05:16,430 Takže teraz poďme skutočne dať niečo na to. 113 00:05:16,430 --> 00:05:21,670 Ak by som mal zostaviť program s názvom Dobrý deň zo súboru s názvom Dobrý deň bodka c, 114 00:05:21,670 --> 00:05:24,340 a potom som sa spustiť tento program s bodkou lomka Dobrý deň, 115 00:05:24,340 --> 00:05:28,380 to, čo robí môj počítač, notebook, vyzerať ako pod kapotou 116 00:05:28,380 --> 00:05:31,300 v okamihu, keď som bežať bodka lomítko ahoj a stlačte Enter? 117 00:05:31,300 --> 00:05:33,500 Tak, to je možno čo by sme mohli popísať 118 00:05:33,500 --> 00:05:37,010 ako obsah počítača pamäte alebo na pamäťové RAM-- Random Access. 119 00:05:37,010 --> 00:05:40,330 Inými slovami, počítač, nejako pre vás ako mávnutím čarovného prútika, 120 00:05:40,330 --> 00:05:45,360 uvádza číslo 1 v argc, AKA argcount, a to dá doslova reťazec 121 00:05:45,360 --> 00:05:48,200 ./hello v argv držiaku 0. 122 00:05:48,200 --> 00:05:51,750 Nemám tušenie, úprimne povedané, to, čo je v argv držiaku 1 alebo 2 alebo 3, 123 00:05:51,750 --> 00:05:55,550 preto, že v prípade, že používateľ nemá napísal čokoľvek okrem ./hello, 124 00:05:55,550 --> 00:05:58,550 budeme predpokladať, že tieto sú s najväčšou pravdepodobnosťou hodnoty na odpadky, 125 00:05:58,550 --> 00:05:59,700 aby som tak povedal. 126 00:05:59,700 --> 00:06:02,650 Tieto kúsky pamäti existujú, ale nie je to na nás 127 00:06:02,650 --> 00:06:05,710 pozerať sa na ne, pretože argcount je len jedna. 128 00:06:05,710 --> 00:06:07,870 >> Teraz, medzitým, keď som napísať spustiť iný program, 129 00:06:07,870 --> 00:06:12,250 cd, čo je viac vhodne príkaz, v blikajúcim prompt-- cd priestoru 130 00:06:12,250 --> 00:06:17,200 Dropbox-- pri spustení, že efektívne, pri spustení cd program argc, 131 00:06:17,200 --> 00:06:22,270 vnútornej pamäte svojho počítača, je pre najviac najkratšia druhé číslo dva. 132 00:06:22,270 --> 00:06:25,936 A potom argv držiak o má cd, argv držiak 1 má Dropbox, 133 00:06:25,936 --> 00:06:28,560 a potom samozrejme príkaz dokončí, takže všetky tieto pamäte 134 00:06:28,560 --> 00:06:30,420 v podstate zmizne a sa používa pre niečo iné. 135 00:06:30,420 --> 00:06:32,270 A to je dôvod, prečo hovorím, len zlomok sekundy. 136 00:06:32,270 --> 00:06:35,720 >> Medzitým, keď to urobíme mkdir pset2, obrázok vyzerá takmer rovnaký, 137 00:06:35,720 --> 00:06:37,900 ale s rôznymi šnúrky, vnútri argv. 138 00:06:37,900 --> 00:06:42,570 Ak sa mi zvonenie pomlčka ahoj ahoj bodka c, rovnaký nápad. 139 00:06:42,570 --> 00:06:47,060 Ďalšia vec je vyplnený pre argv a argc, samozrejme, je 4. 140 00:06:47,060 --> 00:06:49,150 Takže inými slovami, aj keď tohto poľa 141 00:06:49,150 --> 00:06:52,950 môžu byť dot dot dot niektorých premennej dĺžky, aby som tak povedal, 142 00:06:52,950 --> 00:06:56,720 budete vždy vedieť, kde je jeho koniec je, pretože argc sa ti to povedať 143 00:06:56,720 --> 00:07:00,120 na akom mieste budete musieť prestať pri pohľade na prvky argv. 144 00:07:00,120 --> 00:07:03,660 Môžete sa pozrieť len na štyri celkom v tejto veci. 145 00:07:03,660 --> 00:07:06,600 >> Takže poďme sa teraz pozrieť na, Možno, jednoduchý program. 146 00:07:06,600 --> 00:07:09,070 Jeden, ktorý len hovorí, ahoj s niekým, ako je Zamyla. 147 00:07:09,070 --> 00:07:12,620 Takže tvrdím, budem písať program za chvíľu, cez ktorý by som mohol urobiť 148 00:07:12,620 --> 00:07:16,670 ./hello priestor Zamyla, a potom chcem môj program vytlačiť niečo 149 00:07:16,670 --> 00:07:18,520 super-jednoduchý ako "ahoj, Zamyla." 150 00:07:18,520 --> 00:07:20,100 Teraz, v minulosti sme použili getString. 151 00:07:20,100 --> 00:07:22,850 Takže v minulosti, a to aj v prípade, ste k programovaniu nové, 152 00:07:22,850 --> 00:07:27,180 pravdepodobné, môžete vybičovať program, ktorý používa getString 153 00:07:27,180 --> 00:07:29,390 a potom pomocou printf pozdraviť Zamyla. 154 00:07:29,390 --> 00:07:31,290 Ale poďme nepoužívajte getString tentoraz. 155 00:07:31,290 --> 00:07:37,510 Dovoľte mi, aby som namiesto toho ísť do Appliant a to vrátane štandardného Aj O dot hodín. 156 00:07:37,510 --> 00:07:41,160 Dovoľte mi, aby som tiež zahŕňať CS50 dot hodín. 157 00:07:41,160 --> 00:07:44,730 Teraz int main, a teraz som nebudem robiť neplatné dnes. 158 00:07:44,730 --> 00:07:51,200 Namiesto toho, budem robiť int argc string argv zátvorka zátvorka, 159 00:07:51,200 --> 00:07:52,640 nie je ani číslo. 160 00:07:52,640 --> 00:07:54,644 A teraz je môj takzvaný robiť. 161 00:07:54,644 --> 00:07:57,560 Čo budem robiť teraz, je, že som robiť trochu skok viery, 162 00:07:57,560 --> 00:08:00,560 Budem predpokladať, že užívateľ je bude správne používať tento program, 163 00:08:00,560 --> 00:08:04,980 a ja som jednoducho ísť do to printf Dobrý deň,% Sn. 164 00:08:04,980 --> 00:08:06,630 Takže nič nové tam. 165 00:08:06,630 --> 00:08:11,470 Ale ja chcem, aby sa dal čo slovo užívateľ zadá za menom programu. 166 00:08:11,470 --> 00:08:16,970 Takže keď som to ./hello priestor Zamyla som Chcete nejako programovo prístup 167 00:08:16,970 --> 00:08:20,870 citovať koniec citátu "Zamyla." tak som môže ísť do môjho argumentu vektora, 168 00:08:20,870 --> 00:08:25,980 moje pole reťazcov, a ak je príkaz, opäť, bol ./hello priestor Zamyla, 169 00:08:25,980 --> 00:08:29,340 aké číslo to chcem , Aby tu v argv? 170 00:08:29,340 --> 00:08:29,840 Divákov: 1. 171 00:08:29,840 --> 00:08:32,355 DAVID Malan: 1, pretože držiak 0 dopadá 172 00:08:32,355 --> 00:08:34,230 bude názov programu, ako sme videli. 173 00:08:34,230 --> 00:08:37,789 Takže držiak 1 je prvé slovo že ja, ako užívateľ zadali. 174 00:08:37,789 --> 00:08:39,559 Chystám sa ísť dopredu a ušetrite to. 175 00:08:39,559 --> 00:08:42,830 Chystám sa ísť do mojej zložky kde som umiestnil tento súbor. 176 00:08:42,830 --> 00:08:44,920 Budem robiť, aby ahoj 3. 177 00:08:44,920 --> 00:08:46,230 Comp IO je v poriadku. 178 00:08:46,230 --> 00:08:51,380 ./hello Zamyla Enter. 179 00:08:51,380 --> 00:08:54,480 Čo som urobil zle? 180 00:08:54,480 --> 00:08:57,270 Bol som chytený prekvapením ja len na chvíľu tam. 181 00:08:57,270 --> 00:08:58,230 Čo som urobil zle? 182 00:08:58,230 --> 00:08:59,220 >> DIVÁKOV: Name. 183 00:08:59,220 --> 00:09:01,767 >> DAVID Malan: Súbor je vlastne volal hello3.c. 184 00:09:01,767 --> 00:09:03,850 A ja som to len pre konzistencia, pretože sme 185 00:09:03,850 --> 00:09:06,550 mali hello.c je v minulosť v on-line kódu. 186 00:09:06,550 --> 00:09:11,550 Takže poďme vyriešiť tento ./hello Držiak pomlčka 3 Zamyla. 187 00:09:11,550 --> 00:09:12,370 Enter. 188 00:09:12,370 --> 00:09:14,030 A teraz máme ahoj, Zamyla. 189 00:09:14,030 --> 00:09:17,650 Zatiaľ môžem zmeniť na je Rob, alebo naozaj iné slovo. 190 00:09:17,650 --> 00:09:19,230 >> Ale uvažujme rohový prípad. 191 00:09:19,230 --> 00:09:24,360 Čo môžete očakávať, ak sa stane, Nechcem písať názov niečí vôbec? 192 00:09:24,360 --> 00:09:25,270 >> DIVÁKOV: Chyba. 193 00:09:25,270 --> 00:09:27,300 >> DAVID Malan: chyba nejakého druhu, snáď. 194 00:09:27,300 --> 00:09:28,200 Poďme sa pozrieť. 195 00:09:28,200 --> 00:09:29,440 Enter. 196 00:09:29,440 --> 00:09:30,210 Null. 197 00:09:30,210 --> 00:09:33,870 Takže printf je skutočne malý ochranný nás 198 00:09:33,870 --> 00:09:38,131 tú, a doslova tlač otvorené zátvorka null, ale aj horšie veci sa môže stať. 199 00:09:38,131 --> 00:09:40,130 A práve na preukázanie niečo, čo absolútne 200 00:09:40,130 --> 00:09:42,800 nemali robiť, ideme na tu a začať vŕtať. 201 00:09:42,800 --> 00:09:43,300 Je to tak? 202 00:09:43,300 --> 00:09:46,410 Pokiaľ ja viem, že obraz v pamäť je v podstate to, 203 00:09:46,410 --> 00:09:52,660 argv držiak 1 má Zamyla, argv Držiak 0 je ./hello, alebo ./hello-3. 204 00:09:52,660 --> 00:09:55,400 Čo je v držiaku 2? 205 00:09:55,400 --> 00:09:58,210 Takže môžem odpovedať, že pýtať sám seba, že jo? 206 00:09:58,210 --> 00:10:00,460 Môžem len zmeniť 1 na 2. 207 00:10:00,460 --> 00:10:07,270 Teraz môžem prekompilovať ahoj 3, ./hello3 Poďme priblížiť a stlačte Enter. 208 00:10:07,270 --> 00:10:08,270 Och. 209 00:10:08,270 --> 00:10:10,660 No quote značka. 210 00:10:10,660 --> 00:10:12,540 Zaujímavé. 211 00:10:12,540 --> 00:10:15,530 Tak to je celkom v pohode vidieť, čo ešte je tu. 212 00:10:15,530 --> 00:10:17,130 >> Takže čo iného je vnútri môjho notebooku? 213 00:10:17,130 --> 00:10:20,390 Zachráňme s držiakom 3. 214 00:10:20,390 --> 00:10:25,190 Uistite sa hello3, ./hello-3. 215 00:10:25,190 --> 00:10:26,500 Zvedavý. 216 00:10:26,500 --> 00:10:30,560 A teraz poďme naozaj bold-- 50. 217 00:10:30,560 --> 00:10:34,340 Tak to je naozaj potápanie hlboko do pamäte svojho počítača. 218 00:10:34,340 --> 00:10:35,930 50 indexy v. 219 00:10:35,930 --> 00:10:41,950 Tak, aby ahoj 3 ./hello-3. 220 00:10:41,950 --> 00:10:42,680 Zvedavý. 221 00:10:42,680 --> 00:10:44,660 Tak jo, teraz som len dostane bezohľadné. 222 00:10:44,660 --> 00:10:47,331 Poďme do 5000. 223 00:10:47,331 --> 00:10:47,830 V poriadku. 224 00:10:47,830 --> 00:10:49,520 Takže mi dovoľte prekompilovať. 225 00:10:49,520 --> 00:10:51,460 Uistite sa hello3, ./hello-3. 226 00:10:51,460 --> 00:10:55,780 227 00:10:55,780 --> 00:10:56,460 OK. 228 00:10:56,460 --> 00:10:59,250 Teraz niektorí z vás, môže sa byť žiarovka bude vypnuté. 229 00:10:59,250 --> 00:11:01,900 Koľko z vás má videl túto správu? 230 00:11:01,900 --> 00:11:03,440 OK. 231 00:11:03,440 --> 00:11:04,420 Tak prečo? 232 00:11:04,420 --> 00:11:07,250 >> Kurzy jsou-- a tam je iný veci, ktoré môžu spôsobiť to, 233 00:11:07,250 --> 00:11:09,730 a jasne, že ste v dobrej company-- máme jasne 234 00:11:09,730 --> 00:11:11,900 spôsobil, čo sa nazýva poruchy segmentácie. 235 00:11:11,900 --> 00:11:15,890 A dlhý príbeh krátky pre dnešok, som sa dotkli segment pamäte 236 00:11:15,890 --> 00:11:17,060 že som nemal. 237 00:11:17,060 --> 00:11:19,970 V prípade segmente jednoducho znamená kus pamäti, že by som nemal mať. 238 00:11:19,970 --> 00:11:25,530 Teraz je počítač zaručuje, že keď som spustiť ./helloZamyla, že môžem dotknúť argv 239 00:11:25,530 --> 00:11:27,760 byť držiak 0 a argv držiak 1. 240 00:11:27,760 --> 00:11:32,730 Ale argc je hodnota 2, to znamená, že som iba allowed-- je to trochu cti 241 00:11:32,730 --> 00:11:35,180 system-- na dotyk držiak 0 a 1 držiak. 242 00:11:35,180 --> 00:11:37,990 Ak mám ísť ďalej, je tu absolútne bude existovať pamäti. 243 00:11:37,990 --> 00:11:40,660 Môj RAM existuje fyzicky v počítači. 244 00:11:40,660 --> 00:11:42,080 Ale kto vie, čo je to? 245 00:11:42,080 --> 00:11:44,450 V skutočnosti, ja som beh viac programy naraz. 246 00:11:44,450 --> 00:11:46,910 Možno som seen-- keby som nebol robí na Appliant tento 247 00:11:46,910 --> 00:11:49,937 ale na mojom počítači Mac alebo PC-- by som mohol mať vidieť obsah e-mailu. 248 00:11:49,937 --> 00:11:52,270 Možno som videl na okamih Správa Nedávno som poslal. 249 00:11:52,270 --> 00:11:55,390 Čokoľvek, čo by mohlo byť pretrvávajúce okolo v pamäti 250 00:11:55,390 --> 00:11:59,180 mohli byť prístupné prostredníctvom Tento svojvoľný hranatá zátvorka notáciu. 251 00:11:59,180 --> 00:12:02,850 Alebo ešte horšie, pravdepodobne budete musieť našiel jeden z mojich hesiel 252 00:12:02,850 --> 00:12:05,859 že som nedávno napísal v roku, ktorý Program sa uloží do pamäte tak, aby 253 00:12:05,859 --> 00:12:07,900 mi overiť, a potom len tak nechal 254 00:12:07,900 --> 00:12:09,910 v pamäti RAM, až som prestal tento program. 255 00:12:09,910 --> 00:12:12,860 >> A skutočne, to je jeden z nebezpečenstvo a jeden právomoci 256 00:12:12,860 --> 00:12:15,980 používanie jazyka, ako je C Máte neobmedzený prístup 257 00:12:15,980 --> 00:12:18,860 na celý obsah pamäti programu je, 258 00:12:18,860 --> 00:12:21,340 a čo protivníci môžu dokonca robiť v týchto cases-- 259 00:12:21,340 --> 00:12:23,807 zvlášť keď sme dostať do programovania pre web 260 00:12:23,807 --> 00:12:26,890 ku koncu semestra, budeme znovu túto topic-- sa hrabať okolo seba, 261 00:12:26,890 --> 00:12:31,660 potenciálne niekto počítača pamäte a nájsť také čudné veci 262 00:12:31,660 --> 00:12:32,570 ako sme tam videli. 263 00:12:32,570 --> 00:12:36,900 Alebo dokonca ešte horšie, heslá, že alebo ona potom môžu použiť na robiť zlé veci. 264 00:12:36,900 --> 00:12:40,240 >> Tak jasne som nemal robiť to, pretože divné veci začnú diať. 265 00:12:40,240 --> 00:12:42,310 Naozaj, toto je program zhadzovať. 266 00:12:42,310 --> 00:12:44,580 To by bolo ekvivalentné Mac OS alebo Windows 267 00:12:44,580 --> 00:12:46,770 okno programu práve mizne. 268 00:12:46,770 --> 00:12:48,300 Došlo k neočakávanej chybe. 269 00:12:48,300 --> 00:12:50,840 V prostredí príkazového riadku vidíme niečo také. 270 00:12:50,840 --> 00:12:54,480 Ale to je dôvod, prečo sa mi jednoduchým dotykom pamäti, že nepatrí ku mne. 271 00:12:54,480 --> 00:12:57,090 >> Takže poďme sa brániť proti tomuto A trochu inak 272 00:12:57,090 --> 00:12:59,010 pri pohľade na tento program nájdete tu. 273 00:12:59,010 --> 00:13:01,000 Takže, opäť, kostra že sme videli earlier-- 274 00:13:01,000 --> 00:13:02,480 a ja som sa zvýrazní tentoraz int. 275 00:13:02,480 --> 00:13:05,900 A celú tú dobu hlavná má naozaj vrátil hodnotu. 276 00:13:05,900 --> 00:13:09,120 Aj keď sa vo väčšine našej prednášky Príklady sme ani raz použité 277 00:13:09,120 --> 00:13:10,990 vrátiť niečo v main. 278 00:13:10,990 --> 00:13:13,710 Práve sme sa napísať printf zavrieť zložená zátvorka a je to. 279 00:13:13,710 --> 00:13:16,500 Ale zadarmo to, čo kompilátor robil pre vás, 280 00:13:16,500 --> 00:13:19,510 efektívne, sa vracia 0 pre vás. 281 00:13:19,510 --> 00:13:22,950 Ukázalo out-- a je to trochu counterintuitive--, že 0 je dobrá. 282 00:13:22,950 --> 00:13:24,690 To neznamená, že falošný sebe. 283 00:13:24,690 --> 00:13:29,080 0 je dobrá, a všetky non-0 hodnota, sa svet rozhodol, 284 00:13:29,080 --> 00:13:30,619 môže znamenať chybu. 285 00:13:30,619 --> 00:13:32,910 Takže ak ste niekedy zmätok niečo, čo sa na vašom počítači, 286 00:13:32,910 --> 00:13:36,600 alebo program, ktorý práve zomrel na vás a ste sa dostali nejaké chybné okno 287 00:13:36,600 --> 00:13:40,360 na obrazovke, hovorí chyba Negatívny 49 alebo chyba 23-- 288 00:13:40,360 --> 00:13:44,170 niektoré zdanlivo ľubovoľný value-- to pretože programátor sa pevne 289 00:13:44,170 --> 00:13:49,370 hodnoty ako negatívne alebo pozitívne 49 23 predstavujú ľubovoľný počet, trúfam tvrdiť, 290 00:13:49,370 --> 00:13:53,340 4 miliardy možných vecí ktoré by mohli pokaziť v programe. 291 00:13:53,340 --> 00:13:55,700 >> Tak ako by som mohol vziať Výhodou sám? 292 00:13:55,700 --> 00:13:58,970 No, dovoľte mi, aby som otvoriť program že som napísal v predstihu, 293 00:13:58,970 --> 00:14:01,450 a hrabať okolo on-line s názvom Hello 4. 294 00:14:01,450 --> 00:14:05,650 A je to takmer totožné, okrem toho, že jeho dostal trochu kontrolu chýb. 295 00:14:05,650 --> 00:14:09,660 V tomto prípade som sa znova vyhlásil Hlavné as ohľadom dva argumenty, 296 00:14:09,660 --> 00:14:13,180 ale tentoraz na linke 17, oznámenie Robím trochu kontroly sanity. 297 00:14:13,180 --> 00:14:17,100 Ja uistite sa, že argc rovná sa rovná 2. 298 00:14:17,100 --> 00:14:18,960 Vzhľadom k tomu, je-li, že znamená, že môžete bezpečne 299 00:14:18,960 --> 00:14:21,420 dotknúť nielen držiaku 0, ale držiak 1. 300 00:14:21,420 --> 00:14:24,330 A ja som do toho pustite a vytlačiť, v tomto prípade, Zamyla alebo Rob 301 00:14:24,330 --> 00:14:26,020 alebo čo slovo, ktoré som napísal von. 302 00:14:26,020 --> 00:14:28,020 A teraz len preto, aby trochu správny, 303 00:14:28,020 --> 00:14:31,910 Chystám sa výslovne návrat 0 znamenať všetko je v poriadku. 304 00:14:31,910 --> 00:14:33,300 Nič zlé sa nestalo. 305 00:14:33,300 --> 00:14:38,590 >> Ale konvencií, budem vráti 1, alebo úprimne nejaké non-hodnota 0, 306 00:14:38,590 --> 00:14:40,160 keby sa niečo pokazilo. 307 00:14:40,160 --> 00:14:43,270 Teraz sa užívateľ nebude naozaj všimnete, čo sa deje. 308 00:14:43,270 --> 00:14:50,410 V skutočnosti, keď pôjdem do tohto adresára, sme sa priblížiť a robiť, aby ahoj 4, 309 00:14:50,410 --> 00:14:54,210 ./hello-4 Zamyla chová, ako som očakávať. 310 00:14:54,210 --> 00:14:58,570 Ale keby som miesto nezadávajte nič, sa zdanlivo nič nedeje, 311 00:14:58,570 --> 00:14:59,680 ale to nie je krach. 312 00:14:59,680 --> 00:15:04,660 A keby som namiesto toho urobiť niečo ako Rob je prokurista 313 00:15:04,660 --> 00:15:07,550 v Thayer-- zdieľania ľubovoľné informácie. 314 00:15:07,550 --> 00:15:13,680 Ale oznámenia, argv 1, 2, 3, 4, a 5 by teraz existovať v pamäti. 315 00:15:13,680 --> 00:15:16,540 To tiež nie je to, čo môj program očakáva, 316 00:15:16,540 --> 00:15:20,300 pretože som skontrolovať, či argc rovná rovný 2 alebo nie. 317 00:15:20,300 --> 00:15:22,140 Takže som teraz brániť proti tomu. 318 00:15:22,140 --> 00:15:25,290 >> Teraz, rovnako ako stranou, sme programmer-- alebo skôr sme users-- 319 00:15:25,290 --> 00:15:29,670 nikdy vidieť, že 0 alebo 1, ale s použitím nástroj s názvom Debugger alebo iné nástroje, 320 00:15:29,670 --> 00:15:32,250 ako uvidíme pred dlho ste programátor 321 00:15:32,250 --> 00:15:36,590 môžete skutočne vidieť, čo by mohlo byť zle vnútri programu. 322 00:15:36,590 --> 00:15:39,170 >> Takže nejaké otázky týkajúce sa argc? 323 00:15:39,170 --> 00:15:40,873 Jo. 324 00:15:40,873 --> 00:15:45,292 >> Divákov: Videl som, kde nemal charakter, [nepočuteľné] 325 00:15:45,292 --> 00:15:49,669 práve povedal string hviezda d, ako je Znak hviezdička čiarka. 326 00:15:49,669 --> 00:15:50,710 Sú ekvivalentné tu? 327 00:15:50,710 --> 00:15:51,626 >> DAVID Malan: Sú to. 328 00:15:51,626 --> 00:15:55,080 Takže otázka je, máte občas vidieť programy 329 00:15:55,080 --> 00:15:57,270 takto, že nie povedať, string argv držiak 330 00:15:57,270 --> 00:16:01,015 ale niečo povedať ako char hviezda argv držiaku. 331 00:16:01,015 --> 00:16:03,140 A je tu ešte ďalší varianty, ktoré môžete vidieť. 332 00:16:03,140 --> 00:16:04,264 Oni sú naozaj ekvivalentné. 333 00:16:04,264 --> 00:16:06,240 Teraz máme tieto druh koliesok 334 00:16:06,240 --> 00:16:09,737 na vo forme reťazca v CS50 knižnica, ale len niečo málo cez týždeň 335 00:16:09,737 --> 00:16:12,570 alebo tak budeme odstrániť, aby dohromady a vlastne obštrukcie 336 00:16:12,570 --> 00:16:16,820 Pozrite sa, čo char a hviezdy sú, a ako tie sa týkajú pamäti 337 00:16:16,820 --> 00:16:18,140 zastúpenie všeobecne. 338 00:16:18,140 --> 00:16:19,540 Takže sa vrátime k tomu. 339 00:16:19,540 --> 00:16:21,540 >> Ďalšie otázky týkajúce sa našej argv alebo argc? 340 00:16:21,540 --> 00:16:22,397 Jo. 341 00:16:22,397 --> 00:16:24,438 Divákov: Prečo sa to vráti Chyba [nepočuteľné]? 342 00:16:24,438 --> 00:16:27,147 343 00:16:27,147 --> 00:16:29,230 DAVID Malan: Prečo to urobil vráti chybu only-- oh! 344 00:16:29,230 --> 00:16:31,813 V predchádzajúcom prípade, kedy boli futzing okolo s pamäťou, 345 00:16:31,813 --> 00:16:35,110 prečo sa to len vráti chybu keď som naozaj napísal veľký počet? 346 00:16:35,110 --> 00:16:36,620 Stručná odpoveď je, že sme len mali šťastie. 347 00:16:36,620 --> 00:16:39,240 Všeobecne povedané, počítač prideľuje pamäť v kusoch, 348 00:16:39,240 --> 00:16:42,900 a to mi dal dosť veľký kus, ktorý Som preč, bez toho aby si všimol, 349 00:16:42,900 --> 00:16:46,280 dotyku držiaku 2, držiak 3, držiak 50, ale akonáhle som sa tlačil 350 00:16:46,280 --> 00:16:49,080 moje šťastie, išiel som za Hranice kus pamäti 351 00:16:49,080 --> 00:16:50,520 operačný systém dal mi. 352 00:16:50,520 --> 00:16:52,720 A to je, keď je zakročil a povedal, nie. 353 00:16:52,720 --> 00:16:54,580 Chyba segmentácie. 354 00:16:54,580 --> 00:16:55,692 Jo. 355 00:16:55,692 --> 00:16:58,890 >> Divákov: Ako funguje počítač poznať hodnotu argc? 356 00:16:58,890 --> 00:17:02,390 >> DAVID Malan: Ako funguje počítač poznať hodnotu argc? 357 00:17:02,390 --> 00:17:07,920 Pri spustení programu, tento program, podľa povahy blikajúce riadku 358 00:17:07,920 --> 00:17:11,359 je podal rad slová, ktoré boli zadané 359 00:17:11,359 --> 00:17:13,300 na výzvu, ktorá bola zadali na príkazovom riadku. 360 00:17:13,300 --> 00:17:16,569 A tak to je váš operačný systém, ktorý v podstate 361 00:17:16,569 --> 00:17:20,329 naplní argumenty Hlavné je pre vás. 362 00:17:20,329 --> 00:17:22,829 Takže to je jedna zo služieb, že dostanete, tak nejako tajne 363 00:17:22,829 --> 00:17:24,869 pod kapotou operačný systém. 364 00:17:24,869 --> 00:17:27,118 Ďalšie otázky? 365 00:17:27,118 --> 00:17:27,618 Jo. 366 00:17:27,618 --> 00:17:29,787 >> Divákov: Čo core dump znamená? 367 00:17:29,787 --> 00:17:31,370 DAVID Malan: Čo core dump znamená? 368 00:17:31,370 --> 00:17:32,950 Tak to je dobrá otázka. 369 00:17:32,950 --> 00:17:35,312 A dovoľte mi vrátiť sa do tento adresár tu. 370 00:17:35,312 --> 00:17:37,270 A všimnite si, že Mám nový súbor tam. 371 00:17:37,270 --> 00:17:41,670 Je to naozaj nazýva jadro a to je v skutočnosti zvyčajne slušnej veľkosti súboru. 372 00:17:41,670 --> 00:17:45,300 To je v podstate snímka obsah pamäte môjho programu 373 00:17:45,300 --> 00:17:46,902 alebo RAM, keď havaroval. 374 00:17:46,902 --> 00:17:49,110 A to bude užitočné, potenciálne diagnosticky, 375 00:17:49,110 --> 00:17:52,850 akonáhle budeme hovoriť v ďalšej prednáške a sekcie o ladenie, 376 00:17:52,850 --> 00:17:55,730 pretože môžete skutočne robiť ekvivalent digitálny pitvy 377 00:17:55,730 --> 00:18:00,300 v tomto súbore pomôže zistiť, to, čo ste urobili zle vo vašom programe. 378 00:18:00,300 --> 00:18:01,220 Jo. 379 00:18:01,220 --> 00:18:04,450 >> DIVÁKOV: Je argc príkazu v sama o sebe, alebo môžete ju pomenovať niečo? 380 00:18:04,450 --> 00:18:05,575 >> DAVID Malan: Dobrá otázka. 381 00:18:05,575 --> 00:18:08,040 Je argc príkaz sám o sebe, alebo môžete ju pomenovať niečo? 382 00:18:08,040 --> 00:18:09,290 Rozhodne to nie je príkaz. 383 00:18:09,290 --> 00:18:13,500 Je to proste premenná je alebo názov argument je, 384 00:18:13,500 --> 00:18:15,481 a tak úplne sme mohli nazvať túto foo, 385 00:18:15,481 --> 00:18:18,480 by sme mohli nazvať tento bar, ktoré majú tendenciu ako go-to slovami, že počítač 386 00:18:18,480 --> 00:18:19,860 vedec ide. 387 00:18:19,860 --> 00:18:22,820 Ale konvencie, budeme používať argc a argv. 388 00:18:22,820 --> 00:18:25,360 Ale to je len človek konvencie, nič viac. 389 00:18:25,360 --> 00:18:25,860 V poriadku. 390 00:18:25,860 --> 00:18:28,140 Tak sa ukázalo, bol som rozprávanie trochu bieleho lie-- 391 00:18:28,140 --> 00:18:31,264 a úprimne povedané, v budúcnosti uvidíte sme hovorili ostatní White Lies. 392 00:18:31,264 --> 00:18:33,510 Ale teraz ideme lúpať sa po jednom z nich. 393 00:18:33,510 --> 00:18:37,310 V tomto prípade je tu, keď som predtým bežal program, ako je ./hello alebo ./hello-3 394 00:18:37,310 --> 00:18:42,780 Zamyla sme mali obsah môjho pamäte počítača pri pohľade zhruba ako 395 00:18:42,780 --> 00:18:43,280 to. 396 00:18:43,280 --> 00:18:45,070 Ale spomenúť, čo je reťazec. 397 00:18:45,070 --> 00:18:49,279 Čo sme si povedali pred týždňom, čo Reťazec je vlastne pod kapotou? 398 00:18:49,279 --> 00:18:50,320 Divákov: Pole znakov. 399 00:18:50,320 --> 00:18:52,111 DAVID Malan: Je to rad znakov, nie? 400 00:18:52,111 --> 00:18:55,760 Takže môžeme mať celý rad reťazca, ale na druhú stranu, reťazec 401 00:18:55,760 --> 00:18:57,150 je pole znakov. 402 00:18:57,150 --> 00:19:00,010 Takže či naozaj chcem byť análny keď kreslím tento obrázok, 403 00:19:00,010 --> 00:19:03,290 Mal by som naozaj kreslenie to trochu ako je tento, 404 00:19:03,290 --> 00:19:08,000 , Pričom v každom z nich indexy môjho argv poľa, 405 00:19:08,000 --> 00:19:11,432 je sama o sebe celý reťazec ktorý sám o sebe je v matici. 406 00:19:11,432 --> 00:19:13,140 A teraz nevinná lož hovoríme dnes 407 00:19:13,140 --> 00:19:15,181 je, že obraz nie je vyzerajú celkom takto. 408 00:19:15,181 --> 00:19:19,110 V skutočnosti, malé štvorce sú zvyčajne mimo veľkých obdĺžnikov 409 00:19:19,110 --> 00:19:19,610 tam. 410 00:19:19,610 --> 00:19:21,280 Ale vrátime sa k tomu onedlho. 411 00:19:21,280 --> 00:19:25,440 Ale to je ./hello spätné lomítko 0, že je špeciálny znak, ktorý 412 00:19:25,440 --> 00:19:28,310 vymedzuje koniec reťazca, a máme ešte jeden po 413 00:19:28,310 --> 00:19:29,360 Zamyla meno. 414 00:19:29,360 --> 00:19:30,900 Takže čo to znamená? 415 00:19:30,900 --> 00:19:33,410 >> No, nechaj ma ísť napred a otvoriť ďalšie dva príklady 416 00:19:33,410 --> 00:19:35,220 ktoré sú k dispozícii on-line. 417 00:19:35,220 --> 00:19:40,590 Jeden sa nazýva argv1.c a druhý je argv2. 418 00:19:40,590 --> 00:19:44,260 To je super-jednoduchý program, ktorý sa líši od predchádzajúcich programov 419 00:19:44,260 --> 00:19:47,260 v tom, že teraz som pomocou argc a argv tu. 420 00:19:47,260 --> 00:19:54,300 A teraz som integráciu s pre sláčiky v súlade 18, od i = 0 až na argc. 421 00:19:54,300 --> 00:19:56,850 A čo mám robiť tento riadok kódu tu? 422 00:19:56,850 --> 00:19:58,270 V angličtine. 423 00:19:58,270 --> 00:20:00,510 To samozrejme ukazuje použitie argc. 424 00:20:00,510 --> 00:20:03,670 Ale v angličtine to, čo robí to robiť, keď som spustiť tento program? 425 00:20:03,670 --> 00:20:04,366 Jo? 426 00:20:04,366 --> 00:20:07,386 >> Divákov: Bude k tlači Obrazovka toľkokrát, koľkokrát chcete. 427 00:20:07,386 --> 00:20:08,260 DAVID Malan: Presne tak. 428 00:20:08,260 --> 00:20:10,480 Takže bez ohľadu na slová, ktoré som zadajte na príkazový riadok, je to 429 00:20:10,480 --> 00:20:13,120 bude opakovať je na mňa jeden na riadok. 430 00:20:13,120 --> 00:20:14,370 Tak poďme do toho a to. 431 00:20:14,370 --> 00:20:17,862 Nechaj ma ísť do môjho zoznamu a robiť, aby argv1 ./argv1. 432 00:20:17,862 --> 00:20:20,521 433 00:20:20,521 --> 00:20:21,770 A teraz poďme držať to jednoduchý. 434 00:20:21,770 --> 00:20:23,834 Poďme robiť nič na prvom mieste. 435 00:20:23,834 --> 00:20:26,750 To predsa vytlačiť na jednu vec, a to je naozaj názov programu, 436 00:20:26,750 --> 00:20:28,240 pretože to je v zátvorke 0. 437 00:20:28,240 --> 00:20:33,290 Keby som teraz povedal foo, že to bude robiť tí dvaja, a keď poviem, foo bar, 438 00:20:33,290 --> 00:20:35,580 to bude hovoriť tie tri veci. 439 00:20:35,580 --> 00:20:37,740 Tak to je trochu zaujímavé, možno. 440 00:20:37,740 --> 00:20:41,450 Ale pripomenúť, že argv je pole reťazcov, 441 00:20:41,450 --> 00:20:45,960 ale reťazec je pole znakov, takže môžeme vziať veci do zárezu 442 00:20:45,960 --> 00:20:48,560 a platí, že základné logika a vykonať kód, ktorý 443 00:20:48,560 --> 00:20:51,160 Vyzerá trochu záhadné, nepochybne. 444 00:20:51,160 --> 00:20:53,540 Ale tým, že vnorený slučka, niečo ako 445 00:20:53,540 --> 00:20:57,030 na to, čo by mohlo vyvolať od Mario, Napríklad, ak ste to urobil takto. 446 00:20:57,030 --> 00:21:00,380 >> Takže teraz zistíte na linke 19, som znovu iterácia cez moje argumenty, 447 00:21:00,380 --> 00:21:02,410 z 0 až na argc. 448 00:21:02,410 --> 00:21:05,510 A teraz v súlade 21-- som zapožičanie trik z minulého week-- 449 00:21:05,510 --> 00:21:11,090 Ja som kontrolu toho, čo je Dĺžka argv držiaka i. 450 00:21:11,090 --> 00:21:12,920 Ja ukladanie, že odpoveď v n. 451 00:21:12,920 --> 00:21:18,230 A potom som integrácii z j na až n, kde je inicializovaný na hodnotu 0 j. 452 00:21:18,230 --> 00:21:19,460 Takže, konvencie pre počítanie. 453 00:21:19,460 --> 00:21:22,335 Potom, čo ste použili aj ak máte vnorené slučky, nemôžete aj znovu použiť, 454 00:21:22,335 --> 00:21:25,770 inak budete handry, prípadne, hodnota mimo vnútornú slučku. 455 00:21:25,770 --> 00:21:27,200 Takže som pomocou j konvencií. 456 00:21:27,200 --> 00:21:28,020 Mohli by sme použiť k. 457 00:21:28,020 --> 00:21:31,080 Ak máte viac ako k, budete pravdepodobne príliš veľa hniezdenia, typicky. 458 00:21:31,080 --> 00:21:33,800 Ale teraz si všimnite, môj printf linka sa mierne líšia. 459 00:21:33,800 --> 00:21:37,520 Nejsem tlače% s, ja som tlač% C, ktorý, samozrejme, 460 00:21:37,520 --> 00:21:39,460 je zástupný symbol pre char. 461 00:21:39,460 --> 00:21:40,770 >> A teraz všimnete túto syntax. 462 00:21:40,770 --> 00:21:41,270 Nové. 463 00:21:41,270 --> 00:21:42,630 Nevideli sme už skôr. 464 00:21:42,630 --> 00:21:47,290 Ale logicky, to len znamená, že sa tej reťazec argv 465 00:21:47,290 --> 00:21:50,067 a dostať j-tej, čo? 466 00:21:50,067 --> 00:21:50,900 DIVÁKOV: Character. 467 00:21:50,900 --> 00:21:52,800 DAVID Malan: Znak v tomto reťazci. 468 00:21:52,800 --> 00:21:57,100 Takže pomocou hranatých zátvoriek nasleduje v hranatých zátvorkách, 469 00:21:57,100 --> 00:22:00,390 To je prvý potápanie do reťazca argv je, 470 00:22:00,390 --> 00:22:02,225 a potom druhý hranaté zátvorky s j 471 00:22:02,225 --> 00:22:06,580 je potápanie do postáv že konkrétny reťazec v argv. 472 00:22:06,580 --> 00:22:09,562 A potom, len pre istotu, Som tu tlače nový riadok. 473 00:22:09,562 --> 00:22:12,020 Takže teraz nechaj ma ísť napred a otvoriť až mierne väčšie okne 474 00:22:12,020 --> 00:22:13,600 a tak môžeme vidieť v akcii. 475 00:22:13,600 --> 00:22:15,700 Nechaj ma ísť do tejto zložky. 476 00:22:15,700 --> 00:22:22,550 A teraz to, aby argv-2-- whoops-- aby argv-2, ./argv 2. 477 00:22:22,550 --> 00:22:23,110 Enter. 478 00:22:23,110 --> 00:22:24,860 A je to trochu ťažké čítať vertikálne, 479 00:22:24,860 --> 00:22:27,920 ale to je naozaj meno Program, nasledovaný prázdnym riadkom. 480 00:22:27,920 --> 00:22:30,210 A teraz ma nechaj ísť ďalej a robiť foo. 481 00:22:30,210 --> 00:22:33,210 Podobne zle čitateľný, ale je to naozaj tlače jeden znak na každom riadku. 482 00:22:33,210 --> 00:22:36,780 A keď to urobím bar, je to teraz tlač tých riadok po riadku. 483 00:22:36,780 --> 00:22:40,140 Takže stánok s jedlom tu nie je toľko že wow, pozrite sa na tento elegantný nový trik 484 00:22:40,140 --> 00:22:44,750 kde môžete získať na obsah špecifických znakov poľa, je, 485 00:22:44,750 --> 00:22:48,380 ale ako sme sa s ohľadom na tieto základné nápady, ako je indexácia do poľa, 486 00:22:48,380 --> 00:22:51,620 a indexovanie do pole, ktoré je v tomto poli, 487 00:22:51,620 --> 00:22:56,180 a práve použití rovnakej myšlienky na trochu zložitejšie príklady. 488 00:22:56,180 --> 00:22:59,560 Ale základy naozaj nie je zmeniť, a to aj od minulého týždňa. 489 00:22:59,560 --> 00:23:02,350 >> Teraz je to trochu načas, v tom, že spomínam, v týždni nula 490 00:23:02,350 --> 00:23:04,110 sme hrali s telefónnom zozname, ako je táto. 491 00:23:04,110 --> 00:23:06,670 A aj keď je to samozrejme fyzickej kusy papiera, 492 00:23:06,670 --> 00:23:09,150 môžete trochu myslieť telefónny zoznam ako pole. 493 00:23:09,150 --> 00:23:12,770 Iste, ak ste boli reimplement tento kúsky Tieto kúsky papiera 494 00:23:12,770 --> 00:23:15,260 v počítači, pravdepodobne mali by ste použiť niečo 495 00:23:15,260 --> 00:23:20,270 ako pole pre uloženie všetkých tých mená a čísla od A po každej ceste, 496 00:23:20,270 --> 00:23:23,800 vďaka Z. Tak to je pekné, pretože umožňuje nám príležitosť, 497 00:23:23,800 --> 00:23:28,310 Možno, aby zvážila, ako by ste mohli skutočne realizovať niečo také. 498 00:23:28,310 --> 00:23:31,250 Ako s radom dverí tu. 499 00:23:31,250 --> 00:23:36,380 Takže keď som mohli-- budeme potrebovať dobrovoľne prísť hore. 500 00:23:36,380 --> 00:23:36,980 Poďme sa pozrieť. 501 00:23:36,980 --> 00:23:40,650 Neznáma tvár snáď, možno neznáma tvár. 502 00:23:40,650 --> 00:23:42,090 Ako sa o oranžovou farbou? 503 00:23:42,090 --> 00:23:42,680 Tu. 504 00:23:42,680 --> 00:23:45,870 Oranžová košeľa, poď hore. 505 00:23:45,870 --> 00:23:52,230 >> Poďme ďalej teraz a pohyb tieto dvere na stranu, 506 00:23:52,230 --> 00:23:54,020 presunúť to z cesty na chvíľu. 507 00:23:54,020 --> 00:23:56,600 508 00:23:56,600 --> 00:23:57,760 Ako sa voláte? 509 00:23:57,760 --> 00:23:58,580 >> Ajay: 510 00:23:58,580 --> 00:23:58,655 >> DAVID Malan: Ajay. 511 00:23:58,655 --> 00:23:58,680 David. 512 00:23:58,680 --> 00:23:59,451 Teší ma. 513 00:23:59,451 --> 00:23:59,950 V poriadku. 514 00:23:59,950 --> 00:24:04,500 Takže máme za týchto šesť Dvere digitálne na screen-- 515 00:24:04,500 --> 00:24:07,810 Alebo skôr sedem dvere na screen-- veľa čísel. 516 00:24:07,810 --> 00:24:10,099 A ja som ti nič v advance-- súhlasil? 517 00:24:10,099 --> 00:24:11,140 Ajay: Nič dopredu. 518 00:24:11,140 --> 00:24:14,730 DAVID Malan: Všetko, čo chcem, aby si Teraz je potrebné nájsť pre mňa a pre nás, 519 00:24:14,730 --> 00:24:20,920 Naozaj, číslo 50, jeden krok v čase. 520 00:24:20,920 --> 00:24:21,830 >> Ajay: Počet 50? 521 00:24:21,830 --> 00:24:22,580 >> DAVID Malan: číslo 50. 522 00:24:22,580 --> 00:24:24,746 A vy môžete odhaliť, čo je Za každú z týchto dverí 523 00:24:24,746 --> 00:24:27,930 jednoducho tým, že sa jej dotknete prstom. 524 00:24:27,930 --> 00:24:31,364 Sakra. [SMIECH] 525 00:24:31,364 --> 00:24:34,560 >> [APPLAUSE] 526 00:24:34,560 --> 00:24:39,540 >> Veľmi dobre. 527 00:24:39,540 --> 00:24:40,400 OK. 528 00:24:40,400 --> 00:24:44,090 Máme krásny darček cena pre Vás. 529 00:24:44,090 --> 00:24:46,520 Vyberte si z filmov sme diskutovali minulý týždeň. 530 00:24:46,520 --> 00:24:47,362 >> Ajay: Oh, chlape. 531 00:24:47,362 --> 00:24:49,050 Oh, som nikdy nevidel Spaceballs. 532 00:24:49,050 --> 00:24:49,520 >> DAVID Malan: Spaceballs. 533 00:24:49,520 --> 00:24:50,140 V poriadku. 534 00:24:50,140 --> 00:24:53,790 Takže držať len na okamih. 535 00:24:53,790 --> 00:24:57,430 Jak-- urobme to učenlivý moment-- 536 00:24:57,430 --> 00:25:00,412 ako sa vám ísť o nájsť číslo 50? 537 00:25:00,412 --> 00:25:01,370 Ajay: Vybral som náhodne. 538 00:25:01,370 --> 00:25:03,420 DAVID Malan: Takže ste si vybrali náhodne a mal som šťastie. 539 00:25:03,420 --> 00:25:03,790 Ajay: Áno. 540 00:25:03,790 --> 00:25:04,456 DAVID Malan: OK. 541 00:25:04,456 --> 00:25:05,050 Výborne. 542 00:25:05,050 --> 00:25:08,470 Takže teraz, mal ťa dostal šťastie, čo ešte 543 00:25:08,470 --> 00:25:10,210 by sa stalo, za týmito dverami? 544 00:25:10,210 --> 00:25:12,930 Takže keď som sa do toho pustite a ukazujú tieto čísla tu, 545 00:25:12,930 --> 00:25:15,180 v skutočnosti sú v náhodnom poradí. 546 00:25:15,180 --> 00:25:17,750 A to najlepšie, čo mohol mať urobil, úprimne povedané, nie je v konečnom dôsledku 547 00:25:17,750 --> 00:25:19,410 v najhoršom prípade, kontrola ich všetky. 548 00:25:19,410 --> 00:25:23,000 Takže máš super-šťastie, ktoré nie je to, čo by sme zavolať algoritmus. 549 00:25:23,000 --> 00:25:24,730 Áno, gratulujeme. 550 00:25:24,730 --> 00:25:27,010 Ale teraz let's-- humor mi, keby si mohol. 551 00:25:27,010 --> 00:25:28,310 Poďme sa na tejto karte tu. 552 00:25:28,310 --> 00:25:31,460 A tu sú čísla v jasne čo sa zdá byť náhodné poradie, 553 00:25:31,460 --> 00:25:32,280 a oni boli. 554 00:25:32,280 --> 00:25:35,160 Ale teraz, ak namiesto toho som nárok že za týmito dverami 555 00:25:35,160 --> 00:25:39,070 sú čísla, ktoré sú zotriedené. 556 00:25:39,070 --> 00:25:41,780 Cieľom je teraz tiež kde nás nájdete číslo 50. 557 00:25:41,780 --> 00:25:45,910 Ale to algoritmickým a Povedzte nám, ako budete o tom. 558 00:25:45,910 --> 00:25:48,020 A ak si ho nájsť, budete mať film. 559 00:25:48,020 --> 00:25:49,520 Nenájdete to, môžete dať späť. 560 00:25:49,520 --> 00:25:52,720 561 00:25:52,720 --> 00:25:58,112 Ajay: Tak idem skontrolovať konca najprv zistiť, či there's-- 562 00:25:58,112 --> 00:26:02,048 [Smiech a APPLAUSE] 563 00:26:02,048 --> 00:26:04,451 564 00:26:04,451 --> 00:26:05,492 DAVID Malan: Tu to je. 565 00:26:05,492 --> 00:26:17,080 566 00:26:17,080 --> 00:26:21,700 Poďme sa pozrieť na jeden z Ajay predchodcov, 567 00:26:21,700 --> 00:26:25,450 Sean, ktorý nebol tak šťastný. 568 00:26:25,450 --> 00:26:28,670 OK, takže vašou úlohou tu, Sean, je nasledujúci. 569 00:26:28,670 --> 00:26:32,970 Som schovaný za týchto dvere číslo sedem, 570 00:26:32,970 --> 00:26:37,200 ale zastrčený v niektorej z týchto dverí ako aj iné non-záporné čísla. 571 00:26:37,200 --> 00:26:40,730 A vaším cieľom je myslieť na to, horný rad čísel len ako pole. 572 00:26:40,730 --> 00:26:43,590 Sme len sled kusov papiera s číslami za sebou. 573 00:26:43,590 --> 00:26:47,640 A vaším cieľom je, iba pomocou hornej Pole tú, nájdite mi číslo sedem. 574 00:26:47,640 --> 00:26:51,200 A my sa potom bude kritika ako sa vám ísť o to robí. 575 00:26:51,200 --> 00:26:52,920 Kde nás nájdete číslo sedem, prosím. 576 00:26:52,920 --> 00:27:02,570 577 00:27:02,570 --> 00:27:03,070 Nie 578 00:27:03,070 --> 00:27:06,760 579 00:27:06,760 --> 00:27:08,179 5, 19, 13. 580 00:27:08,179 --> 00:27:16,752 581 00:27:16,752 --> 00:27:17,835 To nie je chyták. 582 00:27:17,835 --> 00:27:21,420 583 00:27:21,420 --> 00:27:21,920 1. 584 00:27:21,920 --> 00:27:26,715 585 00:27:26,715 --> 00:27:29,840 V tomto okamihu je vaše skóre nie je príliš dobre, takže si pokojne ďalej. 586 00:27:29,840 --> 00:27:32,870 587 00:27:32,870 --> 00:27:33,370 3. 588 00:27:33,370 --> 00:27:38,570 589 00:27:38,570 --> 00:27:39,802 Choď na. 590 00:27:39,802 --> 00:27:42,510 Úprimne povedané, nemôžem si pomôcť, ale zaujímalo, to, čo ste ešte myslieť. 591 00:27:42,510 --> 00:27:44,990 >> SEAN: Dokážem sa iba z horného radu. 592 00:27:44,990 --> 00:27:46,240 DAVID Malan: iba horný riadok. 593 00:27:46,240 --> 00:27:47,281 Takže máš tri vľavo. 594 00:27:47,281 --> 00:27:48,310 Tak mi nájsť 7. 595 00:27:48,310 --> 00:27:54,758 596 00:27:54,758 --> 00:27:59,141 >> [Publikum kričí Návrh] 597 00:27:59,141 --> 00:28:22,210 598 00:28:22,210 --> 00:28:26,130 Takže obaja to boli úžasné z veľmi rozdielnych dôvodov. 599 00:28:26,130 --> 00:28:29,150 Tak toto je miesto, kde sme sa skončili pred chvíľou, 600 00:28:29,150 --> 00:28:32,530 a Kľúčovou myšlienkou tu sa tieto dvere mali čísla 601 00:28:32,530 --> 00:28:37,390 za nimi, ktoré boli triedené, ideálne stánok s jedlom, pre ktorú je to, že by ste mohli urobiť 602 00:28:37,390 --> 00:28:39,670 podstatne lepšie Táto druhá example-- 603 00:28:39,670 --> 00:28:42,380 a, naozaj, to bol Sean Prvý pokus s náhodnými číslami 604 00:28:42,380 --> 00:28:45,460 rovnako before-- ale akonáhle ako tieto čísla sú triedené, 605 00:28:45,460 --> 00:28:47,980 podobne ako v telefónnom zozname, čo môžete samozrejme urobiť? 606 00:28:47,980 --> 00:28:50,090 Alebo ako môžete využiť, že vedomosti? 607 00:28:50,090 --> 00:28:51,530 Jo. 608 00:28:51,530 --> 00:28:54,910 >> Divákov: Idete na polceste [nepočuteľné]. 609 00:28:54,910 --> 00:28:55,660 DAVID Malan: Jo. 610 00:28:55,660 --> 00:28:56,160 Presne tak. 611 00:28:56,160 --> 00:28:59,680 Takže prvotný inštinkt Ajay bol skontrolovať koncov, ak si dobre spomínam, 612 00:28:59,680 --> 00:29:02,320 a potom sme sa trochu hotové Príklad rýchlo. 613 00:29:02,320 --> 00:29:05,220 Ale keď sme začali robiť to viac metodicky v tomto smere, 614 00:29:05,220 --> 00:29:07,860 ale vychádzajúc možná v stredná, pretože sú triedené, 615 00:29:07,860 --> 00:29:10,900 akonáhle sa odhalí číslo 16, preto vím-- 616 00:29:10,900 --> 00:29:14,850 a poďme robiť presne že-- my Preto vieme, že 50, v dnešnom prípade, 617 00:29:14,850 --> 00:29:16,080 má byť doprava. 618 00:29:16,080 --> 00:29:18,735 Tak ako v prvom týždni, kedy nula sme sa roztrhol telefónneho zoznamu na polovicu 619 00:29:18,735 --> 00:29:21,490 a hodil polovicu problém preč, rovnaký nápad tu. 620 00:29:21,490 --> 00:29:23,680 Môžeme hodiť to polovica problému preč. 621 00:29:23,680 --> 00:29:25,730 A pravdepodobne to, čo vás mohol urobiť algoritmickým, 622 00:29:25,730 --> 00:29:28,710 Akonáhle budete vedieť, že 50 musí byť vpravo, ak je to kdekoľvek, 623 00:29:28,710 --> 00:29:31,390 je skúsiť tam, uprostred zo zostávajúcich dverí. 624 00:29:31,390 --> 00:29:33,450 Samozrejme, 50 je vyššia ako 42, takže môžeme 625 00:29:33,450 --> 00:29:36,060 hodiť to zostávajúce Štvrtina problému preč, 626 00:29:36,060 --> 00:29:38,510 a, konečne, aké niečo ako 50. 627 00:29:38,510 --> 00:29:41,050 Ale rovnako ako u telefónny zoznam, tieto čísla 628 00:29:41,050 --> 00:29:44,560 bola nám daná už v triedený poradí, čo nám ponecháva 629 00:29:44,560 --> 00:29:47,450 s otázkou, ako sa vám dať veci do zoradené poriadku? 630 00:29:47,450 --> 00:29:49,640 A úprimne povedané, za akú cenu? 631 00:29:49,640 --> 00:29:51,390 To je jedna vec, že ​​je podal telefónneho zoznamu 632 00:29:51,390 --> 00:29:54,810 a ohromiť svojich priateľov tým, že nájde telefónne číslo naozaj rýchlo, že jo? 633 00:29:54,810 --> 00:29:58,520 Trhacie 32 strán za účelom zistenia osoba z 4000000000 strán, 634 00:29:58,520 --> 00:30:00,470 sme si povedali, bol jeden extrémny príklad. 635 00:30:00,470 --> 00:30:03,320 Ale ako dlho to trvalo Verizon triediť, že telefónny zoznam? 636 00:30:03,320 --> 00:30:06,170 Koľko času to trvalo nám zoradiť týchto sedem čísel? 637 00:30:06,170 --> 00:30:10,110 To je otázka, ktorú máme doteraz úplne ignoroval. 638 00:30:10,110 --> 00:30:12,330 >> Takže poďme odpovedať na túto otázku teraz. 639 00:30:12,330 --> 00:30:15,920 A všetci sme z filmov teraz, ale máme nejaké stresové gule. 640 00:30:15,920 --> 00:30:19,480 Ak je, povedzme, osem dobrovoľníkov Nevadilo by nám pripojila tu? 641 00:30:19,480 --> 00:30:24,100 Poďme ďalej a robiť, čo štyri z vás, vy traja tu? 642 00:30:24,100 --> 00:30:25,290 Získať nejaké nové tváre. 643 00:30:25,290 --> 00:30:27,220 A štyria z vás tam? 644 00:30:27,220 --> 00:30:30,760 A teď-- nesmieme zaujatosť tady-- a číslo osem sem na konci. 645 00:30:30,760 --> 00:30:32,060 Poď hore. 646 00:30:32,060 --> 00:30:32,560 V poriadku. 647 00:30:32,560 --> 00:30:37,480 Takže to, čo sme tu Každý z vás je číslo. 648 00:30:37,480 --> 00:30:40,055 Ak by ste chceli ísť dopredu, aby toto číslo. 649 00:30:40,055 --> 00:30:40,763 Ako sa voláte? 650 00:30:40,763 --> 00:30:41,950 >> ARTIE: Artie. 651 00:30:41,950 --> 00:30:43,100 >> DAVID Malan: Artie, v poriadku. 652 00:30:43,100 --> 00:30:44,297 Si číslo jedna. 653 00:30:44,297 --> 00:30:45,310 >> AMIN: Amin. 654 00:30:45,310 --> 00:30:46,060 DAVID Malan: Amin. 655 00:30:46,060 --> 00:30:46,820 David. 656 00:30:46,820 --> 00:30:47,530 Vy ste číslo dva. 657 00:30:47,530 --> 00:30:49,100 A do toho, ako som ruku si listy papiera, 658 00:30:49,100 --> 00:30:52,130 zoradiť sami sa pred hudby stoja v rovnakom poradí, ako tam. 659 00:30:52,130 --> 00:30:52,660 >> ANDY: Ahoj, Andy. 660 00:30:52,660 --> 00:30:53,970 >> DAVID Malan: Andy, to je pekné, že ťa vidím. 661 00:30:53,970 --> 00:30:54,520 Číslo 3. 662 00:30:54,520 --> 00:30:55,310 >> JACOB: Jacob. 663 00:30:55,310 --> 00:30:56,760 >> DAVID Malan: Jacob, číslo 4. 664 00:30:56,760 --> 00:30:57,549 Vitajte na palube. 665 00:30:57,549 --> 00:30:58,090 GRANT: Grant. 666 00:30:58,090 --> 00:30:58,881 DAVID Malan: Grant. 667 00:30:58,881 --> 00:31:00,348 Číslo 5. 668 00:31:00,348 --> 00:31:01,200 >> Alanna: Alanna. 669 00:31:01,200 --> 00:31:02,766 >> DAVID Malan: Alanna, číslo 6. 670 00:31:02,766 --> 00:31:03,589 >> FRANCES: Frances. 671 00:31:03,589 --> 00:31:04,880 DAVID Malan: Frances, číslo 7. 672 00:31:04,880 --> 00:31:05,200 A? 673 00:31:05,200 --> 00:31:05,830 >> Rachel: Rachel. 674 00:31:05,830 --> 00:31:06,815 >> DAVID Malan: Rachel, číslo 8. 675 00:31:06,815 --> 00:31:07,100 V poriadku. 676 00:31:07,100 --> 00:31:08,766 Nehanbite sa a dostať sa v tomto poradí. 677 00:31:08,766 --> 00:31:11,440 Dovoľte mi, aby som dal jeden zostávajúce hudba stojí na mieste. 678 00:31:11,440 --> 00:31:13,670 Kde budete potrebovať stojan? 679 00:31:13,670 --> 00:31:14,170 OK. 680 00:31:14,170 --> 00:31:18,710 Choďte do toho a len dať svoje číslo kde publikum je vidieť na, 681 00:31:18,710 --> 00:31:20,340 hudobný stojan smerom von. 682 00:31:20,340 --> 00:31:27,240 A dúfajme, že naše prvé Kontrola rozum tady-- 4, 2, 6. 683 00:31:27,240 --> 00:31:27,890 Oh-oh. 684 00:31:27,890 --> 00:31:29,070 Počkaj chvíľu. 685 00:31:29,070 --> 00:31:31,140 Nemáme k 8. 686 00:31:31,140 --> 00:31:35,180 Musím k vám vypudiť zo Príklad nejako. 687 00:31:35,180 --> 00:31:35,680 Nie 688 00:31:35,680 --> 00:31:36,940 Nie, to je v poriadku. 689 00:31:36,940 --> 00:31:37,890 Poďme sa pozrieť. 690 00:31:37,890 --> 00:31:38,880 Môžeme to urobiť. 691 00:31:38,880 --> 00:31:39,440 Stand by. 692 00:31:39,440 --> 00:31:43,970 693 00:31:43,970 --> 00:31:45,740 Ideme na to. 694 00:31:45,740 --> 00:31:46,800 Správne. 695 00:31:46,800 --> 00:31:47,360 V poriadku. 696 00:31:47,360 --> 00:31:50,260 Tak, teraz máme 8, 1, 3, 7 5. 697 00:31:50,260 --> 00:31:50,760 OK. 698 00:31:50,760 --> 00:31:51,360 Výborne. 699 00:31:51,360 --> 00:31:54,400 >> Takže otázka po ruke, je na akú cenu, a pomocou aké metódy, 700 00:31:54,400 --> 00:31:58,580 môžeme vlastne tieto čísla tu triedenie takže môžeme trochu pospiatky, 701 00:31:58,580 --> 00:32:02,759 nakoniec, a decide-- je to naozaj pôsobivé, je to naozaj efektívne, 702 00:32:02,759 --> 00:32:04,550 že môžem rozdeliť a dobyť telefónny zoznam? 703 00:32:04,550 --> 00:32:06,716 Je to naozaj efektívnejšie, že Môžem rozdeľ a panuj 704 00:32:06,716 --> 00:32:08,600 tieto digitálne ks papiera na palube, 705 00:32:08,600 --> 00:32:14,500 pokiaľ možno, že to bude stáť nás šťastie v čase alebo energie, alebo CPU cyklov 706 00:32:14,500 --> 00:32:17,340 skutočne získať naše dáta do nejakého triedenom poriadku? 707 00:32:17,340 --> 00:32:18,930 Takže poďme sa spýtať na túto otázku. 708 00:32:18,930 --> 00:32:22,077 >> Takže prvé, tieto čísla sú vo skoro náhodnom poradí, 709 00:32:22,077 --> 00:32:24,160 a budem navrhovať jeden algoritmus, alebo proces 710 00:32:24,160 --> 00:32:25,970 , Podľa ktorého môžeme radiť týchto ľudí. 711 00:32:25,970 --> 00:32:28,100 Chystám sa blíži to celkom naivne. 712 00:32:28,100 --> 00:32:30,730 A ja si uvedomiť že je to tak trochu veľa pre mňa 713 00:32:30,730 --> 00:32:32,890 zabaliť moju myseľ okolo celý dátový súbor naraz. 714 00:32:32,890 --> 00:32:33,640 Ale viete čo? 715 00:32:33,640 --> 00:32:37,450 Chystám sa urobiť nejaký veľmi jednoduché marginálne opravy. 716 00:32:37,450 --> 00:32:41,152 4 a 2 mimo prevádzku, v prípade, že Cieľom je prejsť od 1 až na 8. 717 00:32:41,152 --> 00:32:41,860 Tak vieš čo? 718 00:32:41,860 --> 00:32:43,776 Budem mať vás chlapci vymeniť, ak prepnete 719 00:32:43,776 --> 00:32:46,380 fyzicky pozície a vaše kúsky papiera. 720 00:32:46,380 --> 00:32:47,894 Teraz 4 a 6, to sú v poradí. 721 00:32:47,894 --> 00:32:49,060 Chystám sa odísť ti byť. 722 00:32:49,060 --> 00:32:50,227 6 a 8, tie sú v poriadku. 723 00:32:50,227 --> 00:32:51,185 Chystáte sa nechať je byť. 724 00:32:51,185 --> 00:32:52,170 8 a1, mimo prevádzku. 725 00:32:52,170 --> 00:32:54,790 Ak vy dvaja to nebude vadiť, že vymení. 726 00:32:54,790 --> 00:32:57,300 Teraz 8 a 3, ak by ste mohli vymeniť. 727 00:32:57,300 --> 00:32:59,320 8 a 7, ak by ste mohli vymeniť. 728 00:32:59,320 --> 00:33:01,790 A 8 a 5, ak by ste mohli vymeniť. 729 00:33:01,790 --> 00:33:03,980 >> Teraz som to urobil? 730 00:33:03,980 --> 00:33:05,200 Nie, samozrejme že nie. 731 00:33:05,200 --> 00:33:07,880 Ale ja som robil situácia lepšie, že jo? 732 00:33:07,880 --> 00:33:09,430 Aká bola Vaša meno znova, číslo 8? 733 00:33:09,430 --> 00:33:10,055 >> Rachel: Rachel. 734 00:33:10,055 --> 00:33:12,850 DAVID Malan: Takže Rachel má účinne bublala pekne ďaleko, 735 00:33:12,850 --> 00:33:15,660 celú cestu až do konca moje pole čísel tu. 736 00:33:15,660 --> 00:33:17,310 A tak, že problém je trochu vyriešený. 737 00:33:17,310 --> 00:33:21,670 Teraz, jasne, 2 stále potrebuje pohybovať trochu, 4 a 6 a 1. 738 00:33:21,670 --> 00:33:24,420 Ale ja som zdá sa, že sa dostali trochu bližšie k riešeniu. 739 00:33:24,420 --> 00:33:26,790 Takže poďme sa vzťahujú tá istá opäť naivné heuristickej. 740 00:33:26,790 --> 00:33:27,690 2 a 4, OK. 741 00:33:27,690 --> 00:33:28,810 4 a 6, OK. 742 00:33:28,810 --> 00:33:29,930 6 a 1, mm-mm. 743 00:33:29,930 --> 00:33:32,230 Poďme výmenu. 744 00:33:32,230 --> 00:33:33,200 6 a 3, mm-mm. 745 00:33:33,200 --> 00:33:34,420 Poďme výmenu. 746 00:33:34,420 --> 00:33:35,580 6 a 7 je v poriadku. 747 00:33:35,580 --> 00:33:36,590 7 a 5, ani náhodou. 748 00:33:36,590 --> 00:33:37,790 Poďme výmenu. 749 00:33:37,790 --> 00:33:38,470 A teraz 7 a 8. 750 00:33:38,470 --> 00:33:39,862 A čo sa voláš? 751 00:33:39,862 --> 00:33:40,570 FRANCES: Frances. 752 00:33:40,570 --> 00:33:41,445 DAVID Malan: Frances. 753 00:33:41,445 --> 00:33:44,230 Takže teraz Frances je ešte lepšie postavenie, pretože teraz 7 a 8 754 00:33:44,230 --> 00:33:46,440 sú správne bublala až na vrchol. 755 00:33:46,440 --> 00:33:47,510 Tak 2 a 4, OK. 756 00:33:47,510 --> 00:33:48,720 4 a 1, swap poďme. 757 00:33:48,720 --> 00:33:50,410 4 a 3, swap poďme. 758 00:33:50,410 --> 00:33:51,550 4 a 6, si v poriadku. 759 00:33:51,550 --> 00:33:53,340 6 a 5, swap poďme. 760 00:33:53,340 --> 00:33:54,590 A teraz tí chlapi sú dobré. 761 00:33:54,590 --> 00:33:55,780 Už sme skoro tam. 762 00:33:55,780 --> 00:33:57,706 2 a 1, mimo prevádzky, tak vymeniť. 763 00:33:57,706 --> 00:33:59,080 A teraz ma nechaj robiť kontrolu zdravý rozum. 764 00:33:59,080 --> 00:34:03,080 2 a 3, 3 a 4, 4 a 5, 5 a 6, 6 a 7, 8. 765 00:34:03,080 --> 00:34:05,060 OK, takže sme hotoví. 766 00:34:05,060 --> 00:34:09,310 >> Ale za akú cenu urobil ja Tieto čísla zoradiť tu? 767 00:34:09,310 --> 00:34:13,960 No, koľko krokov alebo jo potenciálne sa pri radení týchto ľudí? 768 00:34:13,960 --> 00:34:15,710 No, tak sa vrátime na túto otázku. 769 00:34:15,710 --> 00:34:18,030 Ale, úprimne povedané, ak máte nudiť, je to 770 00:34:18,030 --> 00:34:22,270 druh odhaľuje v tom, že to nie je najefektívnejšie algoritmus. 771 00:34:22,270 --> 00:34:25,230 A skutočne, úprimne povedané, potím všetky ďalšie chôdzu sem a tam. 772 00:34:25,230 --> 00:34:26,639 To sa necítil zvlášť efektívna. 773 00:34:26,639 --> 00:34:27,805 Tak poďme skúsiť niečo iné. 774 00:34:27,805 --> 00:34:31,870 Ak by ste mohli obnoviť sami do týchto ôsmich hodnôt. 775 00:34:31,870 --> 00:34:32,969 Dobrá práca. 776 00:34:32,969 --> 00:34:36,570 >> Poďme sa pozrieť digitálne, len za pred chvíľou sme sa skúsiť niečo iné, 777 00:34:36,570 --> 00:34:38,179 na to, čo sa práve stalo. 778 00:34:38,179 --> 00:34:41,330 Tu hore, ty si asi vidieť vizualizácie z týchto ôsmich ľudí 779 00:34:41,330 --> 00:34:44,719 pričom modrej a červenej stĺpce predstavujú čísla. 780 00:34:44,719 --> 00:34:46,670 Je stĺpec vyšší, Čím vyššie je číslo. 781 00:34:46,670 --> 00:34:48,510 Čím kratšia je bar, menší počet. 782 00:34:48,510 --> 00:34:51,560 A čo budete vidieť, je v náhodnom poradí viac ako osem z nich. 783 00:34:51,560 --> 00:34:55,830 Budeš vidieť tieto tyče dostať radené podľa rovnakého algoritmu, 784 00:34:55,830 --> 00:34:59,890 alebo sadu inštrukcií, ktoré zavoláme naďalej bubble sort. 785 00:34:59,890 --> 00:35:04,000 Tak všimnúť, každý druhý alebo tak, dva bary sa rozsvieti na červeno, 786 00:35:04,000 --> 00:35:05,590 sú porovnávané s počítačom. 787 00:35:05,590 --> 00:35:08,630 A potom sa v prípade, že veľký bar a malý bar sú mimo prevádzky, 788 00:35:08,630 --> 00:35:11,220 oni sú vymenené za mňa. 789 00:35:11,220 --> 00:35:15,120 >> Teraz je to neuveriteľne únavné sa pozerať na to, iste, 790 00:35:15,120 --> 00:35:18,630 veľmi dlho, ale všimnete takeaway-- veľké tyče pohybujúce sa doprava, 791 00:35:18,630 --> 00:35:20,460 malé bary pohybujúce sa doľava. 792 00:35:20,460 --> 00:35:23,380 Poďme zrušiť tento proces a urýchlite 793 00:35:23,380 --> 00:35:27,330 je oveľa rýchlejší, takže môžeme si o tom, čo na vysokej úrovni, 794 00:35:27,330 --> 00:35:29,970 naozaj, bublina trochu robí. 795 00:35:29,970 --> 00:35:33,150 V skutočnosti, je to buble až pravá strana zoznamu, 796 00:35:33,150 --> 00:35:35,260 alebo pole, tým väčšia barov. 797 00:35:35,260 --> 00:35:40,020 A naopak, malé bary sú bublajúce cestu dole na ľavej strane, 798 00:35:40,020 --> 00:35:42,950 aj keď v rýchlejšom tempe než sme doteraz urobili. 799 00:35:42,950 --> 00:35:45,850 Takže ťažšie vidieť s ľuďmi, ale vizuálne to je naozaj to, čo 800 00:35:45,850 --> 00:35:46,540 sa deje. 801 00:35:46,540 --> 00:35:49,110 >> Ale skúsme to zásadne Odlišný prístup teraz. 802 00:35:49,110 --> 00:35:52,387 Skúsme iný algoritmus, kedy sme ťa 803 00:35:52,387 --> 00:35:59,640 chlapci začať v týchto pôvodných miesta, v ktorom bol tento príkaz tu. 804 00:35:59,640 --> 00:36:00,827 A poďme do toho hneď. 805 00:36:00,827 --> 00:36:02,910 A ja idem niečo robiť ešte jednoduchšie, že jo? 806 00:36:02,910 --> 00:36:06,710 V spätnom pohľade, vymieňať po dvoch znova a znovu, skoro trochu šikovný. 807 00:36:06,710 --> 00:36:10,460 Poďme robiť veci ešte viac naivne, kde, keď chcem radiť týchto ľudí, 808 00:36:10,460 --> 00:36:12,560 dovoľte mi, aby som ďalej Pre najmenších prvok. 809 00:36:12,560 --> 00:36:14,570 Takže teraz, 4 je Najmenšie číslo som kedy videl. 810 00:36:14,570 --> 00:36:15,695 Budem si to pamätať. 811 00:36:15,695 --> 00:36:17,750 Nie, dva je lepšie, a pamätajte, že. 812 00:36:17,750 --> 00:36:20,730 1 je ešte menšia. 813 00:36:20,730 --> 00:36:21,970 3, 7, 5. 814 00:36:21,970 --> 00:36:22,470 OK. 815 00:36:22,470 --> 00:36:23,750 One-- čo sa voláš? 816 00:36:23,750 --> 00:36:24,400 >> ARTIE: Artie. 817 00:36:24,400 --> 00:36:24,610 >> DAVID Malan: Artie. 818 00:36:24,610 --> 00:36:25,460 Takže, Artie, choďte do toho. 819 00:36:25,460 --> 00:36:27,043 Chystám sa ťa vytiahnuť z linky. 820 00:36:27,043 --> 00:36:28,400 Ak by ste mohli prísť sem. 821 00:36:28,400 --> 00:36:30,790 A ja potrebujem, aby sa priestor pre neho. 822 00:36:30,790 --> 00:36:32,040 Máme bodu rozhodnutia tu. 823 00:36:32,040 --> 00:36:36,000 Ako môžeme vytvoriť priestor pre Artie tu na začiatku, kde číslo 1 patrí? 824 00:36:36,000 --> 00:36:36,770 >> DIVÁKOV: Shift. 825 00:36:36,770 --> 00:36:38,950 >> DAVID Malan: OK, mohli presunúť všetky. 826 00:36:38,950 --> 00:36:40,860 Ale navrhnúť optimalizáciu. 827 00:36:40,860 --> 00:36:43,410 Že sa cíti trochu nepríjemné pre mňa opýtať štyroch ľudí 828 00:36:43,410 --> 00:36:44,620 presunúť celú cestu dole. 829 00:36:44,620 --> 00:36:45,520 Čo iného som mohol robiť? 830 00:36:45,520 --> 00:36:46,360 >> Divákov: Prepínač je. 831 00:36:46,360 --> 00:36:46,850 >> DAVID Malan: je spínač. 832 00:36:46,850 --> 00:36:47,900 A čo sa voláš? 833 00:36:47,900 --> 00:36:48,441 >> JACOB: Jacob. 834 00:36:48,441 --> 00:36:50,330 DAVID Malan: Jacob, pohybovať. 835 00:36:50,330 --> 00:36:54,440 Oveľa efektívnejšie, len aby mali Miesta swapové Jacob s Artie, 836 00:36:54,440 --> 00:36:56,710 na rozdiel núti všetky štyri z týchto ľudí, 837 00:36:56,710 --> 00:36:58,734 ďakujem moc, aby ich správna poloha. 838 00:36:58,734 --> 00:37:01,150 Čo je pekné o Artie teraz, že je vo svojej správnej polohe. 839 00:37:01,150 --> 00:37:02,060 Poďme to urobiť znova. 840 00:37:02,060 --> 00:37:03,730 2, to je najmenšie číslo, čo som videl. 841 00:37:03,730 --> 00:37:05,690 3, 7, 5. 842 00:37:05,690 --> 00:37:06,190 OK. 843 00:37:06,190 --> 00:37:07,467 2 je určite najmenší. 844 00:37:07,467 --> 00:37:08,550 Nemusíte robiť žiadnu prácu. 845 00:37:08,550 --> 00:37:09,320 Urobme to znova. 846 00:37:09,320 --> 00:37:10,070 6. 847 00:37:10,070 --> 00:37:10,640 Najmenší? 848 00:37:10,640 --> 00:37:11,140 8. 849 00:37:11,140 --> 00:37:11,590 Nie. 850 00:37:11,590 --> 00:37:11,720 4? 851 00:37:11,720 --> 00:37:12,220 Ooh. 852 00:37:12,220 --> 00:37:13,420 Dovoľte mi, aby som pamätať 4. 853 00:37:13,420 --> 00:37:13,950 3. 854 00:37:13,950 --> 00:37:15,110 Dovoľte mi, aby som pamätať 3. 855 00:37:15,110 --> 00:37:16,080 7, 5. 856 00:37:16,080 --> 00:37:18,490 Najmenšie číslo som vidieť na tomto priechode je 3. 857 00:37:18,490 --> 00:37:20,340 Ak by ste poď von. 858 00:37:20,340 --> 00:37:21,986 Kam ideme, aby vám? 859 00:37:21,986 --> 00:37:22,860 A Ako sa voláte? 860 00:37:22,860 --> 00:37:23,530 >> Alanna: Alanna. 861 00:37:23,530 --> 00:37:25,780 >> DAVID Malan: Alanna sme bude musieť vysťahovať. 862 00:37:25,780 --> 00:37:28,670 Ale to je efektívnejšie, len vymeniť dvoch ľudí, 863 00:37:28,670 --> 00:37:31,850 než mať viac ľudí v skutočnosti vyhnúť všetkým. 864 00:37:31,850 --> 00:37:32,850 Teraz sa poďme to urobiť znova. 865 00:37:32,850 --> 00:37:34,980 Idem vybrať 4, tak poď von. 866 00:37:34,980 --> 00:37:36,540 A kto to bude pohybovať? 867 00:37:36,540 --> 00:37:37,750 Číslo 8, samozrejme. 868 00:37:37,750 --> 00:37:40,260 Keby som teraz nájsť číslo 5, poď von. 869 00:37:40,260 --> 00:37:42,104 Číslo 8 sa dostane opäť vypudený. 870 00:37:42,104 --> 00:37:43,770 Ja som teraz bude nájsť číslo 6 na mieste. 871 00:37:43,770 --> 00:37:44,410 7 na mieste. 872 00:37:44,410 --> 00:37:45,080 8 v mieste. 873 00:37:45,080 --> 00:37:48,590 >> To, čo sme práve urobili je niečo, čo nazýva výber triediť, 874 00:37:48,590 --> 00:37:52,560 a keď si to predstaviť, je to bude cítiť trochu inak. 875 00:37:52,560 --> 00:37:56,800 Poďme do toho a z toho Ponuka tu tento visualization-- 876 00:37:56,800 --> 00:38:02,920 zmeňme to na-- poď, Firefox. 877 00:38:02,920 --> 00:38:07,610 Poďme to zmeniť do výberu druhu. 878 00:38:07,610 --> 00:38:11,830 A poďme urýchli ako predtým, a spustite vizualizáciu teraz. 879 00:38:11,830 --> 00:38:13,990 A tento algoritmus iný pocit k tomu. 880 00:38:13,990 --> 00:38:16,480 V každej iterácii, úprimne povedané, je to ešte jednoduchšie. 881 00:38:16,480 --> 00:38:18,385 Ja som len výberom najmenší prvok. 882 00:38:18,385 --> 00:38:21,510 A teraz, úprimne povedané, som trochu šťastie, že čas, v tom, že radené super-rýchlo. 883 00:38:21,510 --> 00:38:22,660 Tieto prvky boli náhodné. 884 00:38:22,660 --> 00:38:25,520 Nie je to, ako sme si nakoniec vidieť, zásadne rýchlejší. 885 00:38:25,520 --> 00:38:29,400 Ale pozrime sa tretia a posledná prístup, ktorý tu o tom, čo sa deje. 886 00:38:29,400 --> 00:38:36,230 Tak poďme do toho pustite a znova vám chlapci jeden posledný čas, aby sa v tomto poradí tu. 887 00:38:36,230 --> 00:38:38,450 >> A teraz, budem byť trochu múdrejší, 888 00:38:38,450 --> 00:38:40,220 len završujú naše algoritmy. 889 00:38:40,220 --> 00:38:41,230 Chystám sa to urobiť. 890 00:38:41,230 --> 00:38:43,140 Chystám sa ísť tam a späť tak. 891 00:38:43,140 --> 00:38:44,900 Úprimne povedané, už ma nebaví všetko pojazdu. 892 00:38:44,900 --> 00:38:47,691 Idem len, aby sa to, čo som uvedený na začiatku zoznamu, 893 00:38:47,691 --> 00:38:49,460 a budem triediť že vtedy a tam. 894 00:38:49,460 --> 00:38:50,140 Tak sme tu. 895 00:38:50,140 --> 00:38:51,030 Číslo 4. 896 00:38:51,030 --> 00:38:53,680 Idem vložiť číslo 4 do zoradený zoznam. 897 00:38:53,680 --> 00:38:54,180 Hotovo. 898 00:38:54,180 --> 00:38:58,300 Tvrdím teraz, a len preto, aby to viac jasné, táto časť môjho zoznamu je radený. 899 00:38:58,300 --> 00:39:02,610 Je to trochu hlúpe tvrdenie, ale v skutočnosti 4 je zoradený v zozname veľkosť jedného. 900 00:39:02,610 --> 00:39:04,210 Teraz, budem trvať na počte 2. 901 00:39:04,210 --> 00:39:07,670 Číslo 2 Ja som teraz bude vložiť na správne miesto. 902 00:39:07,670 --> 00:39:08,680 Takže tam, kde sa dvaja patrí? 903 00:39:08,680 --> 00:39:09,824 Je zrejmé, že tu. 904 00:39:09,824 --> 00:39:11,490 Takže choďte do toho a vrátiť, ak mohol. 905 00:39:11,490 --> 00:39:14,406 A prečo nie vy len sa vaša hudba stojí s vami tentoraz. 906 00:39:14,406 --> 00:39:17,020 A poďme násilne vložiť vás do začiatku zoznamu. 907 00:39:17,020 --> 00:39:17,936 Tak trochu viac práce. 908 00:39:17,936 --> 00:39:20,890 Musel som sa pohybovať okolo Jacoba, a Ako sa voláte? 909 00:39:20,890 --> 00:39:21,420 >> AMIN: Amin. 910 00:39:21,420 --> 00:39:22,270 >> DAVID Malan: Amin. 911 00:39:22,270 --> 00:39:24,350 Ale aspon som sa tam a späť. 912 00:39:24,350 --> 00:39:25,739 Len som s vecou, ​​ako som ísť. 913 00:39:25,739 --> 00:39:27,530 Ja som len vložením na správnom mieste. 914 00:39:27,530 --> 00:39:29,220 6, je to vlastne celkom jednoduché. 915 00:39:29,220 --> 00:39:31,510 Poďme vložiť ťa tam, ak si chcel prejsť cez mierne. 916 00:39:31,510 --> 00:39:32,870 Číslo 8, a to aj celkom jednoduché. 917 00:39:32,870 --> 00:39:33,741 Tamto. 918 00:39:33,741 --> 00:39:34,240 Sakra. 919 00:39:34,240 --> 00:39:37,590 Číslo 1 môžeme nielen zameniť s Amin tu 920 00:39:37,590 --> 00:39:39,340 pretože, čo sa deje pokaziť objednávky. 921 00:39:39,340 --> 00:39:40,660 Takže musíme byť trochu múdrejší. 922 00:39:40,660 --> 00:39:42,770 Takže, Artie, keby si mohol zálohovať na chvíľu. 923 00:39:42,770 --> 00:39:46,550 Poďme ďalej a posunúť sa, Na rozdiel od našich predchádzajúcich algoritmov, 924 00:39:46,550 --> 00:39:50,910 aby sa vytvoril priestor pre Artie tu na začiatku. 925 00:39:50,910 --> 00:39:54,690 Takže na konci dňa, som trochu robiť to, čo som chcel, aby sa zabránilo pred. 926 00:39:54,690 --> 00:39:57,770 A tak sa môj algoritmus je trochu z obrátenej, intelektuálne, 927 00:39:57,770 --> 00:39:59,070 z toho, čo to pôvodne bolo. 928 00:39:59,070 --> 00:40:01,240 Robím len presun na inom mieste. 929 00:40:01,240 --> 00:40:02,291 Teraz som na tri. 930 00:40:02,291 --> 00:40:02,790 Oh, sakra. 931 00:40:02,790 --> 00:40:04,039 Musíme urobiť viac práce znova. 932 00:40:04,039 --> 00:40:05,060 Takže poďme tlačiť von. 933 00:40:05,060 --> 00:40:09,360 Poďme 8, 6, 4-- oh Oh-- a 3 sa chystá ísť práve tam. 934 00:40:09,360 --> 00:40:11,490 Tak aspoň nepatrné úspory tentoraz. 935 00:40:11,490 --> 00:40:13,100 7, nie je príliš veľa práce je potrebné urobiť. 936 00:40:13,100 --> 00:40:15,370 Takže ak chcete, aby pop späť, poďme vložte vás. 937 00:40:15,370 --> 00:40:17,440 A konečne, 5, ak máte chcem zabehnúť staré sme 938 00:40:17,440 --> 00:40:22,610 Potrebujem ťa posunúť, tie, tie, do piatich, je na mieste. 939 00:40:22,610 --> 00:40:25,670 >> Teraz tak vidieť na Vysoká úroveň graficky, 940 00:40:25,670 --> 00:40:31,080 poďme tento algoritmus vizualizácia jeden ďalší čas. 941 00:40:31,080 --> 00:40:33,580 Takže to budeme nazývať vloženie druhu. 942 00:40:33,580 --> 00:40:37,700 Urobíme to rovnako ako rýchlo, a spustite ho sem. 943 00:40:37,700 --> 00:40:39,580 A tiež má iný pocit. 944 00:40:39,580 --> 00:40:42,180 Je to trochu lepšie a lepšie, ale nikdy to nie je dokonalý 945 00:40:42,180 --> 00:40:44,630 kým som ísť a hladké v týchto medzier. 946 00:40:44,630 --> 00:40:47,860 Vzhľadom k tomu, znovu, ja som len s tým, čo Som daná zľava doprava. 947 00:40:47,860 --> 00:40:50,350 Tak som sa nedostal toľko šťastia , Že všetko bolo perfektné. 948 00:40:50,350 --> 00:40:54,190 To je dôvod, prečo sme sa to trochu mispositions že pevné v priebehu času. 949 00:40:54,190 --> 00:40:58,890 >> Takže všetky tieto algoritmy sa zdajú beží na mierne rôznym tempom. 950 00:40:58,890 --> 00:41:02,030 V skutočnosti, ktoré by vám povedať, najlepší a najrýchlejší tak ďaleko? 951 00:41:02,030 --> 00:41:03,450 Bubble sort, prvý? 952 00:41:03,450 --> 00:41:05,000 Výber triedenie druhého? 953 00:41:05,000 --> 00:41:08,450 Vloženie triedenie, tretí? 954 00:41:08,450 --> 00:41:10,710 Počul som, že niektoré druhy výberu. 955 00:41:10,710 --> 00:41:13,280 Iné myšlienky? 956 00:41:13,280 --> 00:41:16,880 >> Takže sa ukazuje, že všetkých týchto algoritmov 957 00:41:16,880 --> 00:41:22,400 sú v zásade rovnako účinný ako každý other-- alebo, naopak, rovnako ako 958 00:41:22,400 --> 00:41:25,980 neefektívne ako každý iný, pretože môžeme robiť zásadne 959 00:41:25,980 --> 00:41:28,120 lepšie ako všetky tri z týchto algoritmov. 960 00:41:28,120 --> 00:41:29,990 A to je trochu bielej lži, taky. 961 00:41:29,990 --> 00:41:32,580 keď hovorím, že ako účinný alebo ako neúčinné, 962 00:41:32,580 --> 00:41:35,040 To je aspoň pre super-veľké hodnoty n. 963 00:41:35,040 --> 00:41:38,450 Keď máme len osem ľudí tu, alebo možno 50 alebo tak pruhy na obrazovke, 964 00:41:38,450 --> 00:41:41,645 budete úplne všimnete rozdielov Medzi týmito tromi algoritmov. 965 00:41:41,645 --> 00:41:44,020 Ale ako n, počet osôb, alebo počet čísel, 966 00:41:44,020 --> 00:41:46,350 alebo počet osôb v telefóne kniha, alebo počet webových stránok 967 00:41:46,350 --> 00:41:48,230 v databáze Google dostane väčšie a väčšie, 968 00:41:48,230 --> 00:41:51,650 uvidíme, že všetky tri z nich algoritmy sú vlastne celkom zlé. 969 00:41:51,650 --> 00:41:54,060 A čo môžeme urobiť v podstate lepšie ako to. 970 00:41:54,060 --> 00:41:56,830 >> Poďme sa pozrieť, konečne, na to, čo tieto algoritmy by mohli 971 00:41:56,830 --> 00:41:59,520 zvuk ako v kontexte niekoľkých ďalších 972 00:41:59,520 --> 00:42:03,550 ako aj prostredníctvom tejto vizualizácia tu 973 00:42:03,550 --> 00:42:06,860 ktorá nás zavedie do počet algoritmov. 974 00:42:06,860 --> 00:42:10,330 Poďme ďalej a pogratulovať naši účastníci tu, z ktorých 975 00:42:10,330 --> 00:42:11,690 radené sami veľmi dobre. 976 00:42:11,690 --> 00:42:15,124 Ak by ste chceli, aby sa darček na rozlúčku. 977 00:42:15,124 --> 00:42:16,540 Môžete ponechať svoje číslo rovnako. 978 00:42:16,540 --> 00:42:19,460 979 00:42:19,460 --> 00:42:22,520 A to, čo uvidíte, alebo skôr počuť, teraz, 980 00:42:22,520 --> 00:42:25,710 je to, že ako dať zvuky Do každej z týchto tyčí 981 00:42:25,710 --> 00:42:28,660 a spojiť ju so softvérom, rôzne frekvencie zvuku, 982 00:42:28,660 --> 00:42:33,970 môžete zabaliť svoju myseľ viac Audiola okolo toho, čo každá z týchto vecí 983 00:42:33,970 --> 00:42:34,470 vyzerať. 984 00:42:34,470 --> 00:42:39,325 Prvý z nich je vloženie druh 985 00:42:39,325 --> 00:42:44,275 >> [TONES] 986 00:42:44,275 --> 00:42:47,245 987 00:42:47,245 --> 00:42:49,720 >> Je to bublina druh. 988 00:42:49,720 --> 00:42:54,175 >> [TONES] 989 00:42:54,175 --> 00:43:17,250 990 00:43:17,250 --> 00:43:18,222 >> Výber sort. 991 00:43:18,222 --> 00:43:22,596 >> [TONES] 992 00:43:22,596 --> 00:43:33,570 993 00:43:33,570 --> 00:43:35,150 >> Niečo, čo nazýva merge sort. 994 00:43:35,150 --> 00:43:38,140 >> [TONES] 995 00:43:38,140 --> 00:43:49,510 996 00:43:49,510 --> 00:43:51,278 >> Gnome sort. 997 00:43:51,278 --> 00:43:56,390 >> [TONES] 998 00:43:56,390 --> 00:44:08,240 999 00:44:08,240 --> 00:44:09,430 >> To je pre CS50. 1000 00:44:09,430 --> 00:44:13,360 Uvidíme sa v stredu. 1001 00:44:13,360 --> 00:44:16,671 >> Rozprávač: A teraz, "Hlboká Myšlienky, "od Daven Farnham. 1002 00:44:16,671 --> 00:44:19,910 1003 00:44:19,910 --> 00:44:21,590 Prečo je to pre sláčiky? 1004 00:44:21,590 --> 00:44:23,200 Prečo nie, aby to lepšie? 1005 00:44:23,200 --> 00:44:25,970 Ja by som urobiť päť slučku. 1006 00:44:25,970 --> 00:44:28,720 >> [SMIECH]