1 00:00:00,000 --> 00:00:10,982 2 00:00:10,982 --> 00:00:11,940 DAVID Malan: Dobro. 3 00:00:11,940 --> 00:00:16,470 Torej je to CS50, in to Zdaj začetek tritedenskega. 4 00:00:16,470 --> 00:00:19,960 >> Torej, do sedaj, ki smo jih je pisanje programov v C 5 00:00:19,960 --> 00:00:23,210 da poglej malo kaj takega tukaj. 6 00:00:23,210 --> 00:00:25,470 Torej imamo nekaj oster vključuje na vrhu. 7 00:00:25,470 --> 00:00:28,490 Imava int, glavni, ničen in potem je nekaj narediti v sredini, 8 00:00:28,490 --> 00:00:30,590 nekateri malo kode v notranjosti te funkcije. 9 00:00:30,590 --> 00:00:34,170 Vendar je ključ bil dejstvo, da smo bili rekoč ničen tukaj. 10 00:00:34,170 --> 00:00:39,320 Zato nična, vse to čas, določa, da ta program, ko teče, 11 00:00:39,320 --> 00:00:41,300 lahko delujejo samo preko njenega imena. 12 00:00:41,300 --> 00:00:46,330 Ne morete vnesti nobene druge besede ali številke po imenu programa, ko 13 00:00:46,330 --> 00:00:46,830 tekmovanje v teku. 14 00:00:46,830 --> 00:00:51,200 Tako, na primer, če bi program zbrati v datoteko imenovano zdravo, 15 00:00:51,200 --> 00:00:53,480 lahko narediš ./hello, ampak to je to. 16 00:00:53,480 --> 00:00:56,750 >> Edini način, da si lahko prispevati k temu programu 17 00:00:56,750 --> 00:00:57,960 je s klicem funkcije. 18 00:00:57,960 --> 00:00:59,790 Na primer, kakšno funkcijo smo bili z uporabo doslej 19 00:00:59,790 --> 00:01:00,950 dobiti prispevek od uporabnika? 20 00:01:00,950 --> 00:01:02,117 >> OBČINSTVO: Get niz. 21 00:01:02,117 --> 00:01:04,700 DAVID Malan: Da bi dobili niz, ali dobili int, ali si videl druge, 22 00:01:04,700 --> 00:01:07,630 tudi če jih niste še ni bila uporabljena, kot dobili dolgo, dolgo in podobno. 23 00:01:07,630 --> 00:01:09,380 Recimo, da smo dejansko želijo začeti 24 00:01:09,380 --> 00:01:12,760 pisanje programov, ki so malo bolj vsestranski, in, odkrito povedano, malo bolj 25 00:01:12,760 --> 00:01:15,090 kot ukaze, ki ste jih so dobili, upajmo, 26 00:01:15,090 --> 00:01:16,550 malo vajeni. 27 00:01:16,550 --> 00:01:18,560 Like cd vesoljske Dropbox. 28 00:01:18,560 --> 00:01:20,800 To, seveda, spremembe vaš imenik, ob predpostavki, 29 00:01:20,800 --> 00:01:23,590 ste v John Harvard domu imenik, na mapi Dropbox. 30 00:01:23,590 --> 00:01:27,380 Medtem, ukaz, kot je ta ustvari novo mapo z imenom pset2, 31 00:01:27,380 --> 00:01:30,290 kot ste morda že ali bo kmalu na problem nastaviti dva. 32 00:01:30,290 --> 00:01:33,970 Pozdravljeni, da, seveda, je ukaz ki gradi program, imenovan zdravo 33 00:01:33,970 --> 00:01:35,770 iz datoteke imenovano zdravo dot c. 34 00:01:35,770 --> 00:01:39,140 In v vsaki od njih primeri, zdaj smo imeli 35 00:01:39,140 --> 00:01:43,620 zagotoviti argument na tako imenovane ukazni vrstici, utripa hitro, 36 00:01:43,620 --> 00:01:48,540 tako da make ve, kaj graditi, in tako da mkdir ve, kaj mapo ustvariti, 37 00:01:48,540 --> 00:01:51,110 in da cd ve kamor želite iti. 38 00:01:51,110 --> 00:01:54,720 Ampak do sedaj, smo ostali pravijo da je glavna, vaš privzeti funkcija, 39 00:01:54,720 --> 00:01:58,500 ima neveljaven izraz znotraj teh oklepajih 40 00:01:58,500 --> 00:02:01,250 kar pomeni, da ne morejo sprejeti nobenih argumentov. 41 00:02:01,250 --> 00:02:03,240 >> Torej, od danes naprej, kaj bomo storili 42 00:02:03,240 --> 00:02:06,270 je, da bomo začeli podpiranje stvari, kot je to sploh. 43 00:02:06,270 --> 00:02:08,990 Dejstvo je, da v tem primeru, ki vas običajno ne ročno vnesti, 44 00:02:08,990 --> 00:02:11,130 Da je bil to za nas ne obstajajo 45 00:02:11,130 --> 00:02:15,840 enega, ampak ena, dva, tri dodatne strune po programu Imenovala 46 00:02:15,840 --> 00:02:16,850 Jek. 47 00:02:16,850 --> 00:02:18,240 Torej, kako bomo to dosegli? 48 00:02:18,240 --> 00:02:20,260 >> No, od danes naprej, v primerih, ko želimo 49 00:02:20,260 --> 00:02:22,855 da se zagotovi prispevek prek tako imenovani ukazni vrstici, 50 00:02:22,855 --> 00:02:24,980 bomo za začetek dodajanja tukaj, kaj je v yellow-- 51 00:02:24,980 --> 00:02:30,520 nadomešča praznino z int argc vejico niz argv oklepaj zaklepaj. 52 00:02:30,520 --> 00:02:32,520 Zdaj je to zanimivo za nekaj razlogov. 53 00:02:32,520 --> 00:02:35,690 Ena, da se dogaja, da nam pišete Programi, ki so malo bolj dinamično. 54 00:02:35,690 --> 00:02:37,570 Ampak, bolj očarljivo, da se bo odprlo 55 00:02:37,570 --> 00:02:40,340 Zdaj pogovor, da kaj nize lahko resnično 56 00:02:40,340 --> 00:02:43,300 se uporabljajo za tisto niz Res je pod pokrovom, 57 00:02:43,300 --> 00:02:47,320 do naslednjega tedna, ko smo začeli potapljati v še globlje, kako stroj 58 00:02:47,320 --> 00:02:48,590 kar vse te stvari dela. 59 00:02:48,590 --> 00:02:51,920 Ampak za zdaj, kaj je pripraviti, morda slika. 60 00:02:51,920 --> 00:02:54,950 >> Ko pišete program z glavno razglasila 61 00:02:54,950 --> 00:02:58,810 na ta način, tako da glavna traja dve trditvi, int 62 00:02:58,810 --> 00:03:03,233 in-- kakšna vrsta podatkov je drugi argument? 63 00:03:03,233 --> 00:03:04,529 >> OBČINSTVO: Array. 64 00:03:04,529 --> 00:03:05,320 DAVID Malan: Array. 65 00:03:05,320 --> 00:03:09,170 Tako je videti na prvi pogled, kot da je Niz, ampak obvestilo oglatem oklepaju. 66 00:03:09,170 --> 00:03:12,760 Spomnimo, zadnji čas smo uvedli Pojem matrike. 67 00:03:12,760 --> 00:03:16,210 In nizi uporabite oglate oklepaje V nekaj kontekstih. 68 00:03:16,210 --> 00:03:19,160 Morda ste uporabili kvadrat nosilci, ki gredo v array 69 00:03:19,160 --> 00:03:22,710 in dobili določen element, kot je nosilec 0 ali nosilec 1 ali nosilec 2. 70 00:03:22,710 --> 00:03:25,500 Vendar smo videli, če na kratko, prejšnji teden, da si tudi 71 00:03:25,500 --> 00:03:28,790 uporabo teh oklepajev do razglasi velikosti matrike, 72 00:03:28,790 --> 00:03:31,790 če veš vnaprej, koliko ints ali koliko strings ali karkoli 73 00:03:31,790 --> 00:03:32,630 dejansko želijo. 74 00:03:32,630 --> 00:03:34,790 Tako se izkaže, tam je tretja kontekst tukaj 75 00:03:34,790 --> 00:03:37,890 da nima več znotraj V oglatih oklepajih. 76 00:03:37,890 --> 00:03:41,920 Ko določite, kot sem že tukaj, ime nekaj podobnega argv, 77 00:03:41,920 --> 00:03:44,550 ki je samo fancy način rekoč argument vektor, ki 78 00:03:44,550 --> 00:03:47,750 je še en fancy način rekoč niz argumentov, 79 00:03:47,750 --> 00:03:50,870 oklepaj zaklepaj samo pomeni, da vam ni nujno 80 00:03:50,870 --> 00:03:52,960 vnaprej vedeti, kako velika Niz se bo, 81 00:03:52,960 --> 00:03:55,070 ampak veš, da se dogaja, da je matrika. 82 00:03:55,070 --> 00:03:57,320 Torej, če ne veste, številka ne dal noter, 83 00:03:57,320 --> 00:04:01,160 za oklepaj tesnem nosilec pomeni, da je argv ni niz, 84 00:04:01,160 --> 00:04:03,124 ampak niz nizov. 85 00:04:03,124 --> 00:04:05,040 Torej skladenjsko, če vas Spomnimo prejšnji teden, 86 00:04:05,040 --> 00:04:09,460 je zelo podobna pravi, nekaj podobnega int starosti oklepaj, 87 00:04:09,460 --> 00:04:10,984 in potem se je nekaj kasneje. 88 00:04:10,984 --> 00:04:12,150 Torej, kaj je tole? 89 00:04:12,150 --> 00:04:13,399 Poglejmo resnici narisati sliko. 90 00:04:13,399 --> 00:04:18,756 Torej, ko zaženete ta program z glavnimi ko dva argumenta opredeljena v notranjosti 91 00:04:18,756 --> 00:04:21,339 teh oklepajih, si v bistvu ima vsaj dve kose 92 00:04:21,339 --> 00:04:23,560 spomina izročil za vas pod pokrovom. 93 00:04:23,560 --> 00:04:26,550 Ena, saj bom črpa kot pravokotnika, se dogaja, da se imenuje argc. 94 00:04:26,550 --> 00:04:30,645 In kakor hitro Rekapitulacija, Kaj je podatkovni tip argc? 95 00:04:30,645 --> 00:04:31,270 Torej je int. 96 00:04:31,270 --> 00:04:33,480 Torej število se bo iti v argc-- zavojih 97 00:04:33,480 --> 00:04:35,660 , da stoji za število argumentov. 98 00:04:35,660 --> 00:04:38,887 Medtem Narisal sem argv kot niz. 99 00:04:38,887 --> 00:04:40,970 In jaz ne vem kako dolgo bo še, 100 00:04:40,970 --> 00:04:42,470 tako za današnje namene dot dot. 101 00:04:42,470 --> 00:04:43,636 Morda bi dobili neke dolžine. 102 00:04:43,636 --> 00:04:45,640 Vendar sem na sliki najmanj štiri pravokotnike. 103 00:04:45,640 --> 00:04:50,970 Torej argv kos pomnilnika, ki shranjuje NIZ niz dot dot, 104 00:04:50,970 --> 00:04:53,950 in argc je samo en kos spomin za celo število. 105 00:04:53,950 --> 00:04:55,710 >> Torej sedaj, bodimo malo bolj natančen. 106 00:04:55,710 --> 00:04:59,200 Če potem, ko imam strune v tem polju, imenovano 107 00:04:59,200 --> 00:05:03,290 argv, želim, da se na njih individualno, tako kot prejšnji teden, 108 00:05:03,290 --> 00:05:05,670 bomo uporabili zapis kot argv nosilec 0 109 00:05:05,670 --> 00:05:07,650 da bi dobili prva stvar niz. 110 00:05:07,650 --> 00:05:10,440 Argv bracket 1, da bi dobili Druga stvar, in tako naprej. 111 00:05:10,440 --> 00:05:14,597 Ključno pa smo še vedno 0 indexed-- smo še vedno šteje od 0. 112 00:05:14,597 --> 00:05:16,430 Torej, zdaj pa je pravzaprav dal nekaj na tem. 113 00:05:16,430 --> 00:05:21,670 Če bi bil, da pripravi program, imenovan Pozdravi iz datoteke imenovano zdravo dot c, 114 00:05:21,670 --> 00:05:24,340 in potem sem teči ta program s piko poševnica zdravo, 115 00:05:24,340 --> 00:05:28,380 kaj počne moj računalnik, svoj laptop, videti pod pokrovom 116 00:05:28,380 --> 00:05:31,300 trenutek, ko sem teči dot poševnica zdravo in pritisnite tipko Enter? 117 00:05:31,300 --> 00:05:33,500 No, to je morda kaj bi lahko opisali 118 00:05:33,500 --> 00:05:37,010 kot vsebine računalnika spomin, ali RAM-- Random Access Memory. 119 00:05:37,010 --> 00:05:40,330 Z drugimi besedami, računalnik, nekako zate čudežno, 120 00:05:40,330 --> 00:05:45,360 postavlja številko 1 v argc, AKA argcount, in ga postavi dobesedno niz 121 00:05:45,360 --> 00:05:48,200 ./hello v argv nosilec 0. 122 00:05:48,200 --> 00:05:51,750 Nimam pojma, odkrito povedano, kaj je v ARGV nosilec 1 ali 2 ali 3, 123 00:05:51,750 --> 00:05:55,550 ker če ima uporabnik ne natipkana karkoli poleg ./hello, 124 00:05:55,550 --> 00:05:58,550 bomo predpostavimo, da so ti so najverjetnejše vrednosti za smeti, 125 00:05:58,550 --> 00:05:59,700 tako rekoč. 126 00:05:59,700 --> 00:06:02,650 Te kose pomnilnika obstajajo, vendar to ni odvisno od nas, 127 00:06:02,650 --> 00:06:05,710 pogled na njih, ker argcount je le ena. 128 00:06:05,710 --> 00:06:07,870 >> Zdaj, medtem, če I napisati zagnati drug program, 129 00:06:07,870 --> 00:06:12,250 cd, ki je bolj pravilno ukaz, V vašem utripa prompt-- cd prostor 130 00:06:12,250 --> 00:06:17,200 Dropbox-- ko sem prost, da učinkovito, ko je program cd teči, argc, 131 00:06:17,200 --> 00:06:22,270 Notranjost spomin mojega računalnika, je za Najbolj najkrajše druga številka 2. 132 00:06:22,270 --> 00:06:25,936 In potem argv bracket o ima cd, argv nosilec 1 je Dropbox, 133 00:06:25,936 --> 00:06:28,560 in potem seveda ukaz dopolnjuje, tako da vse to spomin 134 00:06:28,560 --> 00:06:30,420 v bistvu gre proč in se uporablja za nekaj drugega. 135 00:06:30,420 --> 00:06:32,270 In zato pravim, samo delček sekunde. 136 00:06:32,270 --> 00:06:35,720 >> Medtem, če bomo mkdir pset2, slika videti skoraj enaka, 137 00:06:35,720 --> 00:06:37,900 vendar z različnimi nize znotraj argv. 138 00:06:37,900 --> 00:06:42,570 Če naredim Jek pomišljaj Pozdravite Pozdravljeni dot c, ista ideja. 139 00:06:42,570 --> 00:06:47,060 Več stvari se izpolni za argv in argc, seveda, je 4. 140 00:06:47,060 --> 00:06:49,150 Torej, z drugimi besedami, čeprav ta sklop 141 00:06:49,150 --> 00:06:52,950 lahko dot dot, nekaterih spremenljiva dolžina, tako rekoč, 142 00:06:52,950 --> 00:06:56,720 boste vedno vedeli, kje je bila konec njega je, ker argc se dogaja, da ti povem 143 00:06:56,720 --> 00:07:00,120 na kateri točki boste morali nehati gledaš elementov v argv. 144 00:07:00,120 --> 00:07:03,660 Si lahko ogledate le na štirih skupaj v tem primeru. 145 00:07:03,660 --> 00:07:06,600 >> Torej, kaj je sedaj si oglejte, morda preprost program. 146 00:07:06,600 --> 00:07:09,070 Tisti, ki samo pozdravi za nekoga, kot Zamyla. 147 00:07:09,070 --> 00:07:12,620 Torej trdim, da bom napisati program , v trenutku, prek katerega naj bi storil 148 00:07:12,620 --> 00:07:16,670 ./hello prostor Zamyla, in potem hočem moj program natisniti nekaj 149 00:07:16,670 --> 00:07:18,520 super-enostavno kot "Zdravo, Zamyla." 150 00:07:18,520 --> 00:07:20,100 Zdaj je v preteklosti smo uporabili getstring. 151 00:07:20,100 --> 00:07:22,850 Tako v preteklosti, tudi če ste novi v programiranje, 152 00:07:22,850 --> 00:07:27,180 verjetnost, da bi lahko zvrnila program, ki uporablja getstring 153 00:07:27,180 --> 00:07:29,390 in nato uporabi printf pozdraviti Zamyla. 154 00:07:29,390 --> 00:07:31,290 Ampak ne uporabljajte getstring tokrat. 155 00:07:31,290 --> 00:07:37,510 Dovolite mi, namesto da bi šel v Appliant in ne vključujejo standardno I O dot h. 156 00:07:37,510 --> 00:07:41,160 Dovolite mi, da tudi CS50 dot h. 157 00:07:41,160 --> 00:07:44,730 Zdaj int glavni, in zdaj sem Ne boš naredil void danes. 158 00:07:44,730 --> 00:07:51,200 Namesto tega bom naredil int argc niz argv oklepaj zaklepaj, 159 00:07:51,200 --> 00:07:52,640 ne določa več. 160 00:07:52,640 --> 00:07:54,644 In tukaj je moj tako imenovani storiti. 161 00:07:54,644 --> 00:07:57,560 Kaj bom storiti zdaj je, da sem naredili malo preskok vere, 162 00:07:57,560 --> 00:08:00,560 Jaz bom za domnevo, da je uporabnik bo pravilno uporabljati ta program, 163 00:08:00,560 --> 00:08:04,980 in bom enostavno na storiti printf Pozdravljeni,% Sn. 164 00:08:04,980 --> 00:08:06,630 Torej, nič novega ni. 165 00:08:06,630 --> 00:08:11,470 Ampak želim, da sedaj dajo karkoli beseda uporabnik vnese po imenu programa. 166 00:08:11,470 --> 00:08:16,970 Torej, če naredim ./hello prostor Zamyla, I želeli nekako programsko dostop 167 00:08:16,970 --> 00:08:20,870 citiram konec citata "Zamyla." zato sem Lahko greš v moj argument vektor, 168 00:08:20,870 --> 00:08:25,980 moj nabor nizov, in če je ukaz, Ponovno je bil ./hello prostor Zamyla, 169 00:08:25,980 --> 00:08:29,340 kaj več storiti hočem postaviti v argv tukaj? 170 00:08:29,340 --> 00:08:29,840 OBČINSTVO: 1. 171 00:08:29,840 --> 00:08:32,355 DAVID Malan: 1, ker bracket 0 izkaže, 172 00:08:32,355 --> 00:08:34,230 se bo ime programa, kot smo videli. 173 00:08:34,230 --> 00:08:37,789 Torej nosilec 1 je prva beseda da I, uporabnik, vnesli. 174 00:08:37,789 --> 00:08:39,559 Jaz grem naprej in rešiti to. 175 00:08:39,559 --> 00:08:42,830 Jaz grem v mojo mapo kjer sem dajo te datoteke. 176 00:08:42,830 --> 00:08:44,920 Bom naredil, da pozdravi 3. 177 00:08:44,920 --> 00:08:46,230 OK Comp IO stranke. 178 00:08:46,230 --> 00:08:51,380 ./hello Zamyla Enter. 179 00:08:51,380 --> 00:08:54,480 Kaj sem naredil narobe? 180 00:08:54,480 --> 00:08:57,270 Me je presenetila sam za trenutek tam. 181 00:08:57,270 --> 00:08:58,230 Kaj sem naredil narobe? 182 00:08:58,230 --> 00:08:59,220 >> OBČINSTVO: Name. 183 00:08:59,220 --> 00:09:01,767 >> DAVID Malan: datoteka je pravzaprav imenuje hello3.c. 184 00:09:01,767 --> 00:09:03,850 In sem to naredil samo za doslednost, ker smo 185 00:09:03,850 --> 00:09:06,550 imeli hello.c v mimo v spletni kodo. 186 00:09:06,550 --> 00:09:11,550 Torej, dajmo popraviti to ./hello bracket dash 3 Zamyla. 187 00:09:11,550 --> 00:09:12,370 Enter. 188 00:09:12,370 --> 00:09:14,030 In zdaj imamo zdravo, Zamyla. 189 00:09:14,030 --> 00:09:17,650 Medtem, lahko to spremenite v Rob je, ali res vsaka druga beseda. 190 00:09:17,650 --> 00:09:19,230 >> Ampak kaj menijo primera iz kota. 191 00:09:19,230 --> 00:09:24,360 Kaj lahko pričakujete, se bo zgodilo, če Ne tip sploh ime kogarkoli? 192 00:09:24,360 --> 00:09:25,270 >> OBČINSTVO: Napaka. 193 00:09:25,270 --> 00:09:27,300 >> DAVID Malan: napaka neke vrste, morda. 194 00:09:27,300 --> 00:09:28,200 Pa poglejmo. 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 Torej printf dejansko pa malo zaščitniški do nas 198 00:09:33,870 --> 00:09:38,131 tu, in dobesedno tiskanje odprte paren null, vendar še hujše stvari se lahko zgodi. 199 00:09:38,131 --> 00:09:40,130 In samo zato, da dokaže nekaj, kar je nujno 200 00:09:40,130 --> 00:09:42,800 ne bi smeli storiti, pojdimo v tukaj in začnite plazim okoli. 201 00:09:42,800 --> 00:09:43,300 Prav? 202 00:09:43,300 --> 00:09:46,410 Če vem, da je slika v Pomnilnik je v bistvu to, 203 00:09:46,410 --> 00:09:52,660 argv bracket 1 ima Zamyla, argv bracket 0 ima ./hello ali ./hello-3. 204 00:09:52,660 --> 00:09:55,400 Kaj je v oklepaju 2? 205 00:09:55,400 --> 00:09:58,210 Torej lahko jaz odgovorim vprašaj sam, kajne? 206 00:09:58,210 --> 00:10:00,460 Jaz lahko samo spremenite 1 do 2. 207 00:10:00,460 --> 00:10:07,270 Zdaj lahko prevedem zdravo 3, ./hello3 Naj povečate in pritisnite tipko Enter. 208 00:10:07,270 --> 00:10:08,270 Ops. 209 00:10:08,270 --> 00:10:10,660 Ne quote znamka. 210 00:10:10,660 --> 00:10:12,540 Zanimivo. 211 00:10:12,540 --> 00:10:15,530 Torej, to je nekako kul videti, kaj je notri. 212 00:10:15,530 --> 00:10:17,130 >> Torej, kaj je notri moj laptop? 213 00:10:17,130 --> 00:10:20,390 Naj ga shranite z držalom 3. 214 00:10:20,390 --> 00:10:25,190 Naredite hello3, ./hello-3. 215 00:10:25,190 --> 00:10:26,500 Radoveden. 216 00:10:26,500 --> 00:10:30,560 In zdaj pojdimo res bold-- 50. 217 00:10:30,560 --> 00:10:34,340 Tako, da je res globoko potapljanje v spomin mojega računalnika. 218 00:10:34,340 --> 00:10:35,930 50 indeksi v. 219 00:10:35,930 --> 00:10:41,950 Torej, da pozdravi 3 ./hello-3. 220 00:10:41,950 --> 00:10:42,680 Radoveden. 221 00:10:42,680 --> 00:10:44,660 Dobro, zdaj sem samo bo dobil nepremišljene. 222 00:10:44,660 --> 00:10:47,331 Pojdimo na 5.000. 223 00:10:47,331 --> 00:10:47,830 V redu. 224 00:10:47,830 --> 00:10:49,520 Torej naj prevedem. 225 00:10:49,520 --> 00:10:51,460 Naredite 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 Zdaj nekateri izmed vas, da bi lahko biti žarnica bo off. 229 00:10:59,250 --> 00:11:01,900 Koliko imate videla to sporočilo? 230 00:11:01,900 --> 00:11:03,440 OK. 231 00:11:03,440 --> 00:11:04,420 Torej, zakaj? 232 00:11:04,420 --> 00:11:07,250 >> Kvota si-- in tam je drugačna Stvari, ki lahko povzroči to, 233 00:11:07,250 --> 00:11:09,730 in jasno, da ste v dobri kompanija-- imamo jasno 234 00:11:09,730 --> 00:11:11,900 povzročil, kar se imenuje napaka segmentacija. 235 00:11:11,900 --> 00:11:15,890 In zgodbo za danes, sem so se dotaknile segment pomnilnika 236 00:11:15,890 --> 00:11:17,060 da mi ne bi bilo treba. 237 00:11:17,060 --> 00:11:19,970 Kjer je segment, pomeni le kos pomnilnika, ki je ne bi smel imeti. 238 00:11:19,970 --> 00:11:25,530 Sedaj računalnik zagotavlja, da če sem teči ./helloZamyla da se lahko dotaknem argv 239 00:11:25,530 --> 00:11:27,760 biti nosilec 0 in argv nosilec 1. 240 00:11:27,760 --> 00:11:32,730 Vendar argc je vrednost 2, kar pomeni, da sem le dovolim-- je nekako čast 241 00:11:32,730 --> 00:11:35,180 system-- na dotik bracket 0 in 1 nosilec. 242 00:11:35,180 --> 00:11:37,990 Če bi šli še dlje, tam je absolutno bo spomin tam. 243 00:11:37,990 --> 00:11:40,660 Moj RAM obstaja fizično v računalniku. 244 00:11:40,660 --> 00:11:42,080 A kdo ve, kaj je tam? 245 00:11:42,080 --> 00:11:44,450 Dejansko tečem mnogokratnik programi naenkrat. 246 00:11:44,450 --> 00:11:46,910 Morda bom imel seen-- če ne bi bilo tem na Appliant 247 00:11:46,910 --> 00:11:49,937 ampak na mojem Mac ali PC-- da imam videti vsebino e-pošte. 248 00:11:49,937 --> 00:11:52,270 Mogoče sem videl takojšen Sporočilo Pred kratkim sem poslal. 249 00:11:52,270 --> 00:11:55,390 Karkoli, da bi lahko dolgotrajen okrog v spomin 250 00:11:55,390 --> 00:11:59,180 bi bila lahko dostopate preko ta samovoljna square bracket zapis. 251 00:11:59,180 --> 00:12:02,850 Ali, še huje, morda imate našli enega od mojih gesel 252 00:12:02,850 --> 00:12:05,859 da sem pred kratkim vnesli, da Program je shranjen v pomnilniku, tako 253 00:12:05,859 --> 00:12:07,900 me avtentikacijo in potem pa nekako levo 254 00:12:07,900 --> 00:12:09,910 v RAM, dokler nisem nehal ta program. 255 00:12:09,910 --> 00:12:12,860 >> In res, to je eden od nevarnost in ena pooblastila 256 00:12:12,860 --> 00:12:15,980 uporabe jezika, kot je C. Imate neoviran dostop 257 00:12:15,980 --> 00:12:18,860 za celotno vsebino pomnilnika programa je, 258 00:12:18,860 --> 00:12:21,340 in kaj slabi fantje lahko še storiti v teh cases-- 259 00:12:21,340 --> 00:12:23,807 še posebej, ko smo dobite na spletni programiranje 260 00:12:23,807 --> 00:12:26,890 proti koncu semestra, se bomo preučiti to topic-- se suniti okrog, 261 00:12:26,890 --> 00:12:31,660 lahko, da je nekdo računalnika spomin in našli takšne stvari radovedne 262 00:12:31,660 --> 00:12:32,570 kot smo videli tam. 263 00:12:32,570 --> 00:12:36,900 Ali še celo slabše, gesel, ki se je ali ona lahko nato uporabite za delajo slabe stvari. 264 00:12:36,900 --> 00:12:40,240 >> Torej, očitno ti ne bi smel tega storiti, ker čudne stvari začnejo dogajati. 265 00:12:40,240 --> 00:12:42,310 Dejansko, to je program razpada. 266 00:12:42,310 --> 00:12:44,580 To bi bilo enakovredno Mac OS ali Windows 267 00:12:44,580 --> 00:12:46,770 okno programa samo izginjajo. 268 00:12:46,770 --> 00:12:48,300 Prišlo je do nepričakovane napake. 269 00:12:48,300 --> 00:12:50,840 V okolju, v ukazni vrstici bomo videli kaj takega. 270 00:12:50,840 --> 00:12:54,480 Toda zato se bom preprostim dotikom spomin, ki ne pripadajo meni. 271 00:12:54,480 --> 00:12:57,090 >> Torej, kaj je braniti pred a malo drugače 272 00:12:57,090 --> 00:12:59,010 ga je videti na tem programu tukaj. 273 00:12:59,010 --> 00:13:01,000 Torej, še enkrat, skeleton da smo videli earlier-- 274 00:13:01,000 --> 00:13:02,480 in sem opozoril na časovno int. 275 00:13:02,480 --> 00:13:05,900 In ves ta čas je bil glavni dejansko vrnil vrednost. 276 00:13:05,900 --> 00:13:09,120 Čeprav je v večini naših predavanju Primeri, ki smo jih nekoč uporabljali nikoli 277 00:13:09,120 --> 00:13:10,990 vrne ničesar glavni. 278 00:13:10,990 --> 00:13:13,710 Pravkar smo napisali printf blizu curly brace in to je to. 279 00:13:13,710 --> 00:13:16,500 Toda zastonj, kaj prevajalnik delal za vas, 280 00:13:16,500 --> 00:13:19,510 učinkovito, se vrača 0 za vas. 281 00:13:19,510 --> 00:13:22,950 Izkazalo out-- in to je malo counterintuitive-- da je 0 dobro. 282 00:13:22,950 --> 00:13:24,690 To ne pomeni napačne po sebi. 283 00:13:24,690 --> 00:13:29,080 0 je dobro, in vsak ne-0 vrednost, se je svet odločil, da 284 00:13:29,080 --> 00:13:30,619 lahko pomenilo napako. 285 00:13:30,619 --> 00:13:32,910 Torej, če ste kdaj zamočil nekaj, kar na vašem računalniku, 286 00:13:32,910 --> 00:13:36,600 ali je program, je umrl na vas in ste gotten nekaj napačno okno 287 00:13:36,600 --> 00:13:40,360 na zaslonu, češ napaka Negativni 49 ali napaka 23-- 288 00:13:40,360 --> 00:13:44,170 nekateri navidezno samovoljno value-- da je ker je programer težko kodirane- 289 00:13:44,170 --> 00:13:49,370 vrednost kot negativna ali pozitivna 49 23. da predstavlja poljubno število, si trditi, 290 00:13:49,370 --> 00:13:53,340 4 milijarde možnih stvari da bi lahko šlo narobe v programu. 291 00:13:53,340 --> 00:13:55,700 >> Torej, kako lahko vzamem Prednost tega sam? 292 00:13:55,700 --> 00:13:58,970 No, naj odprejo program da sem napisal vnaprej, 293 00:13:58,970 --> 00:14:01,450 in suniti okrog spletu imenuje Halo 4. 294 00:14:01,450 --> 00:14:05,650 In to je skoraj identična, razen da Njegova dobil malo napak preverjanje. 295 00:14:05,650 --> 00:14:09,660 V tem primeru, sem spet razglasila Glavni kot ob dva argumenta, 296 00:14:09,660 --> 00:14:13,180 vendar tokrat na liniji 17, obvestilo Delam malo preverjanje razumnosti. 297 00:14:13,180 --> 00:14:17,100 Sem kar prepričan, da argc enaka enaka 2. 298 00:14:17,100 --> 00:14:18,960 Ker če je, da pomeni, da sem lahko varno 299 00:14:18,960 --> 00:14:21,420 dotakniti ne le nosilec 0, temveč nosilec 1. 300 00:14:21,420 --> 00:14:24,330 In sem šel naprej in natisniti, V tem primeru, ali Zamyla Rob 301 00:14:24,330 --> 00:14:26,020 ali karkoli beseda sem tipkal ven. 302 00:14:26,020 --> 00:14:28,020 In sedaj, samo da dobijo malo bolj pravilno, 303 00:14:28,020 --> 00:14:31,910 Bom izrecno vrnitev 0, ki nakazuje, da je vse dobro. 304 00:14:31,910 --> 00:14:33,300 Nič slabega se je zgodilo. 305 00:14:33,300 --> 00:14:38,590 >> Ampak po dogovoru, grem na vrne 1, ali povedano katerokoli non-vrednost 0, 306 00:14:38,590 --> 00:14:40,160 če je kaj narobe. 307 00:14:40,160 --> 00:14:43,270 Zdaj se uporabnik ne bo res opazili, kaj se dogaja. 308 00:14:43,270 --> 00:14:50,410 Pravzaprav, če sem šel v ta imenik, smo povečate in ne predstavljajo pozdravi 4, 309 00:14:50,410 --> 00:14:54,210 ./hello-4 Zamyla obnaša kot pričakujem. 310 00:14:54,210 --> 00:14:58,570 Ampak, če bom namesto tega ne vnesete kaj, nič ne zdi, da se zgodi, 311 00:14:58,570 --> 00:14:59,680 vendar pa ne sesuje. 312 00:14:59,680 --> 00:15:04,660 In če sem namesto nekaj kot Rob je Proctor 313 00:15:04,660 --> 00:15:07,550 v Thayer-- delitev samovoljno informacije. 314 00:15:07,550 --> 00:15:13,680 Toda obvestilo, argv 1, 2, 3, 4, in 5, naj bi zdaj obstajala v spomin. 315 00:15:13,680 --> 00:15:16,540 Tudi to je, kaj ne moj program pričakuje, 316 00:15:16,540 --> 00:15:20,300 ker sem preverjala, ali argc enaka enak 2 ali ne. 317 00:15:20,300 --> 00:15:22,140 Torej sem zdaj branil proti temu. 318 00:15:22,140 --> 00:15:25,290 >> Zdaj, kot prahi, smo programmer-- oziroma smo users-- 319 00:15:25,290 --> 00:15:29,670 ni videti, da 0 ali 1, vendar z uporabo orodje, imenovano razhroščevalnik, ali druga orodja, 320 00:15:29,670 --> 00:15:32,250 kot bomo videli pred dolgo, programer 321 00:15:32,250 --> 00:15:36,590 lahko dejansko videli, kaj bi bilo narobe znotraj vašega programa. 322 00:15:36,590 --> 00:15:39,170 >> Torej, kakršna koli vprašanja o argc? 323 00:15:39,170 --> 00:15:40,873 Ja. 324 00:15:40,873 --> 00:15:45,292 >> OBČINSTVO: Videl sem, kjer so niso imeli značaj, [neslišno] 325 00:15:45,292 --> 00:15:49,669 pravkar rekel niz zvezda d, kot znak zvezdica comma. 326 00:15:49,669 --> 00:15:50,710 So enakovredna tukaj? 327 00:15:50,710 --> 00:15:51,626 >> DAVID Malan: So. 328 00:15:51,626 --> 00:15:55,080 Torej, vprašanje je, imate občasno opazili programi 329 00:15:55,080 --> 00:15:57,270 kot je ta, da ne pravijo niz argv nosilec 330 00:15:57,270 --> 00:16:01,015 ampak nekaj reči kot char zvezda argv nosilec. 331 00:16:01,015 --> 00:16:03,140 In tu je še druga variante, ki jih lahko vidite. 332 00:16:03,140 --> 00:16:04,264 So res enakovredni. 333 00:16:04,264 --> 00:16:06,240 Za zdaj imamo to vrste koles za usposabljanje 334 00:16:06,240 --> 00:16:09,737 na v obliki niza v CS50 knjižnica, vendar samo v enem tednu 335 00:16:09,737 --> 00:16:12,570 ali pa tako, da bomo odstranili, da obstrukcija v celoti in dejansko 336 00:16:12,570 --> 00:16:16,820 Poglejte, kaj je char in zvezda so, in kako tiste, nanašajo na spomin 337 00:16:16,820 --> 00:16:18,140 zastopanje na splošno. 338 00:16:18,140 --> 00:16:19,540 Torej se bomo vrnili na to. 339 00:16:19,540 --> 00:16:21,540 >> Druga vprašanja o naši argv ali argc? 340 00:16:21,540 --> 00:16:22,397 Ja. 341 00:16:22,397 --> 00:16:24,438 OBČINSTVO: Zakaj se je vrnil napaka [neslišno]? 342 00:16:24,438 --> 00:16:27,147 343 00:16:27,147 --> 00:16:29,230 DAVID Malan: Zakaj je to storil vrne napako only-- oh! 344 00:16:29,230 --> 00:16:31,813 V prejšnjem primeru, ko smo so futzing okrog s spominom, 345 00:16:31,813 --> 00:16:35,110 zakaj je le vrnil napako ko sem tipkal res veliko številko? 346 00:16:35,110 --> 00:16:36,620 Kratek odgovor je, da smo samo srečo. 347 00:16:36,620 --> 00:16:39,240 Na splošno gledano, računalnik dodeljuje pomnilnik v koščkih, 348 00:16:39,240 --> 00:16:42,900 in to mi je dovolj velik kos, ki Imam stran, ne da bi opazil, 349 00:16:42,900 --> 00:16:46,280 dotika nosilca 2, nosilec 3, Nosilec 50, ampak takoj, ko sem potisnil 350 00:16:46,280 --> 00:16:49,080 moja sreča, sem šel preko Meje kos pomnilnika 351 00:16:49,080 --> 00:16:50,520 operacijski sistem mi je dal. 352 00:16:50,520 --> 00:16:52,720 In to je, ko je vpet in rekel, no. 353 00:16:52,720 --> 00:16:54,580 Segmentacija napake. 354 00:16:54,580 --> 00:16:55,692 Ja. 355 00:16:55,692 --> 00:16:58,890 >> OBČINSTVO: Kako računalnik izvedeli vrednost argc? 356 00:16:58,890 --> 00:17:02,390 >> DAVID Malan: Kako Računalnik izvedeli vrednost argc? 357 00:17:02,390 --> 00:17:07,920 Ko zaženete program, da program po naravi utripajočo poziv 358 00:17:07,920 --> 00:17:11,359 je izročil niz Besede, ki so bili napisani 359 00:17:11,359 --> 00:17:13,300 na poziv, ki je bil tipkal na poziv. 360 00:17:13,300 --> 00:17:16,569 In tako je operacijski Sistem, ki v bistvu 361 00:17:16,569 --> 00:17:20,329 poseli glavnih argumentov za vas. 362 00:17:20,329 --> 00:17:22,829 Torej, to je ena od storitev, da boste dobili, nekako na skrivaj 363 00:17:22,829 --> 00:17:24,869 Pod pokrovom operacijski sistem. 364 00:17:24,869 --> 00:17:27,118 Druga vprašanja? 365 00:17:27,118 --> 00:17:27,618 Ja. 366 00:17:27,618 --> 00:17:29,787 >> OBČINSTVO: Kaj core dump pomeni? 367 00:17:29,787 --> 00:17:31,370 DAVID Malan: Kaj core dump pomeni? 368 00:17:31,370 --> 00:17:32,950 Torej, to je dobro vprašanje. 369 00:17:32,950 --> 00:17:35,312 In me spusti nazaj v ta imenik tukaj. 370 00:17:35,312 --> 00:17:37,270 In opazili boste, da Imam novo datoteko tam. 371 00:17:37,270 --> 00:17:41,670 To je res imenuje jedro, in to je pravzaprav tipično dostojno velikih datotek. 372 00:17:41,670 --> 00:17:45,300 To je v bistvu posnetek vsebina pomnilnika mojega programa 373 00:17:45,300 --> 00:17:46,902 ali RAM, ko je strmoglavilo. 374 00:17:46,902 --> 00:17:49,110 In to bo koristno, potencialno diagnostično, 375 00:17:49,110 --> 00:17:52,850 ko govorimo v prihodnjem predavanju in poglavje o odpravljanje napak, 376 00:17:52,850 --> 00:17:55,730 ker lahko dejansko narediti enakovredno digitalnega obdukciji 377 00:17:55,730 --> 00:18:00,300 o datoteki, ki pomagajo ugotoviti, kaj ste naredili narobe v vašem programu. 378 00:18:00,300 --> 00:18:01,220 Ja. 379 00:18:01,220 --> 00:18:04,450 >> OBČINSTVO: Je argc ukaza v sam, ali ga lahko poimenujete kaj? 380 00:18:04,450 --> 00:18:05,575 >> DAVID Malan: Dobro vprašanje. 381 00:18:05,575 --> 00:18:08,040 Je argc ukaz sam po sebi, ali lahko to ime kaj? 382 00:18:08,040 --> 00:18:09,290 To je definitivno ni ukaz. 383 00:18:09,290 --> 00:18:13,500 To je preprosto spremenljivka je ime ali ime argument je, 384 00:18:13,500 --> 00:18:15,481 in tako popolnoma smo Lahko pokličete to foo, 385 00:18:15,481 --> 00:18:18,480 bi lahko to imenujemo bar, ki težijo da je go-to besede, ki računalniških 386 00:18:18,480 --> 00:18:19,860 znanstvenik gre. 387 00:18:19,860 --> 00:18:22,820 Ampak po dogovoru, ki jih uporabljamo argc in argv. 388 00:18:22,820 --> 00:18:25,360 Ampak to je samo človek Konvencija, nič več. 389 00:18:25,360 --> 00:18:25,860 V redu. 390 00:18:25,860 --> 00:18:28,140 Tako se izkaže, da sem bil povedal nekaj belega lie-- 391 00:18:28,140 --> 00:18:31,264 in odkrito povedano, v prihodnosti, boste videli smo že povedali druge bele laži. 392 00:18:31,264 --> 00:18:33,510 Ampak za zdaj, gremo lupiti nazaj eno od teh. 393 00:18:33,510 --> 00:18:37,310 V tem primeru tukaj, ko prej sem tekel program, kot ./hello ali ./hello-3 394 00:18:37,310 --> 00:18:42,780 Zamyla smo imeli vsebino my pomnilnika računalnika videti približno tako kot 395 00:18:42,780 --> 00:18:43,280 to. 396 00:18:43,280 --> 00:18:45,070 Ampak se spomni, kaj je niz. 397 00:18:45,070 --> 00:18:49,279 Kaj smo rekli pred tednom dni, kar Niz je dejansko pod pokrovom? 398 00:18:49,279 --> 00:18:50,320 OBČINSTVO: Array znakov. 399 00:18:50,320 --> 00:18:52,111 DAVID Malan: To je niz znakov, kajne? 400 00:18:52,111 --> 00:18:55,760 Torej, morda imamo celo paleto strune, vendar v zameno, niz 401 00:18:55,760 --> 00:18:57,150 je niz znakov. 402 00:18:57,150 --> 00:19:00,010 Torej, če si res želim, da bi anal, ko rišem sliko, 403 00:19:00,010 --> 00:19:03,290 Moram res risanje je malo več, kot je ta, 404 00:19:03,290 --> 00:19:08,000 pri čemer je v vsaki od teh indeksi mojega argv array, 405 00:19:08,000 --> 00:19:11,432 je sama cel niz ki je sama v matriki. 406 00:19:11,432 --> 00:19:13,140 In zdaj bela laž smo danes povedali 407 00:19:13,140 --> 00:19:15,181 je, da slike ne pogled čisto tako. 408 00:19:15,181 --> 00:19:19,110 V resnici, malo kvadratov običajno zunaj velikih pravokotnikov 409 00:19:19,110 --> 00:19:19,610 tam. 410 00:19:19,610 --> 00:19:21,280 Ampak se bomo vrnili na to kmalu. 411 00:19:21,280 --> 00:19:25,440 Ampak to je ./hello Nagibnica 0, da bi poseben znak, ki 412 00:19:25,440 --> 00:19:28,310 razmejuje konec niza, in imamo še eno po 413 00:19:28,310 --> 00:19:29,360 Ime Zamyla je. 414 00:19:29,360 --> 00:19:30,900 Torej, kaj to pomeni? 415 00:19:30,900 --> 00:19:33,410 >> No, naj gredo naprej in odprli še dva primera 416 00:19:33,410 --> 00:19:35,220 , ki so na voljo na spletu. 417 00:19:35,220 --> 00:19:40,590 Ena se imenuje argv1.c in drugi je argv2. 418 00:19:40,590 --> 00:19:44,260 To je program, super-preprosta, da je drugačna od prejšnjih programov 419 00:19:44,260 --> 00:19:47,260 s tem, da zdaj sem s pomočjo argc in argv tukaj. 420 00:19:47,260 --> 00:19:54,300 In zdaj sem povezovanje z zanko v vrstico 18, od i = 0 za do argc. 421 00:19:54,300 --> 00:19:56,850 In kaj bom naredil s to vrstico kode tukaj? 422 00:19:56,850 --> 00:19:58,270 V angleščini. 423 00:19:58,270 --> 00:20:00,510 To očitno kaže uporabo argc. 424 00:20:00,510 --> 00:20:03,670 Ampak v angleščini, kar počne to storiti, če sem teči ta program? 425 00:20:03,670 --> 00:20:04,366 Ja? 426 00:20:04,366 --> 00:20:07,386 >> OBČINSTVO: To se dogaja, da natisnete Zaslon tolikokrat, kot želite. 427 00:20:07,386 --> 00:20:08,260 DAVID Malan: Točno tako. 428 00:20:08,260 --> 00:20:10,480 Torej, ne glede besed I vnesite ob pozivu, da je 429 00:20:10,480 --> 00:20:13,120 bo Izprazniti jim name enega v vsako vrstico. 430 00:20:13,120 --> 00:20:14,370 Torej, gremo naprej in to. 431 00:20:14,370 --> 00:20:17,862 Dovolite mi, da gre v mojem imeniku in ne bi argv1 ./argv1. 432 00:20:17,862 --> 00:20:20,521 433 00:20:20,521 --> 00:20:21,770 In zdaj, kaj je naj bo enostavno. 434 00:20:21,770 --> 00:20:23,834 Naredimo ničesar na prvi. 435 00:20:23,834 --> 00:20:26,750 Je to storil natisnete eno stvar, in to je dejansko ime programa, 436 00:20:26,750 --> 00:20:28,240 ker je to v oklepaju 0. 437 00:20:28,240 --> 00:20:33,290 Če bom zdaj rekel, foo, da bo storil tista dva, in če rečem, foo bar, 438 00:20:33,290 --> 00:20:35,580 to bo rekel, te tri stvari. 439 00:20:35,580 --> 00:20:37,740 Zdaj, da je nekoliko zanimivo, morda. 440 00:20:37,740 --> 00:20:41,450 Vendar pa opozarjajo, da je argv je množica nizov, 441 00:20:41,450 --> 00:20:45,960 ampak niz je niz znakov, tako da bomo lahko stvari zarezo 442 00:20:45,960 --> 00:20:48,560 in velja, da je osnovna logika in da kodo, ki 443 00:20:48,560 --> 00:20:51,160 zgleda malo bolj skrivnosten, seveda. 444 00:20:51,160 --> 00:20:53,540 Vendar ga ima ugnezdena loop, nekaj podobnega 445 00:20:53,540 --> 00:20:57,030 s tem, kar boste morda spomnite iz Mario, na primer, če ste to storili na ta način. 446 00:20:57,030 --> 00:21:00,380 >> Torej, zdaj opazili na liniji 19, sem Ponovno ponavljanjem preko mojih argumentov, 447 00:21:00,380 --> 00:21:02,410 od 0 na do argc. 448 00:21:02,410 --> 00:21:05,510 In zdaj je v skladu 21-- sem zadolževanja trik iz zadnjega week-- 449 00:21:05,510 --> 00:21:11,090 Jaz sem preverjanje, kaj je dolžina argv konzole i. 450 00:21:11,090 --> 00:21:12,920 Jaz shranjevanje ta odgovor v n. 451 00:21:12,920 --> 00:21:18,230 In potem sem vključevanju iz j na do n, kjer je j inicializirano na 0. 452 00:21:18,230 --> 00:21:19,460 Torej, konvencija o štetju. 453 00:21:19,460 --> 00:21:22,335 Ko ste že uporabljali i, če imate nested loop, vam ne morem ponovno uporabiti, 454 00:21:22,335 --> 00:21:25,770 sicer boste piąi prek potencialno vrednost zunaj notranje zanke. 455 00:21:25,770 --> 00:21:27,200 Torej, jaz sem z uporabo j po dogovoru. 456 00:21:27,200 --> 00:21:28,020 Mi lahko uporabite k. 457 00:21:28,020 --> 00:21:31,080 Če imate več kot k, ste verjetno imajo preveč gnezdenje, tipično. 458 00:21:31,080 --> 00:21:33,800 Toda zdaj, opazil moj printf linija je nekoliko drugačna. 459 00:21:33,800 --> 00:21:37,520 Nisem tiskanje% s, sem tiskanje% c, kar seveda 460 00:21:37,520 --> 00:21:39,460 je ograda za char. 461 00:21:39,460 --> 00:21:40,770 >> In zdaj opazil to sintakso. 462 00:21:40,770 --> 00:21:41,270 Novo. 463 00:21:41,270 --> 00:21:42,630 Nismo ga videli. 464 00:21:42,630 --> 00:21:47,290 Vendar pa je logično, to samo pomeni, dobil i-niz v argv 465 00:21:47,290 --> 00:21:50,067 in dobili j kaj? 466 00:21:50,067 --> 00:21:50,900 OBČINSTVO: Character. 467 00:21:50,900 --> 00:21:52,800 DAVID Malan: Character v tem nizu. 468 00:21:52,800 --> 00:21:57,100 Torej, z uporabo oglatih oklepajev sledi oglatih oklepajih, 469 00:21:57,100 --> 00:22:00,390 to je potapljanje prvi v nizih argv je, 470 00:22:00,390 --> 00:22:02,225 in nato drugi oklepaje z j 471 00:22:02,225 --> 00:22:06,580 je potapljanje v črkah da zlasti niz v argv. 472 00:22:06,580 --> 00:22:09,562 In potem, samo za dober ukrep, Jaz tiskanje novo linijo tukaj. 473 00:22:09,562 --> 00:22:12,020 Torej, zdaj pa grem naprej in odprite do nekoliko večje okno 474 00:22:12,020 --> 00:22:13,600 tako da bomo lahko videli v akciji. 475 00:22:13,600 --> 00:22:15,700 Dovolite mi, da gredo v to mapo. 476 00:22:15,700 --> 00:22:22,550 In zdaj se naredim argv-2-- whoops-- da argv-2, ./argv 2. 477 00:22:22,550 --> 00:22:23,110 Enter. 478 00:22:23,110 --> 00:22:24,860 In to je malo težko brati navpično, 479 00:22:24,860 --> 00:22:27,920 ampak to je res ime Program, sledi prazno vrstico. 480 00:22:27,920 --> 00:22:30,210 Zdaj pa grem naprej in to foo. 481 00:22:30,210 --> 00:22:33,210 Podobno težko brati, vendar je dejansko tiskanje znakov na vrstico. 482 00:22:33,210 --> 00:22:36,780 In če naredim bar, to je zdaj tiskanje tiste po vrsticah. 483 00:22:36,780 --> 00:22:40,140 Torej takeaway tukaj ni toliko da, wow, poglej ta čeden nov trik 484 00:22:40,140 --> 00:22:44,750 kjer lahko dobite na vsebino posebnih znakov matrike je, 485 00:22:44,750 --> 00:22:48,380 ampak kako sva ob teh osnovnih Ideje, kot so indeksiranje v matriko, 486 00:22:48,380 --> 00:22:51,620 in nato indeksiranje v matrika, da je bila v tem polju, 487 00:22:51,620 --> 00:22:56,180 in samo ob uporabi istih zamisli nekoliko bolj zapletene primere. 488 00:22:56,180 --> 00:22:59,560 Ampak osnove res ni , celo od prejšnjega tedna. 489 00:22:59,560 --> 00:23:02,350 >> Zdaj je to nekako pravočasno, s tem, da se spomni, na ničelni teden 490 00:23:02,350 --> 00:23:04,110 smo igrali z imenika, kot je ta. 491 00:23:04,110 --> 00:23:06,670 In čeprav je to seveda fizikalne kosov papirja, 492 00:23:06,670 --> 00:23:09,150 lahko nekako misliti telefonski imenik, kot matrike. 493 00:23:09,150 --> 00:23:12,770 Seveda, če bi reimplement ta kosov teh kosov papirja 494 00:23:12,770 --> 00:23:15,260 v računalniku, verjetno bi uporabili nekaj 495 00:23:15,260 --> 00:23:20,270 kot array shranjevanje vseh tistih, ki Imena in številke od A do konca 496 00:23:20,270 --> 00:23:23,800 skozi Z. je torej to lepo, ker to nam omogoča priložnost, 497 00:23:23,800 --> 00:23:28,310 morda, da razmisli, kako bi lahko dejansko izvajajo nekaj takega. 498 00:23:28,310 --> 00:23:31,250 Kot z vrsto vrat tukaj. 499 00:23:31,250 --> 00:23:36,380 Torej, če sem lahko-- potrebujemo eno prostovoljno, da pridejo gor. 500 00:23:36,380 --> 00:23:36,980 Pa poglejmo. 501 00:23:36,980 --> 00:23:40,650 Neznan obraz morda, neznan obraz morda. 502 00:23:40,650 --> 00:23:42,090 Kaj pravite na oranžno? 503 00:23:42,090 --> 00:23:42,680 Tukaj. 504 00:23:42,680 --> 00:23:45,870 Orange shirt, pridi gor. 505 00:23:45,870 --> 00:23:52,230 >> Pojdimo zdaj in premik ta vrata na rob, 506 00:23:52,230 --> 00:23:54,020 premakniti ti iz poti za trenutek. 507 00:23:54,020 --> 00:23:56,600 508 00:23:56,600 --> 00:23:57,760 Kako ti je ime? 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 Lepo, da sva se spoznala. 513 00:23:59,451 --> 00:23:59,950 V redu. 514 00:23:59,950 --> 00:24:04,500 Tako da imamo v ozadju teh šestih Vrata na digitalno s screen-- 515 00:24:04,500 --> 00:24:07,810 ali, bolje rečeno, sedem vrata na screen-- cel kup številk. 516 00:24:07,810 --> 00:24:10,099 In jaz sem ti povedal nič v advance-- dogovorili? 517 00:24:10,099 --> 00:24:11,140 Ajay: Nič vnaprej. 518 00:24:11,140 --> 00:24:14,730 DAVID Malan: Vse, kar želim, da narediš Zdaj je treba najti zame in za nas, 519 00:24:14,730 --> 00:24:20,920 res, številka 50, en korak naenkrat. 520 00:24:20,920 --> 00:24:21,830 >> Ajay: številka 50? 521 00:24:21,830 --> 00:24:22,580 >> DAVID Malan: Številka 50. 522 00:24:22,580 --> 00:24:24,746 In lahko pokažejo, kaj je zadaj vsaka od teh vrat 523 00:24:24,746 --> 00:24:27,930 preprosto z dotikom s prstom. 524 00:24:27,930 --> 00:24:31,364 Prekleto. [Smeh] 525 00:24:31,364 --> 00:24:34,560 >> [APLAVZ] 526 00:24:34,560 --> 00:24:39,540 >> Zelo dobro opravljeno. 527 00:24:39,540 --> 00:24:40,400 OK. 528 00:24:40,400 --> 00:24:44,090 Imamo lepo darilo Nagrada za vas tukaj. 529 00:24:44,090 --> 00:24:46,520 Tvoja izbira filmov smo razpravljali prejšnji teden. 530 00:24:46,520 --> 00:24:47,362 >> Ajay: Oh, človek. 531 00:24:47,362 --> 00:24:49,050 Oh, še nikoli nisem videl Spaceballs. 532 00:24:49,050 --> 00:24:49,520 >> DAVID Malan: Spaceballs. 533 00:24:49,520 --> 00:24:50,140 V redu. 534 00:24:50,140 --> 00:24:53,790 Tako imajo na samo enem trenutku. 535 00:24:53,790 --> 00:24:57,430 Kako-- naredimo to teachable moment-- 536 00:24:57,430 --> 00:25:00,412 kako ste se lotili poiskati številko 50? 537 00:25:00,412 --> 00:25:01,370 Ajay: sem izbral naključno. 538 00:25:01,370 --> 00:25:03,420 DAVID Malan: Torej ste se odločili naključno in srečo. 539 00:25:03,420 --> 00:25:03,790 Ajay: Da. 540 00:25:03,790 --> 00:25:04,456 DAVID Malan: OK. 541 00:25:04,456 --> 00:25:05,050 Odlično. 542 00:25:05,050 --> 00:25:08,470 Torej, zdaj, če ne bi gotten srečo, kaj 543 00:25:08,470 --> 00:25:10,210 morda se je zgodilo za temi vrati? 544 00:25:10,210 --> 00:25:12,930 Torej, če grem naprej in razkrivajo te številke tukaj, 545 00:25:12,930 --> 00:25:15,180 dejansko so v naključnem vrstnem redu. 546 00:25:15,180 --> 00:25:17,750 In najbolje, kar bi lahko imelo storiti, odkrito povedano, je s končno 547 00:25:17,750 --> 00:25:19,410 v najslabšem primeru pa jih vse preverjanju. 548 00:25:19,410 --> 00:25:23,000 Torej imaš super srečo, ki ni tisto, kar bi pravimo algoritem. 549 00:25:23,000 --> 00:25:24,730 Ja, čestitke. 550 00:25:24,730 --> 00:25:27,010 Toda zdaj Pojdimo-- humor me, če bi lahko. 551 00:25:27,010 --> 00:25:28,310 Pojdimo v tem zavihku tukaj. 552 00:25:28,310 --> 00:25:31,460 In tu so številke v jasno kaj izgleda naključnem vrstnem redu, 553 00:25:31,460 --> 00:25:32,280 in so. 554 00:25:32,280 --> 00:25:35,160 Ampak zdaj, če sem namesto zahtevek da je za temi vrati 555 00:25:35,160 --> 00:25:39,070 so številke, ki so razvrščena. 556 00:25:39,070 --> 00:25:41,780 Odslej je tudi nas najdete številko 50. 557 00:25:41,780 --> 00:25:45,910 Ampak to algorithmically in nam povejte, kako boste o tem. 558 00:25:45,910 --> 00:25:48,020 In če boste ugotovili, da obdržite film. 559 00:25:48,020 --> 00:25:49,520 Vam ne zdi, da si ga dal nazaj. 560 00:25:49,520 --> 00:25:52,720 561 00:25:52,720 --> 00:25:58,112 Ajay: Torej bom preveril konce prvič, da se ugotovi, če there's-- 562 00:25:58,112 --> 00:26:02,048 [Smeh in aplavz] 563 00:26:02,048 --> 00:26:04,451 564 00:26:04,451 --> 00:26:05,492 DAVID Malan: Tukaj imaš. 565 00:26:05,492 --> 00:26:17,080 566 00:26:17,080 --> 00:26:21,700 Oglejmo si na eni predhodniki Ajay je, 567 00:26:21,700 --> 00:26:25,450 Sean, ki ni bil tako zelo srečen. 568 00:26:25,450 --> 00:26:28,670 OK, tako da vaša naloga tukaj, Sean, je naslednje. 569 00:26:28,670 --> 00:26:32,970 Sem se skriva za temi vrata številka sedem, 570 00:26:32,970 --> 00:26:37,200 ampak spravljen v nekaterih od teh vrat kot tudi druge ne-negativne številke. 571 00:26:37,200 --> 00:26:40,730 In vaš cilj je, da si to top row številk le kot matrike. 572 00:26:40,730 --> 00:26:43,590 Mi smo samo zaporedje kosov papirja s številkami stojijo za njimi. 573 00:26:43,590 --> 00:26:47,640 In vaš cilj je, le z vrha matrika tu našli mi številko sedem. 574 00:26:47,640 --> 00:26:51,200 In smo se potem dogaja, da kritika kako iti na to početje. 575 00:26:51,200 --> 00:26:52,920 Poiščite nas na številko sedem, prosim. 576 00:26:52,920 --> 00:27:02,570 577 00:27:02,570 --> 00:27:03,070 Število 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 ni trik vprašanje. 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 Na tej točki je vaša ocena ni zelo dobro, da si lahko tudi naprej. 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 Pojdi. 590 00:27:39,802 --> 00:27:42,510 Odkrito povedano, ne morem pomagati, ampak se sprašujem, kaj si sploh razmišljal. 591 00:27:42,510 --> 00:27:44,990 >> SEAN: Jaz lahko samo iz zgornji vrstici. 592 00:27:44,990 --> 00:27:46,240 DAVID Malan: Samo zgornja vrstica. 593 00:27:46,240 --> 00:27:47,281 Torej imaš tri levo. 594 00:27:47,281 --> 00:27:48,310 Torej mi našli 7. 595 00:27:48,310 --> 00:27:54,758 596 00:27:54,758 --> 00:27:59,141 >> [PUBLIKA Kriki PREDLOGI] 597 00:27:59,141 --> 00:28:22,210 598 00:28:22,210 --> 00:28:26,130 Torej, tako tistih, ki so bili neverjetno najrazličnejših razlogov. 599 00:28:26,130 --> 00:28:29,150 Torej, to je, če smo končali pred nekaj trenutki, 600 00:28:29,150 --> 00:28:32,530 in ključ vpogled tukaj je bila ta vrata so imeli številke 601 00:28:32,530 --> 00:28:37,390 za njimi, ki so bile razporejene, ideal takeaway, za katere je, da bi vam 602 00:28:37,390 --> 00:28:39,670 bistveno bolje ta druga Primer-- 603 00:28:39,670 --> 00:28:42,380 in seveda, da je bil Sean Prvi poskus z naključnimi številkami 604 00:28:42,380 --> 00:28:45,460 prav tako before-- ampak takoj saj so razporejene te številke, 605 00:28:45,460 --> 00:28:47,980 podobno kot v telefonskem imeniku, Kaj lahko seveda storite? 606 00:28:47,980 --> 00:28:50,090 Ali pa, kako lahko izkoristite to znanje? 607 00:28:50,090 --> 00:28:51,530 Ja. 608 00:28:51,530 --> 00:28:54,910 >> OBČINSTVO: Greste na pol poti [neslišno]. 609 00:28:54,910 --> 00:28:55,660 DAVID Malan: Ja. 610 00:28:55,660 --> 00:28:56,160 Točno tako. 611 00:28:56,160 --> 00:28:59,680 Torej Prvi odziv Ajay je bil preveriti konce, kot se spomnim, 612 00:28:59,680 --> 00:29:02,320 in potem nekako končan Primer hitro. 613 00:29:02,320 --> 00:29:05,220 Ampak, če smo začeli to storiti več metodično v tej smeri, 614 00:29:05,220 --> 00:29:07,860 vendar začenši morda v srednji, ker oni so razporejene, 615 00:29:07,860 --> 00:29:10,900 takoj, ko bomo razkrili Številka 16, zato smo veš-- 616 00:29:10,900 --> 00:29:14,850 in kaj je naredil točno to-- mi Zato vem, da je 50 let, v današnjem primeru, 617 00:29:14,850 --> 00:29:16,080 je dobil, da je na desni strani. 618 00:29:16,080 --> 00:29:18,735 Torej tako kot v nič, ko tednu smo strgal imenika na pol 619 00:29:18,735 --> 00:29:21,490 in vrgel polovico problem proč, ista ideja tukaj. 620 00:29:21,490 --> 00:29:23,680 Mi lahko vrgel ta polčas problema proč. 621 00:29:23,680 --> 00:29:25,730 In verjetno tisto, kar vas lahko storite z algoritmom, 622 00:29:25,730 --> 00:29:28,710 ko veš, da mora biti 50 na desni strani, če je to kjerkoli, 623 00:29:28,710 --> 00:29:31,390 poskušati tam, v sredini preostalih vrat. 624 00:29:31,390 --> 00:29:33,450 Seveda, 50 je višja kot 42, tako da bomo lahko 625 00:29:33,450 --> 00:29:36,060 vrgel to preostalo četrtina problema proč, 626 00:29:36,060 --> 00:29:38,510 in nazadnje, ugotoviti nekaj takega kot 50 let. 627 00:29:38,510 --> 00:29:41,050 Ampak tako kot pri telefonski imenik, te številke 628 00:29:41,050 --> 00:29:44,560 je bila dana, da nas že v razvrščenega.Vse nalog, ki nas pušča 629 00:29:44,560 --> 00:29:47,450 z vprašanjem, kako si narediti priti stvari v razvrščeni naročila? 630 00:29:47,450 --> 00:29:49,640 In, odkrito povedano, za kakšno ceno? 631 00:29:49,640 --> 00:29:51,390 To je ena stvar, ki se izročil imenik 632 00:29:51,390 --> 00:29:54,810 in potem očarati svoje prijatelje z iskanjem telefonska številka res hitro, kajne? 633 00:29:54,810 --> 00:29:58,520 Solzenje 32 strani, da bi našli Oseba iz 4 milijarde strani, 634 00:29:58,520 --> 00:30:00,470 smo rekli, je bil eden skrajen primer. 635 00:30:00,470 --> 00:30:03,320 Toda, koliko časa je trajalo, Verizon rešiti ta imenik? 636 00:30:03,320 --> 00:30:06,170 Koliko časa pa nam bo za razvrščanje teh sedem številk? 637 00:30:06,170 --> 00:30:10,110 To je vprašanje, ki smo jih doslej povsem prezrta. 638 00:30:10,110 --> 00:30:12,330 >> Torej, kaj je odgovor na to vprašanje zdaj. 639 00:30:12,330 --> 00:30:15,920 In vsi smo iz filmov zdaj, vendar imamo nekaj stresnih kroglice. 640 00:30:15,920 --> 00:30:19,480 Če, recimo, osem prostovoljcev Bi se nam ne bi pridružil tu gor? 641 00:30:19,480 --> 00:30:24,100 Pojdimo naprej in to, kako o štiri od vas, vi trije tu? 642 00:30:24,100 --> 00:30:25,290 Dobili nekaj novih obrazov. 643 00:30:25,290 --> 00:30:27,220 In štiri od vas tam? 644 00:30:27,220 --> 00:30:30,760 In sedaj-- Ne pristranskosti pustite tu-- in Številka osem sem na koncu. 645 00:30:30,760 --> 00:30:32,060 Pridi gor. 646 00:30:32,060 --> 00:30:32,560 V redu. 647 00:30:32,560 --> 00:30:37,480 Torej, kaj imamo tukaj vsak od vas je več. 648 00:30:37,480 --> 00:30:40,055 Če želite, da gredo naprej, da to številko. 649 00:30:40,055 --> 00:30:40,763 Kako ti je ime? 650 00:30:40,763 --> 00:30:41,950 >> Artie: Artie. 651 00:30:41,950 --> 00:30:43,100 >> DAVID Malan: Artie, v redu. 652 00:30:43,100 --> 00:30:44,297 Ti si številka 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 Ti si številka 2. 657 00:30:47,530 --> 00:30:49,100 In iti naprej, kot sem roko ti listi papirja, 658 00:30:49,100 --> 00:30:52,130 vrstico sebe up pred glasbe stoji v istem vrstnem redu, kot je tam. 659 00:30:52,130 --> 00:30:52,660 >> ANDY: Zdravo, Andy. 660 00:30:52,660 --> 00:30:53,970 >> DAVID Malan: Andy, to je lepo, da te vidim. 661 00:30:53,970 --> 00:30:54,520 Številka 3. 662 00:30:54,520 --> 00:30:55,310 >> JACOB: Jacob. 663 00:30:55,310 --> 00:30:56,760 >> DAVID Malan: Jacob, številka 4. 664 00:30:56,760 --> 00:30:57,549 Dobrodošli na krovu. 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 Številka 5. 668 00:31:00,348 --> 00:31:01,200 >> Alanna: Alanna. 669 00:31:01,200 --> 00:31:02,766 >> DAVID Malan: Alanna, številka 6. 670 00:31:02,766 --> 00:31:03,589 >> FRANCES: Frances. 671 00:31:03,589 --> 00:31:04,880 DAVID Malan: Frances, številka 7. 672 00:31:04,880 --> 00:31:05,200 In? 673 00:31:05,200 --> 00:31:05,830 >> RACHEL: Rachel. 674 00:31:05,830 --> 00:31:06,815 >> DAVID Malan: Rachel, številka 8. 675 00:31:06,815 --> 00:31:07,100 V redu. 676 00:31:07,100 --> 00:31:08,766 Pojdi naprej in se dobili v tem vrstnem redu. 677 00:31:08,766 --> 00:31:11,440 Naj mi dajo eno preostalih glasba stati na mestu. 678 00:31:11,440 --> 00:31:13,670 Kje rabiš stojalo? 679 00:31:13,670 --> 00:31:14,170 OK. 680 00:31:14,170 --> 00:31:18,710 Pojdi naprej in samo dal svoje številke kjer je občinstvo jih lahko vidite na, 681 00:31:18,710 --> 00:31:20,340 glasba stati obrnjen navzven. 682 00:31:20,340 --> 00:31:27,240 In upajmo, da naša prva sanity check tu-- 4, 2, 6. 683 00:31:27,240 --> 00:31:27,890 Oh-oh. 684 00:31:27,890 --> 00:31:29,070 Počakaj malo. 685 00:31:29,070 --> 00:31:31,140 Ne bomo imeli 8. 686 00:31:31,140 --> 00:31:35,180 Moram vam izselijo iz Primer nekako. 687 00:31:35,180 --> 00:31:35,680 Število 688 00:31:35,680 --> 00:31:36,940 Ne, je že v redu. 689 00:31:36,940 --> 00:31:37,890 Pa poglejmo. 690 00:31:37,890 --> 00:31:38,880 To lahko storimo. 691 00:31:38,880 --> 00:31:39,440 Stati. 692 00:31:39,440 --> 00:31:43,970 693 00:31:43,970 --> 00:31:45,740 Takole. 694 00:31:45,740 --> 00:31:46,800 Pravilna. 695 00:31:46,800 --> 00:31:47,360 V redu. 696 00:31:47,360 --> 00:31:50,260 Torej, zdaj imamo 8, 1, 3, 5, 7. 697 00:31:50,260 --> 00:31:50,760 OK. 698 00:31:50,760 --> 00:31:51,360 Odlično. 699 00:31:51,360 --> 00:31:54,400 >> Torej vprašanje, na strani pa je na kakšno ceno, in po katerih metoda, 700 00:31:54,400 --> 00:31:58,580 lahko te številke dejansko rešiti tukaj tako da bomo lahko nekako deluje nazaj, 701 00:31:58,580 --> 00:32:02,759 na koncu, in decide-- je res impresivno, je res učinkovita, 702 00:32:02,759 --> 00:32:04,550 da lahko delijo in osvojiti telefonski imenik? 703 00:32:04,550 --> 00:32:06,716 Je res učinkovit, da Jaz lahko razdeli in vladaj 704 00:32:06,716 --> 00:32:08,600 ti digitalni kosov papirja na krovu, 705 00:32:08,600 --> 00:32:14,500 če morda gre za nas je stal fortune časovno ali energetskih ali CPE 706 00:32:14,500 --> 00:32:17,340 bi dejansko dobili naše podatke v nekem urejenem vrstnem redu? 707 00:32:17,340 --> 00:32:18,930 Torej, kaj je vprašati to vprašanje. 708 00:32:18,930 --> 00:32:22,077 >> Torej, najprej off, so te številke V zal veliko naključnem vrstnem redu, 709 00:32:22,077 --> 00:32:24,160 in bom predlagala en algoritem, ali postopek 710 00:32:24,160 --> 00:32:25,970 , s katerim bomo lahko ti ljudje razvrstiti. 711 00:32:25,970 --> 00:32:28,100 Bom približati to precej naivno. 712 00:32:28,100 --> 00:32:30,730 In bom prepozna da je to neke vrste veliko za mene 713 00:32:30,730 --> 00:32:32,890 zaviti svoj um okoli cel nabor podatkov naenkrat. 714 00:32:32,890 --> 00:32:33,640 Ampak veš kaj? 715 00:32:33,640 --> 00:32:37,450 Jaz grem, da bi nekaj zelo preproste obrobne popravke. 716 00:32:37,450 --> 00:32:41,152 4 in 2 v okvari, če Cilj je, da gredo od 1. dne do 8.. 717 00:32:41,152 --> 00:32:41,860 Torej, veste kaj? 718 00:32:41,860 --> 00:32:43,776 Jaz te bom imela Fantje zamenjajte, če preklopite 719 00:32:43,776 --> 00:32:46,380 fizično pozicije in vaše kosov papirja. 720 00:32:46,380 --> 00:32:47,894 Sedaj 4 in 6, so v vrstnem redu. 721 00:32:47,894 --> 00:32:49,060 Bom zapustil tiste biti. 722 00:32:49,060 --> 00:32:50,227 6 in 8, te so v redu. 723 00:32:50,227 --> 00:32:51,185 Zapustilo jih je. 724 00:32:51,185 --> 00:32:52,170 8 in1, deluje. 725 00:32:52,170 --> 00:32:54,790 Če vidva ne bi motilo zamenjavo. 726 00:32:54,790 --> 00:32:57,300 Zdaj 8 in 3, če bi vi zamenjali. 727 00:32:57,300 --> 00:32:59,320 8 in 7, če bi vi zamenjali. 728 00:32:59,320 --> 00:33:01,790 In 8 in 5, če bi vi zamenjali. 729 00:33:01,790 --> 00:33:03,980 >> Zdaj sem naredil? 730 00:33:03,980 --> 00:33:05,200 Ne, seveda ne. 731 00:33:05,200 --> 00:33:07,880 Vendar sem naredil stanje boljše, kajne? 732 00:33:07,880 --> 00:33:09,430 Kaj je bilo že ime, številka 8? 733 00:33:09,430 --> 00:33:10,055 >> RACHEL: Rachel. 734 00:33:10,055 --> 00:33:12,850 DAVID Malan: Torej Rachel ima učinkovito vrela precej daleč, 735 00:33:12,850 --> 00:33:15,660 vse do konca Moja tabela številk tukaj. 736 00:33:15,660 --> 00:33:17,310 In tako se ta problem nekako rešiti. 737 00:33:17,310 --> 00:33:21,670 Zdaj je jasno, 2 še vedno potrebuje premakniti malo, in 4 in 6 in 1. 738 00:33:21,670 --> 00:33:24,420 Ampak sem se zdi, da so gotten malo bližje rešitvi. 739 00:33:24,420 --> 00:33:26,790 Torej se ta ista spet naivno hevristično. 740 00:33:26,790 --> 00:33:27,690 2 in 4, OK. 741 00:33:27,690 --> 00:33:28,810 4 in 6, OK. 742 00:33:28,810 --> 00:33:29,930 6 in 1 mm-mm. 743 00:33:29,930 --> 00:33:32,230 Kaj je swap. 744 00:33:32,230 --> 00:33:33,200 6 in 3 mm-mm. 745 00:33:33,200 --> 00:33:34,420 Kaj je swap. 746 00:33:34,420 --> 00:33:35,580 6 in 7 je v redu. 747 00:33:35,580 --> 00:33:36,590 7 in 5, Nope. 748 00:33:36,590 --> 00:33:37,790 Kaj je swap. 749 00:33:37,790 --> 00:33:38,470 In zdaj 7 in 8. 750 00:33:38,470 --> 00:33:39,862 In kaj je že ime? 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 Torej, zdaj Frances je še boljši položaj, ker zdaj 7 in 8 754 00:33:44,230 --> 00:33:46,440 pravilno mehurčkih do vrha. 755 00:33:46,440 --> 00:33:47,510 Torej, 2 in 4, OK. 756 00:33:47,510 --> 00:33:48,720 4 in 1, swap dajmo. 757 00:33:48,720 --> 00:33:50,410 4 in 3, swap dajmo. 758 00:33:50,410 --> 00:33:51,550 4 in 6, da si v redu. 759 00:33:51,550 --> 00:33:53,340 6 in 5, swap dajmo. 760 00:33:53,340 --> 00:33:54,590 In zdaj ti fantje so dobri. 761 00:33:54,590 --> 00:33:55,780 Skoraj smo že tam. 762 00:33:55,780 --> 00:33:57,706 2 in 1, v okvari, tako zamenjali. 763 00:33:57,706 --> 00:33:59,080 In zdaj mi ne preverjanje prištevnosti. 764 00:33:59,080 --> 00:34:03,080 2 in 3, 3 in 4, 4 in 5, 5 in 6, 6 in 7, 8. 765 00:34:03,080 --> 00:34:05,060 OK, tako da sva končala. 766 00:34:05,060 --> 00:34:09,310 >> Ampak za kakšno ceno pa sem Te številke razvrstiti tukaj? 767 00:34:09,310 --> 00:34:13,960 No, koliko korakov Sem potencialno sprejeti pri sortiranju ti ljudje? 768 00:34:13,960 --> 00:34:15,710 No, se bomo vrnili na to vprašanje. 769 00:34:15,710 --> 00:34:18,030 Ampak, odkrito povedano, če imaš malo dolgčas, da je 770 00:34:18,030 --> 00:34:22,270 vrsta razkrivajo, da to ni bilo morda najučinkovitejši algoritem. 771 00:34:22,270 --> 00:34:25,230 In res, odkrito povedano, potim vse bolj hojo naprej in nazaj. 772 00:34:25,230 --> 00:34:26,639 Da ni zdelo posebej učinkovita. 773 00:34:26,639 --> 00:34:27,805 Torej poskusimo nekaj drugega. 774 00:34:27,805 --> 00:34:31,870 Če bi vidva ponastavitev Sami teh osmih vrednosti. 775 00:34:31,870 --> 00:34:32,969 Dobro delo. 776 00:34:32,969 --> 00:34:36,570 >> Oglejmo pogled digitalno, za samo Trenutek, preden smo poskusili nekaj drugega, 777 00:34:36,570 --> 00:34:38,179 kaj se je pravkar zgodilo. 778 00:34:38,179 --> 00:34:41,330 Tu gor, boste kmalu videli vizualizacija teh osmih ljudi 779 00:34:41,330 --> 00:34:44,719 pri čemer modra in rdeča stolpci predstavljajo številke. 780 00:34:44,719 --> 00:34:46,670 Višji bar, večje število. 781 00:34:46,670 --> 00:34:48,510 Krajši bar, manjše število. 782 00:34:48,510 --> 00:34:51,560 In kaj boste videli, je v random da več kot osem od njih. 783 00:34:51,560 --> 00:34:55,830 Boste videli te palice pridobivanje razporejene po isti algoritem, 784 00:34:55,830 --> 00:34:59,890 ali niz navodil, ki bomo poklical odslej bubble sort. 785 00:34:59,890 --> 00:35:04,000 Tako obvestilo, vsak drugi ali tako, dva bara se zasveti v rdeči barvi, 786 00:35:04,000 --> 00:35:05,590 se primerjajo z računalnikom. 787 00:35:05,590 --> 00:35:08,630 In nato, če velik bar in mali bar v okvari, 788 00:35:08,630 --> 00:35:11,220 se jih zamenjali za mene. 789 00:35:11,220 --> 00:35:15,120 >> Zdaj je to zelo dolgočasno gledati to, seveda, 790 00:35:15,120 --> 00:35:18,630 zelo dolgo, ampak obvestilo takeaway-- velike palice, ki se gibljejo v desno, 791 00:35:18,630 --> 00:35:20,460 malo palice, ki se gibljejo v levo. 792 00:35:20,460 --> 00:35:23,380 Dajmo prekiniti ta proces in pospeši to gor 793 00:35:23,380 --> 00:35:27,330 da je veliko hitrejši, tako da bomo lahko dobili občutek na visoki ravni o tem, kaj, 794 00:35:27,330 --> 00:35:29,970 res, bubble sort počne. 795 00:35:29,970 --> 00:35:33,150 Pravzaprav, to je prepihavanje do na desni strani seznama, 796 00:35:33,150 --> 00:35:35,260 ali matrika, večji bari. 797 00:35:35,260 --> 00:35:40,020 In obratno, mali palice so prepihavanje svojo pot navzdol v levo, 798 00:35:40,020 --> 00:35:42,950 čeprav hitreje kot smo že storili. 799 00:35:42,950 --> 00:35:45,850 Torej, težje videti z ljudmi, ampak vizualno, da je res kaj 800 00:35:45,850 --> 00:35:46,540 se je dogajalo. 801 00:35:46,540 --> 00:35:49,110 >> Ampak poskusimo bistveno drugačen pristop zdaj. 802 00:35:49,110 --> 00:35:52,387 Poskusimo drugačen algoritem, s katerim vas bomo imeli 803 00:35:52,387 --> 00:35:59,640 fantje začeli v teh prvotnih pozicije, ki je bila ta nalog tukaj. 804 00:35:59,640 --> 00:36:00,827 In pojdimo naprej zdaj. 805 00:36:00,827 --> 00:36:02,910 In bom naredil nekaj še lažje, kajne? 806 00:36:02,910 --> 00:36:06,710 Če pogledam nazaj, znova zamenjala parne in spet, skoraj malo pameten. 807 00:36:06,710 --> 00:36:10,460 Naredimo stvari še bolj naivno, kjer je, če želim rešiti ti ljudje, 808 00:36:10,460 --> 00:36:12,560 Naj kar naprej išče za najmanjši element. 809 00:36:12,560 --> 00:36:14,570 Torej sedaj, 4 je Najmanj sem videl. 810 00:36:14,570 --> 00:36:15,695 Bom zapomnil. 811 00:36:15,695 --> 00:36:17,750 Ne, 2 je bolje, in ne pozabite, da. 812 00:36:17,750 --> 00:36:20,730 1 je še manjša. 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-- kaj je že ime? 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 Torej, Artie, pojdi. 819 00:36:25,460 --> 00:36:27,043 Jaz te bom izvleči iz linije. 820 00:36:27,043 --> 00:36:28,400 Če bi lahko prišel nazaj. 821 00:36:28,400 --> 00:36:30,790 In moram narediti prostor za njega. 822 00:36:30,790 --> 00:36:32,040 Imamo sklep pod točko tukaj. 823 00:36:32,040 --> 00:36:36,000 Kako lahko naredimo prostor Artie tukaj na začetku, kjer številka 1 pripada? 824 00:36:36,000 --> 00:36:36,770 >> OBČINSTVO: Shift. 825 00:36:36,770 --> 00:36:38,950 >> DAVID Malan: OK, smo lahko premakne vse. 826 00:36:38,950 --> 00:36:40,860 Vendar predlaga optimizacijo. 827 00:36:40,860 --> 00:36:43,410 Da se počuti malo siten za mene vprašati štiri ljudi 828 00:36:43,410 --> 00:36:44,620 premakniti vso pot navzdol. 829 00:36:44,620 --> 00:36:45,520 Kaj drugega bi lahko naredil? 830 00:36:45,520 --> 00:36:46,360 >> OBČINSTVO: jih Switch. 831 00:36:46,360 --> 00:36:46,850 >> DAVID Malan: jih Switch. 832 00:36:46,850 --> 00:36:47,900 In kaj je že ime? 833 00:36:47,900 --> 00:36:48,441 >> JACOB: Jacob. 834 00:36:48,441 --> 00:36:50,330 DAVID Malan: Jacob, premakniti. 835 00:36:50,330 --> 00:36:54,440 Veliko bolj učinkovit samo, da so Zamenjave lokacije Jacob z Artie, 836 00:36:54,440 --> 00:36:56,710 v nasprotju z silijo Vse štiri od teh ljudi, 837 00:36:56,710 --> 00:36:58,734 najlepša hvala, da njihov pravilen položaj. 838 00:36:58,734 --> 00:37:01,150 Kaj je zdaj lepo o Artie, on je v svojem pravilnem položaju. 839 00:37:01,150 --> 00:37:02,060 Naredimo to še enkrat. 840 00:37:02,060 --> 00:37:03,730 2, da je najmanjše število sem jih 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 definitivno najmanjši. 844 00:37:07,467 --> 00:37:08,550 Ne bi bilo treba storiti ničesar. 845 00:37:08,550 --> 00:37:09,320 Pa dajmo še enkrat. 846 00:37:09,320 --> 00:37:10,070 6. 847 00:37:10,070 --> 00:37:10,640 Najmanjša? 848 00:37:10,640 --> 00:37:11,140 8. 849 00:37:11,140 --> 00:37:11,590 Nope. 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 Naj se spomnim 4. 853 00:37:13,420 --> 00:37:13,950 3. 854 00:37:13,950 --> 00:37:15,110 Naj se spomnim 3. 855 00:37:15,110 --> 00:37:16,080 7, 5. 856 00:37:16,080 --> 00:37:18,490 Najmanjše število Imam gledati na to priložnost je 3. 857 00:37:18,490 --> 00:37:20,340 Če želite, da pridejo ven. 858 00:37:20,340 --> 00:37:21,986 Kam gremo, da vas čaka? 859 00:37:21,986 --> 00:37:22,860 In kako ti je ime? 860 00:37:22,860 --> 00:37:23,530 >> Alanna: Alanna. 861 00:37:23,530 --> 00:37:25,780 >> DAVID Malan: Alanna, smo bo moral, da vam izselijo. 862 00:37:25,780 --> 00:37:28,670 Ampak to je bolj učinkovito, samo zamenjali dve osebi, 863 00:37:28,670 --> 00:37:31,850 kot da imajo več ljudi dejansko Bočni konec. 864 00:37:31,850 --> 00:37:32,850 Zdaj pa to še enkrat. 865 00:37:32,850 --> 00:37:34,980 Grem, da izberete 4, tako da pridejo ven. 866 00:37:34,980 --> 00:37:36,540 In kdo bo premaknil? 867 00:37:36,540 --> 00:37:37,750 Številka 8, seveda. 868 00:37:37,750 --> 00:37:40,260 Če bi zdaj našli številko 5, pridi ven. 869 00:37:40,260 --> 00:37:42,104 Številka 8 se dogaja, da se spet izselili. 870 00:37:42,104 --> 00:37:43,770 Jaz zdaj grem, da bi našli številko 6 v mestu. 871 00:37:43,770 --> 00:37:44,410 7 prosto. 872 00:37:44,410 --> 00:37:45,080 8 v mestu. 873 00:37:45,080 --> 00:37:48,590 >> Kaj sva naredila zdaj nekaj, kar se imenuje izbor sort, 874 00:37:48,590 --> 00:37:52,560 in če bomo vizualizirati to, da je dogaja, da se počutijo malo drugačna. 875 00:37:52,560 --> 00:37:56,800 Pojdimo naprej in iz tega Meni tukaj, to visualization-- 876 00:37:56,800 --> 00:38:02,920 kaj je to spremenili da-- daj no, Firefox. 877 00:38:02,920 --> 00:38:07,610 Spremenimo to izbora vrste. 878 00:38:07,610 --> 00:38:11,830 In kaj je to pospešiti, kot prej, in začeti vizualizacijo zdaj. 879 00:38:11,830 --> 00:38:13,990 In to algoritem drugačen občutek za njo. 880 00:38:13,990 --> 00:38:16,480 Na vsaki ponovitvi, odkrito povedano, to je še bolj enostavna. 881 00:38:16,480 --> 00:38:18,385 Jaz sem samo izbiro najmanjši element. 882 00:38:18,385 --> 00:38:21,510 Zdaj pa, odkrito povedano, sem malo srečen, da časa, s tem, da razporejene zelo hiter. 883 00:38:21,510 --> 00:38:22,660 Elementi, ki so bili naključno. 884 00:38:22,660 --> 00:38:25,520 To ni, kot se bomo sčasoma glej, bistveno hitreje. 885 00:38:25,520 --> 00:38:29,400 Ampak poglejmo, tretja in zadnja pristop tu, kaj se dogaja. 886 00:38:29,400 --> 00:38:36,230 Torej, gremo naprej in vam ponastavi fantje eno končno čas, da se v tem, da tukaj. 887 00:38:36,230 --> 00:38:38,450 >> In zdaj, bom za biti malo bolj pameten, 888 00:38:38,450 --> 00:38:40,220 samo zaokrožujejo algoritmov. 889 00:38:40,220 --> 00:38:41,230 Jaz bom to naredil. 890 00:38:41,230 --> 00:38:43,140 Bom ne gredo in nazaj toliko. 891 00:38:43,140 --> 00:38:44,900 Odkrito povedano, sem utrujen vse to prečenje. 892 00:38:44,900 --> 00:38:47,691 Jaz bom samo, da bi tisto, kar sem glede na začetku seznama, 893 00:38:47,691 --> 00:38:49,460 in bom, da razvrstite da takrat in tam. 894 00:38:49,460 --> 00:38:50,140 Torej, tukaj smo. 895 00:38:50,140 --> 00:38:51,030 Številka 4. 896 00:38:51,030 --> 00:38:53,680 Bom vstavite številko 4 v razvrščeni seznamu. 897 00:38:53,680 --> 00:38:54,180 Končano. 898 00:38:54,180 --> 00:38:58,300 Trdim, zdaj, in samo, da je to bolj Jasno, ta del mojega seznama razporejene. 899 00:38:58,300 --> 00:39:02,610 To je nekako neumno zahtevka, ampak res 4 je razvrščen v seznam velikosti enega. 900 00:39:02,610 --> 00:39:04,210 Zdaj pa grem, da na številko 2. 901 00:39:04,210 --> 00:39:07,670 Številka 2 sem zdaj dogaja, da vstavite v pravem mestu. 902 00:39:07,670 --> 00:39:08,680 Torej, če ne 2 pripada? 903 00:39:08,680 --> 00:39:09,824 Očitno je, da sem. 904 00:39:09,824 --> 00:39:11,490 Torej, pojdi naprej in korak nazaj, če bi lahko. 905 00:39:11,490 --> 00:39:14,406 In zakaj ne bi vi vzemite vaša glasba stoji z vami tokrat. 906 00:39:14,406 --> 00:39:17,020 In naj na silo vstavite v začetku seznama. 907 00:39:17,020 --> 00:39:17,936 Torej, malo več dela. 908 00:39:17,936 --> 00:39:20,890 Moral sem premakniti Jacoba okoli, in kako ti je ime? 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 Ampak vsaj nisem šel naprej in nazaj. 912 00:39:24,350 --> 00:39:25,739 Jaz sem samo pokazal stvari, kot sem šel. 913 00:39:25,739 --> 00:39:27,530 Jaz sem jih samo vstavite na pravem mestu. 914 00:39:27,530 --> 00:39:29,220 6, to je dejansko zelo enostavno. 915 00:39:29,220 --> 00:39:31,510 Naj te vstavite tam, če Hotel sem, da se premaknete skozi rahlo. 916 00:39:31,510 --> 00:39:32,870 Številka 8, prav tako zelo enostavno. 917 00:39:32,870 --> 00:39:33,741 Točno tam. 918 00:39:33,741 --> 00:39:34,240 Prekleto. 919 00:39:34,240 --> 00:39:37,590 Številka 1 ne moremo preprosto zamenjali z Amin tukaj, 920 00:39:37,590 --> 00:39:39,340 ker to se dogaja za nered naročila. 921 00:39:39,340 --> 00:39:40,660 Torej moramo biti malo bolj pameten. 922 00:39:40,660 --> 00:39:42,770 Torej, Artie, če bi lahko back up za trenutek. 923 00:39:42,770 --> 00:39:46,550 Pojdimo naprej in premik zdaj, za razliko od naših prejšnjih algoritmov, 924 00:39:46,550 --> 00:39:50,910 da bi naredili prostor za Artie prav tu na začetku. 925 00:39:50,910 --> 00:39:54,690 Torej, na koncu dneva, sem nekako to, kar sem si želel, da bi se izognili prej. 926 00:39:54,690 --> 00:39:57,770 In tako je moj algoritem je neke of obrnil, intelektualno, 927 00:39:57,770 --> 00:39:59,070 od tistega, kar je bilo prvotno. 928 00:39:59,070 --> 00:40:01,240 Jaz samo opravljam prestavljanje na drugo točko. 929 00:40:01,240 --> 00:40:02,291 Zdaj sem na 3. 930 00:40:02,291 --> 00:40:02,790 Oh, prekleto. 931 00:40:02,790 --> 00:40:04,039 Moramo storiti še enkrat več dela. 932 00:40:04,039 --> 00:40:05,060 Torej, kaj je porinil ven. 933 00:40:05,060 --> 00:40:09,360 Pojdimo 8, 6, 4-- oh Oh-- in 3 bo šel tam. 934 00:40:09,360 --> 00:40:11,490 Torej vsaj rahlih prihrankov tokrat. 935 00:40:11,490 --> 00:40:13,100 7, ni preveč dela, ki jih je treba storiti. 936 00:40:13,100 --> 00:40:15,370 Torej, če želite, da pop nazaj, pa vas vstaviti. 937 00:40:15,370 --> 00:40:17,440 In nenazadnje, 5, če vas želite pop nazaj, 938 00:40:17,440 --> 00:40:22,610 Potrebujemo vas premakne, vas, ti, dokler petih je na mestu. 939 00:40:22,610 --> 00:40:25,670 >> Torej, zdaj, da se to pri Visoka raven grafično, 940 00:40:25,670 --> 00:40:31,080 Naredimo ta algoritem vizualizacija en dodaten čas. 941 00:40:31,080 --> 00:40:33,580 Torej se to, kar imenujemo vstavljanja vrste. 942 00:40:33,580 --> 00:40:37,700 Mi bomo teči enako hitro, in ga začnete tukaj. 943 00:40:37,700 --> 00:40:39,580 In to, preveč, ima drugačen občutek. 944 00:40:39,580 --> 00:40:42,180 To je nekako boljši in bolje, vendar ni nikoli popolna 945 00:40:42,180 --> 00:40:44,630 dokler ne grem in gladka v teh vrzeli. 946 00:40:44,630 --> 00:40:47,860 Ker, še enkrat, jaz sem samo pokazal, kaj Jaz pa sem dal od leve proti desni. 947 00:40:47,860 --> 00:40:50,350 Torej nisem dobil tako srečen da je bilo vse popolno. 948 00:40:50,350 --> 00:40:54,190 Zato smo imeli ti malo mispositions da smo osnovna sčasoma. 949 00:40:54,190 --> 00:40:58,890 >> Torej vseh teh algoritmov zdi teči na nekoliko različno hitro. 950 00:40:58,890 --> 00:41:02,030 V resnici, ki bi rekli, da je Najbolj ali najhitrejši do sedaj? 951 00:41:02,030 --> 00:41:03,450 Bubble sort, prvi? 952 00:41:03,450 --> 00:41:05,000 Izbor sort, druga? 953 00:41:05,000 --> 00:41:08,450 Insertion sort, tretji? 954 00:41:08,450 --> 00:41:10,710 Slišal sem nekaj izbor sort. 955 00:41:10,710 --> 00:41:13,280 Druge misli? 956 00:41:13,280 --> 00:41:16,880 >> Tako se izkaže, da vsi od teh algoritmov 957 00:41:16,880 --> 00:41:22,400 so v osnovi enako učinkovit kot vsak other-- ali, nasprotno, prav tako kot 958 00:41:22,400 --> 00:41:25,980 neučinkovita kot medsebojno saj lahko naredimo bistveno 959 00:41:25,980 --> 00:41:28,120 boljši od vseh treh teh algoritmov. 960 00:41:28,120 --> 00:41:29,990 In to je malo belo laž, preveč. 961 00:41:29,990 --> 00:41:32,580 ko sem rekel, kot učinkovita ali kot neučinkovita, 962 00:41:32,580 --> 00:41:35,040 da je vsaj za super-velike vrednosti n. 963 00:41:35,040 --> 00:41:38,450 Ko imamo le osem ljudi tukaj, ali morda 50 ali tako bari na zaslonu, 964 00:41:38,450 --> 00:41:41,645 boste popolnoma opazili razlike med temi tremi algoritmov. 965 00:41:41,645 --> 00:41:44,020 Vendar, kot je n število ljudi, ali več številk, 966 00:41:44,020 --> 00:41:46,350 ali število oseb v telefonu knjigo, ali je število spletnih strani 967 00:41:46,350 --> 00:41:48,230 v Googlovi zbirki podatkov dobi večji in večji, 968 00:41:48,230 --> 00:41:51,650 bomo videli, da so vsi trije od teh algoritmi so pravzaprav zelo slaba. 969 00:41:51,650 --> 00:41:54,060 In lahko naredimo bistveno boljši od tega. 970 00:41:54,060 --> 00:41:56,830 >> Oglejmo pogled, končno, kaj bi lahko ti algoritmi 971 00:41:56,830 --> 00:41:59,520 zveni kot v kontekst nekaj drugih 972 00:41:59,520 --> 00:42:03,550 kot tudi s pomočjo tega vizualizacija tukaj 973 00:42:03,550 --> 00:42:06,860 ki nam bo predstavil število algoritmov. 974 00:42:06,860 --> 00:42:10,330 Pojdimo naprej in čestitam naši udeleženci tukaj, od katerih 975 00:42:10,330 --> 00:42:11,690 sami razporejene zelo dobro. 976 00:42:11,690 --> 00:42:15,124 Če želite vzeti poslovilno darilo. 977 00:42:15,124 --> 00:42:16,540 Lahko obdržite vaše številke, kot dobro. 978 00:42:16,540 --> 00:42:19,460 979 00:42:19,460 --> 00:42:22,520 In kaj boste videli, ali bolje slišati, zdaj, 980 00:42:22,520 --> 00:42:25,710 je, da je, kot smo dal zvoke za vsakega od teh palic 981 00:42:25,710 --> 00:42:28,660 in ga poveže s programsko opremo, drugačno frekvenco zvoka, 982 00:42:28,660 --> 00:42:33,970 lahko ogradite vaš um več audioly okoli, kaj vsaka od teh stvari 983 00:42:33,970 --> 00:42:34,470 izgledal. 984 00:42:34,470 --> 00:42:39,325 Prvi od katerih je vstavljanja sortiranje 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 >> To je bubble sort. 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 >> Izbira 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 >> Nekaj, kar ti 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 to za CS50. 1000 00:44:09,430 --> 00:44:13,360 Vas bomo videli v sredo. 1001 00:44:13,360 --> 00:44:16,671 >> NARRATOR: In zdaj, "Deep Misli, "po Daven Farnham. 1002 00:44:16,671 --> 00:44:19,910 1003 00:44:19,910 --> 00:44:21,590 Zakaj je za zanko? 1004 00:44:21,590 --> 00:44:23,200 Zakaj ne bi bilo bolje? 1005 00:44:23,200 --> 00:44:25,970 Sem narediti pet zanko. 1006 00:44:25,970 --> 00:44:28,720 >> [Smeh]