1 00:00:00,000 --> 00:00:10,982 2 00:00:10,982 --> 00:00:11,940 DAVID MALAN: Rendben. 3 00:00:11,940 --> 00:00:16,470 Tehát ez CS50, és ez Most a hét elején három. 4 00:00:16,470 --> 00:00:19,960 >> Tehát eddig, most már Készítettem programokat C 5 00:00:19,960 --> 00:00:23,210 úgy néz ki, egy kicsit valami ilyesmi itt. 6 00:00:23,210 --> 00:00:25,470 Szóval van egy pár éles tartalmazza a tetején. 7 00:00:25,470 --> 00:00:28,490 Van int, fő, érvénytelen, és akkor valamit csinálni a közepén, 8 00:00:28,490 --> 00:00:30,590 néhány kis kódrészletet az adott funkció. 9 00:00:30,590 --> 00:00:34,170 De kulcsfontosságú volt az a tény, hogy mi már azt semmisnek itt. 10 00:00:34,170 --> 00:00:39,320 Így érvénytelen, mind az ebben az időben, meghatározza, hogy ez a program, futás közben, 11 00:00:39,320 --> 00:00:41,300 csak akkor lehet végrehajtani keresztül a nevét. 12 00:00:41,300 --> 00:00:46,330 Akkor nem írja más szavakkal vagy számok után a program nevét, amikor 13 00:00:46,330 --> 00:00:46,830 futtatja. 14 00:00:46,830 --> 00:00:51,200 Így például, ha a program voltak összeállítani egy nevű fájlt Helló, 15 00:00:51,200 --> 00:00:53,480 meg tudná csinálni ./hello, de ez van. 16 00:00:53,480 --> 00:00:56,750 >> Az egyetlen módja, hogy meg Segíti a program 17 00:00:56,750 --> 00:00:57,960 az hívja a funkciót. 18 00:00:57,960 --> 00:00:59,790 Például, hogy milyen funkciót már mi is használnak eddig 19 00:00:59,790 --> 00:01:00,950 hogy közreműködött a felhasználó? 20 00:01:00,950 --> 00:01:02,117 >> Közönség: A string. 21 00:01:02,117 --> 00:01:04,700 DAVID MALAN: Ahhoz, hogy szöveget, vagy kap int, vagy láttad mások, 22 00:01:04,700 --> 00:01:07,630 akkor is, ha nem használják őket még, kap, mint a hosszú, hosszú, és a hasonlók. 23 00:01:07,630 --> 00:01:09,380 De tegyük fel, hogy mi tényleg akar kezdeni 24 00:01:09,380 --> 00:01:12,760 írás programok, amelyek kicsit sokoldalú, és, őszintén szólva, egy kicsit 25 00:01:12,760 --> 00:01:15,090 mint a parancsokat, hogy már már egyre remélhetőleg 26 00:01:15,090 --> 00:01:16,550 egy kicsit hozzászokott. 27 00:01:16,550 --> 00:01:18,560 Mint a cd tér Dropbox. 28 00:01:18,560 --> 00:01:20,800 Ez természetesen, változások a könyvtár, feltételezve, hogy 29 00:01:20,800 --> 00:01:23,590 te vagy John Harvard otthonában könyvtár, a Dropbox mappában. 30 00:01:23,590 --> 00:01:27,380 Közben egy hasonló parancs létrehoz egy új könyvtárat pset2, 31 00:01:27,380 --> 00:01:30,290 ahogy lehet, hogy már vagy hamarosan a probléma meg két. 32 00:01:30,290 --> 00:01:33,970 Készíts Helló, persze, a parancs hogy épít a program neve helló 33 00:01:33,970 --> 00:01:35,770 fájlból nevű helló pont c. 34 00:01:35,770 --> 00:01:39,140 És minden ilyen esetben, most is megvolt 35 00:01:39,140 --> 00:01:43,620 ad érvet az úgynevezett parancsot, a villogó prompt, 36 00:01:43,620 --> 00:01:48,540 , hogy hogy tudja, mit kell építeni, és így hogy mkdir tudja, mit mappát létrehozni, 37 00:01:48,540 --> 00:01:51,110 és így, hogy a CD tudja ahol akarsz menni. 38 00:01:51,110 --> 00:01:54,720 De eddig azt mondogatja hogy fő, az alapértelmezett funkció, 39 00:01:54,720 --> 00:01:58,500 van egy üres kifejezés belsejében ezek a zárójelek, 40 00:01:58,500 --> 00:02:01,250 ami azt jelenti, hogy nem tud semmilyen érvet. 41 00:02:01,250 --> 00:02:03,240 >> Tehát a mai naptól, mit fogunk csinálni 42 00:02:03,240 --> 00:02:06,270 van, mi fog kezdeni támogatja a dolgok, mint ez is. 43 00:02:06,270 --> 00:02:08,990 Tény, hogy ebben az esetben, amit általában nem manuálisan, 44 00:02:08,990 --> 00:02:11,130 Tedd már ezt Számunkra nincs 45 00:02:11,130 --> 00:02:15,840 egy, hanem egy, kettő, három további vonósok után a program neve 46 00:02:15,840 --> 00:02:16,850 csengés. 47 00:02:16,850 --> 00:02:18,240 Szóval hogyan lehet ezt megvalósítani? 48 00:02:18,240 --> 00:02:20,260 >> Nos, a mai naptól, azokban az esetekben, ahol szeretnénk 49 00:02:20,260 --> 00:02:22,855 hogy bemenet a úgynevezett parancssor, 50 00:02:22,855 --> 00:02:24,980 megyünk elkezd hozzá itt mi van yellow-- 51 00:02:24,980 --> 00:02:30,520 helyett űrt int argc vessző karakterlánc argv nyitva tartó záró zárójel. 52 00:02:30,520 --> 00:02:32,520 Most ez érdekes egy pár oka. 53 00:02:32,520 --> 00:02:35,690 Az egyik, hogy fog írjunk programok, amelyek egy kicsit dinamikusabb. 54 00:02:35,690 --> 00:02:37,570 De még feltűnően, ez meg fog nyitni 55 00:02:37,570 --> 00:02:40,340 most egy beszélgetést, hogy mi tömbök tud igazán 56 00:02:40,340 --> 00:02:43,300 használni, amit a húr valóban a motorháztető alatt, 57 00:02:43,300 --> 00:02:47,320 amíg a jövő héten, amikor elkezdjük búvárkodás a még mélyebb, mint a hogy a gép 58 00:02:47,320 --> 00:02:48,590 hogy minden ez a cucc munka. 59 00:02:48,590 --> 00:02:51,920 De most, hadd dolgozzon, talán a kép. 60 00:02:51,920 --> 00:02:54,950 >> Ha írsz egy programot A fő nyilvánított 61 00:02:54,950 --> 00:02:58,810 Ily módon, úgy, hogy fő két argumentuma egy int 62 00:02:58,810 --> 00:03:03,233 és-- milyen adattípus a második érv? 63 00:03:03,233 --> 00:03:04,529 >> Közönség: Array. 64 00:03:04,529 --> 00:03:05,320 DAVID MALAN: Array. 65 00:03:05,320 --> 00:03:09,170 Tehát úgy néz ki első pillantásra, mintha egy húr, de észre a szögletes zárójelben. 66 00:03:09,170 --> 00:03:12,760 Emlékezzünk utoljára be fogalma egy tömb. 67 00:03:12,760 --> 00:03:16,210 És tömbök szögletes zárójelek pár környezetben. 68 00:03:16,210 --> 00:03:19,160 Lehet használni a tér zárójelben, hogy menjen be egy tömb 69 00:03:19,160 --> 00:03:22,710 és kap egy adott elem, mint konzol 0 vagy konzol 1-es vagy 2-konzol. 70 00:03:22,710 --> 00:03:25,500 De láttuk, ha röviden, a múlt héten, hogy Ön is 71 00:03:25,500 --> 00:03:28,790 használja ezeket szögletes zárójelben állapítsa meg a tömb méretét, 72 00:03:28,790 --> 00:03:31,790 ha tudod előre, hogy hány ints vagy hány vonósok, vagy amit 73 00:03:31,790 --> 00:03:32,630 valójában akar. 74 00:03:32,630 --> 00:03:34,790 Így kiderül, ott a egy harmadik összefüggésben itt 75 00:03:34,790 --> 00:03:37,890 hogy nincs több belső A szögletes zárójelben. 76 00:03:37,890 --> 00:03:41,920 Ha megad, mint én itt, a nevét valami hasonló argv, 77 00:03:41,920 --> 00:03:44,550 ami csak egy divatos módon mondván érv vektor, ami 78 00:03:44,550 --> 00:03:47,750 egy másik képzelet módja mondván, egy sor érvet, 79 00:03:47,750 --> 00:03:50,870 nyitó zárójel záró zárójel csak azt jelenti, hogy nem feltétlenül 80 00:03:50,870 --> 00:03:52,960 előre tudni, hogy milyen nagy a tömb lesz, 81 00:03:52,960 --> 00:03:55,070 de tudod, hogy lesz egy tömb. 82 00:03:55,070 --> 00:03:57,320 Tehát, ha nem tudja a szám ne tedd oda, 83 00:03:57,320 --> 00:04:01,160 nyitott konzol záró zárójel azt jelenti, hogy argv nem karakterlánc, 84 00:04:01,160 --> 00:04:03,124 hanem egy sor húrok. 85 00:04:03,124 --> 00:04:05,040 Tehát szintaktikailag, ha gondoljon vissza a múlt héten, 86 00:04:05,040 --> 00:04:09,460 ez nagyon hasonlít a mondás valami hasonló int korosztály nyitott zárójel, 87 00:04:09,460 --> 00:04:10,984 és akkor valami azt követően. 88 00:04:10,984 --> 00:04:12,150 Mit is jelent ez néz ki? 89 00:04:12,150 --> 00:04:13,399 Nézzük valóban készít egy képet. 90 00:04:13,399 --> 00:04:18,756 Tehát, ha fut a program a Fő miután két érvet meghatározott belső 91 00:04:18,756 --> 00:04:21,339 e zárójel, akkor lényegében legalább két darabokat 92 00:04:21,339 --> 00:04:23,560 memória adta neked a motorháztető alatt. 93 00:04:23,560 --> 00:04:26,550 Egy, ahogy én felhívja mivel ez téglalap, lesz, hogy hívják argc. 94 00:04:26,550 --> 00:04:30,645 És ahogy egy gyors bedugni, mi az adat típusa argc? 95 00:04:30,645 --> 00:04:31,270 Szóval ez egy int. 96 00:04:31,270 --> 00:04:33,480 Így a szám megy menni argc-- felváltva 97 00:04:33,480 --> 00:04:35,660 arra, hogy áll a vita számít. 98 00:04:35,660 --> 00:04:38,887 Közben én készült argv tömbként. 99 00:04:38,887 --> 00:04:40,970 És nem igazán tudom hogy mennyi ideig lesz, 100 00:04:40,970 --> 00:04:42,470 így a mai célokra dot dot dot. 101 00:04:42,470 --> 00:04:43,636 Ez lehet, hogy bizonyos hosszúságú. 102 00:04:43,636 --> 00:04:45,640 De már képen legalább négy téglalapok. 103 00:04:45,640 --> 00:04:50,970 Így argv egy darab memória tárolja string string karakterlánc dot dot dot, 104 00:04:50,970 --> 00:04:53,950 és argc csak egy darab A memória egy egész szám. 105 00:04:53,950 --> 00:04:55,710 >> Tehát most, most egy kicsit pontosabban. 106 00:04:55,710 --> 00:04:59,200 Ha, ha már vonósok ebben tömb, az úgynevezett 107 00:04:59,200 --> 00:05:03,290 argv, azt akarom, hogy őket külön-külön, mint a múlt héten, 108 00:05:03,290 --> 00:05:05,670 fogjuk használni jelölés mint argv konzol 0 109 00:05:05,670 --> 00:05:07,650 hogy az első dolog, amit egy tömbben. 110 00:05:07,650 --> 00:05:10,440 Argv konzol 1, hogy a második dolog, és így tovább. 111 00:05:10,440 --> 00:05:14,597 A kulcs itt, hogy mi még mindig 0 indexed-- mi még mindig számít a 0-ra. 112 00:05:14,597 --> 00:05:16,430 Így most csak a ténylegesen tenni valamit ebben. 113 00:05:16,430 --> 00:05:21,670 Ha én lefordítani a program neve Hello nevű fájlt Helló pont c, 114 00:05:21,670 --> 00:05:24,340 és aztán futtatni a programot DOT perjel Helló, 115 00:05:24,340 --> 00:05:28,380 Mit jelent a számítógép, a laptop, néz ki, mint a motorháztető alatt 116 00:05:28,380 --> 00:05:31,300 a pillanat futok pont slash szia és üsd le az Enter? 117 00:05:31,300 --> 00:05:33,500 Nos, ez talán mit lehetne leírni 118 00:05:33,500 --> 00:05:37,010 a tartalom a számítógép memória, vagy RAM-- Random Access Memory. 119 00:05:37,010 --> 00:05:40,330 Más szóval, a számítógép, valahogy neked varázslatos, 120 00:05:40,330 --> 00:05:45,360 helyezi az 1. számú argc, AKA argcount, és ez teszi a szó szoros értelmében a húr 121 00:05:45,360 --> 00:05:48,200 ./hello ARGV konzol 0-ra. 122 00:05:48,200 --> 00:05:51,750 Fogalmam sincs, őszintén szólva, mi az argv tartó 1 vagy 2 vagy 3, 123 00:05:51,750 --> 00:05:55,550 mert ha a felhasználó nem gépelt semmit mellett ./hello, 124 00:05:55,550 --> 00:05:58,550 fogjuk feltételezni, hogy ezek a legvalószínűbben szemetet értékeket, 125 00:05:58,550 --> 00:05:59,700 hogy úgy mondjam. 126 00:05:59,700 --> 00:06:02,650 Ezek a darabok memória létezik, de ez nem rajtunk múlik 127 00:06:02,650 --> 00:06:05,710 nézni őket, mert az argcount csak egy. 128 00:06:05,710 --> 00:06:07,870 >> Most, közben, ha levelet egy program futtatása, 129 00:06:07,870 --> 00:06:12,250 cd, ami pontosabban a parancs, a villogó prompt-- cd tér 130 00:06:12,250 --> 00:06:17,200 Dropbox--, amikor elindul, hogy hatékonyan, amikor a cd program fut, argc, 131 00:06:17,200 --> 00:06:22,270 belsejében a számítógép memóriája, az a a legtöbb legrövidebb második a 2-es szám. 132 00:06:22,270 --> 00:06:25,936 És akkor argv tartó Õ CD, ARGV tartó 1-nek Dropbox, 133 00:06:25,936 --> 00:06:28,560 és persze a parancs befejeződött, így az összes ez a memória 134 00:06:28,560 --> 00:06:30,420 lényegében elmegy és használják valami mást. 135 00:06:30,420 --> 00:06:32,270 És ezért mondom Csak egy pillanatra. 136 00:06:32,270 --> 00:06:35,720 >> Közben, ha nem teszünk mkdir pset2, A kép úgy néz ki, közel azonos, 137 00:06:35,720 --> 00:06:37,900 de különböző húrok benne argv. 138 00:06:37,900 --> 00:06:42,570 Ha megteszem csengés kötőjel helló Helló pont c, ugyanezt a gondolatot. 139 00:06:42,570 --> 00:06:47,060 Több dolog van töltve argv és argc, persze, 4. 140 00:06:47,060 --> 00:06:49,150 Más szóval, még akkor is, ha ez a tömb 141 00:06:49,150 --> 00:06:52,950 Lehet, hogy pont pont pont, az egyes változó hosszúságú, hogy úgy mondjam, 142 00:06:52,950 --> 00:06:56,720 Ön mindig tudja, hol a vége van, mert argc fog mondani 143 00:06:56,720 --> 00:07:00,120 mi pont abba kell hagynod nézi elemek argv. 144 00:07:00,120 --> 00:07:03,660 Csak akkor nézd meg négy összességében ebben az esetben. 145 00:07:03,660 --> 00:07:06,600 >> Úgyhogy most egy pillantást, talán egy egyszerű program. 146 00:07:06,600 --> 00:07:09,070 Az egyik, hogy csak azt mondja, helló hogy valaki, mint Zamyla. 147 00:07:09,070 --> 00:07:12,620 Szóval azt állítják, fogok írni egy programot Egy pillanat, amelyen keresztül tudtam csinálni 148 00:07:12,620 --> 00:07:16,670 ./hello tér Zamyla, és majd szeretnék a programom, hogy nyomtassa ki valamit 149 00:07:16,670 --> 00:07:18,520 szuper-egyszerű, mint a "Hello, Zamyla." 150 00:07:18,520 --> 00:07:20,100 Most, a múltban már használt getstring. 151 00:07:20,100 --> 00:07:22,850 Tehát a múltban, akkor is, ha Ön új a programozás, 152 00:07:22,850 --> 00:07:27,180 Valószínűleg te is felkap egy program, amely getstring 153 00:07:27,180 --> 00:07:29,390 majd használja printf köszönni Zamyla. 154 00:07:29,390 --> 00:07:31,290 De ne használja getString ezúttal. 155 00:07:31,290 --> 00:07:37,510 Hadd inkább bemegy a Appliant és nem tartalmazzák a standard I O pont h. 156 00:07:37,510 --> 00:07:41,160 Hadd is CS50 pont h. 157 00:07:41,160 --> 00:07:44,730 Most int main, és most én vagyok nem fog csinálni érvénytelen ma. 158 00:07:44,730 --> 00:07:51,200 Ehelyett fogom csinálni int argc karakterlánc argv nyitva tartó záró zárójel, 159 00:07:51,200 --> 00:07:52,640 hogy nem ad számot. 160 00:07:52,640 --> 00:07:54,644 És most itt van a úgynevezett csinálni. 161 00:07:54,644 --> 00:07:57,560 Mit fogok csinálni most vagyok fog tenni egy kis ugrás a hit, 162 00:07:57,560 --> 00:08:00,560 Fogom feltételezni, hogy a felhasználó fogja használni ezt a programot helyesen, 163 00:08:00,560 --> 00:08:04,980 és én csak fog do printf Helló,% sn. 164 00:08:04,980 --> 00:08:06,630 Tehát semmi új nincs. 165 00:08:06,630 --> 00:08:11,470 De azt akarom, hogy most is, amit szó a felhasználó beír után a program nevét. 166 00:08:11,470 --> 00:08:16,970 Tehát, ha én ./hello tér Zamyla, én szeretnénk valahogy programból való 167 00:08:16,970 --> 00:08:20,870 idézzük idézet vége "Zamyla." így mehet az én érvelés vektor, 168 00:08:20,870 --> 00:08:25,980 a tömb vonósok, és ha a parancs, Ismét volt ./hello hely Zamyla, 169 00:08:25,980 --> 00:08:29,340 milyen számot akarok hogy hozzanak argv itt? 170 00:08:29,340 --> 00:08:29,840 Közönség: 1.. 171 00:08:29,840 --> 00:08:32,355 DAVID MALAN: 1, mert tartó 0. kiderül 172 00:08:32,355 --> 00:08:34,230 lesz az a program nevét, ahogy láttuk. 173 00:08:34,230 --> 00:08:37,789 Tehát konzol 1 az első szó hogy én, a felhasználó beírt. 174 00:08:37,789 --> 00:08:39,559 Én megyek előre, és mentse meg. 175 00:08:39,559 --> 00:08:42,830 Én megyek be a mappába ahol elhelyezte ezt a fájlt. 176 00:08:42,830 --> 00:08:44,920 Azt fogom tenni, hogy helló 3. 177 00:08:44,920 --> 00:08:46,230 Comp IO rendben. 178 00:08:46,230 --> 00:08:51,380 ./hello Zamyla Enter billentyűt. 179 00:08:51,380 --> 00:08:54,480 Mit csináltam rosszul? 180 00:08:54,480 --> 00:08:57,270 Én elfogták a meglepetés magam csak egy pillanatig. 181 00:08:57,270 --> 00:08:58,230 Mit csináltam rosszul? 182 00:08:58,230 --> 00:08:59,220 >> Közönség: név. 183 00:08:59,220 --> 00:09:01,767 >> DAVID MALAN: A fájl valójában az úgynevezett hello3.c. 184 00:09:01,767 --> 00:09:03,850 És én, hogy csak a következetesség, mert már 185 00:09:03,850 --> 00:09:06,550 volt hello.c által a múlt az online kódot. 186 00:09:06,550 --> 00:09:11,550 Szóval erősít ez ./hello konzol kötőjel 3 Zamyla. 187 00:09:11,550 --> 00:09:12,370 Az Enter billentyűt. 188 00:09:12,370 --> 00:09:14,030 És most már helló, Zamyla. 189 00:09:14,030 --> 00:09:17,650 Közben tudom változtatni ezt a legyen Rob, vagy tényleg bármilyen más szó. 190 00:09:17,650 --> 00:09:19,230 >> De nézzük meg a sarokban eset. 191 00:09:19,230 --> 00:09:24,360 Mi lehet vársz fog történni, ha Nem írja senki nevét egyáltalán? 192 00:09:24,360 --> 00:09:25,270 >> Közönség: Error. 193 00:09:25,270 --> 00:09:27,300 >> DAVID MALAN: Hiba valamiféle, talán. 194 00:09:27,300 --> 00:09:28,200 Lássuk. 195 00:09:28,200 --> 00:09:29,440 Az Enter billentyűt. 196 00:09:29,440 --> 00:09:30,210 Null. 197 00:09:30,210 --> 00:09:33,870 Tehát printf ténylegesen egy kis védő minket 198 00:09:33,870 --> 00:09:38,131 itt, és a szó szoros értelmében a nyomtatás nyitott zárójel null, de még rosszabb dolgok történnek. 199 00:09:38,131 --> 00:09:40,130 És csak azért, hogy bizonyítani amit feltétlenül 200 00:09:40,130 --> 00:09:42,800 nem kéne, menjünk a itt és indítsa szaglászik. 201 00:09:42,800 --> 00:09:43,300 Nem igaz? 202 00:09:43,300 --> 00:09:46,410 Ha tudom, hogy a képet memória lényegében ez, 203 00:09:46,410 --> 00:09:52,660 argv tartó 1-nek Zamyla, ARGV tartó 0-nak ./hello vagy ./hello-3. 204 00:09:52,660 --> 00:09:55,400 Mi van a konzol 2-ben? 205 00:09:55,400 --> 00:09:58,210 Így tudok válaszolni, hogy kérdés magamat, ugye? 206 00:09:58,210 --> 00:10:00,460 Én is csak megváltoztatni a 1 2. 207 00:10:00,460 --> 00:10:07,270 Most már újrafordíthatod Helló 3, ./hello3 Nézzük nagyítás és nyomja meg az Entert. 208 00:10:07,270 --> 00:10:08,270 Hoppá. 209 00:10:08,270 --> 00:10:10,660 Nincs idézőjel. 210 00:10:10,660 --> 00:10:12,540 Érdekes. 211 00:10:12,540 --> 00:10:15,530 Szóval ez a fajta hűvös mi van még itt. 212 00:10:15,530 --> 00:10:17,130 >> Szóval, mi van még benne az én laptop? 213 00:10:17,130 --> 00:10:20,390 Mentsük el a konzol 3. 214 00:10:20,390 --> 00:10:25,190 Tedd hello3, ./hello-3. 215 00:10:25,190 --> 00:10:26,500 Kíváncsi. 216 00:10:26,500 --> 00:10:30,560 És most térjünk igazán bold-- 50. 217 00:10:30,560 --> 00:10:34,340 Szóval ez tényleg búvárkodás mély be a számítógép memóriájában. 218 00:10:34,340 --> 00:10:35,930 50. indexeket. 219 00:10:35,930 --> 00:10:41,950 Tehát, hogy helló 3 ./hello-3. 220 00:10:41,950 --> 00:10:42,680 Kíváncsi. 221 00:10:42,680 --> 00:10:44,660 Rendben, most én vagyok fog kapni meggondolatlan. 222 00:10:44,660 --> 00:10:47,331 Menjünk 5000. 223 00:10:47,331 --> 00:10:47,830 Rendben. 224 00:10:47,830 --> 00:10:49,520 Ezért hadd újrafordítani. 225 00:10:49,520 --> 00:10:51,460 Tedd 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 Most néhányan közületek, előfordulhat, egy villanykörte megy le. 229 00:10:59,250 --> 00:11:01,900 Hányan vannak Látta ezt az üzenetet korábban? 230 00:11:01,900 --> 00:11:03,440 OK. 231 00:11:03,440 --> 00:11:04,420 Igen, miért? 232 00:11:04,420 --> 00:11:07,250 >> Odds are-- és ott különböző dolog, hogy okozhatja ezt, 233 00:11:07,250 --> 00:11:09,730 és nyilvánvalóan te jó company-- van világosan 234 00:11:09,730 --> 00:11:11,900 okozott az úgynevezett a szegmentációs hiba. 235 00:11:11,900 --> 00:11:15,890 És hosszú történet rövid ma, megérintette a szegmens memória 236 00:11:15,890 --> 00:11:17,060 hogy nem kellett volna. 237 00:11:17,060 --> 00:11:19,970 Amennyiben a szegmens csak azt jelenti, egy darab memória, amit nem kellett volna. 238 00:11:19,970 --> 00:11:25,530 Most a számítógép biztosítja, hogy ha én fuss ./helloZamyla hogy én tud fogni argv 239 00:11:25,530 --> 00:11:27,760 legyen konzol 0. és ARGV konzol 1. 240 00:11:27,760 --> 00:11:32,730 De argc érték 2, ez azt jelenti, én vagyok csak allowed-- ez a fajta, a becsület 241 00:11:32,730 --> 00:11:35,180 system-- érintse tartó 0. és konzol 1. 242 00:11:35,180 --> 00:11:37,990 Ha megy minden tovább, ott van feltétlenül lesz a memória is. 243 00:11:37,990 --> 00:11:40,660 My RAM létezik fizikailag a számítógép. 244 00:11:40,660 --> 00:11:42,080 De ki tudja, mi van ott? 245 00:11:42,080 --> 00:11:44,450 Sőt, én futó több program egy időben. 246 00:11:44,450 --> 00:11:46,910 Talán van seen-- ha nem lennék ezt a Appliant 247 00:11:46,910 --> 00:11:49,937 de az én Mac vagy PC-- Esetleg van látta a tartalmát egy e-mailt. 248 00:11:49,937 --> 00:11:52,270 Lehet, hogy láttam egy pillanatra üzenet, amit nemrég küldött. 249 00:11:52,270 --> 00:11:55,390 Bármi, ami lehet elhúzódó körül a memóriában 250 00:11:55,390 --> 00:11:59,180 volna elérhető útján ez önkényes szögletes zárójel jelölés. 251 00:11:59,180 --> 00:12:02,850 Vagy, ami még rosszabb, lehet, hogy találtam az egyik jelszó 252 00:12:02,850 --> 00:12:05,859 hogy én nemrég beírtam, hogy a a program már a memóriában tárolt így 253 00:12:05,859 --> 00:12:07,900 hitelesítésére engem, és akkor csak ilyen hagyta 254 00:12:07,900 --> 00:12:09,910 A RAM amíg kilép a program. 255 00:12:09,910 --> 00:12:12,860 >> És valóban, ez az egyik a veszélyt, és egy a hatáskörök 256 00:12:12,860 --> 00:12:15,980 Az egy nyelv, mint a C- Van szabad hozzáférést 257 00:12:15,980 --> 00:12:18,860 A teljes tartalom A program memória, 258 00:12:18,860 --> 00:12:21,340 és mi rossz fiúk még nem azokban cases-- 259 00:12:21,340 --> 00:12:23,807 különösen akkor, ha kap a webes programozás 260 00:12:23,807 --> 00:12:26,890 vége felé a félév, akkor újra ezt topic-- van piszkálni körül, 261 00:12:26,890 --> 00:12:31,660 potenciálisan valaki számítógép memória és talál olyan furcsa dolgok 262 00:12:31,660 --> 00:12:32,570 mint láttuk ott. 263 00:12:32,570 --> 00:12:36,900 Vagy ami még rosszabb még, jelszavak, hogy vagy ő is majd, hogy nem rossz dolog. 264 00:12:36,900 --> 00:12:40,240 >> Tehát nyilvánvalóan nem kellett volna ezt, mert furcsa dolgok kezdenek történni. 265 00:12:40,240 --> 00:12:42,310 Valóban, ez egy program összeomlik. 266 00:12:42,310 --> 00:12:44,580 Ez lenne az egyenértékű A Mac OS és a Windows 267 00:12:44,580 --> 00:12:46,770 a program ablaka, csak eltűnik. 268 00:12:46,770 --> 00:12:48,300 Váratlan hiba történt. 269 00:12:48,300 --> 00:12:50,840 A parancssori környezet látunk valami ilyesmit. 270 00:12:50,840 --> 00:12:54,480 De ezért, hogy én vagyok csak meg kell érinteni memória, ami nem az enyém. 271 00:12:54,480 --> 00:12:57,090 >> Szóval védekezni ez a kicsit másképp 272 00:12:57,090 --> 00:12:59,010 nézi a program itt. 273 00:12:59,010 --> 00:13:01,000 Szóval, megint a csontváz hogy láttuk earlier-- 274 00:13:01,000 --> 00:13:02,480 és én már kiemelt ezúttal int. 275 00:13:02,480 --> 00:13:05,900 És ezúttal Main valóban vissza értéket. 276 00:13:05,900 --> 00:13:09,120 Annak ellenére, hogy a legtöbb előadás példa, amit még egyszer sem használt 277 00:13:09,120 --> 00:13:10,990 vissza semmit a fő. 278 00:13:10,990 --> 00:13:13,710 Mi csak írni printf közel kapcsos zárójel és ennyi. 279 00:13:13,710 --> 00:13:16,500 De szabad, amit a fordító csinál az Ön számára, 280 00:13:16,500 --> 00:13:19,510 hatékonyan, visszatér 0 az Ön számára. 281 00:13:19,510 --> 00:13:22,950 Kiderült out-- és ez egy kicsit counterintuitive--, hogy a 0 jó. 282 00:13:22,950 --> 00:13:24,690 Ez nem azt jelenti, hamis önmagában. 283 00:13:24,690 --> 00:13:29,080 0 a jó, és a nem-0 érték, a világ úgy döntött, 284 00:13:29,080 --> 00:13:30,619 jelentheti a hibát. 285 00:13:30,619 --> 00:13:32,910 Tehát, ha valaha is elrontotta valamit a számítógépen, 286 00:13:32,910 --> 00:13:36,600 vagy a program most halt meg, és már ütött néhány téves ablak 287 00:13:36,600 --> 00:13:40,360 a képernyőn, mondván: hiba negatív 49 vagy hiba 23-- 288 00:13:40,360 --> 00:13:44,170 néhány látszólag önkényes value-- ez mert a programozó kódolt 289 00:13:44,170 --> 00:13:49,370 érték, mint a negatív 49 vagy pozitív 23. képviseli tetszőleges számú, merem állítani, 290 00:13:49,370 --> 00:13:53,340 4 milliárd lehetséges dolgok hogy ami rossz a program. 291 00:13:53,340 --> 00:13:55,700 >> Szóval, hogyan lehet, hogy veszek Használja ki ezt magamnak? 292 00:13:55,700 --> 00:13:58,970 Nos, hadd nyit egy programot hogy írtam előre, 293 00:13:58,970 --> 00:14:01,450 és piszkálni körül az interneten az úgynevezett Helló 4. 294 00:14:01,450 --> 00:14:05,650 És ez szinte teljesen megegyezik, kivéve, hogy Ennek van egy kis hiba-ellenőrzés. 295 00:14:05,650 --> 00:14:09,660 Ebben az esetben, én már ismét kijelentette, a fő, hogy két érv, 296 00:14:09,660 --> 00:14:13,180 de ez alkalommal, a 17. sorban, értesítés Csinálok egy kis józanság csekket. 297 00:14:13,180 --> 00:14:17,100 Én ügyelve arra, hogy argc értéke = 2. 298 00:14:17,100 --> 00:14:18,960 Mert ha igen, hogy azt jelenti, hogy nyugodtan 299 00:14:18,960 --> 00:14:21,420 érintse meg nem csak konzol 0, de konzol 1. 300 00:14:21,420 --> 00:14:24,330 És megy előre, és nyomtassa ki, Ebben az esetben, vagy Rob Zamyla 301 00:14:24,330 --> 00:14:26,020 vagy bármi szót gépelt ki. 302 00:14:26,020 --> 00:14:28,020 És most csak azért, hogy egy kicsit helyes, 303 00:14:28,020 --> 00:14:31,910 Megyek kifejezetten vissza 0 jelenti minden rendben van. 304 00:14:31,910 --> 00:14:33,300 Semmi rossz nem történt. 305 00:14:33,300 --> 00:14:38,590 >> De a hagyomány, megyek vissza 1, vagy őszintén bármely nem 0 érték, 306 00:14:38,590 --> 00:14:40,160 ha valami baj történik. 307 00:14:40,160 --> 00:14:43,270 Most a felhasználó nem fog igazán észre, mi folyik itt. 308 00:14:43,270 --> 00:14:50,410 Valóban, ha bemegy a könyvtárba, mi nagyítás, és nem teszik Helló 4, 309 00:14:50,410 --> 00:14:54,210 ./hello-4 Zamyla úgy viselkedik, mint gondolom. 310 00:14:54,210 --> 00:14:58,570 De ha inkább nem írja bármit, semmi sem történik, 311 00:14:58,570 --> 00:14:59,680 de nem lezuhan. 312 00:14:59,680 --> 00:15:04,660 És ha én inkább valami mint Rob egy proktor 313 00:15:04,660 --> 00:15:07,550 A Thayer-- megosztása önkényes információ. 314 00:15:07,550 --> 00:15:13,680 De értesítés, ARGV 1, 2, 3, 4, és 5 most már létezik a memóriában. 315 00:15:13,680 --> 00:15:16,540 Ez is, az nem az, amit a program szerint, 316 00:15:16,540 --> 00:15:20,300 mert már ellenőrizte, hogy argc értéke = 2, vagy sem. 317 00:15:20,300 --> 00:15:22,140 Szóval most már védő ellen. 318 00:15:22,140 --> 00:15:25,290 >> Most, mint egy félre, akkor a programmer-- vagy inkább mi az users-- 319 00:15:25,290 --> 00:15:29,670 soha többé nem látom, hogy 0 vagy 1, de egy nevű eszköz debugger, vagy egyéb eszközök, 320 00:15:29,670 --> 00:15:32,250 mint látni fogjuk előtt hosszú, akkor a programozó 321 00:15:32,250 --> 00:15:36,590 lehet látni, hogy mi lesz baj belül a program. 322 00:15:36,590 --> 00:15:39,170 >> Tehát, bármilyen kérdése van argc? 323 00:15:39,170 --> 00:15:40,873 Igen. 324 00:15:40,873 --> 00:15:45,292 >> Közönség: Láttam, ahol nem volt a karakter, [nem hallható] 325 00:15:45,292 --> 00:15:49,669 csak azt mondta, húr csillag d, mint karakter csillag vessző. 326 00:15:49,669 --> 00:15:50,710 Vannak azonos itt? 327 00:15:50,710 --> 00:15:51,626 >> DAVID MALAN: vannak. 328 00:15:51,626 --> 00:15:55,080 A kérdés tehát az, hogy van néha látott programok 329 00:15:55,080 --> 00:15:57,270 mint ez, hogy nem mondjuk karakterlánc argv konzol 330 00:15:57,270 --> 00:16:01,015 hanem mondjuk valami mint char csillag argv konzol. 331 00:16:01,015 --> 00:16:03,140 És van még más változatok, hogy lehet látni. 332 00:16:03,140 --> 00:16:04,264 Ők valóban egyenértékűek. 333 00:16:04,264 --> 00:16:06,240 Most már ezek a fajta képzés kerekek 334 00:16:06,240 --> 00:16:09,737 a formájában a húr a CS50 könyvtár, de alig több mint egy hét 335 00:16:09,737 --> 00:16:12,570 vagy úgy megyünk, hogy távolítsa el az obstrukció teljesen és ténylegesen 336 00:16:12,570 --> 00:16:16,820 nézzük meg, mi a karakter és a csillag vannak, és hogy ezek hogyan érintik a memória 337 00:16:16,820 --> 00:16:18,140 képviselet általában. 338 00:16:18,140 --> 00:16:19,540 Tehát mi jön vissza, hogy a. 339 00:16:19,540 --> 00:16:21,540 >> További kérdések a mi ARGV vagy argc? 340 00:16:21,540 --> 00:16:22,397 Igen. 341 00:16:22,397 --> 00:16:24,438 Közönség: Miért is vissza hiba [nem hallható]? 342 00:16:24,438 --> 00:16:27,147 343 00:16:27,147 --> 00:16:29,230 DAVID MALAN: Miért tette hibaüzenetet only-- oh! 344 00:16:29,230 --> 00:16:31,813 Az előző esetben, amikor voltak futzing körül memóriával, 345 00:16:31,813 --> 00:16:35,110 miért csak egy hibaüzenet amikor én tényleg írt egy nagy szám? 346 00:16:35,110 --> 00:16:36,620 A rövid válasz az, hogy csak szerencsém volt. 347 00:16:36,620 --> 00:16:39,240 Általánosságban elmondható, hogy egy számítógép memóriát darabokban, 348 00:16:39,240 --> 00:16:42,900 és ez adott nekem egy elég nagy darab, hogy Kaptam el, anélkül, hogy észrevették, 349 00:16:42,900 --> 00:16:46,280 A megható konzol 2 konzol 3, konzol 50, de amint toltam 350 00:16:46,280 --> 00:16:49,080 szerencsém, mentem túl a határait a darab memória 351 00:16:49,080 --> 00:16:50,520 Az operációs rendszer adta nekem. 352 00:16:50,520 --> 00:16:52,720 És ez az, amikor az erősítve le, és azt mondta, nem. 353 00:16:52,720 --> 00:16:54,580 Szegmentációs hiba. 354 00:16:54,580 --> 00:16:55,692 Igen. 355 00:16:55,692 --> 00:16:58,890 >> Közönség: Hogyan működik a számítógép tudják az értékét argc? 356 00:16:58,890 --> 00:17:02,390 >> DAVID MALAN: Hogyan működik a számítógép értékének megismeréséhez argc? 357 00:17:02,390 --> 00:17:07,920 Amikor futtatja a programot, hogy a program, a természet a villogó prompt, 358 00:17:07,920 --> 00:17:11,359 adják a tömb szavak, amelyeket beírt 359 00:17:11,359 --> 00:17:13,300 A gyors, hogy volt gépelt a billentyűket. 360 00:17:13,300 --> 00:17:16,569 És ez így van az operációs rendszer, amely lényegében 361 00:17:16,569 --> 00:17:20,329 feltölti legfontosabb érveit az Ön számára. 362 00:17:20,329 --> 00:17:22,829 Szóval ez az egyik szolgáltatás hogy kapsz, valami titokban 363 00:17:22,829 --> 00:17:24,869 a motorháztető alatt a az operációs rendszer. 364 00:17:24,869 --> 00:17:27,118 További kérdések? 365 00:17:27,118 --> 00:17:27,618 Igen. 366 00:17:27,618 --> 00:17:29,787 >> Közönség: Mit jelent a core dump jelent? 367 00:17:29,787 --> 00:17:31,370 DAVID MALAN: Mit core dump jelent? 368 00:17:31,370 --> 00:17:32,950 Szóval ez egy jó kérdés. 369 00:17:32,950 --> 00:17:35,312 És hadd menjek vissza a ebben a könyvtárban van. 370 00:17:35,312 --> 00:17:37,270 És észre fogod venni, hogy Van egy új fájlt is. 371 00:17:37,270 --> 00:17:41,670 Ez csakugyan hívják mag, és ez valójában általában egy tisztességes méretű fájlt. 372 00:17:41,670 --> 00:17:45,300 Amely lényegében egy pillanatkép tartalmát a program memória 373 00:17:45,300 --> 00:17:46,902 vagy RAM amikor az lezuhant. 374 00:17:46,902 --> 00:17:49,110 És ez hasznos lesz, potenciálisan, diagnosztikai, 375 00:17:49,110 --> 00:17:52,850 egyszer beszélünk egy későbbi előadás és részben a hibakeresés, 376 00:17:52,850 --> 00:17:55,730 mert akkor ténylegesen a egyenértékű egy digitális boncolás 377 00:17:55,730 --> 00:18:00,300 az a fájl, hogy segítsen kitalálni mit csináltál rosszul a programban. 378 00:18:00,300 --> 00:18:01,220 Igen. 379 00:18:01,220 --> 00:18:04,450 >> Közönség: Van argc a parancs maga, vagy akkor nevezd meg valamit? 380 00:18:04,450 --> 00:18:05,575 >> DAVID MALAN: Jó kérdés. 381 00:18:05,575 --> 00:18:08,040 Van argc parancs önmagában vagy akkor nevezd meg valamit? 382 00:18:08,040 --> 00:18:09,290 Ez biztosan nem egy parancsot. 383 00:18:09,290 --> 00:18:13,500 Ez egyszerűen egy változó név vagy az érvelés nevét, 384 00:18:13,500 --> 00:18:15,481 és így teljesen mi Nevezhetjük ezt ize, 385 00:18:15,481 --> 00:18:18,480 nevezhetjük ezt sáv, amelyek általában hogy a go-to szavak, hogy a számítógép 386 00:18:18,480 --> 00:18:19,860 tudós megy. 387 00:18:19,860 --> 00:18:22,820 De a hagyomány, az általunk használt argc és argv. 388 00:18:22,820 --> 00:18:25,360 De ez csak egy ember egyezmény, semmi több. 389 00:18:25,360 --> 00:18:25,860 Rendben. 390 00:18:25,860 --> 00:18:28,140 Szóval kiderült, én voltam mondja egy kis fehér lie-- 391 00:18:28,140 --> 00:18:31,264 és őszintén szólva, a jövőben, látni fogod, óta azt mondjuk más hazugságokat. 392 00:18:31,264 --> 00:18:33,510 De most, megyünk hogy húzza vissza egy ilyen. 393 00:18:33,510 --> 00:18:37,310 Ebben az esetben is, ha azt korábban futott egy program, mint ./hello vagy ./hello-3 394 00:18:37,310 --> 00:18:42,780 Zamyla, mi volt a tartalma a számítógép memóriájában néz nagyjából hasonló 395 00:18:42,780 --> 00:18:43,280 ezt. 396 00:18:43,280 --> 00:18:45,070 Hanem arra, amit a string. 397 00:18:45,070 --> 00:18:49,279 Mit is mondunk egy héttel ezelőtt, amit egy karakterlánc valójában a motorháztető alatt? 398 00:18:49,279 --> 00:18:50,320 Közönség: Array of karakter. 399 00:18:50,320 --> 00:18:52,111 DAVID MALAN: Ez egy tömb karakter, igaz? 400 00:18:52,111 --> 00:18:55,760 Tehát lehet, hogy egy sor vonósok, de viszont a húr 401 00:18:55,760 --> 00:18:57,150 egy tömb karaktereket. 402 00:18:57,150 --> 00:19:00,010 Tehát, ha azt szeretné, hogy legyen anális amikor rajzolok ezt a képet, 403 00:19:00,010 --> 00:19:03,290 Én tényleg kell rajz ez egy kicsit több, mint ez, 404 00:19:03,290 --> 00:19:08,000 ahol minden ilyen indexek az én argv tömb, 405 00:19:08,000 --> 00:19:11,432 van egy egész húr önmagában hogy maga is egy tömb. 406 00:19:11,432 --> 00:19:13,140 És most a fehér hazugság mondunk ma 407 00:19:13,140 --> 00:19:15,181 az, hogy a kép nem meg egészen, mint ez. 408 00:19:15,181 --> 00:19:19,110 Tény, hogy a kis négyzet rendszerint nem a nagy téglalap 409 00:19:19,110 --> 00:19:19,610 ott. 410 00:19:19,610 --> 00:19:21,280 De majd jön vissza, hogy nemsokára. 411 00:19:21,280 --> 00:19:25,440 De ez ./hello backslash 0, hogy mivel a különleges karakter 412 00:19:25,440 --> 00:19:28,310 kijelölte a végén egy húr, és van egy másik sorra 413 00:19:28,310 --> 00:19:29,360 Zamyla nevét. 414 00:19:29,360 --> 00:19:30,900 Szóval, mit jelent ez? 415 00:19:30,900 --> 00:19:33,410 >> Nos, hadd menjen előre, és nyit két másik példát 416 00:19:33,410 --> 00:19:35,220 Az online hozzáférhető. 417 00:19:35,220 --> 00:19:40,590 Az egyik az úgynevezett argv1.c és a másik jelentése argv2. 418 00:19:40,590 --> 00:19:44,260 Ez egy szuper egyszerű program, amely eltér a korábbi programok 419 00:19:44,260 --> 00:19:47,260 az, hogy most én vagyok a argc és argv itt. 420 00:19:47,260 --> 00:19:54,300 És most integrálja a hurok A 18. sor, az i = 0-ig argC. 421 00:19:54,300 --> 00:19:56,850 És mit fogok csinálni ezzel kódsort itt? 422 00:19:56,850 --> 00:19:58,270 Angolul. 423 00:19:58,270 --> 00:20:00,510 Ez a nyilvánvalóan használatát mutatja argc. 424 00:20:00,510 --> 00:20:03,670 De angol, mit csinál ha futtatni ezt a programot? 425 00:20:03,670 --> 00:20:04,366 Igen? 426 00:20:04,366 --> 00:20:07,386 >> Közönség: Meg fog kinyomtatni a képernyőn, ahányszor csak akar. 427 00:20:07,386 --> 00:20:08,260 DAVID MALAN: Pontosan. 428 00:20:08,260 --> 00:20:10,480 Tehát bármit szavak, írja a parancssorba, akkor 429 00:20:10,480 --> 00:20:13,120 fog kérődzik őket rám soronként. 430 00:20:13,120 --> 00:20:14,370 Szóval, menjünk előre, és csinálni. 431 00:20:14,370 --> 00:20:17,862 Hadd menjek be a könyvtárba és nem teszik argv1 ./argv1. 432 00:20:17,862 --> 00:20:20,521 433 00:20:20,521 --> 00:20:21,770 És most hadd tartsa egyszerű. 434 00:20:21,770 --> 00:20:23,834 Csináljuk sem először. 435 00:20:23,834 --> 00:20:26,750 Tette nyomtassa ki az egy dolog, és hogy ez valóban az a program nevét, 436 00:20:26,750 --> 00:20:28,240 mert ez a konzol 0-ra. 437 00:20:28,240 --> 00:20:33,290 Ha most azt mondják, ize, meg fog tenni a két, és ha azt mondom foo bar, 438 00:20:33,290 --> 00:20:35,580 azt fogja mondani a három dolgot. 439 00:20:35,580 --> 00:20:37,740 Most, hogy kissé érdekes, talán. 440 00:20:37,740 --> 00:20:41,450 De emlékeztetnek arra, hogy argv egy tömb vonósok, 441 00:20:41,450 --> 00:20:45,960 de a karakterlánc egy sor karakter, így tudjuk, hogy a dolgokat egy fokkal 442 00:20:45,960 --> 00:20:48,560 és alkalmazza az alapvető logika, és kóddal 443 00:20:48,560 --> 00:20:51,160 úgy néz ki, egy kicsit rejtélyes, kétségkívül. 444 00:20:51,160 --> 00:20:53,540 De azáltal, hogy a beágyazott hurok, valami hasonló 445 00:20:53,540 --> 00:20:57,030 hogy mit lehet előhívni Mario, Például, ha nem így. 446 00:20:57,030 --> 00:21:00,380 >> Így most észre a 19, én vagyok ismét iterálás érveimet, 447 00:21:00,380 --> 00:21:02,410 a 0-ig argC. 448 00:21:02,410 --> 00:21:05,510 És most sorban 21-- vagyok hitelfelvétel a trükk az utolsó week-- 449 00:21:05,510 --> 00:21:11,090 Én ellenőrzése, ami a hossza argv konzol i. 450 00:21:11,090 --> 00:21:12,920 Én tárolja, hogy a válasz n. 451 00:21:12,920 --> 00:21:18,230 És akkor én integrálása a j on n-ig, ahol j 0 inicializálunk. 452 00:21:18,230 --> 00:21:19,460 Így egyezmény számolás. 453 00:21:19,460 --> 00:21:22,335 Ha már használta azt, ha van egy beágyazott loop, nem tudod használni megint, 454 00:21:22,335 --> 00:21:25,770 egyébként akkor cucc, potenciálisan az érték nincs a belső hurok. 455 00:21:25,770 --> 00:21:27,200 Tehát én vagyok a j-egyezmény. 456 00:21:27,200 --> 00:21:28,020 Lehet használni k. 457 00:21:28,020 --> 00:21:31,080 Ha több, mint k, akkor valószínűleg túl sok fészkelő, jellemzően. 458 00:21:31,080 --> 00:21:33,800 De most, észre a printf vonal némileg eltérő. 459 00:21:33,800 --> 00:21:37,520 Én nem nyomtat% s vagyok nyomtatás% c, amit, természetesen, 460 00:21:37,520 --> 00:21:39,460 helyőrzője a karakter. 461 00:21:39,460 --> 00:21:40,770 >> És most észre szintaxis. 462 00:21:40,770 --> 00:21:41,270 Új. 463 00:21:41,270 --> 00:21:42,630 Még nem láttam ilyet. 464 00:21:42,630 --> 00:21:47,290 De logikailag, ez csak azt jelenti, kap az i-edik karakterlánc argv 465 00:21:47,290 --> 00:21:50,067 és kap a j-edik mi? 466 00:21:50,067 --> 00:21:50,900 Közönség: Karakter. 467 00:21:50,900 --> 00:21:52,800 DAVID MALAN: Karakter abban húr. 468 00:21:52,800 --> 00:21:57,100 Tehát a szögletes zárójelek majd a szögletes zárójelek, 469 00:21:57,100 --> 00:22:00,390 ez a búvárkodás először a argv a húrok, 470 00:22:00,390 --> 00:22:02,225 majd a második szögletes zárójelben j 471 00:22:02,225 --> 00:22:06,580 a búvárkodás a karakterek a az adott string argv. 472 00:22:06,580 --> 00:22:09,562 És akkor, csak a jó intézkedés, Én nyomtat egy új sort itt. 473 00:22:09,562 --> 00:22:12,020 Tehát most hadd menjen előre, és nyissa egy kicsit nagyobb ablak 474 00:22:12,020 --> 00:22:13,600 így látjuk ezt a műveletet. 475 00:22:13,600 --> 00:22:15,700 Hadd menjek ebbe a mappába. 476 00:22:15,700 --> 00:22:22,550 És most, hogy argv-2-- whoops-- hogy argv-2 ./argv 2. 477 00:22:22,550 --> 00:22:23,110 Az Enter billentyűt. 478 00:22:23,110 --> 00:22:24,860 És ez egy kicsit nehéz olvasni függőlegesen, 479 00:22:24,860 --> 00:22:27,920 de ez valóban a nevét programot, majd egy üres sor. 480 00:22:27,920 --> 00:22:30,210 Most hadd menjen előre, és ezt a semmit. 481 00:22:30,210 --> 00:22:33,210 Hasonlóan nehezen olvasható, de valóban nyomtatás egy karakter soronként. 482 00:22:33,210 --> 00:22:36,780 És ha bár, ez most nyomtatás azok soronként. 483 00:22:36,780 --> 00:22:40,140 Így az elvihető itt nem annyira hogy wow, nézd meg ezt a szép új trükk 484 00:22:40,140 --> 00:22:44,750 ahol lehet kapni a tartalom A tömb speciális karakterek, 485 00:22:44,750 --> 00:22:48,380 hanem az, hogy elvisszük az alapvető ötletek, mint indexelés egy tömb, 486 00:22:48,380 --> 00:22:51,620 majd indexeli egy tömb, ami ebben a tömbben, 487 00:22:51,620 --> 00:22:56,180 és csak, hogy ugyanazon ötletek kissé bonyolultabb példákat. 488 00:22:56,180 --> 00:22:59,560 De az alapok valóban nem változott, még a múlt hét óta. 489 00:22:59,560 --> 00:23:02,350 >> Most ez a fajta időszerű, abban, emlékszem, a hét nulla 490 00:23:02,350 --> 00:23:04,110 játszottunk egy telefonkönyv, mint ez. 491 00:23:04,110 --> 00:23:06,670 És bár ez nyilvánvalóan fizikai darab papír, 492 00:23:06,670 --> 00:23:09,150 akkor milyen gondolni Telefonkönyv tömbként. 493 00:23:09,150 --> 00:23:12,770 Természetesen, ha úgy döntesz, hogy újraimplementálni ez darab ilyen darab papír 494 00:23:12,770 --> 00:23:15,260 egy számítógép, valószínűleg akkor használni valamit 495 00:23:15,260 --> 00:23:20,270 mint egy tömb tárolja az összes ilyen neveket és telefonszámokat egészen 496 00:23:20,270 --> 00:23:23,800 keresztül Z. Szóval ez jó, mert a ez lehetővé teszi számunkra a lehetőséget, 497 00:23:23,800 --> 00:23:28,310 talán, hogy fontolja meg, hogyan lehet ténylegesen alkalmazni valami ilyesmi. 498 00:23:28,310 --> 00:23:31,250 Mint egy sor ajtók itt. 499 00:23:31,250 --> 00:23:36,380 Tehát, ha én could-- kell egy önként gyere fel. 500 00:23:36,380 --> 00:23:36,980 Lássuk. 501 00:23:36,980 --> 00:23:40,650 Egy ismeretlen arc talán, ismeretlen arc talán. 502 00:23:40,650 --> 00:23:42,090 Mit szólnál a narancssárga? 503 00:23:42,090 --> 00:23:42,680 Itt. 504 00:23:42,680 --> 00:23:45,870 Narancssárga inget, gyere fel. 505 00:23:45,870 --> 00:23:52,230 >> Menjünk előre, és most mozog ezek az ajtók szélére, 506 00:23:52,230 --> 00:23:54,020 mozgatni ezeket az útból egy pillanatra. 507 00:23:54,020 --> 00:23:56,600 508 00:23:56,600 --> 00:23:57,760 Mi a neve? 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 Örülök, hogy találkoztunk. 513 00:23:59,451 --> 00:23:59,950 Rendben. 514 00:23:59,950 --> 00:24:04,500 Tehát mögött hat ajtók digitálisan a screen-- 515 00:24:04,500 --> 00:24:07,810 vagy inkább hét ajtó a screen-- egy csomó számot. 516 00:24:07,810 --> 00:24:10,099 És én nem mondtam semmit A advance-- egyeztetett? 517 00:24:10,099 --> 00:24:11,140 AJAY: Semmi előre. 518 00:24:11,140 --> 00:24:14,730 DAVID MALAN: Csak azt akarom, hogy ne most az, hogy megtaláljuk a számomra, és nekünk, 519 00:24:14,730 --> 00:24:20,920 tényleg, a szám 50, egy lépéssel egy időben. 520 00:24:20,920 --> 00:24:21,830 >> AJAY: Number 50? 521 00:24:21,830 --> 00:24:22,580 >> DAVID MALAN: A 50-es. 522 00:24:22,580 --> 00:24:24,746 És akkor kiderülhet, mi a mögött mindegyik ajtó 523 00:24:24,746 --> 00:24:27,930 egyszerűen érintse meg a képernyőt az ujjával. 524 00:24:27,930 --> 00:24:31,364 A fenébe. [Nevetés] 525 00:24:31,364 --> 00:24:34,560 >> [Taps] 526 00:24:34,560 --> 00:24:39,540 >> Nagyon jól sikerült. 527 00:24:39,540 --> 00:24:40,400 OK. 528 00:24:40,400 --> 00:24:44,090 Van egy szép ajándék díj az Ön számára. 529 00:24:44,090 --> 00:24:46,520 Választanod a filmek is tárgyalt a múlt héten. 530 00:24:46,520 --> 00:24:47,362 >> AJAY: Ó, ember. 531 00:24:47,362 --> 00:24:49,050 Ó, én még soha nem láttam Spaceballs. 532 00:24:49,050 --> 00:24:49,520 >> DAVID MALAN: Spaceballs. 533 00:24:49,520 --> 00:24:50,140 Rendben. 534 00:24:50,140 --> 00:24:53,790 Így várj csak egy pillanatra. 535 00:24:53,790 --> 00:24:57,430 Hogy-- tegyük ezt a tanítható moment-- 536 00:24:57,430 --> 00:25:00,412 hogyan megy a megtalálni a szám 50? 537 00:25:00,412 --> 00:25:01,370 AJAY: Úgy döntöttem, véletlenszerűen. 538 00:25:01,370 --> 00:25:03,420 DAVID MALAN: Szóval úgy döntött, véletlenszerűen és szerencsém volt. 539 00:25:03,420 --> 00:25:03,790 AJAY: Igen. 540 00:25:03,790 --> 00:25:04,456 DAVID MALAN: OK. 541 00:25:04,456 --> 00:25:05,050 Kiváló. 542 00:25:05,050 --> 00:25:08,470 Tehát most már, hogy ne ütött szerencsés, mi mást 543 00:25:08,470 --> 00:25:10,210 történhetett volna, mögött ezek az ajtók? 544 00:25:10,210 --> 00:25:12,930 Ha megyek előre, és mutatják ezek a számok itt, 545 00:25:12,930 --> 00:25:15,180 ők valójában véletlenszerű sorrendben. 546 00:25:15,180 --> 00:25:17,750 És a legjobb, amit lehet kész, őszintén szólva, ez a végső soron, 547 00:25:17,750 --> 00:25:19,410 a legrosszabb esetben, ellenőrzi őket. 548 00:25:19,410 --> 00:25:23,000 Szóval van szuper szerencsés, ami Mi nem nevezném egy algoritmus. 549 00:25:23,000 --> 00:25:24,730 Igen, gratulálok. 550 00:25:24,730 --> 00:25:27,010 De most let's-- humor engem, ha lehet. 551 00:25:27,010 --> 00:25:28,310 Menjünk ezen a lapon itt. 552 00:25:28,310 --> 00:25:31,460 És itt vannak a számok egyértelműen , amit úgy tűnik, hogy egy véletlenszerű sorrendben, 553 00:25:31,460 --> 00:25:32,280 és voltak. 554 00:25:32,280 --> 00:25:35,160 De most, ha én inkább igény hogy ezek az ajtók mögött 555 00:25:35,160 --> 00:25:39,070 olyan számok vannak rendezve. 556 00:25:39,070 --> 00:25:41,780 A cél most az, hogy is hozzánk a szám 50. 557 00:25:41,780 --> 00:25:45,910 De csak algoritmussal és mondja el, hogyan fogsz róla. 558 00:25:45,910 --> 00:25:48,020 És ha megtalálja, akkor tartsa a film. 559 00:25:48,020 --> 00:25:49,520 Ha nem találod, akkor add vissza. 560 00:25:49,520 --> 00:25:52,720 561 00:25:52,720 --> 00:25:58,112 AJAY: Úgyhogy ellenőrizni a végén Először is, annak meghatározására, hogy there's-- 562 00:25:58,112 --> 00:26:02,048 [Nevetés és taps] 563 00:26:02,048 --> 00:26:04,451 564 00:26:04,451 --> 00:26:05,492 DAVID MALAN: Tessék. 565 00:26:05,492 --> 00:26:17,080 566 00:26:17,080 --> 00:26:21,700 Vessünk egy pillantást egy A Ajay elődei, 567 00:26:21,700 --> 00:26:25,450 Sean, aki nem volt olyan szerencsés. 568 00:26:25,450 --> 00:26:28,670 OK, így a feladat itt, Sean, a következő. 569 00:26:28,670 --> 00:26:32,970 Én rejtett mögött ajtók száma hét, 570 00:26:32,970 --> 00:26:37,200 de élj néhány ilyen ajtók illetve egyéb nem-negatív számok. 571 00:26:37,200 --> 00:26:40,730 És a cél az, hogy gondolni ezt felső sorban a számok csak egy tömb. 572 00:26:40,730 --> 00:26:43,590 Mi csak a sorozat darab papírra számok mögött. 573 00:26:43,590 --> 00:26:47,640 És a cél az, csak a felső tömb itt, találja meg a hetes szám. 574 00:26:47,640 --> 00:26:51,200 És mi majd lesz kritika hogyan kezdjen csinálja. 575 00:26:51,200 --> 00:26:52,920 Keressen meg minket a hetes szám, kérem. 576 00:26:52,920 --> 00:27:02,570 577 00:27:02,570 --> 00:27:03,070 Nr. 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 Ez nem egy trükkös kérdés. 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 Ezen a ponton a pontszám nem nagyon jó, így akár meg is tartani fog. 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 Menj tovább. 590 00:27:39,802 --> 00:27:42,510 Őszintén szólva, nem tudok segíteni, de csoda mire is gondolt. 591 00:27:42,510 --> 00:27:44,990 >> SEAN: tudom elvenni csak a legfelső sorban. 592 00:27:44,990 --> 00:27:46,240 DAVID MALAN: Csak a felső sorban. 593 00:27:46,240 --> 00:27:47,281 Szóval van három maradt. 594 00:27:47,281 --> 00:27:48,310 Így találja meg 7. 595 00:27:48,310 --> 00:27:54,758 596 00:27:54,758 --> 00:27:59,141 >> [Közönség kiáltások JAVASLATOK] 597 00:27:59,141 --> 00:28:22,210 598 00:28:22,210 --> 00:28:26,130 Tehát mind a két volt csodálatos nagyon különböző okok miatt. 599 00:28:26,130 --> 00:28:29,150 Szóval, ez az, ahol abbahagyta az imént, 600 00:28:29,150 --> 00:28:32,530 és a kulcs betekintést itt volt, ezek az ajtók voltak számok 601 00:28:32,530 --> 00:28:37,390 mögöttük, amelyeket rendezett, az ideális elvihető, amelyek, hogy meg tudná csinálni 602 00:28:37,390 --> 00:28:39,670 alapvetően jobb ez a második example-- 603 00:28:39,670 --> 00:28:42,380 és valóban, ez volt Sean első próbálkozás a véletlen számok 604 00:28:42,380 --> 00:28:45,460 ugyanolyan before-- de amint mivel ezek a számok sorrendje, 605 00:28:45,460 --> 00:28:47,980 ugyanúgy, mint a telefonkönyv, mit tudsz nyilvánvalóan nem? 606 00:28:47,980 --> 00:28:50,090 Vagy hogyan lehet kihasználni ezt a tudást? 607 00:28:50,090 --> 00:28:51,530 Igen. 608 00:28:51,530 --> 00:28:54,910 >> Közönség: Menj félúton [nem hallható]. 609 00:28:54,910 --> 00:28:55,660 DAVID MALAN: Igen. 610 00:28:55,660 --> 00:28:56,160 Pontosan. 611 00:28:56,160 --> 00:28:59,680 Tehát Ajay legelső meglátása volt hogy ellenőrizze a végén, ha jól emlékszem, 612 00:28:59,680 --> 00:29:02,320 és akkor valami kész A példa gyorsan. 613 00:29:02,320 --> 00:29:05,220 De ha elkezdtük csinálni ezt többet módszeresen Ezen a vonalon 614 00:29:05,220 --> 00:29:07,860 de talán a kiindulási középen, mert ők sorrendje, 615 00:29:07,860 --> 00:29:10,900 amint felfedi a szám 16, ezért azt tudom-- 616 00:29:10,900 --> 00:29:14,850 és tegyük pontosan hogy-- mi ezért tudják, hogy 50, a mai eset, 617 00:29:14,850 --> 00:29:16,080 van, hogy az a jobb. 618 00:29:16,080 --> 00:29:18,735 Tehát csak mint hét nulla, ha mi tépte a telefonkönyv fél 619 00:29:18,735 --> 00:29:21,490 és dobta a fele probléma van, ugyanaz a gondolat itt. 620 00:29:21,490 --> 00:29:23,680 Tudjuk dobni a másikon A probléma el. 621 00:29:23,680 --> 00:29:25,730 És talán, amit talán nem algoritmikusan, 622 00:29:25,730 --> 00:29:28,710 ha tudod, hogy 50 legyen jobbra, ha ez bárhol, 623 00:29:28,710 --> 00:29:31,390 , megpróbál ott, a közepén a fennmaradó ajtók. 624 00:29:31,390 --> 00:29:33,450 Természetesen magasabb 50 mint 42, így tudjuk 625 00:29:33,450 --> 00:29:36,060 dobja ezt a többi negyedévében a probléma el, 626 00:29:36,060 --> 00:29:38,510 és végül, azonosítani valami hasonló 50. 627 00:29:38,510 --> 00:29:41,050 De, mint a telefonkönyv, ezeket a számokat 628 00:29:41,050 --> 00:29:44,560 kaptak, hogy nekünk már rendezett sorrendben, ami hagy minket 629 00:29:44,560 --> 00:29:47,450 A kérdés, hogyan kap dolgokat rendezett sorrendben? 630 00:29:47,450 --> 00:29:49,640 És, őszintén szólva, milyen áron? 631 00:29:49,640 --> 00:29:51,390 Ez az egyik dolog, hogy átadta a telefonkönyv 632 00:29:51,390 --> 00:29:54,810 majd lenyűgözni a barátok találva Telefonszám nagyon gyorsan, nem igaz? 633 00:29:54,810 --> 00:29:58,520 Könnyezés 32 oldal, hogy megtalálja a személy a 4 milliárd oldalt, 634 00:29:58,520 --> 00:30:00,470 azt mondta, volt egy extrém példa. 635 00:30:00,470 --> 00:30:03,320 De mennyi idő telt el Verizon rendezni, hogy a telefonkönyv? 636 00:30:03,320 --> 00:30:06,170 Mennyi idő telt el minket rendezni a hét számot? 637 00:30:06,170 --> 00:30:10,110 Ez a kérdés, hogy mi már eddig teljesen figyelmen kívül hagyja. 638 00:30:10,110 --> 00:30:12,330 >> Úgyhogy erre a kérdésre válaszolni most. 639 00:30:12,330 --> 00:30:15,920 És kifogytunk a film most, de van egy kis stressz labda. 640 00:30:15,920 --> 00:30:19,480 Ha, mondjuk, nyolc önkéntesek nem bánnám, csatlakozik hozzánk itt? 641 00:30:19,480 --> 00:30:24,100 Menjünk előre, és igen, mi a helyzet a négyen, három te itt? 642 00:30:24,100 --> 00:30:25,290 Kap néhány új arc. 643 00:30:25,290 --> 00:30:27,220 És négyen ott? 644 00:30:27,220 --> 00:30:30,760 És now-- ne elfogultság itt-- és szám nyolc itt a vég. 645 00:30:30,760 --> 00:30:32,060 Gyere fel. 646 00:30:32,060 --> 00:30:32,560 Rendben. 647 00:30:32,560 --> 00:30:37,480 Szóval mi van itt mindannyian egy szám. 648 00:30:37,480 --> 00:30:40,055 Ha azt szeretné, hogy menjen előre, hogy ez a szám. 649 00:30:40,055 --> 00:30:40,763 Mi a neve? 650 00:30:40,763 --> 00:30:41,950 >> Artie: Artie. 651 00:30:41,950 --> 00:30:43,100 >> DAVID MALAN: Artie, oké. 652 00:30:43,100 --> 00:30:44,297 Te vagy az 1. 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 Te vagy 2-es szám. 657 00:30:47,530 --> 00:30:49,100 És megy előre, ahogy én viszont Ön a papírlap, 658 00:30:49,100 --> 00:30:52,130 sorban magatokat előtte a zene áll az ugyanabban a sorrendben, mint ott. 659 00:30:52,130 --> 00:30:52,660 >> Andy: Szia, Andy. 660 00:30:52,660 --> 00:30:53,970 >> DAVID MALAN: Andy, örülök, hogy látlak. 661 00:30:53,970 --> 00:30:54,520 3. szám. 662 00:30:54,520 --> 00:30:55,310 >> JACOB: Jacob. 663 00:30:55,310 --> 00:30:56,760 >> DAVID MALAN: Jacob, 4-es számú. 664 00:30:56,760 --> 00:30:57,549 Üdvözöljük a fedélzeten. 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 5. szám. 668 00:31:00,348 --> 00:31:01,200 >> Alanna: Alanna. 669 00:31:01,200 --> 00:31:02,766 >> DAVID MALAN: Alanna, 6-os szám. 670 00:31:02,766 --> 00:31:03,589 >> Frances: Frances. 671 00:31:03,589 --> 00:31:04,880 DAVID MALAN: Frances, 7-es számú. 672 00:31:04,880 --> 00:31:05,200 És? 673 00:31:05,200 --> 00:31:05,830 >> Rachel: Rachel. 674 00:31:05,830 --> 00:31:06,815 >> DAVID MALAN: Rachel, 8-as számú. 675 00:31:06,815 --> 00:31:07,100 Rendben. 676 00:31:07,100 --> 00:31:08,766 Menj előre, és magad ebben a sorrendben. 677 00:31:08,766 --> 00:31:11,440 Hadd tegye egyetlen megmaradt zeneállvány a helyén. 678 00:31:11,440 --> 00:31:13,670 Hol van egy állvány? 679 00:31:13,670 --> 00:31:14,170 OK. 680 00:31:14,170 --> 00:31:18,710 Menj előre, és csak tedd a számokat ahol a közönség láthatja őket, 681 00:31:18,710 --> 00:31:20,340 a zene áll kifelé. 682 00:31:20,340 --> 00:31:27,240 És remélhetőleg, az első józanság ellenőrzés itt-- 4, 2, 6. 683 00:31:27,240 --> 00:31:27,890 Oh-oh. 684 00:31:27,890 --> 00:31:29,070 Várj egy percet. 685 00:31:29,070 --> 00:31:31,140 Jelenleg nincs egy 8. 686 00:31:31,140 --> 00:31:35,180 Azt kell, hogy kilakoltatására Önt A példa valahogy. 687 00:31:35,180 --> 00:31:35,680 Nr. 688 00:31:35,680 --> 00:31:36,940 Nem, semmi gond. 689 00:31:36,940 --> 00:31:37,890 Lássuk. 690 00:31:37,890 --> 00:31:38,880 Meg tudjuk csinálni ezt. 691 00:31:38,880 --> 00:31:39,440 Készenlét. 692 00:31:39,440 --> 00:31:43,970 693 00:31:43,970 --> 00:31:45,740 Ott vagyunk. 694 00:31:45,740 --> 00:31:46,800 Helyes. 695 00:31:46,800 --> 00:31:47,360 Rendben. 696 00:31:47,360 --> 00:31:50,260 Szóval, most már 8, 1, 3-7, 5. 697 00:31:50,260 --> 00:31:50,760 OK. 698 00:31:50,760 --> 00:31:51,360 Kiváló. 699 00:31:51,360 --> 00:31:54,400 >> Tehát a kérdés kéznél van, a milyen költség, és keresztül milyen módszerrel, 700 00:31:54,400 --> 00:31:58,580 tudjuk valójában rendezni ezeket a számokat ide hogy mi lehet a fajta munka hátra, 701 00:31:58,580 --> 00:32:02,759 végül, és decide-- ez tényleg Lenyűgöző, hogy valóban hatékony, 702 00:32:02,759 --> 00:32:04,550 hogy tudok osztani és meghódítani a telefonkönyv? 703 00:32:04,550 --> 00:32:06,716 Ez tényleg hatékony, hogy Tudok megosztani, és uralkodni 704 00:32:06,716 --> 00:32:08,600 ezeket a digitális darabok A papírt a fedélzeten 705 00:32:08,600 --> 00:32:14,500 ha talán fog kerülni nekünk szerencse az idő vagy energia vagy a CPU-t 706 00:32:14,500 --> 00:32:17,340 hogy valóban kap adataink a néhány rendezett sorrendben? 707 00:32:17,340 --> 00:32:18,930 Szóval fel ezt a kérdést. 708 00:32:18,930 --> 00:32:22,077 >> Tehát először le, ezek a számok nagyjából véletlenszerű sorrendben, 709 00:32:22,077 --> 00:32:24,160 és én fogom javasolni egy algoritmus, vagy folyamat 710 00:32:24,160 --> 00:32:25,970 amellyel meg tudjuk rendezni ezeket az embereket. 711 00:32:25,970 --> 00:32:28,100 Megyek megközelíteni ez nagyon naivan. 712 00:32:28,100 --> 00:32:30,730 És én fogom felismerni hogy ez a fajta sokat nekem 713 00:32:30,730 --> 00:32:32,890 betakar eszembe körül teljes adatállomány egyszerre. 714 00:32:32,890 --> 00:32:33,640 De tudod mit? 715 00:32:33,640 --> 00:32:37,450 Megyek, hogy néhány nagyon egyszerű marginális javítások. 716 00:32:37,450 --> 00:32:41,152 4 és 2 elromlott, ha a cél az, hogy megy 1 8. 717 00:32:41,152 --> 00:32:41,860 Tudod mit? 718 00:32:41,860 --> 00:32:43,776 Megyek, hogy itt srácok cserélni, ha váltani 719 00:32:43,776 --> 00:32:46,380 fizikailag álláspontok és a darab papír. 720 00:32:46,380 --> 00:32:47,894 Most a 4. és a 6., ezek sorrendben. 721 00:32:47,894 --> 00:32:49,060 Fogom hagyni azokat is. 722 00:32:49,060 --> 00:32:50,227 6. és 8, azok érdekében. 723 00:32:50,227 --> 00:32:51,185 Elhagyja őket is. 724 00:32:51,185 --> 00:32:52,170 8. and1, elromlott. 725 00:32:52,170 --> 00:32:54,790 Ha két nem bánja csere. 726 00:32:54,790 --> 00:32:57,300 Most 8 és 3, ha ti is cserélni. 727 00:32:57,300 --> 00:32:59,320 8 és 7, ha ti is cserélni. 728 00:32:59,320 --> 00:33:01,790 8 és 5, ha ti is cserélni. 729 00:33:01,790 --> 00:33:03,980 >> Most vagyok kész? 730 00:33:03,980 --> 00:33:05,200 Nem, természetesen nem. 731 00:33:05,200 --> 00:33:07,880 De tettem a helyzet jobb, ugye? 732 00:33:07,880 --> 00:33:09,430 Mi volt a neve, a 8? 733 00:33:09,430 --> 00:33:10,055 >> Rachel: Rachel. 734 00:33:10,055 --> 00:33:12,850 DAVID MALAN: Szóval Rachel hatékonyan bugyborékolt fel elég messzire, 735 00:33:12,850 --> 00:33:15,660 egészen a végéig a sor a számok itt. 736 00:33:15,660 --> 00:33:17,310 És hogy a probléma ilyen megoldott. 737 00:33:17,310 --> 00:33:21,670 Nos, nyilvánvalóan, 2 még mindig szükség van mozogni egy kicsit, és a 4. és a 6. és 1.. 738 00:33:21,670 --> 00:33:24,420 De úgy tűnik, hogy ütött a kicsit közelebb a megoldáshoz. 739 00:33:24,420 --> 00:33:26,790 Szóval ezt azonos naiv heurisztikus újra. 740 00:33:26,790 --> 00:33:27,690 A 2. és a 4., OK. 741 00:33:27,690 --> 00:33:28,810 4 és 6, OK. 742 00:33:28,810 --> 00:33:29,930 6 és 1, mm-mm. 743 00:33:29,930 --> 00:33:32,230 Nézzük csere. 744 00:33:32,230 --> 00:33:33,200 6 és 3 mm-mm. 745 00:33:33,200 --> 00:33:34,420 Nézzük csere. 746 00:33:34,420 --> 00:33:35,580 A 6. és 7. rendben van. 747 00:33:35,580 --> 00:33:36,590 7 és 5, dehogy. 748 00:33:36,590 --> 00:33:37,790 Nézzük csere. 749 00:33:37,790 --> 00:33:38,470 És most a 7. és 8.. 750 00:33:38,470 --> 00:33:39,862 És mi a neved? 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 Tehát most Frances van még egy jobb helyzet, mert most a 7. és a 8. 754 00:33:44,230 --> 00:33:46,440 helyesen bugyborékolt fel a csúcsra. 755 00:33:46,440 --> 00:33:47,510 Tehát a 2. és a 4., OK. 756 00:33:47,510 --> 00:33:48,720 4 és 1, hadd csere. 757 00:33:48,720 --> 00:33:50,410 4 és 3, hadd csere. 758 00:33:50,410 --> 00:33:51,550 4. és a 6., akkor rendben. 759 00:33:51,550 --> 00:33:53,340 6. és 5. Nézzük csere. 760 00:33:53,340 --> 00:33:54,590 És most ezek a srácok jó. 761 00:33:54,590 --> 00:33:55,780 Már majdnem ott vagyunk. 762 00:33:55,780 --> 00:33:57,706 2 és 1, elromlott, így cserélni. 763 00:33:57,706 --> 00:33:59,080 És most hadd tegye a józanság csekket. 764 00:33:59,080 --> 00:34:03,080 A 2. és 3, 3 és 4, 4 és 5, 5 és 6, 6 és 7, 8. 765 00:34:03,080 --> 00:34:05,060 OK, így végeztünk. 766 00:34:05,060 --> 00:34:09,310 >> De milyen áron tettem rendezni ezeket a számokat itt? 767 00:34:09,310 --> 00:34:13,960 Nos, hány lépést tettem potenciálisan hogy a rendezés során ezeket az embereket? 768 00:34:13,960 --> 00:34:15,710 Nos, akkor jöjjön vissza erre a kérdésre. 769 00:34:15,710 --> 00:34:18,030 De őszintén szólva, ha van egy kis unott, az 770 00:34:18,030 --> 00:34:22,270 felfedve az a fajta, hogy ez nem talán a leghatékonyabb algoritmus. 771 00:34:22,270 --> 00:34:25,230 És valóban, őszintén szólva, én izzadok annál is inkább, séta oda-vissza. 772 00:34:25,230 --> 00:34:26,639 Ez nem érzi különösen hatékony. 773 00:34:26,639 --> 00:34:27,805 Szóval próbálj ki valami mást. 774 00:34:27,805 --> 00:34:31,870 Ha ti is vissza magatoknak, hogy a nyolc értékeket. 775 00:34:31,870 --> 00:34:32,969 Jó munkát. 776 00:34:32,969 --> 00:34:36,570 >> Vessünk egy pillantást digitálisan, mindössze egy pillanatra, mielőtt próbáljunk meg valami mást, 777 00:34:36,570 --> 00:34:38,179 hogy mi történt. 778 00:34:38,179 --> 00:34:41,330 Fel itt, te arról, hogy a megjelenítés a nyolc emberre 779 00:34:41,330 --> 00:34:44,719 amelynek kék és piros sávok számát. 780 00:34:44,719 --> 00:34:46,670 A magasabb az oszlop, Minél nagyobb a szám. 781 00:34:46,670 --> 00:34:48,510 Minél rövidebb az oszlop, Minél kisebb a szám. 782 00:34:48,510 --> 00:34:51,560 És mit fogsz látni, hogy a véletlen sorrendben több mint nyolc. 783 00:34:51,560 --> 00:34:55,830 Meg fogod látni ezeket a bar egyre rendezve ugyanazon algoritmus, 784 00:34:55,830 --> 00:34:59,890 vagy állítsa utasítások, amelyek hívjuk ezentúl buborék sort. 785 00:34:59,890 --> 00:35:04,000 Tehát észre, minden második, vagy úgy, két rudak megvilágította piros, 786 00:35:04,000 --> 00:35:05,590 összehasonlított a számítógép. 787 00:35:05,590 --> 00:35:08,630 És ha a nagy bár és a kis bár ki annak érdekében, 788 00:35:08,630 --> 00:35:11,220 ők is cserélték nekem. 789 00:35:11,220 --> 00:35:15,120 >> Most ez hihetetlenül unalmas nézni ezt, természetesen, 790 00:35:15,120 --> 00:35:18,630 nagyon hosszú, de észre az takeaway-- nagy rúd mozog jobbra, 791 00:35:18,630 --> 00:35:20,460 kis bárok mozog balra. 792 00:35:20,460 --> 00:35:23,380 Nézzük megszakítja a folyamatot és ezt felgyorsíthatja 793 00:35:23,380 --> 00:35:27,330 sokkal gyorsabb lesz, így mi is kap a magas szintű értelemben, hogy mit, 794 00:35:27,330 --> 00:35:29,970 Valóban, buborék sort csinál. 795 00:35:29,970 --> 00:35:33,150 Sőt, ez bugyogott fel a jobb oldali listán, 796 00:35:33,150 --> 00:35:35,260 vagy a tömb, a nagyobb bárok. 797 00:35:35,260 --> 00:35:40,020 És fordítva, a kis rudak fortyogó útjukat lefelé balra, 798 00:35:40,020 --> 00:35:42,950 bár gyorsabb ütemben mint azt korábban tette. 799 00:35:42,950 --> 00:35:45,850 Így nehezebb látni az emberek, de vizuálisan ez valóban mit 800 00:35:45,850 --> 00:35:46,540 történik. 801 00:35:46,540 --> 00:35:49,110 >> De próbáljuk alapvetően más megközelítést most. 802 00:35:49,110 --> 00:35:52,387 Próbáljuk meg egy másik algoritmus, ahol van, hogy 803 00:35:52,387 --> 00:35:59,640 srácok kezdeni ezen eredeti pozíciókat, ami ebben a sorrendben itt. 804 00:35:59,640 --> 00:36:00,827 És menjünk előre most. 805 00:36:00,827 --> 00:36:02,910 És én fogom csinálni valamit még egyszerűbb, nem igaz? 806 00:36:02,910 --> 00:36:06,710 Visszatekintve, csere páronként újra és újra, szinte egy kis ügyes. 807 00:36:06,710 --> 00:36:10,460 Nézzük a dolgok még naivan, ahol, ha azt akarom, hogy rendezni ezeket az embereket, 808 00:36:10,460 --> 00:36:12,560 hadd keresd a legkisebb elem. 809 00:36:12,560 --> 00:36:14,570 Tehát most, 4 a legkisebb szám, amit láttam. 810 00:36:14,570 --> 00:36:15,695 Fogom elfelejteni, hogy. 811 00:36:15,695 --> 00:36:17,750 No, 2 jobb, és ne feledje, hogy. 812 00:36:17,750 --> 00:36:20,730 1 még kisebb. 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 Az egyet mi is a neved? 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 Szóval, Artie, megy előre. 819 00:36:25,460 --> 00:36:27,043 Megyek, hogy húzza meg a sorból. 820 00:36:27,043 --> 00:36:28,400 Ha lehetne gyere vissza. 821 00:36:28,400 --> 00:36:30,790 És azt kell, hogy helyet adjon neki. 822 00:36:30,790 --> 00:36:32,040 Van egy döntési pont itt. 823 00:36:32,040 --> 00:36:36,000 Hogyan lehet, hogy mi legyen hely az Artie itt az elején, ahol 1-es szám tartozik? 824 00:36:36,000 --> 00:36:36,770 >> Közönség: Shift. 825 00:36:36,770 --> 00:36:38,950 >> DAVID MALAN: OK, akkor is elmozdulhatnak mindenki. 826 00:36:38,950 --> 00:36:40,860 De javaslatot optimalizálás. 827 00:36:40,860 --> 00:36:43,410 Hogy úgy érzi, egy kicsit bosszantó számomra, hogy kérje négy ember 828 00:36:43,410 --> 00:36:44,620 mozgatni egészen. 829 00:36:44,620 --> 00:36:45,520 Mi mást tehettem volna? 830 00:36:45,520 --> 00:36:46,360 >> Közönség: váltani őket. 831 00:36:46,360 --> 00:36:46,850 >> DAVID MALAN: váltani őket. 832 00:36:46,850 --> 00:36:47,900 És mi a neved? 833 00:36:47,900 --> 00:36:48,441 >> JACOB: Jacob. 834 00:36:48,441 --> 00:36:50,330 DAVID MALAN: Jacob, mozogni. 835 00:36:50,330 --> 00:36:54,440 Sokkal hatékonyabb, csak hogy Jacob csere helyek Artie, 836 00:36:54,440 --> 00:36:56,710 szemben kényszerítve mind a négy emberek, 837 00:36:56,710 --> 00:36:58,734 köszönöm szépen, hogy pontos helyét. 838 00:36:58,734 --> 00:37:01,150 Mi a szép a Artie most, ő az ő helyére. 839 00:37:01,150 --> 00:37:02,060 Csináljuk újra. 840 00:37:02,060 --> 00:37:03,730 2, ez a legkevesebb, amit láttam. 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. határozottan a legkisebb. 844 00:37:07,467 --> 00:37:08,550 Nem kell, hogy csináljanak valamit. 845 00:37:08,550 --> 00:37:09,320 Csináljuk újra. 846 00:37:09,320 --> 00:37:10,070 6. 847 00:37:10,070 --> 00:37:10,640 Legkisebb? 848 00:37:10,640 --> 00:37:11,140 8. 849 00:37:11,140 --> 00:37:11,590 Dehogy. 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 Hadd emlékszem 4. 853 00:37:13,420 --> 00:37:13,950 3. 854 00:37:13,950 --> 00:37:15,110 Hadd emlékszem 3. 855 00:37:15,110 --> 00:37:16,080 7, 5. 856 00:37:16,080 --> 00:37:18,490 Legkisebb számot én már látható ez bérlet 3. 857 00:37:18,490 --> 00:37:20,340 Ha azt gyere ki. 858 00:37:20,340 --> 00:37:21,986 Hová megyünk, hogy van? 859 00:37:21,986 --> 00:37:22,860 És mi a neved? 860 00:37:22,860 --> 00:37:23,530 >> Alanna: Alanna. 861 00:37:23,530 --> 00:37:25,780 >> DAVID MALAN: Alanna vagyunk lesz, hogy kilakoltatására Önt. 862 00:37:25,780 --> 00:37:28,670 De ez a hatékonyabb, csak csere két ember, 863 00:37:28,670 --> 00:37:31,850 mint, hogy több ember valójában kikerüljék át. 864 00:37:31,850 --> 00:37:32,850 Most ezt újra. 865 00:37:32,850 --> 00:37:34,980 Megyek válassza a 4, így gyere ki. 866 00:37:34,980 --> 00:37:36,540 És ki fog mozogni? 867 00:37:36,540 --> 00:37:37,750 Number 8, természetesen. 868 00:37:37,750 --> 00:37:40,260 Ha most meg 5-ös szám, gyere ki. 869 00:37:40,260 --> 00:37:42,104 8-as szám fog kapni kilakoltatták újra. 870 00:37:42,104 --> 00:37:43,770 Én most megkeresem a 6 helyett. 871 00:37:43,770 --> 00:37:44,410 7. a helyén. 872 00:37:44,410 --> 00:37:45,080 8 a helyén. 873 00:37:45,080 --> 00:37:48,590 >> Amit most csináltunk most úgynevezett kiválasztás sort, 874 00:37:48,590 --> 00:37:52,560 és ha vizualizálni ezt, ez majd, hogy egy kicsit más. 875 00:37:52,560 --> 00:37:56,800 Menjünk előre, és ebből a menü itt, ez visualization-- 876 00:37:56,800 --> 00:38:02,920 változtassuk meg ezt hogy-- gyerünk, Firefox. 877 00:38:02,920 --> 00:38:07,610 Változtassuk meg ezt a fajta kiválasztás. 878 00:38:07,610 --> 00:38:11,830 És nézzünk felgyorsítani, mint korábban, és indítsa el a megjelenítés most. 879 00:38:11,830 --> 00:38:13,990 És ez algoritmusnak más hangulata van. 880 00:38:13,990 --> 00:38:16,480 Minden iteráció, őszintén szólva, ez még egyszerűbb. 881 00:38:16,480 --> 00:38:18,385 Én csak kiválasztja a legkisebb elem. 882 00:38:18,385 --> 00:38:21,510 Most őszintén, van egy kis szerencse, hogy idő, az, hogy a szuper-gyors rendezve. 883 00:38:21,510 --> 00:38:22,660 Az elemek a véletlen. 884 00:38:22,660 --> 00:38:25,520 Ez nem az, ahogy mi végül látni, alapvetően gyorsabb. 885 00:38:25,520 --> 00:38:29,400 De nézzük egy harmadik és utolsó megközelítés itt, hogy mi folyik itt. 886 00:38:29,400 --> 00:38:36,230 Szóval, menjünk előre, és állítsa vissza a srácok egyik utolsó alkalom, hogy ebben a sorrendben van. 887 00:38:36,230 --> 00:38:38,450 >> És most megyek egy kicsit okosabb, 888 00:38:38,450 --> 00:38:40,220 csak azért, hogy még kerekebb legyen a algoritmusokat. 889 00:38:40,220 --> 00:38:41,230 Fogom tenni. 890 00:38:41,230 --> 00:38:43,140 Megyek, hogy ne menjen oda-vissza annyira. 891 00:38:43,140 --> 00:38:44,900 Őszintén szólva, én vagyok fáradt mindezt mozgás. 892 00:38:44,900 --> 00:38:47,691 Én csak megy, hogy milyen vagyok adott elején a listán, 893 00:38:47,691 --> 00:38:49,460 és én fogom rendezni hogy akkor és ott. 894 00:38:49,460 --> 00:38:50,140 Tehát itt vagyunk. 895 00:38:50,140 --> 00:38:51,030 4. szám. 896 00:38:51,030 --> 00:38:53,680 Megyek illessze be 4. egy rendezett lista. 897 00:38:53,680 --> 00:38:54,180 Kész. 898 00:38:54,180 --> 00:38:58,300 Azt állítom, és most csak azért, hogy ezt a több világos, ez a része a lista. 899 00:38:58,300 --> 00:39:02,610 Ez egyfajta ostoba igény, de valóban 4 rendezve listája méretű egy. 900 00:39:02,610 --> 00:39:04,210 Most megyek, hogy a 2-es szám. 901 00:39:04,210 --> 00:39:07,670 2. szám Én most fog helyezze be a megfelelő helyre. 902 00:39:07,670 --> 00:39:08,680 Szóval, ha nem 2 tartozik? 903 00:39:08,680 --> 00:39:09,824 Nyilvánvaló, hogy itt van. 904 00:39:09,824 --> 00:39:11,490 Így megy előre, és menjen vissza, ha lehet. 905 00:39:11,490 --> 00:39:14,406 És miért nem mentek csak úgy a zenét áll veled ebben az időben. 906 00:39:14,406 --> 00:39:17,020 És ne erőszakosan helyezze te a lista elején. 907 00:39:17,020 --> 00:39:17,936 Így egy kicsit több munka. 908 00:39:17,936 --> 00:39:20,890 Kellett mozgatni Jacob körül, és mi a neve? 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 De legalább nem megy oda-vissza. 912 00:39:24,350 --> 00:39:25,739 Csak, hogy a dolgokat, ahogy megy. 913 00:39:25,739 --> 00:39:27,530 Csak helyezze őket a megfelelő helyen. 914 00:39:27,530 --> 00:39:29,220 6, ez valójában nagyon egyszerű. 915 00:39:29,220 --> 00:39:31,510 Nézzük helyezze te ott, ha Csak azt akartam, hogy álljon arrébb egy kicsit. 916 00:39:31,510 --> 00:39:32,870 Number 8, szintén nagyon egyszerű. 917 00:39:32,870 --> 00:39:33,741 Ott van. 918 00:39:33,741 --> 00:39:34,240 A fenébe. 919 00:39:34,240 --> 00:39:37,590 1-es szám nem tudjuk csak swap Amin itt, 920 00:39:37,590 --> 00:39:39,340 mert hogy fog elrontani a sorrendben. 921 00:39:39,340 --> 00:39:40,660 Így van, hogy egy kicsit okos. 922 00:39:40,660 --> 00:39:42,770 Szóval, Artie, ha lehetne másolatot egy pillanatra. 923 00:39:42,770 --> 00:39:46,550 Menjünk előre és sebességváltó most, ellentétben a korábbi algoritmusok, 924 00:39:46,550 --> 00:39:50,910 hogy helyet csináljon Artie itt az elején. 925 00:39:50,910 --> 00:39:54,690 Így a végén a nap, én vagyok ilyen amit én akartam kerülni előtt. 926 00:39:54,690 --> 00:39:57,770 És így én algoritmus fajta fordított, intellektuálisan, 927 00:39:57,770 --> 00:39:59,070 attól, ami eredetileg volt. 928 00:39:59,070 --> 00:40:01,240 Csak ezzel a változó egy másik ponton. 929 00:40:01,240 --> 00:40:02,291 Most vagyok 3. 930 00:40:02,291 --> 00:40:02,790 Ó, a francba. 931 00:40:02,790 --> 00:40:04,039 Van, hogy több munkát újra. 932 00:40:04,039 --> 00:40:05,060 Úgyhogy tolja ki. 933 00:40:05,060 --> 00:40:09,360 Térjünk 8, 6, 4-- oh oh-- és 3 fog menni ott. 934 00:40:09,360 --> 00:40:11,490 Így legalább némi megtakarítás ebben az időben. 935 00:40:11,490 --> 00:40:13,100 7, nem túl sok a tennivaló. 936 00:40:13,100 --> 00:40:15,370 Tehát, ha azt szeretnénk, hogy a pop hát, hadd helyezze meg. 937 00:40:15,370 --> 00:40:17,440 És végül, 5, ha akar pop vissza, mi 938 00:40:17,440 --> 00:40:22,610 kell váltani, te, te, míg öt a helyén van. 939 00:40:22,610 --> 00:40:25,670 >> Tehát most, hogy ez egy magas szintű grafikusan, 940 00:40:25,670 --> 00:40:31,080 csináljuk algoritmus vizualizáció még egyszer. 941 00:40:31,080 --> 00:40:33,580 Szóval ez a mi nevezni beillesztés sort. 942 00:40:33,580 --> 00:40:37,700 Majd futtatni ugyanolyan gyors, és indítsa el itt. 943 00:40:37,700 --> 00:40:39,580 És ez is, más a hangulata. 944 00:40:39,580 --> 00:40:42,180 Ez a fajta egyre jobb és jobb, de ez soha nem tökéletes 945 00:40:42,180 --> 00:40:44,630 amíg nem megy és sima az említett hiányosságok. 946 00:40:44,630 --> 00:40:47,860 Mert megint, én csak a vevő milyen Én kap balról jobbra. 947 00:40:47,860 --> 00:40:50,350 Szóval nem ilyen szerencsés hogy minden tökéletes volt. 948 00:40:50,350 --> 00:40:54,190 Ezért kellett ezeket a kis mispositions hogy meghatározott idővel. 949 00:40:54,190 --> 00:40:58,890 >> Tehát az összes ilyen algoritmusok úgy tűnik, hogy fut kissé eltérő ütemben. 950 00:40:58,890 --> 00:41:02,030 Sőt, ami mondasz, a legjobb vagy a leggyorsabb eddig? 951 00:41:02,030 --> 00:41:03,450 Bubble sort, az első? 952 00:41:03,450 --> 00:41:05,000 Selection sort, a második? 953 00:41:05,000 --> 00:41:08,450 Beillesztés sort, a harmadik? 954 00:41:08,450 --> 00:41:10,710 Hallom valami kiválasztás fajta. 955 00:41:10,710 --> 00:41:13,280 Más gondolatok? 956 00:41:13,280 --> 00:41:16,880 >> Így kiderül, hogy a az összes ilyen algoritmusok 957 00:41:16,880 --> 00:41:22,400 alapvetően ugyanolyan hatékony, mint a minden other--, vagy éppen ellenkezőleg, mint ahogy 958 00:41:22,400 --> 00:41:25,980 nem hatékony, mivel minden más, mert nem tehetünk alapvetően 959 00:41:25,980 --> 00:41:28,120 jobb, mint a három Ezen algoritmusok. 960 00:41:28,120 --> 00:41:29,990 És ez egy kicsit egy fehér hazugság is. 961 00:41:29,990 --> 00:41:32,580 amikor azt mondom, a hatékony vagy nem hatékony, 962 00:41:32,580 --> 00:41:35,040 ez legalább szuper nagy n. 963 00:41:35,040 --> 00:41:38,450 Amikor már csak nyolc ember van, vagy talán 50 vagy így bár a képernyőn, 964 00:41:38,450 --> 00:41:41,645 akkor feltétlenül észre különbséget ezek közül három algoritmus. 965 00:41:41,645 --> 00:41:44,020 De az N, az emberek száma, vagy a számok száma, 966 00:41:44,020 --> 00:41:46,350 vagy az embereknek a száma a telefonban könyv, vagy a számát weboldalak 967 00:41:46,350 --> 00:41:48,230 a Google adatbázisa egyre nagyobb és nagyobb, 968 00:41:48,230 --> 00:41:51,650 látni fogjuk, hogy e három algoritmusok valójában elég gyenge. 969 00:41:51,650 --> 00:41:54,060 És mi tehetünk alapvetően jobb, mint az. 970 00:41:54,060 --> 00:41:56,830 >> Vessünk egy pillantást, végül hogy mi ezeket az algoritmusokat esetleg 971 00:41:56,830 --> 00:41:59,520 úgy hangzik, mint a keretében néhány más 972 00:41:59,520 --> 00:42:03,550 valamint ennek útján megjelenítés itt 973 00:42:03,550 --> 00:42:06,860 hogy bevezet minket Számos algoritmus. 974 00:42:06,860 --> 00:42:10,330 Menjünk előre, és gratulálok a résztvevők itt, akik mind 975 00:42:10,330 --> 00:42:11,690 sorrendje maguk nagyon jól. 976 00:42:11,690 --> 00:42:15,124 Ha azt szeretné, hogy egy búcsú ajándékot. 977 00:42:15,124 --> 00:42:16,540 Tudod tartani a számokat is. 978 00:42:16,540 --> 00:42:19,460 979 00:42:19,460 --> 00:42:22,520 És mit fog látni, vagy inkább hallani, most, 980 00:42:22,520 --> 00:42:25,710 az, hogy mivel tesszük hangok minden egyes ilyen rudak 981 00:42:25,710 --> 00:42:28,660 majd társítását a szoftver, különböző frekvenciájú hang, 982 00:42:28,660 --> 00:42:33,970 akkor csomagolja az elméd még audioly körül, amit minden ilyen dolgok 983 00:42:33,970 --> 00:42:34,470 néz ki. 984 00:42:34,470 --> 00:42:39,325 Melyek közül az első az illesztési fajta 985 00:42:39,325 --> 00:42:44,275 >> [HANGOK] 986 00:42:44,275 --> 00:42:47,245 987 00:42:47,245 --> 00:42:49,720 >> Ez a buborék fajta. 988 00:42:49,720 --> 00:42:54,175 >> [HANGOK] 989 00:42:54,175 --> 00:43:17,250 990 00:43:17,250 --> 00:43:18,222 >> Selection sort. 991 00:43:18,222 --> 00:43:22,596 >> [HANGOK] 992 00:43:22,596 --> 00:43:33,570 993 00:43:33,570 --> 00:43:35,150 >> Úgynevezett merge sort. 994 00:43:35,150 --> 00:43:38,140 >> [HANGOK] 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 >> [HANGOK] 998 00:43:56,390 --> 00:44:08,240 999 00:44:08,240 --> 00:44:09,430 >> Ez az a CS50. 1000 00:44:09,430 --> 00:44:13,360 Látni fogjuk, hogy szerdán. 1001 00:44:13,360 --> 00:44:16,671 >> Narrátor: A Most, "Deep Gondolatok, "a Daven Farnham. 1002 00:44:16,671 --> 00:44:19,910 1003 00:44:19,910 --> 00:44:21,590 Miért ez a for ciklus? 1004 00:44:21,590 --> 00:44:23,200 Miért ne lehetne jobb? 1005 00:44:23,200 --> 00:44:25,970 Lennék öt hurok. 1006 00:44:25,970 --> 00:44:28,720 >> [Nevetés]