1 00:00:00,000 --> 00:00:10,982 2 00:00:10,982 --> 00:00:11,940 DAVID Malan: U redu. 3 00:00:11,940 --> 00:00:16,470 Dakle, ovo je CS50, a to je Sada početak tjedna tri. 4 00:00:16,470 --> 00:00:19,960 >> Dakle, do sada, mi smo pisanje programa u C 5 00:00:19,960 --> 00:00:23,210 da izgleda malo nešto kao ovo ovdje. 6 00:00:23,210 --> 00:00:25,470 Dakle, imamo par Oštar uključuje na vrhu. 7 00:00:25,470 --> 00:00:28,490 Imamo int, glavni, praznina, i onda se nešto učiniti u sredini, 8 00:00:28,490 --> 00:00:30,590 Neki malo koda unutar te funkcije. 9 00:00:30,590 --> 00:00:34,170 No, ključna je bila činjenica da mi smo bili rekavši nevažeće ovdje. 10 00:00:34,170 --> 00:00:39,320 Dakle nevažeće, sve ovo vrijeme, navodi se da je ovaj program, kada pokrenete, 11 00:00:39,320 --> 00:00:41,300 može se pokrenuti samo putem svoje ime. 12 00:00:41,300 --> 00:00:46,330 Ne možete upisati bilo koje druge riječi ili Brojevi Nakon programa u ime kada 13 00:00:46,330 --> 00:00:46,830 to trčanje. 14 00:00:46,830 --> 00:00:51,200 Tako, na primjer, ako program su sastaviti u datoteci pod nazivom Pozdrav, 15 00:00:51,200 --> 00:00:53,480 možete učiniti ./hello, ali to je to. 16 00:00:53,480 --> 00:00:56,750 >> Jedini način da bi mogao dali svoj doprinos ovom programu 17 00:00:56,750 --> 00:00:57,960 je pozivom funkcije. 18 00:00:57,960 --> 00:00:59,790 Na primjer, ono što je funkcija smo koristili do sada 19 00:00:59,790 --> 00:01:00,950 kako bi dobili informacije od korisnika? 20 00:01:00,950 --> 00:01:02,117 >> PUBLIKA: Dobiti niz. 21 00:01:02,117 --> 00:01:04,700 DAVID Malan: Da biste dobili niz, ili dobili int, ili ste vidjeli druge, 22 00:01:04,700 --> 00:01:07,630 čak i ako ih niste koristili još, kao što se dugo, dugo i slično. 23 00:01:07,630 --> 00:01:09,380 Ali pretpostavimo da smo zapravo želim početi 24 00:01:09,380 --> 00:01:12,760 pisanje programa koji su malo više svestran, a, iskreno, malo više 25 00:01:12,760 --> 00:01:15,090 poput naredbi koje ste dobivam, nadamo se, 26 00:01:15,090 --> 00:01:16,550 malo navikli. 27 00:01:16,550 --> 00:01:18,560 Kao cd prostora Dropbox. 28 00:01:18,560 --> 00:01:20,800 To, naravno, mijenja Vaš imenik, uz pretpostavku 29 00:01:20,800 --> 00:01:23,590 ti si u Johna Harvarda kuće katalog, na svoj Dropbox mapu. 30 00:01:23,590 --> 00:01:27,380 U međuvremenu, naredba ovako stvara novi katalog pod nazivom pset2, 31 00:01:27,380 --> 00:01:30,290 Kao što ste možda već i Uskoro za problem će postavljena dva. 32 00:01:30,290 --> 00:01:33,970 Napravite Pozdrav, naravno, je naredba koja gradi program pod nazivom Pozdrav 33 00:01:33,970 --> 00:01:35,770 iz datoteke pod nazivom Pozdrav točka c. 34 00:01:35,770 --> 00:01:39,140 I u svakoj od tih slučajevi, sada, imali smo 35 00:01:39,140 --> 00:01:43,620 pružiti argument o tzv naredbenog retka, treperi brz, 36 00:01:43,620 --> 00:01:48,540 tako da je make zna što graditi, i tako da mkdir zna što mape za stvaranje, 37 00:01:48,540 --> 00:01:51,110 i tako da se cd zna gdje želite ići. 38 00:01:51,110 --> 00:01:54,720 No, do sada, mi stalno govoriš da je glavni, zadani funkcija, 39 00:01:54,720 --> 00:01:58,500 ima void izraz unutar tih zagrada, 40 00:01:58,500 --> 00:02:01,250 što znači da je to ne mogu poduzimati nikakve argumente. 41 00:02:01,250 --> 00:02:03,240 >> Dakle, počevši od danas, ono što ćemo učiniti 42 00:02:03,240 --> 00:02:06,270 je, idemo za početak podržavanje stvari kao što je ovaj još. 43 00:02:06,270 --> 00:02:08,990 U stvari, u ovom slučaju, koji vas obično ne ručno upisati, 44 00:02:08,990 --> 00:02:11,130 Provjerite je to za nas, ne postoje 45 00:02:11,130 --> 00:02:15,840 jedan, ali jedan, dva, tri dodatna žice nakon Program je nazvan 46 00:02:15,840 --> 00:02:16,850 jeka. 47 00:02:16,850 --> 00:02:18,240 Pa kako ćemo postići? 48 00:02:18,240 --> 00:02:20,260 >> Pa, počevši od danas, U slučajevima u kojima želimo 49 00:02:20,260 --> 00:02:22,855 kako bi dali svoj doprinos putem Takozvani naredbenog retka, 50 00:02:22,855 --> 00:02:24,980 ćemo početi dodavanjem Evo što je u yellow-- 51 00:02:24,980 --> 00:02:30,520 zamjene prazninu s int argc zarezom Niz argv otvorena zagrada blizu nosač. 52 00:02:30,520 --> 00:02:32,520 Sada je to interesantno za nekoliko razloga. 53 00:02:32,520 --> 00:02:35,690 Jedan od njih, to će neka nam pisati programi koji su malo više dinamike. 54 00:02:35,690 --> 00:02:37,570 No, više uvjerljivo, to će otvoriti 55 00:02:37,570 --> 00:02:40,340 Sada razgovor kao da se ono nizovi stvarno može 56 00:02:40,340 --> 00:02:43,300 može koristiti, za ono nizu Stvarno je ispod haube, 57 00:02:43,300 --> 00:02:47,320 do sljedećeg tjedna, kada ćemo početi ronjenje u još dublje kako stroj 58 00:02:47,320 --> 00:02:48,590 čineći sve ove stvari poslu. 59 00:02:48,590 --> 00:02:51,920 Ali za sada, idemo crtati, možda, slike. 60 00:02:51,920 --> 00:02:54,950 >> Kada napisati program s glavna proglasio 61 00:02:54,950 --> 00:02:58,810 na taj način, tako da se glavna traje dva argumenta, int 62 00:02:58,810 --> 00:03:03,233 i-- što tip podataka je drugi argument? 63 00:03:03,233 --> 00:03:04,529 >> PUBLIKA: Array. 64 00:03:04,529 --> 00:03:05,320 DAVID Malan: Array. 65 00:03:05,320 --> 00:03:09,170 Tako to izgleda na prvi pogled kao da je niz, ali primijetiti uglate zagrade. 66 00:03:09,170 --> 00:03:12,760 Sjetite se kad smo zadnji put uvedena Pojam niza. 67 00:03:12,760 --> 00:03:16,210 I nizovi koristiti uglate zagrade u nekoliko konteksta. 68 00:03:16,210 --> 00:03:19,160 Možda ćete koristiti kvadrat nosači ići u niz 69 00:03:19,160 --> 00:03:22,710 i dobiti određeni element, kao što je Nosač 0 ili nosač 1 ili 2 nosač. 70 00:03:22,710 --> 00:03:25,500 No, vidjeli smo, ako je kratko, prošli tjedan da također 71 00:03:25,500 --> 00:03:28,790 koristiti ove uglate zagrade na proglasiti veličine od niza, 72 00:03:28,790 --> 00:03:31,790 Ako unaprijed znate koliko ori- ili koliko žice ili što god 73 00:03:31,790 --> 00:03:32,630 zapravo žele. 74 00:03:32,630 --> 00:03:34,790 Tako ispada postoji treći kontekst ovdje 75 00:03:34,790 --> 00:03:37,890 da nema broj unutar od uglate zagrade. 76 00:03:37,890 --> 00:03:41,920 Kad ste naveli, kao što sam ja ovdje, ime nešto poput argv, 77 00:03:41,920 --> 00:03:44,550 koji je samo fancy način govoreći argument vektor, koji 78 00:03:44,550 --> 00:03:47,750 je još jedan fancy način rekavši niz argumenata, 79 00:03:47,750 --> 00:03:50,870 otvorena zagrada blizu nosač samo znači da ne mora nužno 80 00:03:50,870 --> 00:03:52,960 unaprijed znati koliko je velika Niz će biti, 81 00:03:52,960 --> 00:03:55,070 ali znate da će biti niz. 82 00:03:55,070 --> 00:03:57,320 Dakle, ako vi ne znate broj ne stavi tamo, 83 00:03:57,320 --> 00:04:01,160 za otvoreni nosača uskoj zagrada znači da argv nije niz, 84 00:04:01,160 --> 00:04:03,124 ali niz žice. 85 00:04:03,124 --> 00:04:05,040 Dakle, sintaktički, ako vas Sjetite se prošlog tjedna, 86 00:04:05,040 --> 00:04:09,460 to je vrlo slično rekavši nešto poput int dobi otvorena zagrada, 87 00:04:09,460 --> 00:04:10,984 i onda se nešto kasnije. 88 00:04:10,984 --> 00:04:12,150 Pa što to izgledati? 89 00:04:12,150 --> 00:04:13,399 Idemo zapravo nacrtati. 90 00:04:13,399 --> 00:04:18,756 Dakle, kada ste pokrenuti ovaj program s glavnim nakon što je dva argumenta definirani unutar 91 00:04:18,756 --> 00:04:21,339 od tih zagrada, što uglavnom imaju najmanje dvije komade 92 00:04:21,339 --> 00:04:23,560 memorije predao za vas ispod haube. 93 00:04:23,560 --> 00:04:26,550 Jedan od njih, kao što ću privlači kao ovaj pravokutnik, će se zvati argc. 94 00:04:26,550 --> 00:04:30,645 I baš kao brzi recap, što je tip podataka argc? 95 00:04:30,645 --> 00:04:31,270 Tako da je int. 96 00:04:31,270 --> 00:04:33,480 Dakle, broj se događa ići u argc-- okreta 97 00:04:33,480 --> 00:04:35,660 da se zalaže za argument računati. 98 00:04:35,660 --> 00:04:38,887 U međuvremenu, ja sam nacrtana argv kao polje. 99 00:04:38,887 --> 00:04:40,970 A ja stvarno ne znam koliko dugo će to biti, 100 00:04:40,970 --> 00:04:42,470 Tako je za današnje potrebe dot dot dot. 101 00:04:42,470 --> 00:04:43,636 To bi moglo dobiti neke dužine. 102 00:04:43,636 --> 00:04:45,640 Ali ja sam ovdje na slici najmanje četiri pravokutnika. 103 00:04:45,640 --> 00:04:50,970 Dakle argv komad memorije koja pohranjuje string string string dot dot dot, 104 00:04:50,970 --> 00:04:53,950 i argc je samo jedan komad memorije za cijeli broj. 105 00:04:53,950 --> 00:04:55,710 >> Tako sada, budimo malo precizniji. 106 00:04:55,710 --> 00:04:59,200 Ako, kad imam konce U tom nizu, pod nazivom 107 00:04:59,200 --> 00:05:03,290 argv, želim da se na njih individualno, baš kao i prošlog tjedna, 108 00:05:03,290 --> 00:05:05,670 ćemo koristiti zapis kao argv nosač 0 109 00:05:05,670 --> 00:05:07,650 da se prva stvar niz. 110 00:05:07,650 --> 00:05:10,440 Argv nosač 1 dobiti Druga stvar, i tako dalje. 111 00:05:10,440 --> 00:05:14,597 Ključ je ovdje da smo još uvijek 0 indexed-- mi smo još uvijek računajući od 0. 112 00:05:14,597 --> 00:05:16,430 Tako sada neka je zapravo stavio nešto u tome. 113 00:05:16,430 --> 00:05:21,670 Da mi je sastaviti program pod nazivom Pozdrav iz datoteke pod nazivom Pozdrav točka c, 114 00:05:21,670 --> 00:05:24,340 i onda sam pokrenuti taj program s točkom slash Pozdrav, 115 00:05:24,340 --> 00:05:28,380 ono moje računalo, prijenosno računalo, izgledaju ispod haube 116 00:05:28,380 --> 00:05:31,300 Trenutak sam pokrenuti točkica slash bok i udario Unesite? 117 00:05:31,300 --> 00:05:33,500 Pa, to je možda što bismo mogli opisati 118 00:05:33,500 --> 00:05:37,010 kao sadržaj vašeg računala memorije, ili RAM-- Random Access Memory. 119 00:05:37,010 --> 00:05:40,330 Drugim riječima, računalo, nekako za vas magično, 120 00:05:40,330 --> 00:05:45,360 stavlja broj 1 u argc, AKA argcount, i to stavlja doslovno string 121 00:05:45,360 --> 00:05:48,200 ./hello u argv zagrada 0. 122 00:05:48,200 --> 00:05:51,750 Nemam pojma, iskreno rečeno, ono što je argv u držaču 1 ili 2 ili 3, 123 00:05:51,750 --> 00:05:55,550 jer ako korisnik nije upisali ništa osim ./hello, 124 00:05:55,550 --> 00:05:58,550 ćemo pretpostaviti da se radi o su najvjerojatnije vrijednosti za smeće, 125 00:05:58,550 --> 00:05:59,700 da se tako izrazim. 126 00:05:59,700 --> 00:06:02,650 Ti komadi memorije postoje, ali to ne ovisi o nama 127 00:06:02,650 --> 00:06:05,710 gledati na njih, jer je argcount samo jedan. 128 00:06:05,710 --> 00:06:07,870 >> Sada je, u međuvremenu, ako sam pisati pokrenuti drugi program, 129 00:06:07,870 --> 00:06:12,250 CD-a, što je više ispravno naredbe, u svom trepćući prompt-- cd prostora 130 00:06:12,250 --> 00:06:17,200 Dropbox-- kad sam pokrenuti da, učinkovito, kad cd program pokrenuti, argc, 131 00:06:17,200 --> 00:06:22,270 unutar memorije mog računala, je za najviše najkraća drugi broj 2. 132 00:06:22,270 --> 00:06:25,936 A onda argv nosač O je cd, argv nosač 1 ima Dropbox, 133 00:06:25,936 --> 00:06:28,560 i onda naravno naredba završi, tako da sve ove memorije 134 00:06:28,560 --> 00:06:30,420 u biti odlazi i koristi se za nešto drugo. 135 00:06:30,420 --> 00:06:32,270 I to je razlog zašto sam rekao Samo djelić sekunde. 136 00:06:32,270 --> 00:06:35,720 >> U međuvremenu, ako to učinimo mkdir pset2, slika izgleda gotovo isto, 137 00:06:35,720 --> 00:06:37,900 ali s različitim žice unutar argv. 138 00:06:37,900 --> 00:06:42,570 Ako ja Zveket crtica Pozdrav Pozdrav točka c, ista ideja. 139 00:06:42,570 --> 00:06:47,060 Više stvari se popunjava za argv, a argc, naravno, je 4. 140 00:06:47,060 --> 00:06:49,150 Dakle, drugim riječima, iako je ovaj niz 141 00:06:49,150 --> 00:06:52,950 možda se dot dot dot, nekih promjenjive duljine, da se tako izrazim, 142 00:06:52,950 --> 00:06:56,720 ćete uvijek znati gdje je kraj njega je, jer argc će vam reći 143 00:06:56,720 --> 00:07:00,120 U kojem trenutku morate prestati gledajući elemenata u argv. 144 00:07:00,120 --> 00:07:03,660 Možete gledati samo na četiri ukupno u ovom slučaju. 145 00:07:03,660 --> 00:07:06,600 >> Tako ćemo sada pogledati, možda, jednostavan program. 146 00:07:06,600 --> 00:07:09,070 Jedan da je samo rekao 'bok' da netko poput Zamyla. 147 00:07:09,070 --> 00:07:12,620 Dakle, tvrdim da ću napisati program U samo nekoliko trenutaka putem koji sam mogao učiniti 148 00:07:12,620 --> 00:07:16,670 ./hello prostor Zamyla, a onda želim moj program ispisati nešto 149 00:07:16,670 --> 00:07:18,520 super jednostavno poput "Zdravo, Zamyla." 150 00:07:18,520 --> 00:07:20,100 Sada smo u prošlosti sam se getstring. 151 00:07:20,100 --> 00:07:22,850 Dakle, u prošlosti, čak i ako ti si novi u programiranju, 152 00:07:22,850 --> 00:07:27,180 izgledi su mogli ščepati Program koji koristi getstring 153 00:07:27,180 --> 00:07:29,390 a zatim koristi printf pozdraviti Zamyla. 154 00:07:29,390 --> 00:07:31,290 No, nemojmo koristiti getstring ovaj put. 155 00:07:31,290 --> 00:07:37,510 Dopustite mi da umjesto toga ići u Appliant i ne uključuju standardnu ​​sam O dot h. 156 00:07:37,510 --> 00:07:41,160 Dopustite mi također uključuju CS50 dot h. 157 00:07:41,160 --> 00:07:44,730 Sada int glavni, a sad sam Ne ide to učiniti i danas nevažeće. 158 00:07:44,730 --> 00:07:51,200 Umjesto toga, ja ću učiniti int argc Niz argv otvorena zagrada blizu nosač, 159 00:07:51,200 --> 00:07:52,640 ne navodeći broj. 160 00:07:52,640 --> 00:07:54,644 I sada ovdje je moja tzv učiniti. 161 00:07:54,644 --> 00:07:57,560 Ono što ću učiniti sada je, ja sam će učiniti malo skok vjere, 162 00:07:57,560 --> 00:08:00,560 Ja ću pretpostaviti da je korisnik će koristiti ovaj program ispravno, 163 00:08:00,560 --> 00:08:04,980 i ja sam jednostavno ide učiniti printf Pozdrav,% sn. 164 00:08:04,980 --> 00:08:06,630 Dakle, ništa novo. 165 00:08:06,630 --> 00:08:11,470 Ali želim sada staviti što god riječ korisnik upiše poslije ime programa. 166 00:08:11,470 --> 00:08:16,970 Dakle, ako ja ./hello prostor Zamyla, ja želim nekako programski pristup 167 00:08:16,970 --> 00:08:20,870 Citat završen citat "Zamyla." pa sam Možete ići u moju tvrdnju vektor, 168 00:08:20,870 --> 00:08:25,980 moj niz žice, a ako zapovjedništvom, opet, bio ./hello prostor Zamyla, 169 00:08:25,980 --> 00:08:29,340 ono broj želim staviti u argv ovdje? 170 00:08:29,340 --> 00:08:29,840 PUBLIKE: 1. 171 00:08:29,840 --> 00:08:32,355 DAVID Malan: 1, jer je Nosač 0 Ispada 172 00:08:32,355 --> 00:08:34,230 će biti Naziv programa, kao što smo vidjeli. 173 00:08:34,230 --> 00:08:37,789 Dakle nosač 1 je prva riječ I da, korisnik, su upisali. 174 00:08:37,789 --> 00:08:39,559 Ja ću ići naprijed i spasiti ovo. 175 00:08:39,559 --> 00:08:42,830 Ja ću otići u moju mapu gdje sam stavio ovu sliku. 176 00:08:42,830 --> 00:08:44,920 Ja ću učiniti da Hello 3. 177 00:08:44,920 --> 00:08:46,230 COMP IO-a u redu. 178 00:08:46,230 --> 00:08:51,380 ./hello Zamyla Enter. 179 00:08:51,380 --> 00:08:54,480 Što sam učinio krivo? 180 00:08:54,480 --> 00:08:57,270 Bio sam uhvaćen od strane iznenađenje ja samo na trenutak tamo. 181 00:08:57,270 --> 00:08:58,230 Što sam učinio krivo? 182 00:08:58,230 --> 00:08:59,220 >> PUBLIKA: Ime. 183 00:08:59,220 --> 00:09:01,767 >> DAVID Malan: file-a zapravo zove hello3.c. 184 00:09:01,767 --> 00:09:03,850 I ja sam to učinio samo za dosljednost, jer smo 185 00:09:03,850 --> 00:09:06,550 imali hello.c-a u prošlosti u online kodu. 186 00:09:06,550 --> 00:09:11,550 Tako ćemo riješiti ovu ./hello Nosač crtica 3 Zamyla. 187 00:09:11,550 --> 00:09:12,370 Unesite. 188 00:09:12,370 --> 00:09:14,030 I sada imamo zdravo, Zamyla. 189 00:09:14,030 --> 00:09:17,650 U međuvremenu, ja mogu promijeniti u biti Rob, ili stvarno bilo koja druga riječ. 190 00:09:17,650 --> 00:09:19,230 >> Ali razmotrimo kutak slučaj. 191 00:09:19,230 --> 00:09:24,360 Ono što možda očekujete da će se dogoditi ako Ja ne upišete nečijeg imena uopće? 192 00:09:24,360 --> 00:09:25,270 >> PUBLIKA: Pogreška. 193 00:09:25,270 --> 00:09:27,300 >> DAVID Malan: pogreška neke vrste, možda. 194 00:09:27,300 --> 00:09:28,200 Da vidimo. 195 00:09:28,200 --> 00:09:29,440 Unesite. 196 00:09:29,440 --> 00:09:30,210 Null. 197 00:09:30,210 --> 00:09:33,870 Pa printf zapravo se Malo zaštitna nas 198 00:09:33,870 --> 00:09:38,131 ovdje, i doslovno ispis otvorenih zagrada null, ali čak i gorih stvari mogu dogoditi. 199 00:09:38,131 --> 00:09:40,130 I samo da pokažu nešto što je apsolutno 200 00:09:40,130 --> 00:09:42,800 ne bi trebalo raditi, idemo u ovdje i početi poking okolo. 201 00:09:42,800 --> 00:09:43,300 Zar ne? 202 00:09:43,300 --> 00:09:46,410 Ako znam da je slika u Memorija je u biti to, 203 00:09:46,410 --> 00:09:52,660 argv nosač 1 ima Zamyla, argv Nosač 0 ima ./hello ili ./hello-3. 204 00:09:52,660 --> 00:09:55,400 Ono što je u zagradi 2? 205 00:09:55,400 --> 00:09:58,210 Dakle, ja mogu odgovoriti na to ispitivati ​​sebe, zar ne? 206 00:09:58,210 --> 00:10:00,460 Ja samo mogu promijeniti 1 do 2. 207 00:10:00,460 --> 00:10:07,270 Ja sada mogu kompilirati pozdraviti 3, ./hello3 Idemo povećavanje i pritisnite Enter. 208 00:10:07,270 --> 00:10:08,270 Ups. 209 00:10:08,270 --> 00:10:10,660 Ne navodni znak. 210 00:10:10,660 --> 00:10:12,540 Zanimljivo. 211 00:10:12,540 --> 00:10:15,530 Dakle, to je vrsta cool vidjeti što je još ovdje. 212 00:10:15,530 --> 00:10:17,130 >> I što je tu unutar moj laptop? 213 00:10:17,130 --> 00:10:20,390 Idemo spasiti ga s nosača 3. 214 00:10:20,390 --> 00:10:25,190 Napravite hello3, ./hello-3. 215 00:10:25,190 --> 00:10:26,500 Znatiželjan. 216 00:10:26,500 --> 00:10:30,560 A sada idemo stvarno bold-- 50. 217 00:10:30,560 --> 00:10:34,340 Dakle, to je stvarno duboko ronjenje u memoriji mog računala. 218 00:10:34,340 --> 00:10:35,930 50 indeksi u. 219 00:10:35,930 --> 00:10:41,950 Tako bi pozdrav 3 ./hello-3. 220 00:10:41,950 --> 00:10:42,680 Znatiželjan. 221 00:10:42,680 --> 00:10:44,660 U redu, sad sam samo događa da se ne osvrće. 222 00:10:44,660 --> 00:10:47,331 Idemo u 5000. 223 00:10:47,331 --> 00:10:47,830 U redu. 224 00:10:47,830 --> 00:10:49,520 Pa neka mi kompilirati. 225 00:10:49,520 --> 00:10:51,460 Napravite hello3, ./hello-3. 226 00:10:51,460 --> 00:10:55,780 227 00:10:55,780 --> 00:10:56,460 U redu. 228 00:10:56,460 --> 00:10:59,250 Sada neki od vas, tu bi moglo biti žarulja ide off. 229 00:10:59,250 --> 00:11:01,900 Koliko imate vidi ovu poruku prije? 230 00:11:01,900 --> 00:11:03,440 U redu. 231 00:11:03,440 --> 00:11:04,420 Dakle, zašto? 232 00:11:04,420 --> 00:11:07,250 >> Tečajevi are-- a tu je drugačija stvari koje mogu izazvati ovaj, 233 00:11:07,250 --> 00:11:09,730 i jasno da ste u dobro company-- imamo jasno 234 00:11:09,730 --> 00:11:11,900 izazvao ono što se naziva greška segmentacije. 235 00:11:11,900 --> 00:11:15,890 I ne duljimo za danas, ja dotaknuo segment memorije 236 00:11:15,890 --> 00:11:17,060 da ne bi trebali imati. 237 00:11:17,060 --> 00:11:19,970 Gdje segmentu samo znači komad memorije koja ne bi trebala imati. 238 00:11:19,970 --> 00:11:25,530 Sada računalo garantira da ako ja pokrenuti ./helloZamyla da mogu dotaknuti argv 239 00:11:25,530 --> 00:11:27,760 biti nosač 0 i 1 argv nosač. 240 00:11:27,760 --> 00:11:32,730 Ali argc je vrijednost 2, to znači da sam ja samo allowed-- to je vrsta čast 241 00:11:32,730 --> 00:11:35,180 system-- na dodir Nosač 0 i 1 nosač. 242 00:11:35,180 --> 00:11:37,990 Ako sam ići dalje, postoji Apsolutno će biti memoriju postoji. 243 00:11:37,990 --> 00:11:40,660 Moj RAM postoji fizički u računalo. 244 00:11:40,660 --> 00:11:42,080 No, tko zna što je tamo? 245 00:11:42,080 --> 00:11:44,450 Zapravo, ja sam izvodi više Programi u jednom trenutku. 246 00:11:44,450 --> 00:11:46,910 Možda imam seen-- da nisam to na Appliant 247 00:11:46,910 --> 00:11:49,937 ali na mom Macu ili PC-- Možda imam vidjeli sadržaj e-pošte. 248 00:11:49,937 --> 00:11:52,270 Možda sam vidjela trenutak Poruka Nedavno sam poslao. 249 00:11:52,270 --> 00:11:55,390 Sve što bi moglo biti zadržavali oko memorije 250 00:11:55,390 --> 00:11:59,180 moglo pristupiti putem to proizvoljna trg nosač zapis. 251 00:11:59,180 --> 00:12:02,850 Ili, još gore, možda ćete morati pronašao jedan od mojih lozinke 252 00:12:02,850 --> 00:12:05,859 da sam nedavno bih upisali u, da Program su pohranjene u memoriji kako 253 00:12:05,859 --> 00:12:07,900 da me autentičnost, i onda samo vrsta je ostavio 254 00:12:07,900 --> 00:12:09,910 u RAM-u dok nisam prestao taj program. 255 00:12:09,910 --> 00:12:12,860 >> I doista, ovo je jedan od opasnost i jedan ovlasti 256 00:12:12,860 --> 00:12:15,980 korištenja jezika poput C Imate nesmetan pristup 257 00:12:15,980 --> 00:12:18,860 na cjelokupni sadržaj programa u memoriju, 258 00:12:18,860 --> 00:12:21,340 a što loše dečki mogu čak učiniti u tim cases-- 259 00:12:21,340 --> 00:12:23,807 pogotovo kad smo doći do web programiranja 260 00:12:23,807 --> 00:12:26,890 prema kraju semestra, mi ćemo ponovno ovu topic-- je guranje oko, 261 00:12:26,890 --> 00:12:31,660 potencijalno, netko je na računalu, memorije i naći takve neobične stvari 262 00:12:31,660 --> 00:12:32,570 kao što smo vidjeli tamo. 263 00:12:32,570 --> 00:12:36,900 Ili još gore, ali, lozinke koje je on ili ona tada može koristiti za napraviti loše stvari. 264 00:12:36,900 --> 00:12:40,240 >> Dakle, jasno sam to trebao učiniti to, zbog čudne stvari se počinju dogoditi. 265 00:12:40,240 --> 00:12:42,310 Doista, ovo je program pad sustava. 266 00:12:42,310 --> 00:12:44,580 To bi bila ekvivalent Mac OS ili Windows 267 00:12:44,580 --> 00:12:46,770 Prozor programa jednostavno nestaju. 268 00:12:46,770 --> 00:12:48,300 Došlo je do neočekivane pogreške. 269 00:12:48,300 --> 00:12:50,840 U naredbenog retka okruženju vidimo nešto poput ovoga. 270 00:12:50,840 --> 00:12:54,480 Ali, to je razlog zašto, jednostavno sam se sam dira memorija koja ne pripada meni. 271 00:12:54,480 --> 00:12:57,090 >> Tako ćemo braniti protiv ovo malo na drugačiji način 272 00:12:57,090 --> 00:12:59,010 gledajući ovaj program ovdje. 273 00:12:59,010 --> 00:13:01,000 Dakle, opet, kostur kako smo vidjeli earlier-- 274 00:13:01,000 --> 00:13:02,480 a ja sam istaknuo ovaj put int. 275 00:13:02,480 --> 00:13:05,900 I sve to vrijeme glavna ima doista vratio vrijednost. 276 00:13:05,900 --> 00:13:09,120 Iako se u većini naših predavanja primjeri nikada nismo nekada 277 00:13:09,120 --> 00:13:10,990 vratiti ništa u glavni. 278 00:13:10,990 --> 00:13:13,710 Mi samo napisati printf izbliza kovrčava braće i to je to. 279 00:13:13,710 --> 00:13:16,500 Ali za besplatno, što prevodilac radili za vas, 280 00:13:16,500 --> 00:13:19,510 učinkovito, vraća 0 za vas. 281 00:13:19,510 --> 00:13:22,950 Uključuje greda-- i to je malo counterintuitive-- da 0 je dobro. 282 00:13:22,950 --> 00:13:24,690 To ne znači lažno po sebi. 283 00:13:24,690 --> 00:13:29,080 0 je dobra, i bilo koji ne-0 vrijednost, svijet je odlučio, 284 00:13:29,080 --> 00:13:30,619 može značiti pogrešku. 285 00:13:30,619 --> 00:13:32,910 Dakle, ako ste ikada zabrljati nešto gore na vašem računalu, 286 00:13:32,910 --> 00:13:36,600 ili programa je upravo umro na vas i ste stečen neke pogrešne prozor 287 00:13:36,600 --> 00:13:40,360 na zaslonu, govoreći o pogrešci negativna 49 ili pogreška 23-- 288 00:13:40,360 --> 00:13:44,170 Neki naizgled proizvoljna value-- to je jer programer je hard-kodirane 289 00:13:44,170 --> 00:13:49,370 vrijednost kao negativna 49 ili pozitivan 23 zastupati bilo koji broj, usudio bih se reći, 290 00:13:49,370 --> 00:13:53,340 od 4 milijarde mogućih stvari koje bi mogle poći po zlu u programu. 291 00:13:53,340 --> 00:13:55,700 >> Pa kako bih mogao uzeti Prednost to osobno? 292 00:13:55,700 --> 00:13:58,970 Pa, neka mi se otvori program da sam napisao unaprijed, 293 00:13:58,970 --> 00:14:01,450 i guranje oko online zove Hello 4. 294 00:14:01,450 --> 00:14:05,650 I to je gotovo identična, osim što Njegova je dobio malo provjeru pogrešaka. 295 00:14:05,650 --> 00:14:09,660 U ovom slučaju, ja sam opet proglašena Glavna kao uzimanje dva argumenta, 296 00:14:09,660 --> 00:14:13,180 ali ovaj put, na liniji 17, obavijest Radim malo ček razum. 297 00:14:13,180 --> 00:14:17,100 Ja sam pazeći da argc iznosi iznosi 2. 298 00:14:17,100 --> 00:14:18,960 Jer ako je, da znači ja mogu sigurno 299 00:14:18,960 --> 00:14:21,420 kontaktu ne samo nosač 0, no nosač 1. 300 00:14:21,420 --> 00:14:24,330 I sam ići naprijed i ispisati, U tom slučaju, Zamyla ili Rob 301 00:14:24,330 --> 00:14:26,020 ili što god riječ sam upisali van. 302 00:14:26,020 --> 00:14:28,020 A sada samo da bi dobili malo više ispravan, 303 00:14:28,020 --> 00:14:31,910 Idem izričito vratiti 0 da označi sve je dobro. 304 00:14:31,910 --> 00:14:33,300 Ništa loše dogodilo. 305 00:14:33,300 --> 00:14:38,590 >> No, prema konvenciji, idem vratiti 1, ili iskreno bilo ne-0 vrijednost, 306 00:14:38,590 --> 00:14:40,160 ako je nešto pošlo po zlu. 307 00:14:40,160 --> 00:14:43,270 Sada korisnik ne ide stvarno primijetiti što se događa. 308 00:14:43,270 --> 00:14:50,410 Doista, ako idem u ovaj imenik, smo uvećali i ne bi Hello 4, 309 00:14:50,410 --> 00:14:54,210 ./hello-4 Zamyla ponaša kao ja očekujem. 310 00:14:54,210 --> 00:14:58,570 Ali, ako sam umjesto toga ne upišete ništa, ništa ne čini da se dogodi, 311 00:14:58,570 --> 00:14:59,680 ali ona ne pada. 312 00:14:59,680 --> 00:15:04,660 A ako sam umjesto toga nešto učiniti kao što je Rob je Proctor 313 00:15:04,660 --> 00:15:07,550 u Thayer-- dijeljenja proizvoljne informacije. 314 00:15:07,550 --> 00:15:13,680 No, obavijest, argv 1, 2, 3, 4, i 5. Sada bi trebala postojati u sjećanju. 315 00:15:13,680 --> 00:15:16,540 To, također, nije ono što moj program očekuje, 316 00:15:16,540 --> 00:15:20,300 jer sam provjeriti je li argc iznosi iznosi 2 ili ne. 317 00:15:20,300 --> 00:15:22,140 Tako sam sada sam brani protiv toga. 318 00:15:22,140 --> 00:15:25,290 >> Sada, kao što je na stranu, mi programmer-- odnosno smo users-- 319 00:15:25,290 --> 00:15:29,670 nikada ne vide da 0 ili 1, ali koristeći alat koji se zove debugger, ili druge alate, 320 00:15:29,670 --> 00:15:32,250 kao što ćemo vidjeti prije dugo, programer 321 00:15:32,250 --> 00:15:36,590 zapravo može vidjeti što bi moglo biti ide po zlu unutar svog programa. 322 00:15:36,590 --> 00:15:39,170 >> Dakle, bilo kakva pitanja o argc? 323 00:15:39,170 --> 00:15:40,873 Da. 324 00:15:40,873 --> 00:15:45,292 >> PUBLIKA: Vidio sam gdje su nisu imali karakter, [nečujan] 325 00:15:45,292 --> 00:15:49,669 Samo je rekao niz zvijezda D, poput karakter zvjezdica zarez. 326 00:15:49,669 --> 00:15:50,710 Jesu li oni ekvivalent ovdje? 327 00:15:50,710 --> 00:15:51,626 >> DAVID Malan: Oni su. 328 00:15:51,626 --> 00:15:55,080 Dakle, pitanje je, imate povremeno vidio programi 329 00:15:55,080 --> 00:15:57,270 kao što je ovaj koji to ne kažu niz argv nosač 330 00:15:57,270 --> 00:16:01,015 ali umjesto da kažu nešto kao char zvijezda argv nosač. 331 00:16:01,015 --> 00:16:03,140 A tu je čak i druge varijante koje ste mogli vidjeti. 332 00:16:03,140 --> 00:16:04,264 Oni su doista ekvivalent. 333 00:16:04,264 --> 00:16:06,240 Za sada, imamo te svojevrsni trening kotačima 334 00:16:06,240 --> 00:16:09,737 na u obliku niza u CS50 knjižnica, ali u nešto više od tjedan dana 335 00:16:09,737 --> 00:16:12,570 ili tako ćemo ukloniti da opstrukcija uopce i zapravo 336 00:16:12,570 --> 00:16:16,820 pogled na ono što pougljenjenih i zvijezde su, i kako se one odnose na memoriju 337 00:16:16,820 --> 00:16:18,140 zastupljenost općenito. 338 00:16:18,140 --> 00:16:19,540 Dakle, mi ćemo se vratiti na to. 339 00:16:19,540 --> 00:16:21,540 >> Ostala pitanja o našoj argv ili argc? 340 00:16:21,540 --> 00:16:22,397 Da. 341 00:16:22,397 --> 00:16:24,438 PUBLIKA: Zašto se vratiti Pogreška [nečujan]? 342 00:16:24,438 --> 00:16:27,147 343 00:16:27,147 --> 00:16:29,230 DAVID Malan: Zašto je to učinio vratiti na pogrešku only-- oh! 344 00:16:29,230 --> 00:16:31,813 U prethodnom slučaju, kada smo su futzing okolo s memorijom, 345 00:16:31,813 --> 00:16:35,110 zašto se samo vratiti na pogrešku kad sam stvarno upisali veliki broj? 346 00:16:35,110 --> 00:16:36,620 Kratak odgovor je, samo mi se posrećilo. 347 00:16:36,620 --> 00:16:39,240 Općenito govoreći, računalo alocira memoriju u komade, 348 00:16:39,240 --> 00:16:42,900 i to mi je dovoljno velika da se komad Imam daleko, bez primijetio, 349 00:16:42,900 --> 00:16:46,280 dirljivih konzolom 2, 3 konzoli, Nosač 50, ali čim sam gurnula 350 00:16:46,280 --> 00:16:49,080 moja sreća, otišao sam iza Granice komad memorije 351 00:16:49,080 --> 00:16:50,520 me operacijski sustav dao. 352 00:16:50,520 --> 00:16:52,720 A to je kad ga okomila se i rekao, nema. 353 00:16:52,720 --> 00:16:54,580 Segmentacije pogreške. 354 00:16:54,580 --> 00:16:55,692 Da. 355 00:16:55,692 --> 00:16:58,890 >> PUBLIKA: Kako se računalo znaju vrijednost argc? 356 00:16:58,890 --> 00:17:02,390 >> DAVID Malan: Kako Računalo znaju vrijednost argc? 357 00:17:02,390 --> 00:17:07,920 Kada pokrenete program, taj program, po prirodi trepćući redak, 358 00:17:07,920 --> 00:17:11,359 je predao niz Riječi koje su upisali 359 00:17:11,359 --> 00:17:13,300 na brz, da je bio upisali na redak. 360 00:17:13,300 --> 00:17:16,569 I tako je to vaš operativni sustav koji u suštini 361 00:17:16,569 --> 00:17:20,329 popunjava glavnih argumenata za vas. 362 00:17:20,329 --> 00:17:22,829 Dakle, to je jedna od usluga koje ste dobili, neka vrsta tajnog 363 00:17:22,829 --> 00:17:24,869 ispod haube operativni sustav. 364 00:17:24,869 --> 00:17:27,118 Ostala pitanja? 365 00:17:27,118 --> 00:17:27,618 Da. 366 00:17:27,618 --> 00:17:29,787 >> PUBLIKA: Što jezgra deponij znači? 367 00:17:29,787 --> 00:17:31,370 DAVID Malan: Što jezgra deponij znači? 368 00:17:31,370 --> 00:17:32,950 Dakle, to je dobro pitanje. 369 00:17:32,950 --> 00:17:35,312 I neka mi se vratiti u Ova mapa ovdje. 370 00:17:35,312 --> 00:17:37,270 A vi ćete primijetiti da Imam novu sliku tamo. 371 00:17:37,270 --> 00:17:41,670 To doista zove jezgre, a to je zapravo obično pristojne veličine datoteka. 372 00:17:41,670 --> 00:17:45,300 To je u biti snimak Sadržaj mog programu memorije 373 00:17:45,300 --> 00:17:46,902 ili RAM-a kad je pala. 374 00:17:46,902 --> 00:17:49,110 A to će biti korisno, potencijalno, dijagnostički, 375 00:17:49,110 --> 00:17:52,850 kada govorimo u budućem predavanju i poglavlje o ispravljanje pogrešaka, 376 00:17:52,850 --> 00:17:55,730 zato što zapravo može učiniti ekvivalent digitalni obdukcije 377 00:17:55,730 --> 00:18:00,300 na toj datoteci pomoći shvatiti što si učinio krivo u svom programu. 378 00:18:00,300 --> 00:18:01,220 Da. 379 00:18:01,220 --> 00:18:04,450 >> PUBLIKA: Je argc naredbe u sama, ili može li to ime ništa? 380 00:18:04,450 --> 00:18:05,575 >> DAVID Malan: Dobro pitanje. 381 00:18:05,575 --> 00:18:08,040 Je argc naredbe u sebi, ili može li to ime ništa? 382 00:18:08,040 --> 00:18:09,290 To definitivno nije naredba. 383 00:18:09,290 --> 00:18:13,500 To je jednostavno varijable Ime ili naziv argument je, 384 00:18:13,500 --> 00:18:15,481 i tako apsolutno smo mogli nazvati ovaj Foo, 385 00:18:15,481 --> 00:18:18,480 bismo mogli nazvati ovaj bar, koji imaju tendenciju biti go-to riječima da računalnih 386 00:18:18,480 --> 00:18:19,860 Znanstvenik ide. 387 00:18:19,860 --> 00:18:22,820 No, prema konvenciji, koristimo argc i argv. 388 00:18:22,820 --> 00:18:25,360 No, to je samo ljudsko konvencija, ništa više. 389 00:18:25,360 --> 00:18:25,860 U redu. 390 00:18:25,860 --> 00:18:28,140 Tako ispada, bio sam govorim malo bijelog lie-- 391 00:18:28,140 --> 00:18:31,264 i iskreno, u budućnosti, vidjet ćete smo reći druge bijele laži. 392 00:18:31,264 --> 00:18:33,510 Ali za sada, idemo oguliti natrag jedan od njih. 393 00:18:33,510 --> 00:18:37,310 U ovom slučaju, kada sam ovdje ranije vodio program kao ./hello ili ./hello-3 394 00:18:37,310 --> 00:18:42,780 Zamyla, imali smo sadržaj mog memorije računala izgleda otprilike kao 395 00:18:42,780 --> 00:18:43,280 ovo. 396 00:18:43,280 --> 00:18:45,070 Ali sjećam se što struna. 397 00:18:45,070 --> 00:18:49,279 Što smo rekli prije tjedan dana što Niz zapravo je ispod haube? 398 00:18:49,279 --> 00:18:50,320 PUBLIKA: lepezu broj znakova. 399 00:18:50,320 --> 00:18:52,111 DAVID Malan: To je Niz broj znakova, zar ne? 400 00:18:52,111 --> 00:18:55,760 Tako smo mogli imati niz žice, ali, s druge strane, niz 401 00:18:55,760 --> 00:18:57,150 je niz znakova. 402 00:18:57,150 --> 00:19:00,010 Dakle, ako ja stvarno želim biti analni kad sam izvući ovu sliku, 403 00:19:00,010 --> 00:19:03,290 Stvarno bi trebao biti crtež to malo više kao što je ovaj, 404 00:19:03,290 --> 00:19:08,000 pri čemu se u svakom od tih indeksi moje argv polja, 405 00:19:08,000 --> 00:19:11,432 Tu je sama cijeli niz koja sama po sebi je u niz. 406 00:19:11,432 --> 00:19:13,140 A sada bijela laž mi smo danas govori 407 00:19:13,140 --> 00:19:15,181 je da se slika ne izgledaju ovako. 408 00:19:15,181 --> 00:19:19,110 U stvari, mali trgovi obično izvan velikih pravokutnika 409 00:19:19,110 --> 00:19:19,610 postoji. 410 00:19:19,610 --> 00:19:21,280 No, mi ćemo se vratiti na to prije dugo. 411 00:19:21,280 --> 00:19:25,440 No, to je ./hello backslash 0, da je posebni znak da 412 00:19:25,440 --> 00:19:28,310 markira kraj niza, a mi imamo još jedan za 413 00:19:28,310 --> 00:19:29,360 Zamyla ime. 414 00:19:29,360 --> 00:19:30,900 Dakle, što to znači? 415 00:19:30,900 --> 00:19:33,410 >> Pa, neka mi ići naprijed i otvoriti još dva primjera 416 00:19:33,410 --> 00:19:35,220 koji su dostupni na internetu. 417 00:19:35,220 --> 00:19:40,590 Jedan se zove argv1.c a drugi argv2. 418 00:19:40,590 --> 00:19:44,260 To je super jednostavan program koji razlikuje se od dosadašnjih programa 419 00:19:44,260 --> 00:19:47,260 u koje sada sam pomoću argc i argv ovdje. 420 00:19:47,260 --> 00:19:54,300 I sada sam integrirajući s for petlje u skladu je 18, od i = 0 o do argc. 421 00:19:54,300 --> 00:19:56,850 A što ću učiniti s ove linije koda ovdje? 422 00:19:56,850 --> 00:19:58,270 U engleskom jeziku. 423 00:19:58,270 --> 00:20:00,510 To očito pokazuje korištenje argc. 424 00:20:00,510 --> 00:20:03,670 No, na engleskom jeziku, što se što učiniti ako sam pokrenuti ovaj program? 425 00:20:03,670 --> 00:20:04,366 Da? 426 00:20:04,366 --> 00:20:07,386 >> PUBLIKA: To će ispisati svoje zaslon koliko god puta želite. 427 00:20:07,386 --> 00:20:08,260 DAVID Malan: Točno. 428 00:20:08,260 --> 00:20:10,480 Dakle, bez obzira riječi koje sam upisati u redak, to je 429 00:20:10,480 --> 00:20:13,120 će povratiti ih u mene jedan po retku. 430 00:20:13,120 --> 00:20:14,370 Tako ćemo ići naprijed i učiniti. 431 00:20:14,370 --> 00:20:17,862 Pustite me u moj imenik i to bi argv1 ./argv1. 432 00:20:17,862 --> 00:20:20,521 433 00:20:20,521 --> 00:20:21,770 I sada, neka bude jednostavno. 434 00:20:21,770 --> 00:20:23,834 Idemo raditi ništa na prvi. 435 00:20:23,834 --> 00:20:26,750 To je ispisati jednu stvar, a to je doista ime programa, 436 00:20:26,750 --> 00:20:28,240 jer to je u zagradi 0. 437 00:20:28,240 --> 00:20:33,290 Ako ja sada kažem Foo, to će učiniti njih dvojica, a ako kažem Foo bar, 438 00:20:33,290 --> 00:20:35,580 to će reći one tri stvari. 439 00:20:35,580 --> 00:20:37,740 Sada kada je nešto zanimljivo, možda. 440 00:20:37,740 --> 00:20:41,450 No, podsjetiti da argv je niz od žice, 441 00:20:41,450 --> 00:20:45,960 ali niz je niz broj znakova, tako da možemo uzeti stvari usjek 442 00:20:45,960 --> 00:20:48,560 i primijeniti da osnovni Logika i napraviti kod koji 443 00:20:48,560 --> 00:20:51,160 izgleda malo više zagonetan, doduše. 444 00:20:51,160 --> 00:20:53,540 No, tako da ugniježđeni petlja, nešto slično 445 00:20:53,540 --> 00:20:57,030 onome što možete sjetiti iz Mario, Na primjer, ako ste to učinili na taj način. 446 00:20:57,030 --> 00:21:00,380 >> Tako sada primijetiti na liniji 19, ja sam opet iterating nad mojim argumentima, 447 00:21:00,380 --> 00:21:02,410 od 0 o do argc. 448 00:21:02,410 --> 00:21:05,510 I sada u skladu 21-- sam posuđivanje trik iz prošle week-- 449 00:21:05,510 --> 00:21:11,090 Ja sam provjeru što je Duljina argv nosača i. 450 00:21:11,090 --> 00:21:12,920 Ja spremanje taj odgovor u n. 451 00:21:12,920 --> 00:21:18,230 A onda sam integrirajući iz j na do n, gdje j je inicijalno 0. 452 00:21:18,230 --> 00:21:19,460 Dakle, Konvencija za brojanje. 453 00:21:19,460 --> 00:21:22,335 Nakon što sam koristiti, ako imate ugniježđeni petlje, ne mogu koristiti opet, 454 00:21:22,335 --> 00:21:25,770 inače ćete izmlatiti, potencijalno, vrijednost izvan unutarnjeg kruga. 455 00:21:25,770 --> 00:21:27,200 Dakle, ja sam koristeći j po konvenciji. 456 00:21:27,200 --> 00:21:28,020 Možemo koristiti k. 457 00:21:28,020 --> 00:21:31,080 Ako imate više od k, vjerojatno imati previše gnijezdi, obično. 458 00:21:31,080 --> 00:21:33,800 Ali sada, primijetit moj printf Linija je malo drugačija. 459 00:21:33,800 --> 00:21:37,520 Neću ispis% s, ja sam ispis% C, koji, naravno, 460 00:21:37,520 --> 00:21:39,460 je rezervirano za char. 461 00:21:39,460 --> 00:21:40,770 >> A sada primijetiti ovu sintaksu. 462 00:21:40,770 --> 00:21:41,270 Novi. 463 00:21:41,270 --> 00:21:42,630 Nismo ga vidjeli. 464 00:21:42,630 --> 00:21:47,290 No, logično, to samo znači dobiti i-tog niza u argv 465 00:21:47,290 --> 00:21:50,067 i dobiti što j? 466 00:21:50,067 --> 00:21:50,900 PUBLIKA: znakova. 467 00:21:50,900 --> 00:21:52,800 DAVID Malan: lik u tom nizu. 468 00:21:52,800 --> 00:21:57,100 Tako pomoću uglate zagrade slijedi uglatim zagradama, 469 00:21:57,100 --> 00:22:00,390 ovo je prva ronjenja u žice argv-a, 470 00:22:00,390 --> 00:22:02,225 i drugi četvornih nosači s j 471 00:22:02,225 --> 00:22:06,580 je ronjenje u likovima da se određeni niz u argv. 472 00:22:06,580 --> 00:22:09,562 A onda, samo za dobru mjeru, Ja sam ispis novu liniju ovdje. 473 00:22:09,562 --> 00:22:12,020 Pa sad neka mi ići naprijed i otvoriti do malo veći prozor 474 00:22:12,020 --> 00:22:13,600 tako da možemo vidjeti u akciji. 475 00:22:13,600 --> 00:22:15,700 Pusti me u tu mapu. 476 00:22:15,700 --> 00:22:22,550 I sada to čine argv-2-- whoops-- bi argv-2, ./argv 2. 477 00:22:22,550 --> 00:22:23,110 Unesite. 478 00:22:23,110 --> 00:22:24,860 I to je malo teško čitati vertikalno, 479 00:22:24,860 --> 00:22:27,920 ali to je doista ime Program, nakon čega slijedi prazan redak. 480 00:22:27,920 --> 00:22:30,210 Sada neka mi ići naprijed i učiniti Foo. 481 00:22:30,210 --> 00:22:33,210 Isto tako teško čitati, ali to je Doista ispis jednog znaka po retku. 482 00:22:33,210 --> 00:22:36,780 A ako ja bar, to je sada ispisati redak po redak. 483 00:22:36,780 --> 00:22:40,140 Dakle takeaway ovdje nije toliko da, vau, pogledaj ovo uredan novi trik 484 00:22:40,140 --> 00:22:44,750 gdje možete dobiti na sadržaj pojedinih likova niz je, 485 00:22:44,750 --> 00:22:48,380 nego kako uzimamo to osnovni ideje poput indeksiranje u nizu, 486 00:22:48,380 --> 00:22:51,620 a zatim indeksiranje u Niz koji je u tom nizu, 487 00:22:51,620 --> 00:22:56,180 i samo primjenom iste ideje nešto sofisticiranije primjeri. 488 00:22:56,180 --> 00:22:59,560 Ali osnove doista ne promijenio, još od prošlog tjedna. 489 00:22:59,560 --> 00:23:02,350 >> Sada je to vrsta pravovremeno, U to, podsjetimo, u tjednu nula 490 00:23:02,350 --> 00:23:04,110 igrali smo s telefonskog imenika kao što je ovaj. 491 00:23:04,110 --> 00:23:06,670 I iako je to očito fizičke komada papira, 492 00:23:06,670 --> 00:23:09,150 možete vrsta sjetiti imenika kao polje. 493 00:23:09,150 --> 00:23:12,770 Dakako, ako ste bili na reimplement Ovaj komada tih komada papira 494 00:23:12,770 --> 00:23:15,260 u računalu, vjerojatno ti bi koristiti nešto 495 00:23:15,260 --> 00:23:20,270 kao niz za pohranu svih onih imena i brojeve sa svim način 496 00:23:20,270 --> 00:23:23,800 do Z. Dakle, ovo je lijepo, jer To nam omogućuje priliku, 497 00:23:23,800 --> 00:23:28,310 možda, da razmislite kako možete zapravo provesti nešto takvo. 498 00:23:28,310 --> 00:23:31,250 Kao što je s nizom vrata ovdje. 499 00:23:31,250 --> 00:23:36,380 Dakle, ako sam could-- trebamo jedan dobrovoljno doći gore. 500 00:23:36,380 --> 00:23:36,980 Da vidimo. 501 00:23:36,980 --> 00:23:40,650 Možda nepoznato lice, možda nepoznato lice. 502 00:23:40,650 --> 00:23:42,090 Kako o narančasto? 503 00:23:42,090 --> 00:23:42,680 Ovdje. 504 00:23:42,680 --> 00:23:45,870 Narančasta košulja, dođi gore. 505 00:23:45,870 --> 00:23:52,230 >> Idemo naprijed i sada potez ova vrata na stranu, 506 00:23:52,230 --> 00:23:54,020 premjestiti to zabit za trenutak. 507 00:23:54,020 --> 00:23:56,600 508 00:23:56,600 --> 00:23:57,760 Koje je tvoje 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 Drago mi je. 513 00:23:59,451 --> 00:23:59,950 U redu. 514 00:23:59,950 --> 00:24:04,500 Dakle, imamo iza tih šest Vrata opremljen digitalnim screen-- 515 00:24:04,500 --> 00:24:07,810 ili, bolje rečeno, sedam vrata na screen-- hrpu brojeva. 516 00:24:07,810 --> 00:24:10,099 A ja sam ti ništa u advance-- dogovoreno? 517 00:24:10,099 --> 00:24:11,140 Ajay: Ništa unaprijed. 518 00:24:11,140 --> 00:24:14,730 DAVID Malan: Sve što želim da učiniš Trenutno je naći za mene, i za nas, 519 00:24:14,730 --> 00:24:20,920 Stvarno, broj 50, jedan korak u isto vrijeme. 520 00:24:20,920 --> 00:24:21,830 >> Ajay: Broj 50? 521 00:24:21,830 --> 00:24:22,580 >> DAVID Malan: Broj 50. 522 00:24:22,580 --> 00:24:24,746 A možete otkriti što je Iza svakog od ovih vrata 523 00:24:24,746 --> 00:24:27,930 jednostavno ga dira prstom. 524 00:24:27,930 --> 00:24:31,364 Dovraga. [Smijeh] 525 00:24:31,364 --> 00:24:34,560 >> [Pljesak] 526 00:24:34,560 --> 00:24:39,540 >> Vrlo dobro učinio. 527 00:24:39,540 --> 00:24:40,400 U redu. 528 00:24:40,400 --> 00:24:44,090 Imamo lijep dar Nagrada za vas ovdje. 529 00:24:44,090 --> 00:24:46,520 Vaš odabir filmova smo razgovarali prošlog tjedna. 530 00:24:46,520 --> 00:24:47,362 >> Ajay: O, čovječe. 531 00:24:47,362 --> 00:24:49,050 Oh, nikada nisam vidio Spaceballs. 532 00:24:49,050 --> 00:24:49,520 >> DAVID Malan: Spaceballs. 533 00:24:49,520 --> 00:24:50,140 U redu. 534 00:24:50,140 --> 00:24:53,790 Dakle, držite se na samo jedan trenutak. 535 00:24:53,790 --> 00:24:57,430 How-- učinimo to poučljiv moment-- 536 00:24:57,430 --> 00:25:00,412 Kako ste to pronalaženje broj 50? 537 00:25:00,412 --> 00:25:01,370 Ajay: Izabrao sam nasumce. 538 00:25:01,370 --> 00:25:03,420 DAVID Malan: Tako ste izabrali slučajno i posrećilo. 539 00:25:03,420 --> 00:25:03,790 Ajay: Da. 540 00:25:03,790 --> 00:25:04,456 DAVID Malan: U redu. 541 00:25:04,456 --> 00:25:05,050 Izvrsno. 542 00:25:05,050 --> 00:25:08,470 Pa sad, imao ti ne postao sretan, što drugo 543 00:25:08,470 --> 00:25:10,210 moglo dogoditi iza tih vrata? 544 00:25:10,210 --> 00:25:12,930 Dakle, ako sam ići naprijed i otkriti ove brojeve ovdje, 545 00:25:12,930 --> 00:25:15,180 oni zapravo su u slučajnim redoslijedom. 546 00:25:15,180 --> 00:25:17,750 A najbolje što može imati učinio, iskreno, jest, u konačnici, 547 00:25:17,750 --> 00:25:19,410 u najgorem slučaju, pravopisa ih sve. 548 00:25:19,410 --> 00:25:23,000 Dakle, imaš super sretni, koji nije ono što bismo nazvati algoritam. 549 00:25:23,000 --> 00:25:24,730 Da, čestitamo. 550 00:25:24,730 --> 00:25:27,010 Ali sada let's-- Humor me, ako može. 551 00:25:27,010 --> 00:25:28,310 Idemo na ovoj kartici ovdje. 552 00:25:28,310 --> 00:25:31,460 I tu su brojevi u jasno ono što izgleda kao da se slučajnim redoslijedom, 553 00:25:31,460 --> 00:25:32,280 i oni su bili. 554 00:25:32,280 --> 00:25:35,160 Ali sada, ako sam umjesto toga tvrde da se iza tih vrata 555 00:25:35,160 --> 00:25:39,070 su brojevi koji su poredani. 556 00:25:39,070 --> 00:25:41,780 Cilj sada je također nađi nam broj 50. 557 00:25:41,780 --> 00:25:45,910 Ali to učiniti algoritamski, a recite nam kako idete o tome. 558 00:25:45,910 --> 00:25:48,020 A ako ste ga pronašli, te držati film. 559 00:25:48,020 --> 00:25:49,520 Vi ne nalaze da je, ti ga vratiti. 560 00:25:49,520 --> 00:25:52,720 561 00:25:52,720 --> 00:25:58,112 Ajay: Tako ću provjeriti krajeve Prvo, kako bi, ako bi se utvrdilo there's-- 562 00:25:58,112 --> 00:26:02,048 [Smijeh i pljesak] 563 00:26:02,048 --> 00:26:04,451 564 00:26:04,451 --> 00:26:05,492 DAVID Malan: Izvoli. 565 00:26:05,492 --> 00:26:17,080 566 00:26:17,080 --> 00:26:21,700 Idemo pogledati jedan Ajay od prethodnika, 567 00:26:21,700 --> 00:26:25,450 Sean, koji nije bio tako sretan. 568 00:26:25,450 --> 00:26:28,670 U redu, tako da vaš zadatak ovdje, Sean, je sljedeći. 569 00:26:28,670 --> 00:26:32,970 Ja sam skriven iza njih Vrata broj sedam, 570 00:26:32,970 --> 00:26:37,200 ali sklonjen u nekim od tih vrata kao i drugi ne-negativni brojevi. 571 00:26:37,200 --> 00:26:40,730 I vaš cilj je da misli o ovome gornji red brojeva kao samo niz. 572 00:26:40,730 --> 00:26:43,590 Mi smo samo slijed komada papira s brojevima iza njih. 573 00:26:43,590 --> 00:26:47,640 I vaš cilj je, samo pomoću vrh Niz ovdje, nađi mi broj sedam. 574 00:26:47,640 --> 00:26:51,200 I onda se ide na kritike Kako idete o tome radi. 575 00:26:51,200 --> 00:26:52,920 Pronađite nas na broj sedam, molim te. 576 00:26:52,920 --> 00:27:02,570 577 00:27:02,570 --> 00:27:03,070 Ne 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 nije trik pitanje. 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 U ovom trenutku vaš rezultat nije vrlo Dobro, pa možda i zadržati ide. 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 Hajde. 590 00:27:39,802 --> 00:27:42,510 Iskreno, ja ne mogu pomoći, ali pitam ono što čak razmišljaš o tome. 591 00:27:42,510 --> 00:27:44,990 >> SEAN: Ja mogu uzeti samo iz gornjem redu. 592 00:27:44,990 --> 00:27:46,240 DAVID Malan: Samo gornji red. 593 00:27:46,240 --> 00:27:47,281 Pa imaš tri lijevo. 594 00:27:47,281 --> 00:27:48,310 Dakle, nađi mi 7. 595 00:27:48,310 --> 00:27:54,758 596 00:27:54,758 --> 00:27:59,141 >> [PUBLIKA Krikovi SUGGESTIONS] 597 00:27:59,141 --> 00:28:22,210 598 00:28:22,210 --> 00:28:26,130 Dakle, obojica su bila nevjerojatna za vrlo različitih razloga. 599 00:28:26,130 --> 00:28:29,150 Dakle, ovo je mjesto gdje smo stao trenutak prije, 600 00:28:29,150 --> 00:28:32,530 i ključni uvid ovdje je ova vrata je imao brojeve 601 00:28:32,530 --> 00:28:37,390 iza njih koji su bili razvrstani, idealno takeaway za koji je da bi mogao učiniti 602 00:28:37,390 --> 00:28:39,670 bitno bolje u ovaj drugi example-- 603 00:28:39,670 --> 00:28:42,380 i, štoviše, da je Sean Prvi pokušaj sa slučajnim brojevima 604 00:28:42,380 --> 00:28:45,460 baš kao što before-- ali čim jer su ti brojevi poredani, 605 00:28:45,460 --> 00:28:47,980 poput telefonskog imenika, Što možete učiniti je očito? 606 00:28:47,980 --> 00:28:50,090 Ili kako možeš iskoristiti to znanje? 607 00:28:50,090 --> 00:28:51,530 Da. 608 00:28:51,530 --> 00:28:54,910 >> PUBLIKA: Idete na pola puta [nečujan]. 609 00:28:54,910 --> 00:28:55,660 DAVID Malan: Da. 610 00:28:55,660 --> 00:28:56,160 Točno. 611 00:28:56,160 --> 00:28:59,680 Dakle Ajay početni instinkt bio provjeriti krajeve, koliko se sjećam, 612 00:28:59,680 --> 00:29:02,320 i onda smo na neki način završio Primjer brzo. 613 00:29:02,320 --> 00:29:05,220 Ali, ako smo počeli raditi to više metodički uz one linije, 614 00:29:05,220 --> 00:29:07,860 ali s početkom možda u srednje, jer oni su razvrstani, 615 00:29:07,860 --> 00:29:10,900 čim se otkrilo broj 16, zato mi znaš-- 616 00:29:10,900 --> 00:29:14,850 i neka je učiniti upravo to-- mi Stoga znam da je 50, u današnjem slučaju, 617 00:29:14,850 --> 00:29:16,080 ima da se na desnoj strani. 618 00:29:16,080 --> 00:29:18,735 Dakle, baš kao iu tjednu kada je nula smo poderao telefonski imenik na pola 619 00:29:18,735 --> 00:29:21,490 i bacio pola Problem se, ista ideja ovdje. 620 00:29:21,490 --> 00:29:23,680 Možemo baciti ovo poluvrijeme problema daleko. 621 00:29:23,680 --> 00:29:25,730 I vjerojatno ti ono mogao učiniti algoritamski, 622 00:29:25,730 --> 00:29:28,710 kada znaš da je 50 moraju biti udesno, ako je to bilo, 623 00:29:28,710 --> 00:29:31,390 je pokušati tamo, u sredini preostalih vrata. 624 00:29:31,390 --> 00:29:33,450 Naravno, 50 veći od 42, pa možemo 625 00:29:33,450 --> 00:29:36,060 baciti ovo preostalo Četvrtina problema daleko, 626 00:29:36,060 --> 00:29:38,510 i, konačno, identificirati nešto poput 50. 627 00:29:38,510 --> 00:29:41,050 No, baš kao i kod telefonski imenik, ti ​​brojevi 628 00:29:41,050 --> 00:29:44,560 dobili su nas već u sortirani red, što nam ostavlja 629 00:29:44,560 --> 00:29:47,450 s pitanjem, kako vam se se stvari u sortirani bi? 630 00:29:47,450 --> 00:29:49,640 I, iskreno, po kojoj cijeni? 631 00:29:49,640 --> 00:29:51,390 To je jedna stvar biti predao telefonski imenik 632 00:29:51,390 --> 00:29:54,810 a zatim impresionirati svoje prijatelje po pronalaženju telefonski broj jako brzo, zar ne? 633 00:29:54,810 --> 00:29:58,520 Puknuće 32 stranice u potragu Osoba iz 4 milijarde stranica, 634 00:29:58,520 --> 00:30:00,470 , rekao nam je jedan ekstremni primjer. 635 00:30:00,470 --> 00:30:03,320 No, koliko vremena je trebalo Verizon riješiti taj telefonski imenik? 636 00:30:03,320 --> 00:30:06,170 Koliko vremena je prošlo nas sortirati tih sedam brojeva? 637 00:30:06,170 --> 00:30:10,110 To je pitanje koje smo do sada u potpunosti ignorira. 638 00:30:10,110 --> 00:30:12,330 >> Tako ćemo odgovoriti na to pitanje sada. 639 00:30:12,330 --> 00:30:15,920 I mi smo svi iz filmova sada, ali imamo neki stres loptice. 640 00:30:15,920 --> 00:30:19,480 Ako, recimo, osam volontera Ne bi mi smetalo da nam se pridružiš ovdje gore? 641 00:30:19,480 --> 00:30:24,100 Idemo naprijed i učiniti, kako o četiri od vas, vas troje ovdje? 642 00:30:24,100 --> 00:30:25,290 Nabavite neka nova lica. 643 00:30:25,290 --> 00:30:27,220 I četiri od vas tamo? 644 00:30:27,220 --> 00:30:30,760 I now-- a ne pristranosti neka ovdje-- i broj osam ovamo na kraju. 645 00:30:30,760 --> 00:30:32,060 Dođi gore. 646 00:30:32,060 --> 00:30:32,560 U redu. 647 00:30:32,560 --> 00:30:37,480 Dakle, ono što imamo ovdje svatko od vas je broj. 648 00:30:37,480 --> 00:30:40,055 Ako želite ići naprijed, uzeti ovaj broj. 649 00:30:40,055 --> 00:30:40,763 Koje je tvoje ime? 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 Ti si broj 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 broj 2. 657 00:30:47,530 --> 00:30:49,100 I ići naprijed, kao što sam ruku ti listovi papira, 658 00:30:49,100 --> 00:30:52,130 postroje sami se ispred glazbe stoji u istom redoslijedu kao i gore. 659 00:30:52,130 --> 00:30:52,660 >> ANDY: Bok, Andy. 660 00:30:52,660 --> 00:30:53,970 >> DAVID Malan: Andy, to je lijepo vidjeti. 661 00:30:53,970 --> 00:30:54,520 Broj 3. 662 00:30:54,520 --> 00:30:55,310 >> JAKOV: Jakov. 663 00:30:55,310 --> 00:30:56,760 >> DAVID Malan: Jakov, broj 4. 664 00:30:56,760 --> 00:30:57,549 Dobro došli na brodu. 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 Broj 5. 668 00:31:00,348 --> 00:31:01,200 >> Alanna: Alanna. 669 00:31:01,200 --> 00:31:02,766 >> DAVID Malan: Alanna, broj 6. 670 00:31:02,766 --> 00:31:03,589 >> FRANCES: Frances. 671 00:31:03,589 --> 00:31:04,880 DAVID Malan: Frances, broj 7. 672 00:31:04,880 --> 00:31:05,200 I? 673 00:31:05,200 --> 00:31:05,830 >> Rachel: Rachel. 674 00:31:05,830 --> 00:31:06,815 >> DAVID Malan: Rachel, broj 8. 675 00:31:06,815 --> 00:31:07,100 U redu. 676 00:31:07,100 --> 00:31:08,766 Idi naprijed i sami u tom cilju. 677 00:31:08,766 --> 00:31:11,440 Dopustite mi da stavi jednu preostalih glazbeni stajati na mjestu. 678 00:31:11,440 --> 00:31:13,670 Gdje vam je potreban stav? 679 00:31:13,670 --> 00:31:14,170 U redu. 680 00:31:14,170 --> 00:31:18,710 Samo naprijed, samo stavi svoje brojeve gdje je publika ih možete vidjeti na, 681 00:31:18,710 --> 00:31:20,340 glazbeni stajati okrenut prema van. 682 00:31:20,340 --> 00:31:27,240 I nadamo se, naš prvi duševne ček ovdje-- 4, 2, 6. 683 00:31:27,240 --> 00:31:27,890 Oh-oh. 684 00:31:27,890 --> 00:31:29,070 Čekaj malo. 685 00:31:29,070 --> 00:31:31,140 Nemamo se 8. 686 00:31:31,140 --> 00:31:35,180 Moram te iseliti iz Primjer nekako. 687 00:31:35,180 --> 00:31:35,680 Ne 688 00:31:35,680 --> 00:31:36,940 Ne, to je u redu. 689 00:31:36,940 --> 00:31:37,890 Da vidimo. 690 00:31:37,890 --> 00:31:38,880 Možemo to učiniti. 691 00:31:38,880 --> 00:31:39,440 Stand by. 692 00:31:39,440 --> 00:31:43,970 693 00:31:43,970 --> 00:31:45,740 Tamo idemo. 694 00:31:45,740 --> 00:31:46,800 Točan. 695 00:31:46,800 --> 00:31:47,360 U redu. 696 00:31:47,360 --> 00:31:50,260 Dakle, sada imamo 8, 1, 3 7, 5. 697 00:31:50,260 --> 00:31:50,760 U redu. 698 00:31:50,760 --> 00:31:51,360 Izvrsno. 699 00:31:51,360 --> 00:31:54,400 >> Dakle, pitanje je na dohvat ruke, na kojoj cijeni, a putem koji način, 700 00:31:54,400 --> 00:31:58,580 zapravo možemo razvrstati ove brojeve ovdje tako da možemo vrsta raditi unatrag, 701 00:31:58,580 --> 00:32:02,759 u konačnici, i decide-- je to stvarno impresivno, to je stvarno učinkovit, 702 00:32:02,759 --> 00:32:04,550 da mogu podijeliti i osvojiti telefonski imenik? 703 00:32:04,550 --> 00:32:06,716 Je li to stvarno učinkovit da Mogu podijeli pa vladaj 704 00:32:06,716 --> 00:32:08,600 one digitalne komada papira na brodu, 705 00:32:08,600 --> 00:32:14,500 ako možda i to će nas koštati sreća na vrijeme ili energije ili CPU ciklusa 706 00:32:14,500 --> 00:32:17,340 zapravo dobili naše podatke u neku sortiranog bi? 707 00:32:17,340 --> 00:32:18,930 Tako ćemo postaviti to pitanje. 708 00:32:18,930 --> 00:32:22,077 >> Dakle, kao prvo, ovi brojevi su U prilično mnogo slučajnim redoslijedom, 709 00:32:22,077 --> 00:32:24,160 i ja ću predložiti jedan algoritam, ili postupak 710 00:32:24,160 --> 00:32:25,970 po kojima možemo razvrstati tih ljudi. 711 00:32:25,970 --> 00:32:28,100 Idem prići to prilično naivno. 712 00:32:28,100 --> 00:32:30,730 A ja ću priznati da je to vrsta puno za mene 713 00:32:30,730 --> 00:32:32,890 omotati oko moje srce cijeli skup podataka odjednom. 714 00:32:32,890 --> 00:32:33,640 Ali, znate što? 715 00:32:33,640 --> 00:32:37,450 Ja ću napraviti neke vrlo jednostavne marginalne popravci. 716 00:32:37,450 --> 00:32:41,152 4 i 2 su u kvaru, ako Cilj nam je da ide od 1 na do 8. 717 00:32:41,152 --> 00:32:41,860 Dakle, znate što? 718 00:32:41,860 --> 00:32:43,776 Ja ću te imati Dečki mijenjati, ako se prebacite 719 00:32:43,776 --> 00:32:46,380 fizički pozicije i Vaši komada papira. 720 00:32:46,380 --> 00:32:47,894 Sada 4 i 6, to su u redu. 721 00:32:47,894 --> 00:32:49,060 Ja ću ostaviti onima biti. 722 00:32:49,060 --> 00:32:50,227 6 i 8, koji su u cilju. 723 00:32:50,227 --> 00:32:51,185 Će ostaviti ih biti. 724 00:32:51,185 --> 00:32:52,170 8 and1, iz reda. 725 00:32:52,170 --> 00:32:54,790 Ako vas dvoje ne bi smetalo zamjene. 726 00:32:54,790 --> 00:32:57,300 Sada 8 i 3, ako ti dečki mogli zamijeniti. 727 00:32:57,300 --> 00:32:59,320 8 i 7, ako ti dečki mogli zamijeniti. 728 00:32:59,320 --> 00:33:01,790 A 8 i 5, ako ti dečki mogli zamijeniti. 729 00:33:01,790 --> 00:33:03,980 >> Sada, ja to učinio? 730 00:33:03,980 --> 00:33:05,200 Ne, očito ne. 731 00:33:05,200 --> 00:33:07,880 Ali sam napravio Situacija bolje, zar ne? 732 00:33:07,880 --> 00:33:09,430 Što je tvoje ime, broj 8? 733 00:33:09,430 --> 00:33:10,055 >> Rachel: Rachel. 734 00:33:10,055 --> 00:33:12,850 DAVID Malan: Pa Rachel ima učinkovito upuhavan se prilično daleko, 735 00:33:12,850 --> 00:33:15,660 sve do kraja moj niz brojeva ovdje. 736 00:33:15,660 --> 00:33:17,310 I tako je taj problem je riješen vrsta. 737 00:33:17,310 --> 00:33:21,670 Sada, očito, 2 još uvijek treba pomaknuti malo, i 4 i 6 i 1. 738 00:33:21,670 --> 00:33:24,420 Ali čini mi se da su dobivši Malo bliže rješenju. 739 00:33:24,420 --> 00:33:26,790 Tako ćemo primijeniti taj isti opet naivno heurističke. 740 00:33:26,790 --> 00:33:27,690 2 i 4, u redu. 741 00:33:27,690 --> 00:33:28,810 4 i 6, u redu. 742 00:33:28,810 --> 00:33:29,930 6 i 1, mm-mm. 743 00:33:29,930 --> 00:33:32,230 Idemo swapa. 744 00:33:32,230 --> 00:33:33,200 6 i 3 mm mm. 745 00:33:33,200 --> 00:33:34,420 Idemo swapa. 746 00:33:34,420 --> 00:33:35,580 6 i 7 je u redu. 747 00:33:35,580 --> 00:33:36,590 7 i 5, Nope. 748 00:33:36,590 --> 00:33:37,790 Idemo swapa. 749 00:33:37,790 --> 00:33:38,470 I sada 7 i 8. 750 00:33:38,470 --> 00:33:39,862 A kako se ti zoveš? 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 Dakle, sada je Frances je još bolji položaj, jer je sada 7 i 8 754 00:33:44,230 --> 00:33:46,440 pravilno upuhavan do vrha. 755 00:33:46,440 --> 00:33:47,510 Dakle, 2 i 4, u redu. 756 00:33:47,510 --> 00:33:48,720 4 i 1, neka je zamjena. 757 00:33:48,720 --> 00:33:50,410 4 i 3, ajmo swapa. 758 00:33:50,410 --> 00:33:51,550 4 i 6, ti si u redu. 759 00:33:51,550 --> 00:33:53,340 6 i 5, ajmo swapa. 760 00:33:53,340 --> 00:33:54,590 I sad ti momci su dobri. 761 00:33:54,590 --> 00:33:55,780 Skoro smo stigli. 762 00:33:55,780 --> 00:33:57,706 2 i 1, od reda, tako zamijeniti. 763 00:33:57,706 --> 00:33:59,080 I sad neka mi to ček zdravog razuma. 764 00:33:59,080 --> 00:34:03,080 2 i 3, 3 i 4, 4 i 5, 5 i 6, 6 i 7, 8. 765 00:34:03,080 --> 00:34:05,060 U redu, tako da smo gotovi. 766 00:34:05,060 --> 00:34:09,310 >> No, po kojoj cijeni zar ne sortirati ove brojeve ovdje? 767 00:34:09,310 --> 00:34:13,960 Pa, koliko koraka jesam potencijalno se kada je sortiranje tih ljudi? 768 00:34:13,960 --> 00:34:15,710 Pa, mi ćemo se vratiti na to pitanje. 769 00:34:15,710 --> 00:34:18,030 Ali, iskreno, ako imaš Malo dosadno, to je 770 00:34:18,030 --> 00:34:22,270 vrsta otkriva da to nije bilo Možda najučinkovitiji algoritam. 771 00:34:22,270 --> 00:34:25,230 I doista, iskreno, znojim sve više hoda amo-tamo. 772 00:34:25,230 --> 00:34:26,639 To se ne osjeća posebno učinkovit. 773 00:34:26,639 --> 00:34:27,805 Tako ćemo pokušati nešto drugo. 774 00:34:27,805 --> 00:34:31,870 Ako ti dečki mogli vratiti sebi da tih osam vrijednosti. 775 00:34:31,870 --> 00:34:32,969 Dobar posao. 776 00:34:32,969 --> 00:34:36,570 >> Idemo pogledati digitalno, za samo Trenutak prije nego što smo probati nešto drugo, 777 00:34:36,570 --> 00:34:38,179 na ono što se upravo dogodilo. 778 00:34:38,179 --> 00:34:41,330 Ovdje gore, ti ćeš vidjeti Vizualizacija od tih osam ljudi 779 00:34:41,330 --> 00:34:44,719 pri čemu plava i crvena barovi predstavljaju brojeve. 780 00:34:44,719 --> 00:34:46,670 Viši bar, veći broj. 781 00:34:46,670 --> 00:34:48,510 Kraći bar, manji broj. 782 00:34:48,510 --> 00:34:51,560 A što ćete vidjeti u slučajnim redoslijedom više od osam od njih. 783 00:34:51,560 --> 00:34:55,830 Ti ćeš vidjeti ove barova uzimajući razvrstani prema tom istom algoritmu, 784 00:34:55,830 --> 00:34:59,890 ili skup uputa, koje nazvat ćemo odsad mjehurića vrst. 785 00:34:59,890 --> 00:35:04,000 Dakle, primijetite, svaki drugi ili tako, Dvije trake su pali crveno, 786 00:35:04,000 --> 00:35:05,590 se u odnosu od strane računala. 787 00:35:05,590 --> 00:35:08,630 A onda, ako veliki bar i Malo bar su izvan reda, 788 00:35:08,630 --> 00:35:11,220 su se zamijenili za mene. 789 00:35:11,220 --> 00:35:15,120 >> A ovo je nevjerojatno dosadan ovo gledati, sigurno, 790 00:35:15,120 --> 00:35:18,630 za vrlo dugo, ali primijetiti takeaway-- velike barovi kreće udesno, 791 00:35:18,630 --> 00:35:20,460 mali barovi kreće u lijevo. 792 00:35:20,460 --> 00:35:23,380 Ajmo prekinuti taj proces i ubrzati ovaj gore 793 00:35:23,380 --> 00:35:27,330 da će biti puno brže, tako da možemo dobiti osjećaj visokoj razini onoga što, 794 00:35:27,330 --> 00:35:29,970 Doista, Bubble sorta koja se radi. 795 00:35:29,970 --> 00:35:33,150 Doista, to je mjehurića do desnoj strani popisa, 796 00:35:33,150 --> 00:35:35,260 ili niz od većih barovi. 797 00:35:35,260 --> 00:35:40,020 A s druge strane, mali kafići su mjehurića svoj put prema dolje na lijevoj strani, 798 00:35:40,020 --> 00:35:42,950 iako bržim tempom nego što je prethodno učinio. 799 00:35:42,950 --> 00:35:45,850 Dakle, teže vidjeti s ljudima, ali vizualno to je doista ono što 800 00:35:45,850 --> 00:35:46,540 se događa. 801 00:35:46,540 --> 00:35:49,110 >> No, pokušajmo iz temelja drugačiji pristup sada. 802 00:35:49,110 --> 00:35:52,387 Pokušajmo drugačije algoritam kojim ćemo vas ima 803 00:35:52,387 --> 00:35:59,640 Dečki početi u njih izvorna pozicije, što je taj nalog ovdje. 804 00:35:59,640 --> 00:36:00,827 I idemo naprijed sada. 805 00:36:00,827 --> 00:36:02,910 A ja ću učiniti nešto još jednostavnije, zar ne? 806 00:36:02,910 --> 00:36:06,710 U retrospektivi, opet zamjene parovima i opet, skoro malo pametan. 807 00:36:06,710 --> 00:36:10,460 Idemo raditi stvari još naivno, gdje ako želim sortiranje tih ljudi, 808 00:36:10,460 --> 00:36:12,560 neka mi samo držati u potrazi za najmanji element. 809 00:36:12,560 --> 00:36:14,570 Dakle, upravo sada, 4 Najmanje sam vidio. 810 00:36:14,570 --> 00:36:15,695 Ja ću to zapamtiti. 811 00:36:15,695 --> 00:36:17,750 Ne, 2 je bolje, i sjetite se da. 812 00:36:17,750 --> 00:36:20,730 1 još je manja. 813 00:36:20,730 --> 00:36:21,970 3, 7, 5. 814 00:36:21,970 --> 00:36:22,470 U redu. 815 00:36:22,470 --> 00:36:23,750 One-- ono zoveš? 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 Dakle, Artie, samo naprijed. 819 00:36:25,460 --> 00:36:27,043 Ja ću vas izvući iz linije. 820 00:36:27,043 --> 00:36:28,400 Ako bi mogao doći ovamo vratiti. 821 00:36:28,400 --> 00:36:30,790 I moram napraviti mjesta za njega. 822 00:36:30,790 --> 00:36:32,040 Imamo točku odluke ovdje. 823 00:36:32,040 --> 00:36:36,000 Kako bismo mogli napraviti mjesta za Artie ovdje na početku gdje je broj 1 pripada? 824 00:36:36,000 --> 00:36:36,770 >> PUBLIKA: Shift. 825 00:36:36,770 --> 00:36:38,950 >> DAVID Malan: U redu, možemo Mogla je mijenjati sve. 826 00:36:38,950 --> 00:36:40,860 Ali predložiti optimizaciju. 827 00:36:40,860 --> 00:36:43,410 To se osjeća malo neugodno za mene pitati četiri osobe 828 00:36:43,410 --> 00:36:44,620 premjestiti sve na putu prema dolje. 829 00:36:44,620 --> 00:36:45,520 Što još mogu učiniti? 830 00:36:45,520 --> 00:36:46,360 >> PUBLIKA: ih Switch. 831 00:36:46,360 --> 00:36:46,850 >> DAVID Malan: ih Switch. 832 00:36:46,850 --> 00:36:47,900 A kako se ti zoveš? 833 00:36:47,900 --> 00:36:48,441 >> JAKOV: Jakov. 834 00:36:48,441 --> 00:36:50,330 DAVID Malan: Jakov, premjestiti. 835 00:36:50,330 --> 00:36:54,440 Mnogo učinkovitiji samo da imaju Jakov Swap mjestima s Artie, 836 00:36:54,440 --> 00:36:56,710 za razliku prisiljavajući sve četiri od tih ljudi, 837 00:36:56,710 --> 00:36:58,734 puno ti hvala, da njihov točan položaj. 838 00:36:58,734 --> 00:37:01,150 Što je lijepo o Artie sada, On je u svom ispravnom položaju. 839 00:37:01,150 --> 00:37:02,060 Idemo to učiniti opet. 840 00:37:02,060 --> 00:37:03,730 2, to je najmanji broj sam vidio. 841 00:37:03,730 --> 00:37:05,690 3, 7, 5. 842 00:37:05,690 --> 00:37:06,190 U redu. 843 00:37:06,190 --> 00:37:07,467 2 je definitivno najmanji. 844 00:37:07,467 --> 00:37:08,550 Ne morate ništa raditi. 845 00:37:08,550 --> 00:37:09,320 Idemo to učiniti opet. 846 00:37:09,320 --> 00:37:10,070 6. 847 00:37:10,070 --> 00:37:10,640 Najmanji? 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 Dopustite mi da zapamtite 4. 853 00:37:13,420 --> 00:37:13,950 3. 854 00:37:13,950 --> 00:37:15,110 Dopustite mi da zapamtite 3. 855 00:37:15,110 --> 00:37:16,080 7, 5. 856 00:37:16,080 --> 00:37:18,490 Najmanji broj imam vidjeti na prijevoju je 3. 857 00:37:18,490 --> 00:37:20,340 Ako bih došao na van. 858 00:37:20,340 --> 00:37:21,986 Gdje ćemo vas? 859 00:37:21,986 --> 00:37:22,860 A kako se ti zoveš? 860 00:37:22,860 --> 00:37:23,530 >> Alanna: Alanna. 861 00:37:23,530 --> 00:37:25,780 >> DAVID Malan: Alanna, mi smo će vas morati iseliti. 862 00:37:25,780 --> 00:37:28,670 No, to je učinkovitiji, samo zamijeniti dvije osobe, 863 00:37:28,670 --> 00:37:31,850 nego imati više ljudi zapravo izbjeći više. 864 00:37:31,850 --> 00:37:32,850 Sada ćemo to učiniti opet. 865 00:37:32,850 --> 00:37:34,980 Idem za odabir 4, tako da izlazi. 866 00:37:34,980 --> 00:37:36,540 A tko će se preseliti? 867 00:37:36,540 --> 00:37:37,750 Broj 8, naravno. 868 00:37:37,750 --> 00:37:40,260 Ako ja sada naći broj 5, izlazi. 869 00:37:40,260 --> 00:37:42,104 Broj 8 će se ponovno istjerani. 870 00:37:42,104 --> 00:37:43,770 Ja sam sada će naći broj 6 u mjestu. 871 00:37:43,770 --> 00:37:44,410 7 na mjestu. 872 00:37:44,410 --> 00:37:45,080 8 na mjestu. 873 00:37:45,080 --> 00:37:48,590 >> Ono što smo upravo učinili Trenutno je nešto što se zove izbor sortiranje, 874 00:37:48,590 --> 00:37:52,560 a ako smo vizualizirati to, to je ide da se osjećaju malo drugačiji. 875 00:37:52,560 --> 00:37:56,800 Idemo naprijed i iz toga Izbornik ovdje, ovo visualization-- 876 00:37:56,800 --> 00:38:02,920 ajmo to promijeniti to-- hajde, Firefox. 877 00:38:02,920 --> 00:38:07,610 Idemo promijeniti u odabiru vrste. 878 00:38:07,610 --> 00:38:11,830 I neka je to ubrzati kao i prije, i početi vizualizaciju sada. 879 00:38:11,830 --> 00:38:13,990 I ovaj algoritam ima drugačiji dojam na njega. 880 00:38:13,990 --> 00:38:16,480 Na svakoj iteraciji, iskreno, to je još izravnija. 881 00:38:16,480 --> 00:38:18,385 Ja sam samo odabirom najmanji element. 882 00:38:18,385 --> 00:38:21,510 Sad, iskreno, imam malo sreće da vrijeme, u smislu da razvrstani super-brzo. 883 00:38:21,510 --> 00:38:22,660 Elementi su bili slučajni. 884 00:38:22,660 --> 00:38:25,520 To nije, kao što ćemo na kraju vidi, bitno brži. 885 00:38:25,520 --> 00:38:29,400 No, da vidimo treći i posljednji pristupiti ovdje o tome što se događa. 886 00:38:29,400 --> 00:38:36,230 Dakle, idemo naprijed i vratiti vam dečki posljednji put da se u tom bi ovdje. 887 00:38:36,230 --> 00:38:38,450 >> A sada, ja ću biti malo pametniji, 888 00:38:38,450 --> 00:38:40,220 Samo obići naše algoritme. 889 00:38:40,220 --> 00:38:41,230 Ja ću to učiniti. 890 00:38:41,230 --> 00:38:43,140 Idem ne ide natrag i naprijed toliko. 891 00:38:43,140 --> 00:38:44,900 Iskreno, ja sam umorna od sve to prijeći. 892 00:38:44,900 --> 00:38:47,691 Samo ću uzeti ono što sam obzirom na početku popisa 893 00:38:47,691 --> 00:38:49,460 i ja ću sortirati da je tada i tamo. 894 00:38:49,460 --> 00:38:50,140 Dakle, tu smo. 895 00:38:50,140 --> 00:38:51,030 Broj 4. 896 00:38:51,030 --> 00:38:53,680 Idem umetnuti broj 4 u popisu sortirane. 897 00:38:53,680 --> 00:38:54,180 Gotovo. 898 00:38:54,180 --> 00:38:58,300 Tvrdim sada, a samo da bi se to više Jasno, to je dio mog popisa je riješeno. 899 00:38:58,300 --> 00:39:02,610 To je neka vrsta glupe tvrdnje, ali istina 4 sortira u popisu veličine jednog. 900 00:39:02,610 --> 00:39:04,210 Sada, ja ću da se na broj 2. 901 00:39:04,210 --> 00:39:07,670 Broj 2 ja sada ide na umetnuti u pravom mjestu. 902 00:39:07,670 --> 00:39:08,680 Dakle, gdje se 2 pripadaju? 903 00:39:08,680 --> 00:39:09,824 Očito, ovdje. 904 00:39:09,824 --> 00:39:11,490 Dakle, ići naprijed i vratiti, ako može. 905 00:39:11,490 --> 00:39:14,406 A zašto ne dečki samo uzeti Vaša glazba stoji s vama ovaj put. 906 00:39:14,406 --> 00:39:17,020 I neka je prisilno umetnuti vas u početku popisa. 907 00:39:17,020 --> 00:39:17,936 Dakle, malo više posla. 908 00:39:17,936 --> 00:39:20,890 Morao sam se kretati oko Jakova, a kako se ti zoveš? 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 No, barem nisam išla naprijed i natrag. 912 00:39:24,350 --> 00:39:25,739 Ja sam samo uzimanje stvari kao što sam ići. 913 00:39:25,739 --> 00:39:27,530 Samo sam ih umetanjem na pravom mjestu. 914 00:39:27,530 --> 00:39:29,220 6, to je zapravo prilično jednostavan. 915 00:39:29,220 --> 00:39:31,510 Idemo umetanja tamo, ako Samo je htjela da se presele preko nešto. 916 00:39:31,510 --> 00:39:32,870 Broj 8, također prilično jednostavan. 917 00:39:32,870 --> 00:39:33,741 Tamo. 918 00:39:33,741 --> 00:39:34,240 Dovraga. 919 00:39:34,240 --> 00:39:37,590 Broj 1 Ne možemo samo zamijeniti s Aminom ovdje, 920 00:39:37,590 --> 00:39:39,340 jer to se događa na nered reda. 921 00:39:39,340 --> 00:39:40,660 Dakle, moramo biti malo pametniji. 922 00:39:40,660 --> 00:39:42,770 Dakle, Artie, ako bi mogao back up za trenutak. 923 00:39:42,770 --> 00:39:46,550 Idemo naprijed i pomak sada, Za razliku od naših prethodnih algoritama, 924 00:39:46,550 --> 00:39:50,910 kako bi napravili mjesta za Artie ovdje na početku. 925 00:39:50,910 --> 00:39:54,690 Dakle, na kraju dana, ja sam vrsta radiš ono što sam htio izbjeći prije. 926 00:39:54,690 --> 00:39:57,770 I tako je moj algoritam je svojevrsni od obrnuta, intelektualno, 927 00:39:57,770 --> 00:39:59,070 od onoga što je izvorno bio. 928 00:39:59,070 --> 00:40:01,240 Samo radim na pomicanje na nekom drugom mjestu. 929 00:40:01,240 --> 00:40:02,291 Sada sam na 3. 930 00:40:02,291 --> 00:40:02,790 Oh, prokleto. 931 00:40:02,790 --> 00:40:04,039 Moramo učiniti više posla opet. 932 00:40:04,039 --> 00:40:05,060 Tako ćemo vas izgurati. 933 00:40:05,060 --> 00:40:09,360 Idemo 8, 6, 4-- oh Oh- i 3 će ići tamo. 934 00:40:09,360 --> 00:40:11,490 Tako barem neznatne uštede ovaj put. 935 00:40:11,490 --> 00:40:13,100 7, ne previše posla koji treba obaviti. 936 00:40:13,100 --> 00:40:15,370 Dakle, ako želite da se pop natrag, neka vas ubacite. 937 00:40:15,370 --> 00:40:17,440 I na kraju, 5, ako vas želite pop natrag, mi 938 00:40:17,440 --> 00:40:22,610 Moramo se mijenjati, te, ti, dok se pet je na mjestu. 939 00:40:22,610 --> 00:40:25,670 >> Tako sada to vidjeti na Visoka razina grafički, 940 00:40:25,670 --> 00:40:31,080 učinimo ovaj algoritam Vizualizacija još jednom. 941 00:40:31,080 --> 00:40:33,580 Dakle, to ćemo zvati umetanja vrsta. 942 00:40:33,580 --> 00:40:37,700 Mi ćemo to raditi jednako brzo, i početi ga ovdje. 943 00:40:37,700 --> 00:40:39,580 I to, također, ima drugačiji osjećaj. 944 00:40:39,580 --> 00:40:42,180 To je na neki način sve bolje i bolje, ali to nikada nije savršen 945 00:40:42,180 --> 00:40:44,630 dok sam otići i glatka u te praznine. 946 00:40:44,630 --> 00:40:47,860 Jer, opet, ja sam samo uzimati ono Ja sam se dao s lijeva na desno. 947 00:40:47,860 --> 00:40:50,350 Dakle, nisam se tako sretan da je sve bilo savršeno. 948 00:40:50,350 --> 00:40:54,190 Zato smo imali to malo mispositions da smo fiksne tijekom vremena. 949 00:40:54,190 --> 00:40:58,890 >> Dakle, sve ove algoritama čini se da trčanje na nešto različitim koraka. 950 00:40:58,890 --> 00:41:02,030 U stvari, što bi ti rekao je najbolji ili najbrži do sada? 951 00:41:02,030 --> 00:41:03,450 Mjehurić sortirati, prvi? 952 00:41:03,450 --> 00:41:05,000 Izbor sortirati, drugi? 953 00:41:05,000 --> 00:41:08,450 Umetanje sortiranje, treći? 954 00:41:08,450 --> 00:41:10,710 Čujem neke odabira vrste. 955 00:41:10,710 --> 00:41:13,280 Ostali misli? 956 00:41:13,280 --> 00:41:16,880 >> Tako ispada da je sve od ovih algoritama 957 00:41:16,880 --> 00:41:22,400 su u osnovi jednako učinkovit kao svaka other-- ili, s druge strane, baš kao što 958 00:41:22,400 --> 00:41:25,980 neučinkovita kao i svaki drugi, jer možemo napraviti iz temelja 959 00:41:25,980 --> 00:41:28,120 bolje od sva tri tih algoritama. 960 00:41:28,120 --> 00:41:29,990 I to je malo bijele laži, previše. 961 00:41:29,990 --> 00:41:32,580 kad kažem kao učinkovit ili kao neučinkovit, 962 00:41:32,580 --> 00:41:35,040 to je barem za super velike vrijednosti n. 963 00:41:35,040 --> 00:41:38,450 Kad imamo samo osam ljudi ovdje, ili možda 50-ak barovi na zaslonu, 964 00:41:38,450 --> 00:41:41,645 vi apsolutno ćete primijetiti razliku Među tih triju algoritama. 965 00:41:41,645 --> 00:41:44,020 No, kao n, broj ljudi, ili broj brojeva, 966 00:41:44,020 --> 00:41:46,350 ili broj ljudi na telefon Knjiga ili broj web-stranica 967 00:41:46,350 --> 00:41:48,230 u bazi podataka Googleovih dobiva veći i veći, 968 00:41:48,230 --> 00:41:51,650 vidjet ćemo da su sve tri od tih algoritmi su zapravo prilično loša. 969 00:41:51,650 --> 00:41:54,060 I što možemo učiniti temeljno bolje od toga. 970 00:41:54,060 --> 00:41:56,830 >> Idemo pogledati, konačno, na što ovi algoritmi mogu 971 00:41:56,830 --> 00:41:59,520 zvuk kao u kontekst nekoliko drugih 972 00:41:59,520 --> 00:42:03,550 kao i preko toga Vizualizacija ovdje 973 00:42:03,550 --> 00:42:06,860 koji će nas uvesti u broj algoritama. 974 00:42:06,860 --> 00:42:10,330 Idemo naprijed i čestitam Naši polaznici ovdje, svi od kojih 975 00:42:10,330 --> 00:42:11,690 sami razvrstani vrlo dobro. 976 00:42:11,690 --> 00:42:15,124 Ako želite da se oproštajni dar. 977 00:42:15,124 --> 00:42:16,540 Možete zadržati svoje brojeve kao dobro. 978 00:42:16,540 --> 00:42:19,460 979 00:42:19,460 --> 00:42:22,520 I što ćete vidjeti, ili bolje čuti, sada, 980 00:42:22,520 --> 00:42:25,710 je u tome što smo stavili zvukove se svaki od tih šipki 981 00:42:25,710 --> 00:42:28,660 i povezati ga sa softverom, različite frekvencije zvuka, 982 00:42:28,660 --> 00:42:33,970 možete zamotati svoj um više audioly oko onoga što je svaki od tih stvari 983 00:42:33,970 --> 00:42:34,470 izgledati. 984 00:42:34,470 --> 00:42:39,325 Prvi od kojih je umetanje svojevrsni 985 00:42:39,325 --> 00:42:44,275 >> [Tonove] 986 00:42:44,275 --> 00:42:47,245 987 00:42:47,245 --> 00:42:49,720 >> To je neka vrsta balon. 988 00:42:49,720 --> 00:42:54,175 >> [Tonove] 989 00:42:54,175 --> 00:43:17,250 990 00:43:17,250 --> 00:43:18,222 >> Sortiranje Izbor. 991 00:43:18,222 --> 00:43:22,596 >> [Tonove] 992 00:43:22,596 --> 00:43:33,570 993 00:43:33,570 --> 00:43:35,150 >> Nešto što se zove spajanje vrst. 994 00:43:35,150 --> 00:43:38,140 >> [Tonove] 995 00:43:38,140 --> 00:43:49,510 996 00:43:49,510 --> 00:43:51,278 >> Gnome vrst. 997 00:43:51,278 --> 00:43:56,390 >> [Tonove] 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 Mi ćemo vas vidjeti u srijedu. 1001 00:44:13,360 --> 00:44:16,671 >> Narator: A sada, "Deep Misli: "Po Daven Farnham. 1002 00:44:16,671 --> 00:44:19,910 1003 00:44:19,910 --> 00:44:21,590 Zašto je za petlje? 1004 00:44:21,590 --> 00:44:23,200 Zašto ne bi to bolje? 1005 00:44:23,200 --> 00:44:25,970 Htio bih napraviti pet petlju. 1006 00:44:25,970 --> 00:44:28,720 >> [Smijeh]