1 00:00:00,000 --> 00:00:10,982 2 00:00:10,982 --> 00:00:11,940 David Malan: Alle reg. 3 00:00:11,940 --> 00:00:16,470 So dit is CS50, en dit is nou die begin van die week drie. 4 00:00:16,470 --> 00:00:19,960 >> So tot nou toe, ons het is die skryf van programme in C 5 00:00:19,960 --> 00:00:23,210 wat lyk 'n bietjie iets soos hierdie hier. 6 00:00:23,210 --> 00:00:25,470 So ons het 'n paar skerp sluit by die top. 7 00:00:25,470 --> 00:00:28,490 Ons het 'n int, hoof, nietig en dan om iets te doen in die middel, 8 00:00:28,490 --> 00:00:30,590 sommige bietjie van die kode binne-in van daardie funksie. 9 00:00:30,590 --> 00:00:34,170 Maar die sleutel is die feit dat Ons het gesê leemte hier. 10 00:00:34,170 --> 00:00:39,320 So nietig, almal van hierdie tyd, spesifiseer dat hierdie program, toe loop, 11 00:00:39,320 --> 00:00:41,300 kan slegs uitgevoer word via sy naam. 12 00:00:41,300 --> 00:00:46,330 Jy kan nie tik enige ander woorde of getalle na die program se naam wanneer 13 00:00:46,330 --> 00:00:46,830 loop dit. 14 00:00:46,830 --> 00:00:51,200 So, byvoorbeeld, indien die program was saamgestel in 'n lêer met die naam hallo, 15 00:00:51,200 --> 00:00:53,480 wat jy kan doen ./hello, maar dit is dit. 16 00:00:53,480 --> 00:00:56,750 >> Die enigste manier wat jy kan insette tot hierdie program 17 00:00:56,750 --> 00:00:57,960 is deur die roeping van 'n funksie. 18 00:00:57,960 --> 00:00:59,790 Byvoorbeeld, watter funksie Ons gebruik al tot dusver 19 00:00:59,790 --> 00:01:00,950 toevoer van die gebruiker te kry? 20 00:01:00,950 --> 00:01:02,117 >> Publiek: Kry string. 21 00:01:02,117 --> 00:01:04,700 David Malan: string te kry, of kry int, of jy gesien het die ander, 22 00:01:04,700 --> 00:01:07,630 selfs as jy nie hulle gebruik nie, soos kry lang, lang en dies meer. 23 00:01:07,630 --> 00:01:09,380 Maar veronderstel dat ons eintlik wil begin 24 00:01:09,380 --> 00:01:12,760 die skryf van programme wat bietjie meer veelsydig, en eerlik, 'n bietjie meer 25 00:01:12,760 --> 00:01:15,090 soos die opdragte wat jy het is om, hopelik, 26 00:01:15,090 --> 00:01:16,550 'n bietjie gewoond aan. 27 00:01:16,550 --> 00:01:18,560 Soos cd ruimte Dropbox. 28 00:01:18,560 --> 00:01:20,800 Dit, natuurlik, veranderinge jou gids, in die veronderstelling 29 00:01:20,800 --> 00:01:23,590 jy in John Harvard se huis gids, na jou Dropbox gids. 30 00:01:23,590 --> 00:01:27,380 Intussen het 'n opdrag soos hierdie skep 'n nuwe gids genaamd pset2, 31 00:01:27,380 --> 00:01:30,290 as jy dalk reeds of sal binnekort vir die probleem sit twee. 32 00:01:30,290 --> 00:01:33,970 Maak Hallo, natuurlik, is 'n opdrag wat bou 'n program genaamd hallo 33 00:01:33,970 --> 00:01:35,770 van 'n lêer genaamd hallo dot c. 34 00:01:35,770 --> 00:01:39,140 En in elkeen van hierdie gevalle, nou, het ons het 35 00:01:39,140 --> 00:01:43,620 bied 'n argument oor die sogenaamde command line, die flikkerende vinnige, 36 00:01:43,620 --> 00:01:48,540 sodat make weet wat om te bou, en so dat mkdir weet wat die gids te skep, 37 00:01:48,540 --> 00:01:51,110 en sodat cd weet waar jy wil gaan. 38 00:01:51,110 --> 00:01:54,720 Maar tot nou toe, ons hou sê wat hoof, jou standaard funksie, 39 00:01:54,720 --> 00:01:58,500 het 'n leemte uitdrukking binnekant van die hakies, 40 00:01:58,500 --> 00:02:01,250 wat beteken dat dit kan geen argumente neem. 41 00:02:01,250 --> 00:02:03,240 >> So begin vandag, wat ons gaan doen 42 00:02:03,240 --> 00:02:06,270 is, gaan ons begin ondersteun dinge soos hierdie, selfs. 43 00:02:06,270 --> 00:02:08,990 Trouens, in hierdie geval, wat jy tipies tik nie met die hand, 44 00:02:08,990 --> 00:02:11,130 Maak het hierdie doen vir ons, is daar nie 45 00:02:11,130 --> 00:02:15,840 een, maar een, twee, drie bykomende snare na die program se naam 46 00:02:15,840 --> 00:02:16,850 klang. 47 00:02:16,850 --> 00:02:18,240 So hoe kry ons dit reg? 48 00:02:18,240 --> 00:02:20,260 >> Wel, begin vandag, in gevalle waar ons wil 49 00:02:20,260 --> 00:02:22,855 insette te lewer via die sogenaamde opdrag lyn, 50 00:02:22,855 --> 00:02:24,980 ons gaan begin byvoeg hier wat in yellow-- 51 00:02:24,980 --> 00:02:30,520 nietig te vervang met int argc komma string argv oop bracket naby bracket. 52 00:02:30,520 --> 00:02:32,520 Nou is dit interessant vir 'n paar redes. 53 00:02:32,520 --> 00:02:35,690 Een, dit gaan om ons te laat skryf programme wat 'n bietjie meer dinamies. 54 00:02:35,690 --> 00:02:37,570 Maar, meer dwingend, dit gaan om oop te maak 55 00:02:37,570 --> 00:02:40,340 nou 'n gesprek te wat skikkings kan regtig 56 00:02:40,340 --> 00:02:43,300 gebruik word, vir wat 'n string regtig is onder die enjinkap, 57 00:02:43,300 --> 00:02:47,320 tot volgende week wanneer ons begin duik in nog dieper oor hoe die masjien is 58 00:02:47,320 --> 00:02:48,590 die maak van al hierdie dinge werk. 59 00:02:48,590 --> 00:02:51,920 Maar vir nou, laat ons trek, miskien, 'n prentjie. 60 00:02:51,920 --> 00:02:54,950 >> Wanneer jy 'n program skryf met die belangrikste verklaar 61 00:02:54,950 --> 00:02:58,810 Op hierdie manier, soos wat hoof neem twee argumente, 'n int 62 00:02:58,810 --> 00:03:03,233 and-- wat data tipe is die tweede argument? 63 00:03:03,233 --> 00:03:04,529 >> Publiek: Array. 64 00:03:04,529 --> 00:03:05,320 David Malan: Array. 65 00:03:05,320 --> 00:03:09,170 So dit lyk met die eerste oogopslag soos dit is 'n string, maar kennis van die vierkantige hakies. 66 00:03:09,170 --> 00:03:12,760 Onthou die laaste keer het ons ' die idee van 'n skikking. 67 00:03:12,760 --> 00:03:16,210 En skikkings gebruik vierkantige hakies in 'n paar van die konteks. 68 00:03:16,210 --> 00:03:19,160 Jy kan die vierkant gebruik hakies om te gaan in 'n skikking 69 00:03:19,160 --> 00:03:22,710 en kry 'n bepaalde element, soos bracket 0 of bracket 1 of bracket 2. 70 00:03:22,710 --> 00:03:25,500 Maar ons het gesien, indien kortliks verlede week dat jy ook 71 00:03:25,500 --> 00:03:28,790 gebruik om hierdie vierkantige hakies te verklaar dat die grootte van 'n skikking, 72 00:03:28,790 --> 00:03:31,790 As jy vooraf weet hoeveel ints of hoeveel stringe of wat jy 73 00:03:31,790 --> 00:03:32,630 eintlik wil hê. 74 00:03:32,630 --> 00:03:34,790 So dit blyk daar se 'n derde konteks hier 75 00:03:34,790 --> 00:03:37,890 wat geen getal binne van die vierkantige hakies. 76 00:03:37,890 --> 00:03:41,920 As jy spesifiseer nie, want ek het hier, die naam van iets soos argv, 77 00:03:41,920 --> 00:03:44,550 wat net 'n fancy manier sê argument vektor, wat 78 00:03:44,550 --> 00:03:47,750 is 'n ander fancy manier sê 'n verskeidenheid van argumente, 79 00:03:47,750 --> 00:03:50,870 oop bracket naby bracket net beteken dat jy nie noodwendig 80 00:03:50,870 --> 00:03:52,960 vooraf weet hoe groot die skikking gaan wees, 81 00:03:52,960 --> 00:03:55,070 maar jy weet dit gaan 'n skikking te wees. 82 00:03:55,070 --> 00:03:57,320 So as jy nie weet nie die aantal sit nie dit is daar, 83 00:03:57,320 --> 00:04:01,160 vir 'n oop bracket naby bracket beteken dat argv is nie 'n string, 84 00:04:01,160 --> 00:04:03,124 maar 'n verskeidenheid van snare. 85 00:04:03,124 --> 00:04:05,040 So sintakties, as jy terugdink verlede week, 86 00:04:05,040 --> 00:04:09,460 dit is baie soortgelyk aan sê iets soos int ouderdomme oop bracket, 87 00:04:09,460 --> 00:04:10,984 en dan is daar iets daarna. 88 00:04:10,984 --> 00:04:12,150 So wat beteken dit lyk? 89 00:04:12,150 --> 00:04:13,399 Kom ons eintlik 'n prentjie teken. 90 00:04:13,399 --> 00:04:18,756 So wanneer jy hierdie program met Main nadat twee argumente binne gedefinieer 91 00:04:18,756 --> 00:04:21,339 van die hakies, jy wese het ten minste twee stukke 92 00:04:21,339 --> 00:04:23,560 geheue aan u oorhandig onder die enjinkap. 93 00:04:23,560 --> 00:04:26,550 Een, soos ek sal trek as die reghoek, gaan argc genoem te word. 94 00:04:26,550 --> 00:04:30,645 En net so 'n vinnige herhaling, Wat is die data tipe argc? 95 00:04:30,645 --> 00:04:31,270 So dit is 'n int. 96 00:04:31,270 --> 00:04:33,480 So 'n aantal gaan om te gaan in argc-- beurte 97 00:04:33,480 --> 00:04:35,660 uit wat staan ​​vir argument telling. 98 00:04:35,660 --> 00:04:38,887 Intussen het ek argv geteken as 'n skikking. 99 00:04:38,887 --> 00:04:40,970 En ek weet nie regtig hoe lank dit gaan wees, 100 00:04:40,970 --> 00:04:42,470 So vir vandag se doeleindes dot dot dot. 101 00:04:42,470 --> 00:04:43,636 Dit kan kry van 'n sekere lengte. 102 00:04:43,636 --> 00:04:45,640 Maar ek het die foto minstens vier reghoeke. 103 00:04:45,640 --> 00:04:50,970 So argv 'n stuk van die geheue wat winkels string string string dot dot dot, 104 00:04:50,970 --> 00:04:53,950 en argc is net een stuk geheue vir 'n heelgetal. 105 00:04:53,950 --> 00:04:55,710 >> So nou, laat ons 'n bietjie meer presies. 106 00:04:55,710 --> 00:04:59,200 As as ek snare in hierdie reeks, genaamd 107 00:04:59,200 --> 00:05:03,290 argv, ek wil te kry op hulle individueel, net soos verlede week, 108 00:05:03,290 --> 00:05:05,670 ons gaan notasie te gebruik soos argv bracket 0 109 00:05:05,670 --> 00:05:07,650 Die eerste ding om te kry 'n skikking. 110 00:05:07,650 --> 00:05:10,440 Argv bracket 1 die te kry tweede ding, en so meer. 111 00:05:10,440 --> 00:05:14,597 Die sleutel hier is ons nog steeds 0 indexed-- ons nog tel van 0. 112 00:05:14,597 --> 00:05:16,430 So laat ons nou eintlik sit iets in hierdie. 113 00:05:16,430 --> 00:05:21,670 As ek 'n program genaamd saam te stel hallo van 'n lêer genaamd hallo dot c, 114 00:05:21,670 --> 00:05:24,340 en dan loop ek die program met dot streep hallo, 115 00:05:24,340 --> 00:05:28,380 Wat het my rekenaar, my laptop, lyk onder die kap 116 00:05:28,380 --> 00:05:31,300 die oomblik het ek hardloop dot streep hallo en druk Enter? 117 00:05:31,300 --> 00:05:33,500 Wel, dit is dalk wat ons kan beskryf 118 00:05:33,500 --> 00:05:37,010 as die inhoud van jou rekenaar se geheue, of RAM-- Random Access Memory. 119 00:05:37,010 --> 00:05:40,330 Met ander woorde, die rekenaar, een of ander manier vir jou mettertyd, 120 00:05:40,330 --> 00:05:45,360 plaas die nommer 1 in argc, AKA argcount, en dit sit letterlik die string 121 00:05:45,360 --> 00:05:48,200 ./hello in argv bracket 0. 122 00:05:48,200 --> 00:05:51,750 Ek het geen idee nie, eerlik, wat is in argv bracket 1 of 2 of 3, 123 00:05:51,750 --> 00:05:55,550 want as die gebruiker het nie iets getik behalwe ./hello, 124 00:05:55,550 --> 00:05:58,550 ons gaan om te aanvaar dat hierdie is waarskynlik vullis waardes, 125 00:05:58,550 --> 00:05:59,700 om so te praat. 126 00:05:59,700 --> 00:06:02,650 Diegene stukke van die geheue bestaan ​​nie, maar dit is nie vir ons om 127 00:06:02,650 --> 00:06:05,710 om te kyk na hulle, want die argcount is net een. 128 00:06:05,710 --> 00:06:07,870 >> Nou, intussen, as ek skryf loop 'n ander program, 129 00:06:07,870 --> 00:06:12,250 cd, wat meer behoorlik 'n bevel, in jou flikkerende prompt-- cd ruimte 130 00:06:12,250 --> 00:06:17,200 Dropbox-- toe ek hardloop dat doeltreffend, wanneer die cd program uitgevoer word, argc, 131 00:06:17,200 --> 00:06:22,270 binnekant van my rekenaar se geheue, is vir die mees kortste tweede die nommer 2. 132 00:06:22,270 --> 00:06:25,936 En dan argv bracket o het CD, argv bracket 1 het Dropbox, 133 00:06:25,936 --> 00:06:28,560 en dan natuurlik die opdrag voltooi, sodat almal van die geheue 134 00:06:28,560 --> 00:06:30,420 wese gaan weg en gebruik word vir iets anders. 135 00:06:30,420 --> 00:06:32,270 En dit is hoekom ek sê net 'n split sekonde. 136 00:06:32,270 --> 00:06:35,720 >> Intussen, as ons dit doen mkdir pset2, die prentjie lyk amper dieselfde, 137 00:06:35,720 --> 00:06:37,900 maar met verskillende snare binne argv. 138 00:06:37,900 --> 00:06:42,570 As ek dit doen klang Dash hallo hallo dot c, dieselfde idee. 139 00:06:42,570 --> 00:06:47,060 Meer dinge is gevul in vir argv en argc, natuurlik, is 4. 140 00:06:47,060 --> 00:06:49,150 So met ander woorde, Selfs al is hierdie verskeidenheid 141 00:06:49,150 --> 00:06:52,950 dalk dot dot dot word, van 'n paar veranderlike lengte, so te sê, 142 00:06:52,950 --> 00:06:56,720 jy altyd weet waar die einde van dit is, omdat argc gaan om jou te vertel 143 00:06:56,720 --> 00:07:00,120 op watter punt jy hoef te stop kyk na elemente in argv. 144 00:07:00,120 --> 00:07:03,660 Jy kan net kyk na vier in totaal in hierdie geval. 145 00:07:03,660 --> 00:07:06,600 >> So laat ons nou 'n blik op, miskien, 'n eenvoudige program. 146 00:07:06,600 --> 00:07:09,070 Een wat net sê hallo iemand soos Zamyla. 147 00:07:09,070 --> 00:07:12,620 So ek beweer ek gaan 'n program te skryf in net 'n oomblik via wat ek kon doen 148 00:07:12,620 --> 00:07:16,670 ./hello ruimte Zamyla, en dan wil ek my program om uit te druk om iets 149 00:07:16,670 --> 00:07:18,520 super-eenvoudig soos "hallo, Zamyla." 150 00:07:18,520 --> 00:07:20,100 Nou in die verlede het ons getstring gebruik. 151 00:07:20,100 --> 00:07:22,850 So in die verlede, selfs al jy nuut is tot ontwikkeling, 152 00:07:22,850 --> 00:07:27,180 kans is wat jy kan sweep 'n program wat gebruik maak van getstring 153 00:07:27,180 --> 00:07:29,390 en dan gebruik printf hi te sê Zamyla. 154 00:07:29,390 --> 00:07:31,290 Maar laat ons nie getstring hierdie tyd gebruik. 155 00:07:31,290 --> 00:07:37,510 Laat my plaas gaan in die Appliant en sluit standaard I O dot h. 156 00:07:37,510 --> 00:07:41,160 Laat my ook CS50 dot h. 157 00:07:41,160 --> 00:07:44,730 Nou int belangrikste, en nou is ek gaan nie te doen vandag nietig. 158 00:07:44,730 --> 00:07:51,200 In plaas daarvan, ek gaan int argc te doen string argv oop bracket naby bracket, 159 00:07:51,200 --> 00:07:52,640 nie spesifiseer 'n aantal. 160 00:07:52,640 --> 00:07:54,644 En nou hier is my sogenaamde te doen. 161 00:07:54,644 --> 00:07:57,560 Wat ek nou gaan doen is, ek is gaan 'n bietjie van 'n sprong van geloof te doen, 162 00:07:57,560 --> 00:08:00,560 Ek gaan om te aanvaar dat die gebruiker se gaan hierdie program korrek te gebruik, 163 00:08:00,560 --> 00:08:04,980 en ek is net gaan om te printf doen hallo,% sn. 164 00:08:04,980 --> 00:08:06,630 So niks nuuts nie daar nie. 165 00:08:06,630 --> 00:08:11,470 Maar ek wil nou sit alles woord die gebruiker na die program se naam. 166 00:08:11,470 --> 00:08:16,970 So as ek dit doen ./hello ruimte Zamyla, ek wil een of ander manier programmaties toegang 167 00:08:16,970 --> 00:08:20,870 haal unquote "Zamyla." sodat ek kan gaan in my argument vektor, 168 00:08:20,870 --> 00:08:25,980 my verskeidenheid van snare, en indien die opdrag, weer, was ./hello ruimte Zamyla, 169 00:08:25,980 --> 00:08:29,340 hoeveel wil ek te sit in argv hier? 170 00:08:29,340 --> 00:08:29,840 Publiek: 1. 171 00:08:29,840 --> 00:08:32,355 David Malan: 1, want bracket 0 blyk 172 00:08:32,355 --> 00:08:34,230 gaan die wees program se naam, soos ons gesien het. 173 00:08:34,230 --> 00:08:37,789 So bracket 1 is die eerste woord dat ek, die gebruiker, getik. 174 00:08:37,789 --> 00:08:39,559 Ek gaan om voort te gaan en behalwe hierdie. 175 00:08:39,559 --> 00:08:42,830 Ek gaan om te gaan in my gids waar ek geplaas is om hierdie lêer. 176 00:08:42,830 --> 00:08:44,920 Ek gaan om te doen om hallo 3. 177 00:08:44,920 --> 00:08:46,230 Comp IK se OK. 178 00:08:46,230 --> 00:08:51,380 ./hello Zamyla Enter. 179 00:08:51,380 --> 00:08:54,480 Wat het ek verkeerd gedoen? 180 00:08:54,480 --> 00:08:57,270 Ek is gevang deur die verrassing myself vir 'n oomblik is daar. 181 00:08:57,270 --> 00:08:58,230 Wat het ek verkeerd gedoen? 182 00:08:58,230 --> 00:08:59,220 >> Publiek: Naam. 183 00:08:59,220 --> 00:09:01,767 >> David Malan: Die lêer se eintlik hello3.c genoem. 184 00:09:01,767 --> 00:09:03,850 En ek het dit net vir konsekwentheid, want ons het 185 00:09:03,850 --> 00:09:06,550 het hello.c's in die verlede in die aanlyn-kode. 186 00:09:06,550 --> 00:09:11,550 So laat regmaak ./hello bracket Dash 3 Zamyla. 187 00:09:11,550 --> 00:09:12,370 Betree. 188 00:09:12,370 --> 00:09:14,030 En nou het ons 'hallo, Zamyla. 189 00:09:14,030 --> 00:09:17,650 Intussen, kan ek dit verander na wees Rob, of eintlik enige ander woord. 190 00:09:17,650 --> 00:09:19,230 >> Maar laat ons kyk na 'n hoek geval. 191 00:09:19,230 --> 00:09:24,360 Wat kan jy verwag sal gebeur as Ek tik nie iemand se naam nie? 192 00:09:24,360 --> 00:09:25,270 >> Publiek: Fout. 193 00:09:25,270 --> 00:09:27,300 >> David Malan: 'n fout van 'n soort, miskien. 194 00:09:27,300 --> 00:09:28,200 Kom ons kyk. 195 00:09:28,200 --> 00:09:29,440 Betree. 196 00:09:29,440 --> 00:09:30,210 Null. 197 00:09:30,210 --> 00:09:33,870 So printf is eintlik 'n bietjie beskermende ons 198 00:09:33,870 --> 00:09:38,131 hier, en letterlik druk oop hakie nul, maar selfs erger dinge kan gebeur. 199 00:09:38,131 --> 00:09:40,130 En net om te demonstreer iets wat jy absoluut 200 00:09:40,130 --> 00:09:42,800 moet dit nie doen nie, laat ons gaan in hier en begin skeer rond. 201 00:09:42,800 --> 00:09:43,300 Reg? 202 00:09:43,300 --> 00:09:46,410 As ek weet dat die prentjie in geheue is in wese, 203 00:09:46,410 --> 00:09:52,660 argv bracket 1 het Zamyla, argv bracket 0 het ./hello, of ./hello-3. 204 00:09:52,660 --> 00:09:55,400 Wat is in hakies 2? 205 00:09:55,400 --> 00:09:58,210 So ek kan antwoord dat bevraagteken myself, reg? 206 00:09:58,210 --> 00:10:00,460 Ek kan net verander die 1 na 'n 2. 207 00:10:00,460 --> 00:10:07,270 Ek kan nou heropstel hallo 3, ./hello3 Kom ons zoom in en druk Enter. 208 00:10:07,270 --> 00:10:08,270 Oeps. 209 00:10:08,270 --> 00:10:10,660 Geen aanhalingstekens. 210 00:10:10,660 --> 00:10:12,540 Interessant. 211 00:10:12,540 --> 00:10:15,530 So dit is soort van die koel te sien wat anders is hier. 212 00:10:15,530 --> 00:10:17,130 >> So wat anders is die binnekant van my laptop? 213 00:10:17,130 --> 00:10:20,390 Kom ons red met bracket 3. 214 00:10:20,390 --> 00:10:25,190 Maak hello3, ./hello-3. 215 00:10:25,190 --> 00:10:26,500 Nuuskierig. 216 00:10:26,500 --> 00:10:30,560 En nou, laat ons kry regtig bold-- 50. 217 00:10:30,560 --> 00:10:34,340 So dit is regtig duik diep in my rekenaar se geheue. 218 00:10:34,340 --> 00:10:35,930 50 indekse in. 219 00:10:35,930 --> 00:10:41,950 So maak hallo 3 ./hello-3. 220 00:10:41,950 --> 00:10:42,680 Nuuskierig. 221 00:10:42,680 --> 00:10:44,660 Alle reg, nou is ek net gaan roekelose te kry. 222 00:10:44,660 --> 00:10:47,331 Kom ons gaan na 5000. 223 00:10:47,331 --> 00:10:47,830 Alle regte. 224 00:10:47,830 --> 00:10:49,520 So laat my heropstel. 225 00:10:49,520 --> 00:10:51,460 Maak 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 Nou sommige van julle, mag daar 'n gloeilamp gaan af. 229 00:10:59,250 --> 00:11:01,900 Hoeveel van julle het gesien hierdie boodskap voor? 230 00:11:01,900 --> 00:11:03,440 OK. 231 00:11:03,440 --> 00:11:04,420 So, hoekom? 232 00:11:04,420 --> 00:11:07,250 >> Kans are-- en daar is verskillende dinge wat kan veroorsaak dat dit, 233 00:11:07,250 --> 00:11:09,730 en duidelik is jy in goeie geselskap het ons duidelik 234 00:11:09,730 --> 00:11:11,900 veroorsaak wat genoem 'n segmentering skuld. 235 00:11:11,900 --> 00:11:15,890 En 'n lang storie kort vir vandag, ek 'n segment van die geheue aangeraak 236 00:11:15,890 --> 00:11:17,060 dat ek nie moet hê. 237 00:11:17,060 --> 00:11:19,970 Waar 'n segment beteken net 'n stuk geheue wat ek moet nie. 238 00:11:19,970 --> 00:11:25,530 Nou is die rekenaar waarborg dat as ek hardloop ./helloZamyla dat ek kan raak argv 239 00:11:25,530 --> 00:11:27,760 wees bracket 0 en argv bracket 1. 240 00:11:27,760 --> 00:11:32,730 Maar argc is waarde 2, wat beteken dat ek slegs allowed-- dit is soort van die eer 241 00:11:32,730 --> 00:11:35,180 system-- te raak bracket 0 en bracket 1. 242 00:11:35,180 --> 00:11:37,990 As ek gaan enige verder, is daar absoluut gaan geheue om daar te wees. 243 00:11:37,990 --> 00:11:40,660 My geheue bestaan ​​fisies in die rekenaar. 244 00:11:40,660 --> 00:11:42,080 Maar wie weet wat is daar? 245 00:11:42,080 --> 00:11:44,450 Trouens, ek hardloop verskeie programme op een slag. 246 00:11:44,450 --> 00:11:46,910 Ek kan hê seen-- as ek nie om dit te doen op die Appliant 247 00:11:46,910 --> 00:11:49,937 maar op my Mac of PC-- ek dalk gesien die inhoud van 'n e-pos. 248 00:11:49,937 --> 00:11:52,270 Ek kan 'n oomblik gesien het boodskap Ek het onlangs gestuur. 249 00:11:52,270 --> 00:11:55,390 Enigiets wat kan wees voortslepende om in die geheue 250 00:11:55,390 --> 00:11:59,180 kon verkry het deur middel van hierdie arbitrêre vierkante bracket notasie. 251 00:11:59,180 --> 00:12:02,850 Of, erger nog, kan jy het een van my wagwoorde 252 00:12:02,850 --> 00:12:05,859 dat ek onlangs het getik in, dat 'n program in die geheue gestoor het so 253 00:12:05,859 --> 00:12:07,900 om my te kontroleer, en dan net soort van links dit 254 00:12:07,900 --> 00:12:09,910 in die geheue totdat ek ophou dat program. 255 00:12:09,910 --> 00:12:12,860 >> En inderdaad, dit is een van die die gevaar en een van die magte 256 00:12:12,860 --> 00:12:15,980 van die gebruik van 'n taal soos C. Jy het onbeperkte toegang 257 00:12:15,980 --> 00:12:18,860 om die hele inhoud van 'n program se geheue, 258 00:12:18,860 --> 00:12:21,340 en wat die slegte ouens kan selfs nie in die cases-- 259 00:12:21,340 --> 00:12:23,807 veral wanneer ons kry web ontwikkeling 260 00:12:23,807 --> 00:12:26,890 teen die einde van die semester, sal ons weer hierdie topic-- rondom steek, 261 00:12:26,890 --> 00:12:31,660 potensieel, iemand se rekenaar geheue en so nuuskierig dinge vind 262 00:12:31,660 --> 00:12:32,570 soos ons gesien het daar. 263 00:12:32,570 --> 00:12:36,900 Of selfs erger nog, wagwoorde wat hy of sy kan dan gebruik om slegte dinge te doen. 264 00:12:36,900 --> 00:12:40,240 >> So duidelik ek nie gedoen het nie, omdat vreemde dinge begin gebeur. 265 00:12:40,240 --> 00:12:42,310 Trouens, dit is 'n program gekraak. 266 00:12:42,310 --> 00:12:44,580 Dit sou die ekwivalent Mac OS of Windows 267 00:12:44,580 --> 00:12:46,770 'n program venster net verdwyn. 268 00:12:46,770 --> 00:12:48,300 'N Onverwagse fout het voorgekom. 269 00:12:48,300 --> 00:12:50,840 In die opdrag-lyn omgewing sien ons iets soos hierdie. 270 00:12:50,840 --> 00:12:54,480 Maar dit is die rede waarom, is ek net raak geheue wat nie aan my behoort. 271 00:12:54,480 --> 00:12:57,090 >> So laat ons verdedig teen dit 'n bietjie in 'n ander manier 272 00:12:57,090 --> 00:12:59,010 deur te kyk na hierdie program hier. 273 00:12:59,010 --> 00:13:01,000 So, weer, die geraamte wat ons gesien het earlier-- 274 00:13:01,000 --> 00:13:02,480 en Ek het dié keer int uitgelig. 275 00:13:02,480 --> 00:13:05,900 En al hierdie tyd hoof het inderdaad 'n waarde teruggekeer. 276 00:13:05,900 --> 00:13:09,120 Selfs al is die meeste van ons lesing voorbeelde wat ons het nog nie een keer gebruik 277 00:13:09,120 --> 00:13:10,990 enigiets wat in die belangrikste. 278 00:13:10,990 --> 00:13:13,710 Ons skryf net printf naby krullerige stut en dit is dit. 279 00:13:13,710 --> 00:13:16,500 Maar vir gratis, wat die samesteller doen vir jou, 280 00:13:16,500 --> 00:13:19,510 effektief, terugkeer 0 vir jou. 281 00:13:19,510 --> 00:13:22,950 Draai out-- en dit is 'n bietjie counterintuitive-- dat 0 is goed. 282 00:13:22,950 --> 00:13:24,690 Dit maak nie vals per se beteken. 283 00:13:24,690 --> 00:13:29,080 0 is goed, en enige nie-0 waarde, het die wêreld besluit, 284 00:13:29,080 --> 00:13:30,619 kan 'n fout dui. 285 00:13:30,619 --> 00:13:32,910 So as jy ooit deurmekaar iets op jou rekenaar, 286 00:13:32,910 --> 00:13:36,600 of 'n program het net gesterf het op jou en jy 'n paar verkeerde venster gekry 287 00:13:36,600 --> 00:13:40,360 op jou skerm en gesê fout negatiewe 49 of foute 23-- 288 00:13:40,360 --> 00:13:44,170 sommige oënskynlik arbitrêre value-- wat omdat 'n programmeerder het hard-gekodeerde 289 00:13:44,170 --> 00:13:49,370 'n waarde soos negatiewe 49 of positiewe 23 enige getal voor te stel, waag om te sê, 290 00:13:49,370 --> 00:13:53,340 4 miljard moontlik dinge wat dalk verkeerd in 'n program te gaan. 291 00:13:53,340 --> 00:13:55,700 >> So, hoe kan ek voordeel van hierdie myself? 292 00:13:55,700 --> 00:13:58,970 Wel, laat ek maak 'n program wat ek geskryf het in advance, 293 00:13:58,970 --> 00:14:01,450 en steek rondom aanlyn genoem hallo 4. 294 00:14:01,450 --> 00:14:05,650 En dit is byna identies, behalwe dat sy het 'n bietjie van die fout kontrole. 295 00:14:05,650 --> 00:14:09,660 In hierdie geval, het ek weer verklaar hoof as die neem van twee argumente, 296 00:14:09,660 --> 00:14:13,180 maar hierdie keer, op die lyn 17, kennisgewing Ek is besig met 'n bietjie van 'n gesonde verstand tjek. 297 00:14:13,180 --> 00:14:17,100 Ek is seker te maak dat argc gelyk gelyk 2. 298 00:14:17,100 --> 00:14:18,960 Want as dit is, wat beteken dat ek veilig kan 299 00:14:18,960 --> 00:14:21,420 raak nie net bracket 0, maar bracket 1. 300 00:14:21,420 --> 00:14:24,330 En ek gaan voort en druk, in hierdie geval, Zamyla of Rob 301 00:14:24,330 --> 00:14:26,020 of wat ook al woord wat ek getik het. 302 00:14:26,020 --> 00:14:28,020 En nou net te kry 'n bietjie meer behoorlike, 303 00:14:28,020 --> 00:14:31,910 Ek gaan uitdruklik terug 0 te dui alles is goed. 304 00:14:31,910 --> 00:14:33,300 Niks sleg gebeur het. 305 00:14:33,300 --> 00:14:38,590 >> Maar deur die konvensie, ek gaan om te terug 1, of eerlik nie-0 waarde, 306 00:14:38,590 --> 00:14:40,160 As iets verkeerd geloop het. 307 00:14:40,160 --> 00:14:43,270 Nou is die gebruiker is nie van plan om regtig sien wat aangaan. 308 00:14:43,270 --> 00:14:50,410 Inderdaad, indien ek gaan in hierdie gids, ons zoom in en maak hallo 4, 309 00:14:50,410 --> 00:14:54,210 ./hello-4 Zamyla optree soos ek verwag. 310 00:14:54,210 --> 00:14:58,570 Maar as ek in plaas tik nie enigiets, blyk dit dat niks gebeur nie, 311 00:14:58,570 --> 00:14:59,680 maar dit nie crash. 312 00:14:59,680 --> 00:15:04,660 En as ek plaas om iets te doen soos Rob is 'n Proctor 313 00:15:04,660 --> 00:15:07,550 in Thayer-- deel arbitrêre inligting. 314 00:15:07,550 --> 00:15:13,680 Maar kennisgewing argv 1, 2, 3, 4, en 5 moet nou bestaan ​​in die geheue. 315 00:15:13,680 --> 00:15:16,540 Dit ook, is nie wat my program verwag, 316 00:15:16,540 --> 00:15:20,300 want ek het seker gemaak argc gelyk gelykes 2 of nie. 317 00:15:20,300 --> 00:15:22,140 So ek nou verdedig teen hierdie. 318 00:15:22,140 --> 00:15:25,290 >> Nou, as 'n eenkant, ons die programmer-- of eerder ons die users-- 319 00:15:25,290 --> 00:15:29,670 nooit sien dat 0 of 1, maar met behulp van 'n instrument genoem Debugger, of ander gereedskap, 320 00:15:29,670 --> 00:15:32,250 soos ons sal sien voordat lank, om die programmeerder 321 00:15:32,250 --> 00:15:36,590 kan eintlik sien wat kan wees verkeerd gaan binnekant van jou program. 322 00:15:36,590 --> 00:15:39,170 >> So, enige vrae oor argc? 323 00:15:39,170 --> 00:15:40,873 Ja. 324 00:15:40,873 --> 00:15:45,292 >> Publiek: Ek het gesien waar hulle het die karakter nie gehad het nie, [onhoorbaar] 325 00:15:45,292 --> 00:15:49,669 net gesê string ster d, soos karakter asterisk komma. 326 00:15:49,669 --> 00:15:50,710 Is hulle ekwivalent hier? 327 00:15:50,710 --> 00:15:51,626 >> David Malan: Hulle is. 328 00:15:51,626 --> 00:15:55,080 So die vraag is, het jy soms gesien programme 329 00:15:55,080 --> 00:15:57,270 soos hierdie wat dit nie doen nie sê string argv bracket 330 00:15:57,270 --> 00:16:01,015 maar in plaas daarvan sê iets soos kar ster argv bracket. 331 00:16:01,015 --> 00:16:03,140 En daar is selfs 'n ander variante wat jy kan sien. 332 00:16:03,140 --> 00:16:04,264 Hulle is inderdaad gelyk. 333 00:16:04,264 --> 00:16:06,240 Vir nou, ons het hierdie soort van opleiding wiele 334 00:16:06,240 --> 00:16:09,737 in die vorm van 'n string in die CS50 biblioteek, maar in net meer as 'n week 335 00:16:09,737 --> 00:16:12,570 of so het ons gaan om dit te verwyder obstruksie geheel en al en eintlik 336 00:16:12,570 --> 00:16:16,820 kyk na wat die kar en die ster is, en hoe daardie verband hou met die geheue 337 00:16:16,820 --> 00:16:18,140 verteenwoordiging meer algemeen. 338 00:16:18,140 --> 00:16:19,540 So ons sal terug kom. 339 00:16:19,540 --> 00:16:21,540 >> Ander vrae oor ons argv of argc? 340 00:16:21,540 --> 00:16:22,397 Ja. 341 00:16:22,397 --> 00:16:24,438 Publiek: Hoekom het dit terug 'n fout [onhoorbaar]? 342 00:16:24,438 --> 00:16:27,147 343 00:16:27,147 --> 00:16:29,230 David Malan: Hoekom het dit terug 'n fout only-- oh! 344 00:16:29,230 --> 00:16:31,813 In die vorige geval, wanneer ons rondom futzing met die geheue, 345 00:16:31,813 --> 00:16:35,110 waarom het dit net weer 'n fout toe ek regtig getik 'n groot aantal? 346 00:16:35,110 --> 00:16:36,620 Kort antwoord is, het ons net gelukkig. 347 00:16:36,620 --> 00:16:39,240 Oor die algemeen, 'n rekenaar ken geheue in stukke, 348 00:16:39,240 --> 00:16:42,900 en dit het my 'n groot genoeg stuk dat Ek het weggekom, sonder om opgemerk, 349 00:16:42,900 --> 00:16:46,280 aanraking bracket 2, 3 bracket, bracket 50, maar so gou as ek gestoot 350 00:16:46,280 --> 00:16:49,080 my Sterkte, ek het buite die grense van die stuk van die geheue 351 00:16:49,080 --> 00:16:50,520 die bedryfstelsel my gegee het. 352 00:16:50,520 --> 00:16:52,720 En dit is wanneer dit toegeslaan en het gesê, nee. 353 00:16:52,720 --> 00:16:54,580 Segmentering fout. 354 00:16:54,580 --> 00:16:55,692 Ja. 355 00:16:55,692 --> 00:16:58,890 >> Publiek: Hoe werk die rekenaar weet wat die waarde van argc? 356 00:16:58,890 --> 00:17:02,390 >> David Malan: Hoe werk die rekenaar weet wat die waarde van argc? 357 00:17:02,390 --> 00:17:07,920 Wanneer jy 'n program, die program, uit die aard van die flikkerende vinnige, 358 00:17:07,920 --> 00:17:11,359 oorhandig die verskeidenheid van woorde wat getik is 359 00:17:11,359 --> 00:17:13,300 op die vinnige, dit was getik op die instruksielyn. 360 00:17:13,300 --> 00:17:16,569 En so is dit jou bedryfstelsel stelsel wat in wese 361 00:17:16,569 --> 00:17:20,329 vult belangrikste argumente vir jou. 362 00:17:20,329 --> 00:17:22,829 So dit is een van die dienste dat jy, soort van die geheim 363 00:17:22,829 --> 00:17:24,869 onder die kap van 'n bedryfstelsel. 364 00:17:24,869 --> 00:17:27,118 Ander vrae? 365 00:17:27,118 --> 00:17:27,618 Ja. 366 00:17:27,618 --> 00:17:29,787 >> Publiek: Wat beteken stort beteken? 367 00:17:29,787 --> 00:17:31,370 David Malan: Wat beteken stort beteken? 368 00:17:31,370 --> 00:17:32,950 So dit is 'n goeie vraag. 369 00:17:32,950 --> 00:17:35,312 En laat my terug te gaan na hierdie gids hier. 370 00:17:35,312 --> 00:17:37,270 En jy sal sien dat Ek het 'n nuwe lêer daar. 371 00:17:37,270 --> 00:17:41,670 Dit is inderdaad die kern genoem, en dit is eintlik tipies 'n ordentlike grootte lêer. 372 00:17:41,670 --> 00:17:45,300 Dit is in wese 'n oorsig van die inhoud van my program se geheue 373 00:17:45,300 --> 00:17:46,902 of RAM toe dit neergestort het. 374 00:17:46,902 --> 00:17:49,110 En dit sal nuttig wees, potensieel, diagnosties, 375 00:17:49,110 --> 00:17:52,850 sodra ons praat in 'n toekomstige lesing en artikel oor ontfouting, 376 00:17:52,850 --> 00:17:55,730 want jy kan eintlik nie die ekwivalent van 'n digitale lykskouing 377 00:17:55,730 --> 00:18:00,300 op die lêer om te help uitvind wat jy verkeerd is in jou program gedoen het. 378 00:18:00,300 --> 00:18:01,220 Ja. 379 00:18:01,220 --> 00:18:04,450 >> Publiek: Is argc 'n opdrag in self, of jy kan noem dit iets? 380 00:18:04,450 --> 00:18:05,575 >> David Malan: Goeie vraag. 381 00:18:05,575 --> 00:18:08,040 Is argc 'n opdrag in die self, of jy kan noem dit iets? 382 00:18:08,040 --> 00:18:09,290 Dit is beslis nie 'n opdrag. 383 00:18:09,290 --> 00:18:13,500 Dit is net 'n veranderlike se noem of 'n argument se naam, 384 00:18:13,500 --> 00:18:15,481 en so absoluut ons kon hierdie cat noem, 385 00:18:15,481 --> 00:18:18,480 ons kan hierdie bar, wat geneig noem die go-to woorde wat 'n rekenaar te wees 386 00:18:18,480 --> 00:18:19,860 wetenskaplike gaan. 387 00:18:19,860 --> 00:18:22,820 Maar deur die konvensie, wat ons gebruik argc en argv. 388 00:18:22,820 --> 00:18:25,360 Maar dit is net 'n menslike konvensie, niks meer nie. 389 00:18:25,360 --> 00:18:25,860 Alle regte. 390 00:18:25,860 --> 00:18:28,140 So blyk, ek is vertel 'n bietjie van 'n wit lie-- 391 00:18:28,140 --> 00:18:31,264 en eerlik, in die toekoms, sal jy sien het ons vertel van ander wit leuens. 392 00:18:31,264 --> 00:18:33,510 Maar vir nou, ons gaan terug te skil een van hierdie. 393 00:18:33,510 --> 00:18:37,310 In hierdie geval hier toe ek voorheen hardloop 'n program soos ./hello of ./hello-3 394 00:18:37,310 --> 00:18:42,780 Zamyla, het ons die inhoud van my rekenaar se geheue soek rofweg soos 395 00:18:42,780 --> 00:18:43,280 hierdie. 396 00:18:43,280 --> 00:18:45,070 Maar onthou wat 'n string is. 397 00:18:45,070 --> 00:18:49,279 Wat het ons gesê 'n week gelede wat 'n string is eintlik onder die enjinkap? 398 00:18:49,279 --> 00:18:50,320 Publiek: Array van karakters. 399 00:18:50,320 --> 00:18:52,111 David Malan: Dit is 'n verskeidenheid van karakters, reg? 400 00:18:52,111 --> 00:18:55,760 Sodat ons kan 'n verskeidenheid van 'n snare, maar het op sy beurt 'n string 401 00:18:55,760 --> 00:18:57,150 is 'n verskeidenheid van karakters. 402 00:18:57,150 --> 00:19:00,010 So as ek regtig wil wees anale wanneer ek trek hierdie foto 403 00:19:00,010 --> 00:19:03,290 Ek moet regtig tekening dit 'n bietjie meer soos hierdie, 404 00:19:03,290 --> 00:19:08,000 waardeur in elk van hierdie indekse van my argv skikking, 405 00:19:08,000 --> 00:19:11,432 Daar is self 'n hele string wat homself in 'n skikking. 406 00:19:11,432 --> 00:19:13,140 En nou is die wit leuen ons vandag vertel 407 00:19:13,140 --> 00:19:15,181 is dat die prentjie nie lyk baie soos hierdie. 408 00:19:15,181 --> 00:19:19,110 Trouens, die klein vierkante is tipies buitekant van die groot reghoeke 409 00:19:19,110 --> 00:19:19,610 daar. 410 00:19:19,610 --> 00:19:21,280 Maar ons sal terug kom kort voor lank. 411 00:19:21,280 --> 00:19:25,440 Maar dit is ./hello agteroorskuinsstreep 0, dat om die spesiale karakter wat 412 00:19:25,440 --> 00:19:28,310 afbaken die einde van 'n string, en ons het 'n ander een na 413 00:19:28,310 --> 00:19:29,360 Zamyla se naam. 414 00:19:29,360 --> 00:19:30,900 So, wat beteken dit? 415 00:19:30,900 --> 00:19:33,410 >> Wel, laat ek gaan voort en oopmaak twee ander voorbeelde 416 00:19:33,410 --> 00:19:35,220 wat aanlyn beskikbaar is. 417 00:19:35,220 --> 00:19:40,590 Een staan ​​bekend as argv1.c en die ander is argv2. 418 00:19:40,590 --> 00:19:44,260 Dit is 'n super-eenvoudige program wat verskil van die verlede programme 419 00:19:44,260 --> 00:19:47,260 in dat dit nou ek gebruik argc en argv hier. 420 00:19:47,260 --> 00:19:54,300 En nou is ek die integrasie met 'n lus vir in lyn 18 van i = 0 op tot argc. 421 00:19:54,300 --> 00:19:56,850 En wat gaan ek doen met hierdie lyn van die kode hier? 422 00:19:56,850 --> 00:19:58,270 In Engels. 423 00:19:58,270 --> 00:20:00,510 Dit toon duidelik die gebruik van argc. 424 00:20:00,510 --> 00:20:03,670 Maar in Engels, wat beteken dit doen as ek hierdie program? 425 00:20:03,670 --> 00:20:04,366 Ja? 426 00:20:04,366 --> 00:20:07,386 >> Publiek: Dit gaan druk jou skerm soveel keer as wat jy wil. 427 00:20:07,386 --> 00:20:08,260 David Malan: Presies. 428 00:20:08,260 --> 00:20:10,480 Dus, wat woorde wat ek tik op die instruksielyn, dit is 429 00:20:10,480 --> 00:20:13,120 gaan spoeg hulle by my een per lyn. 430 00:20:13,120 --> 00:20:14,370 So laat ons gaan voort en doen dit. 431 00:20:14,370 --> 00:20:17,862 Laat my gaan in my gids en doen maak argv1 ./argv1. 432 00:20:17,862 --> 00:20:20,521 433 00:20:20,521 --> 00:20:21,770 En nou, laat ons hou dit eenvoudig. 434 00:20:21,770 --> 00:20:23,834 Kom ons doen niks op die eerste. 435 00:20:23,834 --> 00:20:26,750 Dit het druk een ding, en dit is inderdaad die naam van die program, 436 00:20:26,750 --> 00:20:28,240 want dit is in hakies 0. 437 00:20:28,240 --> 00:20:33,290 As ek nou sê cat, gaan dit te doen daardie twee, en as ek sê cat bar, 438 00:20:33,290 --> 00:20:35,580 dit gaan die drie dinge te sê. 439 00:20:35,580 --> 00:20:37,740 Nou is dit 'n bietjie interessant, miskien. 440 00:20:37,740 --> 00:20:41,450 Maar onthou dat argv is 'n verskeidenheid van snare, 441 00:20:41,450 --> 00:20:45,960 maar 'n string is 'n verskeidenheid van karakters, sodat ons dinge kan neem op 'n kerf 442 00:20:45,960 --> 00:20:48,560 en toe te pas dat basiese logika en maak kode wat 443 00:20:48,560 --> 00:20:51,160 lyk 'n bietjie meer kriptiese, weliswaar. 444 00:20:51,160 --> 00:20:53,540 Maar deur 'n sub- lus, iets soortgelyk 445 00:20:53,540 --> 00:20:57,030 wat jy kan onthou van Mario, Byvoorbeeld, as jy het dit op hierdie manier. 446 00:20:57,030 --> 00:21:00,380 >> So nou sien op die lyn 19, ek is weer iterating oor my argumente, 447 00:21:00,380 --> 00:21:02,410 vanaf 0 op tot argc. 448 00:21:02,410 --> 00:21:05,510 En nou in lyn 21-- Ek is leen 'n truuk van verlede week-- 449 00:21:05,510 --> 00:21:11,090 Ek kyk wat is die lengte van argv bracket i. 450 00:21:11,090 --> 00:21:12,920 Ek stoor die antwoord in n. 451 00:21:12,920 --> 00:21:18,230 En dan is ek die integrasie van J op tot N, waar j geïnisialiseer tot 0. 452 00:21:18,230 --> 00:21:19,460 So, konvensie vir tel. 453 00:21:19,460 --> 00:21:22,335 Sodra jy wat ek gebruik, as jy 'n geneste lus het, kan jy nie i weer gebruik, 454 00:21:22,335 --> 00:21:25,770 anders sal jy afranselen, potensieel, die waarde buite die binneste lus. 455 00:21:25,770 --> 00:21:27,200 So ek gebruik j deur konvensie. 456 00:21:27,200 --> 00:21:28,020 Ons kan gebruik k. 457 00:21:28,020 --> 00:21:31,080 As jy het meer as k, het jy waarskynlik het te veel nes, tipies. 458 00:21:31,080 --> 00:21:33,800 Maar nou, let op my printf lyn is effens anders. 459 00:21:33,800 --> 00:21:37,520 Ek is nie die druk% s, ek is druk% c, wat natuurlik, 460 00:21:37,520 --> 00:21:39,460 is 'n plekhouer vir 'n kar. 461 00:21:39,460 --> 00:21:40,770 >> En nou sien hierdie sintaksis. 462 00:21:40,770 --> 00:21:41,270 Nuwe. 463 00:21:41,270 --> 00:21:42,630 Ons het nog nie voorheen gesien het nie. 464 00:21:42,630 --> 00:21:47,290 Maar logies, dit net beteken kry die et string in argv 465 00:21:47,290 --> 00:21:50,067 en kry die JTH wat? 466 00:21:50,067 --> 00:21:50,900 Publiek: Character. 467 00:21:50,900 --> 00:21:52,800 David Malan: Character in daardie string. 468 00:21:52,800 --> 00:21:57,100 So deur die gebruik vierkantige hakies gevolg deur vierkantige hakies, 469 00:21:57,100 --> 00:22:00,390 dit is duik eerste in argv se snare, 470 00:22:00,390 --> 00:22:02,225 en dan die tweede vierkantige hakies met j 471 00:22:02,225 --> 00:22:06,580 duik in die karakters van daardie spesifieke string in argv. 472 00:22:06,580 --> 00:22:09,562 En dan, net vir 'n goeie maat, Ek druk van 'n nuwe lyn hier. 473 00:22:09,562 --> 00:22:12,020 So nou laat my voort te gaan en oop 'n effens groter venster 474 00:22:12,020 --> 00:22:13,600 sodat ons kan sien dit in aksie. 475 00:22:13,600 --> 00:22:15,700 Laat my gaan in die gids. 476 00:22:15,700 --> 00:22:22,550 En nou doen maak argv-2-- whoops-- argv-2 maak, ./argv 2. 477 00:22:22,550 --> 00:22:23,110 Betree. 478 00:22:23,110 --> 00:22:24,860 En dit is 'n bietjie hard vertikaal lees, 479 00:22:24,860 --> 00:22:27,920 maar dit is inderdaad die naam van die program, gevolg deur 'n leë lyn. 480 00:22:27,920 --> 00:22:30,210 Laat my gaan voort en doen cat nou. 481 00:22:30,210 --> 00:22:33,210 Net so moeilik is om te lees, maar dit is inderdaad een karakter per lyn druk. 482 00:22:33,210 --> 00:22:36,780 En as ek doen bar, dit is nou druk die lyn deur die lyn. 483 00:22:36,780 --> 00:22:40,140 So het die afhaal hier is nie soseer dat wow, kyk na hierdie netjiese nuwe truuk 484 00:22:40,140 --> 00:22:44,750 waar jy kan kry op die inhoud van 'n skikking se spesifieke karakters, 485 00:22:44,750 --> 00:22:48,380 maar eerder hoe ons neem hierdie basiese idees soos kruip in 'n skikking, 486 00:22:48,380 --> 00:22:51,620 en dan kruip in 'n skikking wat in daardie reeks, 487 00:22:51,620 --> 00:22:56,180 en net die toepassing van die dieselfde idees te effens meer gesofistikeerd voorbeelde. 488 00:22:56,180 --> 00:22:59,560 Maar die basiese beginsels regtig nie verander, selfs sedert verlede week. 489 00:22:59,560 --> 00:23:02,350 >> En dit is 'n soort van tydige, in daardie, onthou, in week nul 490 00:23:02,350 --> 00:23:04,110 ons gespeel met 'n telefoon boek soos hierdie. 491 00:23:04,110 --> 00:23:06,670 En selfs al is dit duidelik fisiese stukkies papier, 492 00:23:06,670 --> 00:23:09,150 jy kan soort van dink 'n telefoon boek as 'n skikking. 493 00:23:09,150 --> 00:23:12,770 Sekerlik, as jy was om te reimplement hierdie stukke hierdie stukkies papier 494 00:23:12,770 --> 00:23:15,260 in 'n rekenaar, waarskynlik sou jy iets gebruik 495 00:23:15,260 --> 00:23:20,270 soos 'n skikking almal te stoor name en nommers uit al die pad 496 00:23:20,270 --> 00:23:23,800 deur Z. So dit is lekker, want dit laat ons 'n geleentheid, 497 00:23:23,800 --> 00:23:28,310 miskien, om te oorweeg hoe jy dalk eintlik iets soos dit te implementeer. 498 00:23:28,310 --> 00:23:31,250 Soos met 'n reeks van deure hier. 499 00:23:31,250 --> 00:23:36,380 So as ek could-- ons moet een vrywilligers om te kom op op. 500 00:23:36,380 --> 00:23:36,980 Kom ons kyk. 501 00:23:36,980 --> 00:23:40,650 'N onbekende gesig miskien, onbekende gesig miskien. 502 00:23:40,650 --> 00:23:42,090 Hoe gaan in oranje? 503 00:23:42,090 --> 00:23:42,680 Hier. 504 00:23:42,680 --> 00:23:45,870 Orange hemp, kom op. 505 00:23:45,870 --> 00:23:52,230 >> Kom ons gaan voort en nou beweeg die deure na die kant, 506 00:23:52,230 --> 00:23:54,020 beweeg om hierdie uit die pad vir 'n oomblik. 507 00:23:54,020 --> 00:23:56,600 508 00:23:56,600 --> 00:23:57,760 Wat is jou naam? 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 Nice om jou te ontmoet. 513 00:23:59,451 --> 00:23:59,950 Alle regte. 514 00:23:59,950 --> 00:24:04,500 Dus het ons agter hierdie ses deure digitaal op die screen-- 515 00:24:04,500 --> 00:24:07,810 of eerder, sewe deure op die screen-- 'n hele klomp van die nommers. 516 00:24:07,810 --> 00:24:10,099 En ek het vir jou niks in advance-- ooreengekom? 517 00:24:10,099 --> 00:24:11,140 Ajay: Niks in advance. 518 00:24:11,140 --> 00:24:14,730 David Malan: Al wat ek wil hê jy moet doen nou is om uit te vind vir my en vir ons, 519 00:24:14,730 --> 00:24:20,920 regtig, die nommer 50, een stap op 'n tyd. 520 00:24:20,920 --> 00:24:21,830 >> Ajay: nommer 50? 521 00:24:21,830 --> 00:24:22,580 >> David Malan: Die getal 50. 522 00:24:22,580 --> 00:24:24,746 En jy kan wys wat is Agter elkeen van hierdie deure 523 00:24:24,746 --> 00:24:27,930 deur eenvoudig te raak met 'n vinger. 524 00:24:27,930 --> 00:24:31,364 Damn dit. [Gelag] 525 00:24:31,364 --> 00:24:34,560 >> [Applous] 526 00:24:34,560 --> 00:24:39,540 >> Baie goed gedoen. 527 00:24:39,540 --> 00:24:40,400 OK. 528 00:24:40,400 --> 00:24:44,090 Ons het 'n pragtige geskenk prys vir jou hier. 529 00:24:44,090 --> 00:24:46,520 Jou keuse van films ons verlede week bespreek. 530 00:24:46,520 --> 00:24:47,362 >> Ajay: Ag, man. 531 00:24:47,362 --> 00:24:49,050 O, ek het nog nooit gesien Space Balls. 532 00:24:49,050 --> 00:24:49,520 >> David Malan: Space Balls. 533 00:24:49,520 --> 00:24:50,140 Alle regte. 534 00:24:50,140 --> 00:24:53,790 So hou op net een oomblik. 535 00:24:53,790 --> 00:24:57,430 How-- laat ons hierdie 'n ontvanklike moment-- 536 00:24:57,430 --> 00:25:00,412 hoe het jy te werk gaan vind die nommer 50? 537 00:25:00,412 --> 00:25:01,370 Ajay: ek gekies lukraak. 538 00:25:01,370 --> 00:25:03,420 David Malan: So jy gekies lukraak en gelukkig. 539 00:25:03,420 --> 00:25:03,790 Ajay: Ja. 540 00:25:03,790 --> 00:25:04,456 David Malan: OK. 541 00:25:04,456 --> 00:25:05,050 Uitstekend. 542 00:25:05,050 --> 00:25:08,470 So nou, het jy nie gekry gelukkig is, wat anders 543 00:25:08,470 --> 00:25:10,210 mag agter die deure gebeur het? 544 00:25:10,210 --> 00:25:12,930 So as ek gaan voort en openbaar hierdie getalle hier 545 00:25:12,930 --> 00:25:15,180 hulle eintlik is in enige volgorde. 546 00:25:15,180 --> 00:25:17,750 En die beste wat jy kan hê gedoen, eerlik, is deur uiteindelik 547 00:25:17,750 --> 00:25:19,410 In die ergste geval, die keur van hulle almal. 548 00:25:19,410 --> 00:25:23,000 So jy het super-lucky, wat is nie wat ons wil 'n algoritme noem. 549 00:25:23,000 --> 00:25:24,730 Ja, Geluk. 550 00:25:24,730 --> 00:25:27,010 Maar nou let's-- humor my, as jy kan. 551 00:25:27,010 --> 00:25:28,310 Kom ons gaan na die blad hier. 552 00:25:28,310 --> 00:25:31,460 En hier is die getalle in duidelik wat lyk na 'n ewekansige volgorde te wees nie, 553 00:25:31,460 --> 00:25:32,280 en hulle was. 554 00:25:32,280 --> 00:25:35,160 Maar as ek nou plaas eis wat agter die deure 555 00:25:35,160 --> 00:25:39,070 is getalle wat gesorteer word. 556 00:25:39,070 --> 00:25:41,780 Die doel is nou om ook vind ons die nommer 50. 557 00:25:41,780 --> 00:25:45,910 Maar doen dit algoritmies, en vertel ons hoe jy gaan oor dit. 558 00:25:45,910 --> 00:25:48,020 En as jy dit vind, jy hou van die film. 559 00:25:48,020 --> 00:25:49,520 Jy kry dit nie, jy gee dit terug. 560 00:25:49,520 --> 00:25:52,720 561 00:25:52,720 --> 00:25:58,112 Ajay: So ek gaan die einde na te gaan eerste, om te bepaal of there's-- 562 00:25:58,112 --> 00:26:02,048 [Gelag en applous] 563 00:26:02,048 --> 00:26:04,451 564 00:26:04,451 --> 00:26:05,492 David Malan: Hier gaan. 565 00:26:05,492 --> 00:26:17,080 566 00:26:17,080 --> 00:26:21,700 Kom ons neem 'n blik op een van Ajay se voorgangers, 567 00:26:21,700 --> 00:26:25,450 Sean, wat nie heeltemal so gelukkig nie. 568 00:26:25,450 --> 00:26:28,670 OK, so jou taak hier Sean, is die volgende. 569 00:26:28,670 --> 00:26:32,970 Ek het agter die verborge deure die getal sewe, 570 00:26:32,970 --> 00:26:37,200 maar weggesteek in 'n paar van hierdie deure sowel ander nie-negatiewe getalle. 571 00:26:37,200 --> 00:26:40,730 En jou doel is om te dink van hierdie boonste ry van getalle as net 'n skikking. 572 00:26:40,730 --> 00:26:43,590 Ons is net 'n reeks van stukke papier met nommers agter hulle. 573 00:26:43,590 --> 00:26:47,640 En jou doel is om slegs die gebruik van die top skikking hier, vind my die nommer sewe. 574 00:26:47,640 --> 00:26:51,200 En ons is dan gaan kritiseer hoe jy te werk gaan om dit te doen. 575 00:26:51,200 --> 00:26:52,920 Vind ons die nommer sewe, asseblief. 576 00:26:52,920 --> 00:27:02,570 577 00:27:02,570 --> 00:27:03,070 Nee 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 Dit is nie 'n truuk vraag. 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 Op hierdie punt jou telling is nie baie goeie, sodat jy kan net so goed gaan hou. 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 Gaan op. 590 00:27:39,802 --> 00:27:42,510 Om eerlik te wees, kan ek nie help om te wonder wat jy selfs dink oor. 591 00:27:42,510 --> 00:27:44,990 >> SEAN: Ek kan neem van slegs die boonste ry. 592 00:27:44,990 --> 00:27:46,240 David Malan: Slegs die boonste ry. 593 00:27:46,240 --> 00:27:47,281 So jy het drie links. 594 00:27:47,281 --> 00:27:48,310 So vind my 7. 595 00:27:48,310 --> 00:27:54,758 596 00:27:54,758 --> 00:27:59,141 >> [PUBLIEKSWERKING skree VOORSTELLE] 597 00:27:59,141 --> 00:28:22,210 598 00:28:22,210 --> 00:28:26,130 So het beide van die was ongelooflik vir baie verskillende redes. 599 00:28:26,130 --> 00:28:29,150 So dit is waar ons opgehou het 'n oomblik gelede 600 00:28:29,150 --> 00:28:32,530 en die sleutel insig hier is die deure moes nommers 601 00:28:32,530 --> 00:28:37,390 agter hulle wat gesorteer is, is die ideale afhaal, want wat is wat jy kan doen 602 00:28:37,390 --> 00:28:39,670 fundamenteel beter in hierdie tweede example-- 603 00:28:39,670 --> 00:28:42,380 en inderdaad, dit was Sean se eerste poging met ewekansige getalle 604 00:28:42,380 --> 00:28:45,460 net soos before-- maar sodra as hierdie getalle word gesorteer, 605 00:28:45,460 --> 00:28:47,980 baie soos die telefoon boek, Wat kan jy natuurlik doen? 606 00:28:47,980 --> 00:28:50,090 Of hoe kan jy hefboom wat kennis? 607 00:28:50,090 --> 00:28:51,530 Ja. 608 00:28:51,530 --> 00:28:54,910 >> Publiek: Jy gaan halfpad [onhoorbaar]. 609 00:28:54,910 --> 00:28:55,660 David Malan: Ja. 610 00:28:55,660 --> 00:28:56,160 Presies. 611 00:28:56,160 --> 00:28:59,680 So Ajay se aanvanklike instink was die einde na te gaan, as ek reg onthou, 612 00:28:59,680 --> 00:29:02,320 en dan het ons soort van klaar die voorbeeld vinnig. 613 00:29:02,320 --> 00:29:05,220 Maar as ons begin dit meer te doen metodies langs die lyne, 614 00:29:05,220 --> 00:29:07,860 maar begin dalk in die middel, want hulle is gesorteer, 615 00:29:07,860 --> 00:29:10,900 sodra ons openbaar die nommer 16, het ons dus know-- 616 00:29:10,900 --> 00:29:14,850 en laat ons doen presies that-- ons dus weet dat 50, in vandag se geval, 617 00:29:14,850 --> 00:29:16,080 het te wees aan die regterkant. 618 00:29:16,080 --> 00:29:18,735 So, net soos in week nul wanneer ons die telefoon boek geskeur in die helfte 619 00:29:18,735 --> 00:29:21,490 en gooi die helfte van die probleem weg, dieselfde idee hier. 620 00:29:21,490 --> 00:29:23,680 Ons kan dit half gooi van die probleem weg. 621 00:29:23,680 --> 00:29:25,730 En waarskynlik wat jy dalk algoritmies doen, 622 00:29:25,730 --> 00:29:28,710 Sodra jy weet dat 50 moet wees aan die regterkant, as dit op enige plek, 623 00:29:28,710 --> 00:29:31,390 is probeer om daar, in die middel van die oorblywende deure. 624 00:29:31,390 --> 00:29:33,450 Natuurlik, 50 hoër as 42, so ons kan 625 00:29:33,450 --> 00:29:36,060 gooi die oorblywende kwart van die probleem weg, 626 00:29:36,060 --> 00:29:38,510 en laastens, identifiseer iets soos 50. 627 00:29:38,510 --> 00:29:41,050 Maar net soos met die telefoon boek, hierdie getalle 628 00:29:41,050 --> 00:29:44,560 reeds aan ons gegee in gesorteerde volgorde, wat laat ons 629 00:29:44,560 --> 00:29:47,450 met die vraag, hoe kan jy dinge in orde gesorteer? 630 00:29:47,450 --> 00:29:49,640 En, eerlik, teen watter koste? 631 00:29:49,640 --> 00:29:51,390 Dit is een ding om te wees oorhandig die telefoon boek 632 00:29:51,390 --> 00:29:54,810 en dan beïndruk jou vriende deur die vind van 'n telefoonnommer regtig vinnig, reg? 633 00:29:54,810 --> 00:29:58,520 Skeur 32 bladsye uit 'n te vind persoon uit 4 miljard bladsye, 634 00:29:58,520 --> 00:30:00,470 ons gesê het, is die een uiterste voorbeeld. 635 00:30:00,470 --> 00:30:03,320 Maar hoeveel keer het dit Verizon dat telefoon boek te sorteer? 636 00:30:03,320 --> 00:30:06,170 Hoeveel tyd het dit ons neem hierdie sewe getalle te sorteer? 637 00:30:06,170 --> 00:30:10,110 Dit is 'n vraag wat ons het tot dusver heeltemal geïgnoreer. 638 00:30:10,110 --> 00:30:12,330 >> So laat se antwoord op hierdie vraag is nou. 639 00:30:12,330 --> 00:30:15,920 En ons is almal uit movies nou, maar ons het 'n paar stres balle. 640 00:30:15,920 --> 00:30:19,480 As, sê, agt vrywilligers sal nie omgee by ons hier? 641 00:30:19,480 --> 00:30:24,100 Kom ons gaan voort en doen, hoe die vier van julle, drie van julle hier? 642 00:30:24,100 --> 00:30:25,290 Kry 'n paar nuwe gesigte. 643 00:30:25,290 --> 00:30:27,220 En die vier van julle daar? 644 00:30:27,220 --> 00:30:30,760 En se nie vooroordeel now-- laat here-- en nommer agt hier op die einde. 645 00:30:30,760 --> 00:30:32,060 Kom op. 646 00:30:32,060 --> 00:30:32,560 Alle regte. 647 00:30:32,560 --> 00:30:37,480 So wat ons hier vir elkeen van julle is 'n nommer. 648 00:30:37,480 --> 00:30:40,055 As jy wil om te gaan voorlê, neem hierdie nommer. 649 00:30:40,055 --> 00:30:40,763 Wat is jou naam? 650 00:30:40,763 --> 00:30:41,950 >> Artie: Artie. 651 00:30:41,950 --> 00:30:43,100 >> David Malan: Artie, okay. 652 00:30:43,100 --> 00:30:44,297 Jy is nommer 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 Jy is nommer 2. 657 00:30:47,530 --> 00:30:49,100 En gaan voort, as ek die hand jy die velle papier, 658 00:30:49,100 --> 00:30:52,130 lyn julle in die voorkant van die musiek staan ​​in dieselfde volgorde as daar. 659 00:30:52,130 --> 00:30:52,660 >> ANDY: Hi, Andy. 660 00:30:52,660 --> 00:30:53,970 >> David Malan: Andy, dit is lekker om te sien. 661 00:30:53,970 --> 00:30:54,520 Nommer 3. 662 00:30:54,520 --> 00:30:55,310 >> Jakob Jakob. 663 00:30:55,310 --> 00:30:56,760 >> David Malan: Jakob, nommer 4. 664 00:30:56,760 --> 00:30:57,549 Welkom aan boord. 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 Nommer 5. 668 00:31:00,348 --> 00:31:01,200 >> Alanna: Alanna. 669 00:31:01,200 --> 00:31:02,766 >> David Malan: Alanna, nommer 6. 670 00:31:02,766 --> 00:31:03,589 >> FRANCES: Frances. 671 00:31:03,589 --> 00:31:04,880 David Malan: Frances, nommer 7. 672 00:31:04,880 --> 00:31:05,200 En? 673 00:31:05,200 --> 00:31:05,830 >> RACHEL: Rachel. 674 00:31:05,830 --> 00:31:06,815 >> David Malan: Rachel, nommer 8. 675 00:31:06,815 --> 00:31:07,100 Alle regte. 676 00:31:07,100 --> 00:31:08,766 Gaan voort en kry jouself in hierdie volgorde. 677 00:31:08,766 --> 00:31:11,440 Laat ek een oorblywende musiek staan ​​in die plek. 678 00:31:11,440 --> 00:31:13,670 Waar moet jy nie 'n stand? 679 00:31:13,670 --> 00:31:14,170 OK. 680 00:31:14,170 --> 00:31:18,710 Gaan voort en net sit jou nommers waar die gehoor kan sien hulle op, 681 00:31:18,710 --> 00:31:20,340 die musiek staan ​​na buite. 682 00:31:20,340 --> 00:31:27,240 En hopelik, ons eerste gesonde verstand tjek here-- 4, 2, 6. 683 00:31:27,240 --> 00:31:27,890 O-oh. 684 00:31:27,890 --> 00:31:29,070 Wag 'n minuut. 685 00:31:29,070 --> 00:31:31,140 Ons het nie 'n 8. 686 00:31:31,140 --> 00:31:35,180 Ek het jou nodig om te sit van die voorbeeld een of ander manier. 687 00:31:35,180 --> 00:31:35,680 Nee 688 00:31:35,680 --> 00:31:36,940 Nee, dis OK. 689 00:31:36,940 --> 00:31:37,890 Kom ons kyk. 690 00:31:37,890 --> 00:31:38,880 Ons kan dit doen. 691 00:31:38,880 --> 00:31:39,440 Staan. 692 00:31:39,440 --> 00:31:43,970 693 00:31:43,970 --> 00:31:45,740 Daar gaan ons. 694 00:31:45,740 --> 00:31:46,800 Korrek is. 695 00:31:46,800 --> 00:31:47,360 Alle regte. 696 00:31:47,360 --> 00:31:50,260 So, nou het ons 8, 1, 3 7, 5. 697 00:31:50,260 --> 00:31:50,760 OK. 698 00:31:50,760 --> 00:31:51,360 Uitstekend. 699 00:31:51,360 --> 00:31:54,400 >> So die vraag aan die hand is, op watter koste, en via watter metode, 700 00:31:54,400 --> 00:31:58,580 kan ons eintlik hier sorteer die getalle sodat ons soort van terug kan werk, 701 00:31:58,580 --> 00:32:02,759 Uiteindelik, en decide-- is dit regtig indrukwekkend is, is dit werklik doeltreffende, 702 00:32:02,759 --> 00:32:04,550 dat ek kan deel en 'n telefoon boek oorwin? 703 00:32:04,550 --> 00:32:06,716 Is dit werklik effektief dat Ek kan verdeel en oorwin 704 00:32:06,716 --> 00:32:08,600 diegene digitale stukke papier op die bord, 705 00:32:08,600 --> 00:32:14,500 As dit dalk gaan ons 'n koste fortuin in die tyd of energie of CPU siklusse 706 00:32:14,500 --> 00:32:17,340 eintlik kry om ons data in 'n paar gesorteer einde? 707 00:32:17,340 --> 00:32:18,930 So laat ons vra die vraag. 708 00:32:18,930 --> 00:32:22,077 >> So die eerste keer af, hierdie getalle is in pretty much enige volgorde, 709 00:32:22,077 --> 00:32:24,160 en ek gaan voor te stel een algoritme of proses 710 00:32:24,160 --> 00:32:25,970 waardeur ons hierdie mense kan sorteer. 711 00:32:25,970 --> 00:32:28,100 Ek gaan nader hierdie mooi naïef. 712 00:32:28,100 --> 00:32:30,730 En ek gaan om te erken dat dit is soort van 'n baie vir my 713 00:32:30,730 --> 00:32:32,890 my verstand te draai om die hele stel data in 'n keer. 714 00:32:32,890 --> 00:32:33,640 Maar jy weet wat? 715 00:32:33,640 --> 00:32:37,450 Ek gaan 'n paar te maak baie eenvoudige marginale kapt. 716 00:32:37,450 --> 00:32:41,152 4 en 2 is buite orde, indien die doel is om te gaan van 1 op tot 8. 717 00:32:41,152 --> 00:32:41,860 So weet jy wat? 718 00:32:41,860 --> 00:32:43,776 Ek gaan om jou te hê ouens ruil, as jy oorskakel 719 00:32:43,776 --> 00:32:46,380 fisies posisies en jou stukkies papier. 720 00:32:46,380 --> 00:32:47,894 Nou 4 en 6, dit is in orde. 721 00:32:47,894 --> 00:32:49,060 Ek gaan laat die wees. 722 00:32:49,060 --> 00:32:50,227 6 en 8, wat in orde is. 723 00:32:50,227 --> 00:32:51,185 Gaan laat hulle wees. 724 00:32:51,185 --> 00:32:52,170 8 and1, buite orde. 725 00:32:52,170 --> 00:32:54,790 As jy twee sou nie omgee uitruiling. 726 00:32:54,790 --> 00:32:57,300 Nou 8 en 3, indien julle ouens kon ruil. 727 00:32:57,300 --> 00:32:59,320 8 en 7, as jy ouens kan ruil. 728 00:32:59,320 --> 00:33:01,790 En 8 en 5, as jy ouens kan ruil. 729 00:33:01,790 --> 00:33:03,980 >> Nou, ek gedoen? 730 00:33:03,980 --> 00:33:05,200 Nee, natuurlik nie. 731 00:33:05,200 --> 00:33:07,880 Maar ek het die situasie beter, reg? 732 00:33:07,880 --> 00:33:09,430 Wat was jou naam nou weer, nommer 8? 733 00:33:09,430 --> 00:33:10,055 >> RACHEL: Rachel. 734 00:33:10,055 --> 00:33:12,850 David Malan: So Rachel het effektief geborrel redelik ver, 735 00:33:12,850 --> 00:33:15,660 al die pad na die einde van my skikking van getalle hier. 736 00:33:15,660 --> 00:33:17,310 En so dat die probleem is soort van opgelos. 737 00:33:17,310 --> 00:33:21,670 Nou, duidelik, 2 moet nog beweeg 'n bietjie, en 4 en 6 en 1. 738 00:33:21,670 --> 00:33:24,420 Maar dit lyk asof ek het gekry 'n bietjie nader aan die oplossing. 739 00:33:24,420 --> 00:33:26,790 So laat ons pas dit dieselfde naïef heuristiese weer. 740 00:33:26,790 --> 00:33:27,690 2 en 4, OK. 741 00:33:27,690 --> 00:33:28,810 4 en 6, OK. 742 00:33:28,810 --> 00:33:29,930 6 en 1, mm-mm. 743 00:33:29,930 --> 00:33:32,230 Kom ons ruil. 744 00:33:32,230 --> 00:33:33,200 6 en 3 mm-mm. 745 00:33:33,200 --> 00:33:34,420 Kom ons ruil. 746 00:33:34,420 --> 00:33:35,580 6 en 7 is OK. 747 00:33:35,580 --> 00:33:36,590 7 en 5, nope. 748 00:33:36,590 --> 00:33:37,790 Kom ons ruil. 749 00:33:37,790 --> 00:33:38,470 En nou 7 en 8. 750 00:33:38,470 --> 00:33:39,862 En wat is jou naam nou weer? 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 So nou Frances is in selfs 'n beter posisie, want nou 7 en 8 754 00:33:44,230 --> 00:33:46,440 korrek borrel op die top. 755 00:33:46,440 --> 00:33:47,510 So 2 en 4, OK. 756 00:33:47,510 --> 00:33:48,720 4 en 1, laat se omruil. 757 00:33:48,720 --> 00:33:50,410 4 en 3, laat se omruil. 758 00:33:50,410 --> 00:33:51,550 4 en 6, is jy OK. 759 00:33:51,550 --> 00:33:53,340 6 en 5, laat se omruil. 760 00:33:53,340 --> 00:33:54,590 En nou die ouens is goed. 761 00:33:54,590 --> 00:33:55,780 Ons is amper daar. 762 00:33:55,780 --> 00:33:57,706 2 en 1, buite orde, so ruil. 763 00:33:57,706 --> 00:33:59,080 En nou, laat my nie 'n gesonde verstand tjek. 764 00:33:59,080 --> 00:34:03,080 2 en 3, 3 en 4, 4 en 5, 5 en 6, 6 en 7, 8. 765 00:34:03,080 --> 00:34:05,060 OK, so ons klaar is. 766 00:34:05,060 --> 00:34:09,310 >> Maar teen watter koste het ek sorteer die getalle hier? 767 00:34:09,310 --> 00:34:13,960 Wel, hoeveel stappe gedoen het ek potensieel neem wanneer sorteer hierdie mense? 768 00:34:13,960 --> 00:34:15,710 Wel, ons sal terug na die vraag kom. 769 00:34:15,710 --> 00:34:18,030 Maar, eerlik, as jy het 'n bietjie verveeld, dis 770 00:34:18,030 --> 00:34:22,270 soort van die onthulling in dat dit nie Miskien is die mees doeltreffende algoritme. 771 00:34:22,270 --> 00:34:25,230 En inderdaad, eerlik, ek sweet al hoe meer loop heen en weer. 772 00:34:25,230 --> 00:34:26,639 Dit het nie voel besonder doeltreffend. 773 00:34:26,639 --> 00:34:27,805 So laat ons probeer om iets anders. 774 00:34:27,805 --> 00:34:31,870 As jy ouens kan herstel julle vir hierdie agt waardes. 775 00:34:31,870 --> 00:34:32,969 Goeie werk. 776 00:34:32,969 --> 00:34:36,570 >> Kom ons neem 'n blik digitaal vir net 'n oomblik voordat ons probeer iets anders, 777 00:34:36,570 --> 00:34:38,179 na wat net gebeur. 778 00:34:38,179 --> 00:34:41,330 Hier, wat jy oor om te sien ' visualisering van hierdie agt mense 779 00:34:41,330 --> 00:34:44,719 waardeur blou en rooi bars verteenwoordig nommers. 780 00:34:44,719 --> 00:34:46,670 Die langer die bar, hoe groter die nommer. 781 00:34:46,670 --> 00:34:48,510 Hoe korter die bar, hoe kleiner die nommer. 782 00:34:48,510 --> 00:34:51,560 En wat jy gaan om te sien, is in ewekansige om meer as agt van hulle. 783 00:34:51,560 --> 00:34:55,830 Jy gaan hierdie bars om te sien kry gesorteer volgens dieselfde algoritme 784 00:34:55,830 --> 00:34:59,890 of 'n stel instruksies wat Ons sal voortaan noem borrel soort. 785 00:34:59,890 --> 00:35:04,000 So sien, elke tweede of so, twee bars verligting in rooi, 786 00:35:04,000 --> 00:35:05,590 vergelyk word deur die rekenaar. 787 00:35:05,590 --> 00:35:08,630 En dan as die groot bar en die bietjie bar is buite orde, 788 00:35:08,630 --> 00:35:11,220 hulle word verruil vir my. 789 00:35:11,220 --> 00:35:15,120 >> En dit is ongelooflik vervelig om dit te sien, beslis, 790 00:35:15,120 --> 00:35:18,630 vir baie lank, maar kennis van die takeaway-- groot bars beweeg na regs, 791 00:35:18,630 --> 00:35:20,460 bietjie bars beweeg na links. 792 00:35:20,460 --> 00:35:23,380 Kom ons staak hierdie proses en bespoedig dit op 793 00:35:23,380 --> 00:35:27,330 te wees baie vinniger, so ons kan kry 'n hoë-vlak sin van wat, 794 00:35:27,330 --> 00:35:29,970 Inderdaad, is borrel soort doen. 795 00:35:29,970 --> 00:35:33,150 Inderdaad, is dit borrelende tot die regterkant van die lys, 796 00:35:33,150 --> 00:35:35,260 of die skikking, die groter bars. 797 00:35:35,260 --> 00:35:40,020 En omgekeerd, die klein bars is borrel hul pad na die linkerkant, 798 00:35:40,020 --> 00:35:42,950 al is dit teen 'n vinniger tempo as wat ons voorheen gedoen het. 799 00:35:42,950 --> 00:35:45,850 So, harder te sien met die mens, maar visueel dit is inderdaad wat 800 00:35:45,850 --> 00:35:46,540 gebeur het. 801 00:35:46,540 --> 00:35:49,110 >> Maar laat ons probeer om 'n fundamenteel verskillende benadering nou. 802 00:35:49,110 --> 00:35:52,387 Kom ons probeer om 'n ander algoritme waarvolgens ons het julle 803 00:35:52,387 --> 00:35:59,640 ouens begin in hierdie oorspronklike posisies, wat hierdie orde hier. 804 00:35:59,640 --> 00:36:00,827 En laat ons gaan voort nou. 805 00:36:00,827 --> 00:36:02,910 En ek gaan om iets te doen nog makliker, reg? 806 00:36:02,910 --> 00:36:06,710 In retrospek, uitruiling paarsgewyse weer en weer, amper 'n bietjie slim. 807 00:36:06,710 --> 00:36:10,460 Kom ons doen dinge nog meer naïef, waar as ek wil hierdie mense te sorteer, 808 00:36:10,460 --> 00:36:12,560 laat my net te hou soek vir die kleinste element. 809 00:36:12,560 --> 00:36:14,570 So nou, 4 is die kleinste getal wat ek gesien het. 810 00:36:14,570 --> 00:36:15,695 Ek is van plan om dit te onthou. 811 00:36:15,695 --> 00:36:17,750 Nee, 2 is beter, en onthou dat. 812 00:36:17,750 --> 00:36:20,730 1 is selfs kleiner. 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-- wat is jou naam nou weer? 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 So, Artie, voort te gaan. 819 00:36:25,460 --> 00:36:27,043 Ek gaan jou uit om die lyn te trek. 820 00:36:27,043 --> 00:36:28,400 As jy kon terug te kom hier. 821 00:36:28,400 --> 00:36:30,790 En ek moet plek maak vir hom. 822 00:36:30,790 --> 00:36:32,040 Ons het 'n besluit punt hier. 823 00:36:32,040 --> 00:36:36,000 Hoe kan ons kamer maak vir Artie hier aan die begin waar nommer 1 behoort? 824 00:36:36,000 --> 00:36:36,770 >> Publiek: Shift. 825 00:36:36,770 --> 00:36:38,950 >> David Malan: OK, ons kon almal verskuif. 826 00:36:38,950 --> 00:36:40,860 Maar voor 'n optimalisering. 827 00:36:40,860 --> 00:36:43,410 Dit voel 'n bietjie irriterend vir my vier mense te vra 828 00:36:43,410 --> 00:36:44,620 al die pad af te beweeg. 829 00:36:44,620 --> 00:36:45,520 Wat anders kon ek doen? 830 00:36:45,520 --> 00:36:46,360 >> Publiek: Skakel hulle. 831 00:36:46,360 --> 00:36:46,850 >> David Malan: Skakel hulle. 832 00:36:46,850 --> 00:36:47,900 En wat is jou naam nou weer? 833 00:36:47,900 --> 00:36:48,441 >> Jakob Jakob. 834 00:36:48,441 --> 00:36:50,330 David Malan: Jacob, beweeg. 835 00:36:50,330 --> 00:36:54,440 Veel meer doeltreffende net te hê Jacob ruil plekke met Artie, 836 00:36:54,440 --> 00:36:56,710 teenoor dwing al vier van hierdie mense, 837 00:36:56,710 --> 00:36:58,734 baie dankie, te hul regte posisie. 838 00:36:58,734 --> 00:37:01,150 Wat is lekker oor Artie nou, Hy is in sy regte posisie. 839 00:37:01,150 --> 00:37:02,060 Kom ons doen dit weer. 840 00:37:02,060 --> 00:37:03,730 2, wat is die kleinste getal wat ek gesien het. 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 is beslis die kleinste. 844 00:37:07,467 --> 00:37:08,550 Het nie enige werk te doen. 845 00:37:08,550 --> 00:37:09,320 Kom ons doen dit weer. 846 00:37:09,320 --> 00:37:10,070 6. 847 00:37:10,070 --> 00:37:10,640 Kleinste? 848 00:37:10,640 --> 00:37:11,140 8. 849 00:37:11,140 --> 00:37:11,590 Nee. 850 00:37:11,590 --> 00:37:11,720 4? 851 00:37:11,720 --> 00:37:12,220 Oe. 852 00:37:12,220 --> 00:37:13,420 Laat my dink aan 4. 853 00:37:13,420 --> 00:37:13,950 3. 854 00:37:13,950 --> 00:37:15,110 Laat my dink aan 3. 855 00:37:15,110 --> 00:37:16,080 7, 5. 856 00:37:16,080 --> 00:37:18,490 Kleinste getal wat ek het gesien op die pas is 3. 857 00:37:18,490 --> 00:37:20,340 As jy wil kom nie. 858 00:37:20,340 --> 00:37:21,986 Waar gaan ons om jou te sit? 859 00:37:21,986 --> 00:37:22,860 En wat is jou naam? 860 00:37:22,860 --> 00:37:23,530 >> Alanna: Alanna. 861 00:37:23,530 --> 00:37:25,780 >> David Malan: Alanna, ons is gaan hê om jou te sit. 862 00:37:25,780 --> 00:37:28,670 Maar dit is meer doeltreffend, om net ruil twee mense, 863 00:37:28,670 --> 00:37:31,850 as verskeie mense te hê eintlik systap oor. 864 00:37:31,850 --> 00:37:32,850 Nou laat dit weer doen. 865 00:37:32,850 --> 00:37:34,980 Ek gaan om te kies 4, so kom uit. 866 00:37:34,980 --> 00:37:36,540 En wie gaan om te beweeg? 867 00:37:36,540 --> 00:37:37,750 Nommer 8, natuurlik. 868 00:37:37,750 --> 00:37:40,260 As ek nou nommer 5, kom uit. 869 00:37:40,260 --> 00:37:42,104 Nommer 8 gaan kry weer uitgesit. 870 00:37:42,104 --> 00:37:43,770 Ek gaan nou nommer 6 te vind in die plek. 871 00:37:43,770 --> 00:37:44,410 7 in plek. 872 00:37:44,410 --> 00:37:45,080 8 in plek. 873 00:37:45,080 --> 00:37:48,590 >> Wat ons nou net gedoen het, is iets genoem seleksie soort, 874 00:37:48,590 --> 00:37:52,560 en as ons dit in beeld, dit is gaan voel 'n bietjie anders. 875 00:37:52,560 --> 00:37:56,800 Kom ons gaan voort en uit hierdie spyskaart hier, hierdie visualization-- 876 00:37:56,800 --> 00:38:02,920 laat verander hierdie aan- kom op, Firefox. 877 00:38:02,920 --> 00:38:07,610 Kom ons verander om dit te seleksie soort. 878 00:38:07,610 --> 00:38:11,830 En laat versnel dit soos tevore, en begin die visualisering nou. 879 00:38:11,830 --> 00:38:13,990 En hierdie algoritme 'n ander gevoel. 880 00:38:13,990 --> 00:38:16,480 Op elke iterasie, eerlik, dit is selfs meer eenvoudig. 881 00:38:16,480 --> 00:38:18,385 Ek is net die keuse van die kleinste element. 882 00:38:18,385 --> 00:38:21,510 Nou, eerlik, ek het 'n bietjie gelukkig dat tyd, in dat dit gesorteer super-vinnig. 883 00:38:21,510 --> 00:38:22,660 Die elemente was ewekansige. 884 00:38:22,660 --> 00:38:25,520 Dit is nie, soos ons sal uiteindelik sien, fundamenteel vinniger. 885 00:38:25,520 --> 00:38:29,400 Maar laat ons sien 'n derde en finale nader hier na wat aangaan. 886 00:38:29,400 --> 00:38:36,230 So laat ons gaan voort en stel julle ouens 'n laaste keer te wees in hierdie volgorde hier. 887 00:38:36,230 --> 00:38:38,450 >> En nou, ek gaan om te 'n bietjie meer slim, 888 00:38:38,450 --> 00:38:40,220 net om rond ons algoritmes. 889 00:38:40,220 --> 00:38:41,230 Ek gaan om dit te doen. 890 00:38:41,230 --> 00:38:43,140 Ek gaan om te gaan nie heen en weer so baie. 891 00:38:43,140 --> 00:38:44,900 Om eerlik te wees, ek is moeg van al hierdie omwentelingsrigting. 892 00:38:44,900 --> 00:38:47,691 Ek gaan net te neem wat ek gegee aan die begin van die lys, 893 00:38:47,691 --> 00:38:49,460 en ek gaan om te sorteer dat daar en dan. 894 00:38:49,460 --> 00:38:50,140 So hier is ons. 895 00:38:50,140 --> 00:38:51,030 Nommer 4. 896 00:38:51,030 --> 00:38:53,680 Ek gaan nommer te voeg 4 in 'n gesorteerde lys. 897 00:38:53,680 --> 00:38:54,180 Gedoen. 898 00:38:54,180 --> 00:38:58,300 Ek het nou eis, en net dit meer te maak duidelik is, is dit deel van my lys gesorteer. 899 00:38:58,300 --> 00:39:02,610 Dit is soort van 'n dom eis nie, maar wel 4 word gesorteer in 'n lys van die grootte een. 900 00:39:02,610 --> 00:39:04,210 Nou, ek gaan om te neem op nommer 2. 901 00:39:04,210 --> 00:39:07,670 Nommer 2 Ek gaan nou te plaas in die regte plek. 902 00:39:07,670 --> 00:39:08,680 So, waar 2? 903 00:39:08,680 --> 00:39:09,824 Dit is duidelik dat hier. 904 00:39:09,824 --> 00:39:11,490 So gaan voort en terug, as jy kon. 905 00:39:11,490 --> 00:39:14,406 En hoekom jy nie ouens net neem nie jou musiek staan ​​saam met jou hierdie tyd. 906 00:39:14,406 --> 00:39:17,020 En laat ons met geweld voeg jy in die begin van die lys. 907 00:39:17,020 --> 00:39:17,936 So 'n bietjie meer werk. 908 00:39:17,936 --> 00:39:20,890 Ek het Jacob om rond te beweeg, En wat is jou naam? 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 Maar ten minste het ek nie heen en weer te gaan. 912 00:39:24,350 --> 00:39:25,739 Ek is net om dinge soos ek gaan. 913 00:39:25,739 --> 00:39:27,530 Ek is net inbring hulle in die regte plek. 914 00:39:27,530 --> 00:39:29,220 6, is dit eintlik redelik maklik. 915 00:39:29,220 --> 00:39:31,510 Kom ons plaas jou daar, as jy wou net effens oor te skuif. 916 00:39:31,510 --> 00:39:32,870 Nommer 8, ook redelik maklik. 917 00:39:32,870 --> 00:39:33,741 Reg daar. 918 00:39:33,741 --> 00:39:34,240 Damn dit. 919 00:39:34,240 --> 00:39:37,590 Nommer 1 kan ons nie net ruil met Amin hier 920 00:39:37,590 --> 00:39:39,340 want dit gaan mors die einde. 921 00:39:39,340 --> 00:39:40,660 So ons het 'n bietjie meer slim wees. 922 00:39:40,660 --> 00:39:42,770 So, Artie, as jy kon back-up vir 'n oomblik. 923 00:39:42,770 --> 00:39:46,550 Kom ons gaan voort en verskuif nou, in teenstelling met ons vorige algoritmes, 924 00:39:46,550 --> 00:39:50,910 ruimte vir Artie te maak reg hier aan die begin. 925 00:39:50,910 --> 00:39:54,690 So aan die einde van die dag, ek is soort doen wat ek wou vermy het nie. 926 00:39:54,690 --> 00:39:57,770 En so my algoritme is 'n soort van omgekeer, intellektueel, 927 00:39:57,770 --> 00:39:59,070 van wat dit oorspronklik was. 928 00:39:59,070 --> 00:40:01,240 Ek is net besig met die verskuiwing op 'n ander punt. 929 00:40:01,240 --> 00:40:02,291 Nou is ek op 3. 930 00:40:02,291 --> 00:40:02,790 Ag, damn. 931 00:40:02,790 --> 00:40:04,039 Ons het weer meer werk te doen. 932 00:40:04,039 --> 00:40:05,060 So laat druk jou uit. 933 00:40:05,060 --> 00:40:09,360 Kom ons beweeg 8, 6, 4-- oh oh-- en 3 gaan net daar te gaan. 934 00:40:09,360 --> 00:40:11,490 So ten minste effense besparing hierdie tyd. 935 00:40:11,490 --> 00:40:13,100 7, wat nie te veel werk wat gedoen moet word. 936 00:40:13,100 --> 00:40:15,370 So as jy wil pop terug, laat ons voeg jou. 937 00:40:15,370 --> 00:40:17,440 En laastens, 5, as jy wil terug te pop, ons 938 00:40:17,440 --> 00:40:22,610 jy moet skuif, het jy, nie, totdat vyf is in plek. 939 00:40:22,610 --> 00:40:25,670 >> So nou is dit te sien in 'n hoë vlak grafies, 940 00:40:25,670 --> 00:40:31,080 Kom ons doen hierdie algoritme visualisering een bykomende tyd. 941 00:40:31,080 --> 00:40:33,580 So sal hierdie ons voeg soort noem. 942 00:40:33,580 --> 00:40:37,700 Ons sal dit loop net soos vinnig, en begin dit hier. 943 00:40:37,700 --> 00:40:39,580 En dit is ook 'n ander gevoel. 944 00:40:39,580 --> 00:40:42,180 Dit is soort van beter en beter, maar dit is nooit volmaak 945 00:40:42,180 --> 00:40:44,630 totdat ek gaan in en glad in die gapings. 946 00:40:44,630 --> 00:40:47,860 Omdat, weer, ek is maar net te neem wat Ek word gegee van links na regs. 947 00:40:47,860 --> 00:40:50,350 So ek het nie so gelukkig nie kry dat alles was perfek. 948 00:40:50,350 --> 00:40:54,190 Dit is hoekom ons het hierdie klein mispositions dat ons vaste verloop van tyd. 949 00:40:54,190 --> 00:40:58,890 >> So al hierdie algoritmes lyk loop op effens verskillende tempo. 950 00:40:58,890 --> 00:41:02,030 In werklikheid, wat sou jy sê is die beste of die vinnigste tot dusver? 951 00:41:02,030 --> 00:41:03,450 Borrel soort, die eerste? 952 00:41:03,450 --> 00:41:05,000 Seleksie soort, die tweede? 953 00:41:05,000 --> 00:41:08,450 Invoeging soort, die derde? 954 00:41:08,450 --> 00:41:10,710 Ek hoor dat sommige seleksie spesies. 955 00:41:10,710 --> 00:41:13,280 Ander gedagtes? 956 00:41:13,280 --> 00:41:16,880 >> So dit blyk dat al hierdie algoritmes 957 00:41:16,880 --> 00:41:22,400 fundamenteel net so doeltreffend as elke other-- of, omgekeerd, net soos 958 00:41:22,400 --> 00:41:25,980 ondoeltreffende soos elke ander, want ons kan fundamenteel doen 959 00:41:25,980 --> 00:41:28,120 beter as al drie van hierdie algoritmes. 960 00:41:28,120 --> 00:41:29,990 En dit is 'n bietjie van 'n wit leuen, ook. 961 00:41:29,990 --> 00:41:32,580 wanneer ek sê as doeltreffende of as ondoeltreffende, 962 00:41:32,580 --> 00:41:35,040 dit is ten minste vir super-groot waardes van n. 963 00:41:35,040 --> 00:41:38,450 Wanneer ons net agt mense hier, of miskien 50 of so bars op die skerm, 964 00:41:38,450 --> 00:41:41,645 jy sal absoluut sien verskille tussen dié drie algoritmes. 965 00:41:41,645 --> 00:41:44,020 Maar as n, die aantal mense, of die getal van getalle, 966 00:41:44,020 --> 00:41:46,350 of die aantal mense wat in die telefoon boek, of die aantal webblaaie 967 00:41:46,350 --> 00:41:48,230 in die databasis Google se groter en groter word, 968 00:41:48,230 --> 00:41:51,650 ons sal sien dat al drie van hierdie algoritmes is eintlik redelik swak. 969 00:41:51,650 --> 00:41:54,060 En ons kan fundamenteel doen beter as dit. 970 00:41:54,060 --> 00:41:56,830 >> Kom ons neem 'n blik, uiteindelik, na wat hierdie algoritmes mag 971 00:41:56,830 --> 00:41:59,520 klink soos in die konteks van 'n paar ander 972 00:41:59,520 --> 00:42:03,550 sowel deur middel van hierdie visualisering hier 973 00:42:03,550 --> 00:42:06,860 wat ons sal stel aan 'n aantal algoritmes. 974 00:42:06,860 --> 00:42:10,330 Kom ons gaan voort en geluk ons deelnemers hier, wat almal 975 00:42:10,330 --> 00:42:11,690 gesorteer hulself baie goed. 976 00:42:11,690 --> 00:42:15,124 As jy wil graag 'n afskeidsgeskenk te neem. 977 00:42:15,124 --> 00:42:16,540 Jy kan hou jou nommers sowel. 978 00:42:16,540 --> 00:42:19,460 979 00:42:19,460 --> 00:42:22,520 En wat jy sal sien, of liewer hoor, nou, 980 00:42:22,520 --> 00:42:25,710 is dat as ons sit klanke elk van hierdie bars 981 00:42:25,710 --> 00:42:28,660 en assosieer dit met die sagteware, verskillende frekwensie van klank, 982 00:42:28,660 --> 00:42:33,970 kan jy jou gedagtes meer audioly draai rondom wat elkeen van hierdie dinge 983 00:42:33,970 --> 00:42:34,470 lyk. 984 00:42:34,470 --> 00:42:39,325 Die eerste is invoeging soort 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 >> Dit is borrel soort. 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 >> Seleksie soort. 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 >> Iets genoem merge soort. 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 soort. 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 >> Dit is dit vir CS50. 1000 00:44:09,430 --> 00:44:13,360 Ons sal jy sien op Woensdag. 1001 00:44:13,360 --> 00:44:16,671 >> NARRATOR: En nou, "Diep Gedagtes, "deur Daven Farnham. 1002 00:44:16,671 --> 00:44:19,910 1003 00:44:19,910 --> 00:44:21,590 Hoekom is dit 'n lus vir? 1004 00:44:21,590 --> 00:44:23,200 Hoekom maak dit beter? 1005 00:44:23,200 --> 00:44:25,970 Ek wil 'n vyf lus. 1006 00:44:25,970 --> 00:44:28,720 >> [Gelag]