1 00:00:00,000 --> 00:00:10,982 2 00:00:10,982 --> 00:00:11,940 DAVID Malan: Nu labi. 3 00:00:11,940 --> 00:00:16,470 Tāpēc tas ir CS50, un tas ir Tagad sākums nedēļas trīs. 4 00:00:16,470 --> 00:00:19,960 >> Tātad līdz šim, mēs esam bijis rakstot programmas C 5 00:00:19,960 --> 00:00:23,210 kas izskatās mazliet kaut kas līdzīgs šim šeit. 6 00:00:23,210 --> 00:00:25,470 Tātad mēs esam ieguvuši pāris asu ietver augšpusē. 7 00:00:25,470 --> 00:00:28,490 Mēs esam ieguvuši int, galvenais, par spēkā neesošu, un tad kaut ko darīt pa vidu, 8 00:00:28,490 --> 00:00:30,590 daži mazliet koda iekšpusē šī funkcija. 9 00:00:30,590 --> 00:00:34,170 Bet galvenais ir tas, ka mēs esam teicis neesošu šeit. 10 00:00:34,170 --> 00:00:39,320 Tātad spēkā neesošu, visu šo laiku, precizē ka šī programma, ja skrien, 11 00:00:39,320 --> 00:00:41,300 var palaist tikai ar savu nosaukumu. 12 00:00:41,300 --> 00:00:46,330 Jūs nevarat rakstīt nekādus citus vārdus vai numuri pēc programmas nosaukums, ja 13 00:00:46,330 --> 00:00:46,830 rādīt to. 14 00:00:46,830 --> 00:00:51,200 Tā, piemēram, ja programmas bija apkopoti failu sauc sveiki, 15 00:00:51,200 --> 00:00:53,480 jūs varētu darīt ./hello, bet tas ir tā. 16 00:00:53,480 --> 00:00:56,750 >> Vienīgais veids, ka jūs varētu sniegt ieguldījumu šo programmu 17 00:00:56,750 --> 00:00:57,960 ir zvanot funkciju. 18 00:00:57,960 --> 00:00:59,790 Piemēram, kādu funkciju mēs esam bijuši, izmantojot līdz šim 19 00:00:59,790 --> 00:01:00,950 saņemt ieguldījumu no lietotāja? 20 00:01:00,950 --> 00:01:02,117 >> AUDITORIJA: Get virkni. 21 00:01:02,117 --> 00:01:04,700 DAVID Malan: Lai saņemtu virkni, vai get int, vai arī jūs esat redzējis citiem, 22 00:01:04,700 --> 00:01:07,630 pat tad, ja jūs neesat izmantojis tos vēl, piemēram get ilgi, kamēr un tamlīdzīgi. 23 00:01:07,630 --> 00:01:09,380 Bet pieņemsim, ka mēs tiešām vēlaties sākt 24 00:01:09,380 --> 00:01:12,760 rakstīšanas programmas, kas ir nedaudz vairāk universāls, un, atklāti sakot, nedaudz vairāk 25 00:01:12,760 --> 00:01:15,090 piemēram, komandas, kas jūs esat bijis panākt, cerams, 26 00:01:15,090 --> 00:01:16,550 mazliet pieraduši. 27 00:01:16,550 --> 00:01:18,560 Tāpat kā cd kosmosa Dropbox. 28 00:01:18,560 --> 00:01:20,800 Šis, protams, izmaiņas jūsu direktorija, pieņemot 29 00:01:20,800 --> 00:01:23,590 tu esi Džona Hārvardas mājās direktoriju, lai jūsu Dropbox mapē. 30 00:01:23,590 --> 00:01:27,380 Tikmēr komandu kā šis izveido jaunu direktoriju sauc pset2, 31 00:01:27,380 --> 00:01:30,290 kā jūs varētu būt jau ir, vai drīz par problēmu noteikti divi. 32 00:01:30,290 --> 00:01:33,970 Marka Sveiki, protams, ir komanda kas balstās programmu, ko sauc sveiki 33 00:01:33,970 --> 00:01:35,770 no failu sauc sveiki dot c. 34 00:01:35,770 --> 00:01:39,140 Un katrā no tiem gadījumi, tagad mēs esam bija 35 00:01:39,140 --> 00:01:43,620 sniegt argumentus par tā saukto komandrindas, mirgo ātri, 36 00:01:43,620 --> 00:01:48,540 lai make zina, ko būvēt, un tāpēc ka mkdir ko mapi zina, lai radītu, 37 00:01:48,540 --> 00:01:51,110 un tā, ka cd zina kur jūs vēlaties doties. 38 00:01:51,110 --> 00:01:54,720 Bet līdz šim, mēs turpinām sakot ka galvenais, jūsu noklusējuma funkcija, 39 00:01:54,720 --> 00:01:58,500 ir spēkā neesošu izteiksme iekšpusē šiem iekavās, 40 00:01:58,500 --> 00:02:01,250 kas nozīmē, ka tā nevar veikt nekādus argumentus. 41 00:02:01,250 --> 00:02:03,240 >> Tātad sākas šodien, ko mēs gatavojamies darīt 42 00:02:03,240 --> 00:02:06,270 ir, mēs ejam, lai sāktu atbalstīt lietas, piemēram, tas pat. 43 00:02:06,270 --> 00:02:08,990 Faktiski, šajā gadījumā, kas jums nav parasti manuāli veida, 44 00:02:08,990 --> 00:02:11,130 Padarīt ir to izdarīt mums, tur nav 45 00:02:11,130 --> 00:02:15,840 vienu, bet viens, divi, trīs papildu virknes pēc programma ir nosaukta 46 00:02:15,840 --> 00:02:16,850 šķindēt. 47 00:02:16,850 --> 00:02:18,240 Tātad, kā mēs to sasniegtu? 48 00:02:18,240 --> 00:02:20,260 >> Nu, kas sākas šodien, ja mēs vēlamies 49 00:02:20,260 --> 00:02:22,855 sniegt ieguldījumu, izmantojot tā saukto komandrindas, 50 00:02:22,855 --> 00:02:24,980 mēs ejam, lai sāktu pievienot šeit to, kas yellow-- 51 00:02:24,980 --> 00:02:30,520 aizstājot tukšumu ar int argc komatu string argv open kronšteins tuvu kronšteins. 52 00:02:30,520 --> 00:02:32,520 Tagad tas ir interesanti uz pāris iemeslu dēļ. 53 00:02:32,520 --> 00:02:35,690 Viens, tas notiek, lai mūs rakstīt programmas, kas ir nedaudz vairāk dinamiskāku. 54 00:02:35,690 --> 00:02:37,570 Bet vairāk pārliecinoši, tas notiek, lai atvērtu 55 00:02:37,570 --> 00:02:40,340 Tagad saruna par kādi bloki var patiešām 56 00:02:40,340 --> 00:02:43,300 var izmantot, par to, kas virkni tiešām ir zem motora pārsega, 57 00:02:43,300 --> 00:02:47,320 līdz nākamajai nedēļai, kad mēs sākam ar akvalangu pat vēl dziļāk par to, kā mašīna ir 58 00:02:47,320 --> 00:02:48,590 padarot visu šo sīkumi darbu. 59 00:02:48,590 --> 00:02:51,920 Bet tagad, pieņemsim izdarīt, varbūt, attēlu. 60 00:02:51,920 --> 00:02:54,950 >> Kad jūs uzrakstīt programmu ar galveno deklarēta 61 00:02:54,950 --> 00:02:58,810 Šādā veidā, tā, ka galvenais aizņem divus argumentus, int 62 00:02:58,810 --> 00:03:03,233 and-- kādi datu tips ir otrais arguments? 63 00:03:03,233 --> 00:03:04,529 >> AUDITORIJA: Array. 64 00:03:04,529 --> 00:03:05,320 DAVID Malan: Array. 65 00:03:05,320 --> 00:03:09,170 Tā izskatās no pirmā acu uzmetiena, piemēram, tas ir string, bet paziņojums kvadrātiekavas. 66 00:03:09,170 --> 00:03:12,760 Atceros pēdējo reizi mēs ieviesa jēdziens masīva. 67 00:03:12,760 --> 00:03:16,210 Un bloki izmantot kvadrātiekavas pāris kontekstiem. 68 00:03:16,210 --> 00:03:19,160 Jūs varētu izmantot laukumu kronšteini iedziļināties masīva 69 00:03:19,160 --> 00:03:22,710 un saņemt konkrētu elementu, piemēram, kronšteinu 0 vai kronšteins 1 vai kronšteins 2. 70 00:03:22,710 --> 00:03:25,500 Bet mēs redzējām, ja īsi, pagājušajā nedēļā, ka arī jūs 71 00:03:25,500 --> 00:03:28,790 izmantot šos kvadrātiekavas uz atzīt lielumu no masīva, 72 00:03:28,790 --> 00:03:31,790 ja jūs jau iepriekš zināt, cik daudz ints vai cik virknes, vai kāds jums 73 00:03:31,790 --> 00:03:32,630 patiešām vēlas. 74 00:03:32,630 --> 00:03:34,790 Tātad izrādās, tur ir trešā konteksts šeit 75 00:03:34,790 --> 00:03:37,890 ka nav vairāki iekšā no kvadrātiekavās. 76 00:03:37,890 --> 00:03:41,920 Kad norādāt, jo esmu šeit, nosaukums kaut ko līdzīgu ARGV, 77 00:03:41,920 --> 00:03:44,550 kas ir tikai iedomātā veids sakot arguments vektoru, kas 78 00:03:44,550 --> 00:03:47,750 ir vēl viens iedomātā veids sakot masīvu argumentiem, 79 00:03:47,750 --> 00:03:50,870 open kronšteins aizvērt kronšteins tikko nozīmē, ka jums nav obligāti 80 00:03:50,870 --> 00:03:52,960 iepriekš zināt, cik liela masīvs būs, 81 00:03:52,960 --> 00:03:55,070 bet jūs zināt, tas būs masīvs. 82 00:03:55,070 --> 00:03:57,320 Tātad, ja jūs nezināt numurs nav likt to tur, 83 00:03:57,320 --> 00:04:01,160 atvērtā stiprinājuma ciešu kronšteinu nozīmē, ka argv nav string, 84 00:04:01,160 --> 00:04:03,124 bet masīvs stīgas. 85 00:04:03,124 --> 00:04:05,040 Tātad sintaktiski, ja jums domāju, ka atpakaļ pagājušajā nedēļā, 86 00:04:05,040 --> 00:04:09,460 tas ir ļoti līdzīgs sakot kaut kā int vecumu atvērta kronšteinu, 87 00:04:09,460 --> 00:04:10,984 un tad kaut kas pēc tam. 88 00:04:10,984 --> 00:04:12,150 Tātad, ko tas izskatās? 89 00:04:12,150 --> 00:04:13,399 Pieņemsim faktiski izdarīt attēlu. 90 00:04:13,399 --> 00:04:18,756 Tātad, ja jūs palaist šo programmu ar Main kam divi argumenti definēts iekšā 91 00:04:18,756 --> 00:04:21,339 no šiem iekavās, tu būtībā ir vismaz divi gabalos 92 00:04:21,339 --> 00:04:23,560 atmiņas nodod jums zem motora pārsega. 93 00:04:23,560 --> 00:04:26,550 Viens, kā es ņemšu vērš kā šis taisnstūris, gatavojas saukt argc. 94 00:04:26,550 --> 00:04:30,645 Un tikpat ātri Atgādinājums, kāda ir datu tips argc? 95 00:04:30,645 --> 00:04:31,270 Tātad, tas ir int. 96 00:04:31,270 --> 00:04:33,480 Tātad numurs notiek iet argc-- pagriezienus 97 00:04:33,480 --> 00:04:35,660 , ka apzīmē argumentu skaits. 98 00:04:35,660 --> 00:04:38,887 Tajā pašā laikā, es esmu sastādīts ARGV kā masīvu. 99 00:04:38,887 --> 00:04:40,970 Un es īsti nezinu cik ilgi tas būs, 100 00:04:40,970 --> 00:04:42,470 tāpēc šodienas vajadzībām dot dot dot. 101 00:04:42,470 --> 00:04:43,636 Tas varētu saņemt dažu garuma. 102 00:04:43,636 --> 00:04:45,640 Bet es esmu attēlotie šeit vismaz četri taisnstūri. 103 00:04:45,640 --> 00:04:50,970 Tātad ARGV rieciens atmiņas šī veikali stīgu stīgu stīgu dot dot dot, 104 00:04:50,970 --> 00:04:53,950 un argc ir tikai viens gabals Atmiņas par veselam skaitlim. 105 00:04:53,950 --> 00:04:55,710 >> Tāpēc tagad, būsim nedaudz precīzāki. 106 00:04:55,710 --> 00:04:59,200 Ja, kad man ir virknes šajā masīvā, sauc 107 00:04:59,200 --> 00:05:03,290 argv, es vēlos saņemt pie viņiem individuāli, tāpat kā pagājušajā nedēļā, 108 00:05:03,290 --> 00:05:05,670 mēs gatavojamies izmantot apzīmējumu tāpat ARGV kronšteinu 0 109 00:05:05,670 --> 00:05:07,650 nokļūt pirmā lieta masīvu. 110 00:05:07,650 --> 00:05:10,440 Argv kronšteins 1, lai iegūtu Otra lieta, un tā tālāk. 111 00:05:10,440 --> 00:05:14,597 Galvenais šeit ir, mēs joprojām esam 0 indexed-- mēs joprojām skaitot no 0. 112 00:05:14,597 --> 00:05:16,430 Tāpēc tagad pieņemsim faktiski nodot kaut šajā. 113 00:05:16,430 --> 00:05:21,670 Ja es būtu sastādīt programmu, ko sauc sveiki no failu sauc sveiki dot c, 114 00:05:21,670 --> 00:05:24,340 un tad es palaist šo programmu ar punktu slash sveiki, 115 00:05:24,340 --> 00:05:28,380 Kāda mana datora, mans klēpjdators, izskatās zem pārsega 116 00:05:28,380 --> 00:05:31,300 kad es palaist dot slīpsvītra sveiki un hit Enter? 117 00:05:31,300 --> 00:05:33,500 Nu, tas ir iespējams ko mēs varētu aprakstīt 118 00:05:33,500 --> 00:05:37,010 kā satura sava datora atmiņu, vai RAM-- Random Access Memory. 119 00:05:37,010 --> 00:05:40,330 Citiem vārdiem, dators, kaut jums maģiski, 120 00:05:40,330 --> 00:05:45,360 liek numuru 1 argc, AKA argcount, un tas liek burtiski virkni 121 00:05:45,360 --> 00:05:48,200 ./hello in ARGV grupā 0. 122 00:05:48,200 --> 00:05:51,750 Man nav ne jausmas, atklāti sakot, to, kas ir in ARGV kronšteinu 1 vai 2, vai 3, 123 00:05:51,750 --> 00:05:55,550 jo, ja lietotājs ir ne drukāti kaut turklāt ./hello, 124 00:05:55,550 --> 00:05:58,550 mēs gatavojamies pieņemt, ka šie visticamāk ir atkritumu vērtības, 125 00:05:58,550 --> 00:05:59,700 tā runāt. 126 00:05:59,700 --> 00:06:02,650 Šie gabalos atmiņas pastāv, bet tas nav atkarīgs no mums 127 00:06:02,650 --> 00:06:05,710 skatīties uz tiem, jo argcount ir tikai viens. 128 00:06:05,710 --> 00:06:07,870 >> Tagad, tikmēr, ja I uzrakstīt palaist citu programmu, 129 00:06:07,870 --> 00:06:12,250 CD, kas ir vairāk atbilstoši komandu, Jūsu mirgojošu prompt-- cd telpā 130 00:06:12,250 --> 00:06:17,200 Dropbox-- kad es palaist, ka, efektīvi, kad cd programma tiek palaista, argc, 131 00:06:17,200 --> 00:06:22,270 iekšpusē mana datora atmiņā, ir visvairāk briefest otrais numurs 2. 132 00:06:22,270 --> 00:06:25,936 Un tad argv kronšteins o ir cd, argv kronšteins 1 ir Dropbox, 133 00:06:25,936 --> 00:06:28,560 un tad, protams, komandu pabeidz, lai visi šīs atmiņas 134 00:06:28,560 --> 00:06:30,420 būtībā iet prom un tiek izmantots kaut kas cits. 135 00:06:30,420 --> 00:06:32,270 Un tas ir iemesls, kāpēc es saku tikai sekundes daļu. 136 00:06:32,270 --> 00:06:35,720 >> Tikmēr, ja mēs mkdir pset2, attēls izskatās gandrīz tāds pats, 137 00:06:35,720 --> 00:06:37,900 bet ar dažādām stīgām iekšpusē ARGV. 138 00:06:37,900 --> 00:06:42,570 Ja man šķindēt domuzīme sveiki sveiki dot c, pati ideja. 139 00:06:42,570 --> 00:06:47,060 Vairāk sīkumi ir jāaizpilda argv, un argc, protams, ir 4. 140 00:06:47,060 --> 00:06:49,150 Tātad citiem vārdiem sakot, pat ja šī masīva 141 00:06:49,150 --> 00:06:52,950 varētu dot dot dot, dažu mainīga garuma, tā sakot, 142 00:06:52,950 --> 00:06:56,720 Jūs vienmēr zināt, kur tā beigās ir, jo argc gatavojas jums pastāstīt 143 00:06:56,720 --> 00:07:00,120 kurā brīdī jums ir, lai apturētu meklē elementiem ARGV. 144 00:07:00,120 --> 00:07:03,660 Jūs varat tikai apskatīt četri kopumā šajā lietā. 145 00:07:03,660 --> 00:07:06,600 >> Tātad pieņemsim tagad to apskatīt, varbūt, vienkāršu programmu. 146 00:07:06,600 --> 00:07:09,070 Viens, kas vienkārši saka sveiki lai kāds, piemēram, Zamyla. 147 00:07:09,070 --> 00:07:12,620 Tāpēc es varu pieprasīt es esmu gatavojas uzrakstīt programmu tikai brīdi, caur kuru es varētu darīt 148 00:07:12,620 --> 00:07:16,670 ./hello telpa Zamyla, un tad es gribu mana programma izdrukāt kaut ko 149 00:07:16,670 --> 00:07:18,520 super-vienkāršs, piemēram, "Hello, Zamyla." 150 00:07:18,520 --> 00:07:20,100 Tagad pagātnē, mēs esam izmanto getstring. 151 00:07:20,100 --> 00:07:22,850 Tātad agrāk, pat tad, ja jūs esat jauns, lai plānošanas, 152 00:07:22,850 --> 00:07:27,180 izredzes ir jūs varētu sakult programma, kas izmanto getstring 153 00:07:27,180 --> 00:07:29,390 un pēc tam izmanto printf teikt hi Zamyla. 154 00:07:29,390 --> 00:07:31,290 Bet pieņemsim neizmantot getstring šo laiku. 155 00:07:31,290 --> 00:07:37,510 Ļaujiet man nevis iedziļināties Appliant un tie ietver standarta man O dot h. 156 00:07:37,510 --> 00:07:41,160 Ļaujiet man ir arī CS50 dot h. 157 00:07:41,160 --> 00:07:44,730 Tagad int galvenais, un tagad es esmu nav gatavojas darīt spēkā neesošu šodien. 158 00:07:44,730 --> 00:07:51,200 Tā vietā, es esmu gatavojas darīt int argc string argv open kronšteins tuvu kronšteins, 159 00:07:51,200 --> 00:07:52,640 nenorādot numuru. 160 00:07:52,640 --> 00:07:54,644 Un tagad šeit ir mans tā sauktais darīt. 161 00:07:54,644 --> 00:07:57,560 Ko es esmu gatavojas darīt tagad, ir, es esmu gatavojas darīt mazliet lēciens ticības, 162 00:07:57,560 --> 00:08:00,560 Es esmu gatavojas pieņemt, ka lietotāja gatavojas izmantot šo programmu pareizi, 163 00:08:00,560 --> 00:08:04,980 un es esmu tikai gatavojas do printf hello,% SN. 164 00:08:04,980 --> 00:08:06,630 Tātad nekas jauns tur. 165 00:08:06,630 --> 00:08:11,470 Bet es gribu, lai tagad varētu neatkarīgi vārds lietotājs pēc programmas nosaukuma. 166 00:08:11,470 --> 00:08:16,970 Tātad, ja man ./hello telpu Zamyla, es gribu kaut programmatiski piekļūt 167 00:08:16,970 --> 00:08:20,870 citēt likt pēdiņas beigās "Zamyla." tāpēc es var iet manā arguments vektoru, 168 00:08:20,870 --> 00:08:25,980 mans masīvs stīgas, un, ja komandu, atkal bija ./hello telpa Zamyla, 169 00:08:25,980 --> 00:08:29,340 cik lielā skaitā es gribu likt ARGV šeit? 170 00:08:29,340 --> 00:08:29,840 AUDITORIJA: 1. 171 00:08:29,840 --> 00:08:32,355 DAVID Malan: 1, jo kronšteins 0 Izrādās 172 00:08:32,355 --> 00:08:34,230 būs programmas nosaukums, kā mēs redzējām. 173 00:08:34,230 --> 00:08:37,789 Tātad kronšteins 1 ir pirmais vārds ka I, lietotājs, ir drukāti. 174 00:08:37,789 --> 00:08:39,559 Es iešu uz priekšu un saglabājiet to. 175 00:08:39,559 --> 00:08:42,830 Es iešu uz manu mapi kur es esmu ievietots šo failu. 176 00:08:42,830 --> 00:08:44,920 Es esmu gatavojas darīt, lai sveiki 3. 177 00:08:44,920 --> 00:08:46,230 Comp IO ir OK. 178 00:08:46,230 --> 00:08:51,380 ./hello Zamyla Enter. 179 00:08:51,380 --> 00:08:54,480 Ko es daru nepareizi? 180 00:08:54,480 --> 00:08:57,270 Man bija nozvejojuši pārsteigums pats tikai brīdi tur. 181 00:08:57,270 --> 00:08:58,230 Ko es daru nepareizi? 182 00:08:58,230 --> 00:08:59,220 >> AUDITORIJA: Vārds. 183 00:08:59,220 --> 00:09:01,767 >> DAVID Malan: fails ir faktiski aicināja hello3.c. 184 00:09:01,767 --> 00:09:03,850 Un es darīju, ka tikai konsekvence, jo mēs esam 185 00:09:03,850 --> 00:09:06,550 bija hello.c grāds pagātne tiešsaistes kodu. 186 00:09:06,550 --> 00:09:11,550 Tātad, pieņemsim noteikt šo ./hello kronšteins domuzīme 3 Zamyla. 187 00:09:11,550 --> 00:09:12,370 Enter. 188 00:09:12,370 --> 00:09:14,030 Un tagad mums ir sveiki, Zamyla. 189 00:09:14,030 --> 00:09:17,650 Tajā pašā laikā, es varu mainīt to būt Rob, vai tiešām jebkuru citu vārdu. 190 00:09:17,650 --> 00:09:19,230 >> Bet pieņemsim apsvērt stūra lietu. 191 00:09:19,230 --> 00:09:24,360 Kas jūs varētu gaidīt, kas notiks, ja Man nav rakstīt ikviens vārdu vispār? 192 00:09:24,360 --> 00:09:25,270 >> AUDITORIJA: Kļūda. 193 00:09:25,270 --> 00:09:27,300 >> DAVID Malan: kļūda kaut kāda, varbūt. 194 00:09:27,300 --> 00:09:28,200 Let 's redzēt. 195 00:09:28,200 --> 00:09:29,440 Enter. 196 00:09:29,440 --> 00:09:30,210 Null. 197 00:09:30,210 --> 00:09:33,870 Tātad printf ir faktiski ir mazliet aizsargā mums 198 00:09:33,870 --> 00:09:38,131 šeit, un burtiski drukāšanas atvērtos paren null, bet vēl sliktāk lietas var notikt. 199 00:09:38,131 --> 00:09:40,130 Un tikai, lai pierādītu kaut kas jums ir absolūti 200 00:09:40,130 --> 00:09:42,800 nevajadzētu darīt, pieņemsim iet šeit un sākt papētījis. 201 00:09:42,800 --> 00:09:43,300 Tiesības? 202 00:09:43,300 --> 00:09:46,410 Ja es zinu, ka aina atmiņa ir būtībā tas, 203 00:09:46,410 --> 00:09:52,660 argv kronšteins 1 ir Zamyla, ARGV kronšteins 0 ir ./hello, vai ./hello-3. 204 00:09:52,660 --> 00:09:55,400 Kas ir grupā 2? 205 00:09:55,400 --> 00:09:58,210 Tātad, es varu atbildēt, ka apšaubīt sevi, vai ne? 206 00:09:58,210 --> 00:10:00,460 Es varu tikai mainīt 1 līdz 2. 207 00:10:00,460 --> 00:10:07,270 Es tagad var recompile sveiki 3, ./hello3 Aplūkosim tuvāk un hit Enter. 208 00:10:07,270 --> 00:10:08,270 Whoops. 209 00:10:08,270 --> 00:10:10,660 Nē quote zīme. 210 00:10:10,660 --> 00:10:12,540 Interesanti. 211 00:10:12,540 --> 00:10:15,530 Tātad tas ir sava veida forši redzētu, ko vēl ir šeit. 212 00:10:15,530 --> 00:10:17,130 >> Tātad, kas vēl ir iekšā manu klēpjdators? 213 00:10:17,130 --> 00:10:20,390 Pieņemsim saglabāt to ar kronšteinu 3. 214 00:10:20,390 --> 00:10:25,190 Padarīt hello3, ./hello-3. 215 00:10:25,190 --> 00:10:26,500 Ziņkārīgs. 216 00:10:26,500 --> 00:10:30,560 Un tagad pieņemsim riktīgi bold-- 50. 217 00:10:30,560 --> 00:10:34,340 Tā ka ir patiešām niršana dziļi uz mana datora atmiņā. 218 00:10:34,340 --> 00:10:35,930 50 indeksi in. 219 00:10:35,930 --> 00:10:41,950 Tātad, lai sveiki 3 ./hello-3. 220 00:10:41,950 --> 00:10:42,680 Ziņkārīgs. 221 00:10:42,680 --> 00:10:44,660 Nu labi, tagad es esmu tikai gatavojas saņemt neapdomāti. 222 00:10:44,660 --> 00:10:47,331 Iesim līdz 5000. 223 00:10:47,331 --> 00:10:47,830 Viss labi. 224 00:10:47,830 --> 00:10:49,520 Tāpēc ļaujiet man recompile. 225 00:10:49,520 --> 00:10:51,460 Padarīt 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 Tagad daži no jums, tur varētu būt spuldze iet off. 229 00:10:59,250 --> 00:11:01,900 Cik daudzi no jums ir redzējuši šo ziņu pirms? 230 00:11:01,900 --> 00:11:03,440 OK. 231 00:11:03,440 --> 00:11:04,420 Tātad, kāpēc? 232 00:11:04,420 --> 00:11:07,250 >> Odds are-- un tur ir dažādi lietas, kas var izraisīt to, 233 00:11:07,250 --> 00:11:09,730 un skaidri tu esi labs company-- mums ir skaidri 234 00:11:09,730 --> 00:11:11,900 izraisa tas, ko sauc segmentēšana vaina. 235 00:11:11,900 --> 00:11:15,890 Un garš stāsts īss, šodien, es ir pieskāries segments atmiņas 236 00:11:15,890 --> 00:11:17,060 ka man nevajadzētu būt. 237 00:11:17,060 --> 00:11:19,970 Kur segments nozīmē tikai rieciens atmiņas, ka man nevajadzētu būt. 238 00:11:19,970 --> 00:11:25,530 Tagad dators garantē, ka, ja es palaist ./helloZamyla ka es varu pieskarties ARGV 239 00:11:25,530 --> 00:11:27,760 būt kronšteins 0 un argv kronšteins 1. 240 00:11:27,760 --> 00:11:32,730 Bet argc ir vērtība 2, tas nozīmē, ka es esmu tikai allowed-- tas ir sava veida goda 241 00:11:32,730 --> 00:11:35,180 system-- pieskarties kronšteins 0 un kronšteins 1. 242 00:11:35,180 --> 00:11:37,990 Ja es iet jebkurā tālāk, tur ir pilnīgi būs atmiņu tur. 243 00:11:37,990 --> 00:11:40,660 Mans RAM pastāv fiziski datorā. 244 00:11:40,660 --> 00:11:42,080 Bet kas zina, kas tur ir? 245 00:11:42,080 --> 00:11:44,450 Patiešām, es skrienu vairākus programmas vienā reizē. 246 00:11:44,450 --> 00:11:46,910 Es varētu būt seen-- ja es nebūtu darot uz Appliant 247 00:11:46,910 --> 00:11:49,937 bet par manu Mac vai PC-- es varētu būt redzējuši saturu e-pastu. 248 00:11:49,937 --> 00:11:52,270 Es varētu būt redzējis tūlītēju ziņa Esmu nesen nosūtīts. 249 00:11:52,270 --> 00:11:55,390 Jebkas, kas varētu būt svārstījies ap atmiņā 250 00:11:55,390 --> 00:11:59,180 varēja piekļūt, kā šis patvaļīgs kvadrātiekava notācija. 251 00:11:59,180 --> 00:12:02,850 Vai, vēl sliktāk, Jums varētu būt atrada vienu no maniem paroles 252 00:12:02,850 --> 00:12:05,859 ka es gribētu nesen ierakstījāt, ka Programma bija saglabāti atmiņā tā, 253 00:12:05,859 --> 00:12:07,900 autentificēt mani, un tad tikai veida atstāja to 254 00:12:07,900 --> 00:12:09,910 RAM kamēr es atmest šo programmu. 255 00:12:09,910 --> 00:12:12,860 >> Un tiešām, tas ir viens no briesmas un viens pilnvaras 256 00:12:12,860 --> 00:12:15,980 izmantojot valodu, piemēram, C. Jums ir neierobežota pieeja 257 00:12:15,980 --> 00:12:18,860 uz visu saturu no kādas programmas atmiņā, 258 00:12:18,860 --> 00:12:21,340 un kādi sliktie puiši var pat darīt šajos cases-- 259 00:12:21,340 --> 00:12:23,807 it īpaši, ja mēs nokļūt Web programmēšana 260 00:12:23,807 --> 00:12:26,890 uz beigām semestra, mēs pārskatīt šo topic-- ir kule apkārt, 261 00:12:26,890 --> 00:12:31,660 iespējams, kāds ir dators s atmiņu un atrast šādus ziņkārīgs lietas 262 00:12:31,660 --> 00:12:32,570 kā mēs tur redzējām. 263 00:12:32,570 --> 00:12:36,900 Vai pat vēl sliktāk, paroles, ka viņš vai viņa pēc tam var izmantot, lai darīt sliktas lietas. 264 00:12:36,900 --> 00:12:40,240 >> Tik skaidri es nebūtu izdarījis, jo dīvaini lietas sāk notikt. 265 00:12:40,240 --> 00:12:42,310 Patiešām, tas ir programma crashing. 266 00:12:42,310 --> 00:12:44,580 Tas būtu līdzvērtīgi Mac OS vai Windows 267 00:12:44,580 --> 00:12:46,770 programmas logs vienkārši pazūd. 268 00:12:46,770 --> 00:12:48,300 Radās neparedzēta kļūda. 269 00:12:48,300 --> 00:12:50,840 In komandrindas vidē mēs redzam kaut kas līdzīgs šim. 270 00:12:50,840 --> 00:12:54,480 Bet tas ir iemesls, kāpēc, ir es esmu vienkārši pieskaroties atmiņu, kas nepieder man. 271 00:12:54,480 --> 00:12:57,090 >> Tāpēc pieņemsim aizstāvēties pret šo a mazliet citādā veidā 272 00:12:57,090 --> 00:12:59,010 , apskatot šo programmu šeit. 273 00:12:59,010 --> 00:13:01,000 Tātad, atkal, skelets ka mēs redzējām earlier-- 274 00:13:01,000 --> 00:13:02,480 un es esmu uzsvēra šo laika int. 275 00:13:02,480 --> 00:13:05,900 Un visu šo laiku galvenais ir tiešām atgriezās vērtību. 276 00:13:05,900 --> 00:13:09,120 Lai gan lielākā daļa mūsu lekciju piemēri, mēs nekad reiz izmantotas 277 00:13:09,120 --> 00:13:10,990 atgriezties neko galvenais. 278 00:13:10,990 --> 00:13:13,710 Mēs vienkārši rakstīt printf tuvu cirtaini lencēm, un tas arī viss. 279 00:13:13,710 --> 00:13:16,500 Bet par brīvu, ko kompilators ir darījis, lai jūs, 280 00:13:16,500 --> 00:13:19,510 efektīvi, atgriežas 0 jums. 281 00:13:19,510 --> 00:13:22,950 Turns out-- un tas ir nedaudz counterintuitive-- ka 0 ir labs. 282 00:13:22,950 --> 00:13:24,690 Tas nenozīmē, ka nepatiesa per se. 283 00:13:24,690 --> 00:13:29,080 0 ir labs, un jebkuru valsti, 0 vērtība, pasaule ir nolēmusi, 284 00:13:29,080 --> 00:13:30,619 var neizsaka kļūda. 285 00:13:30,619 --> 00:13:32,910 Tātad, ja jūs esat kādreiz messed kaut up datorā, 286 00:13:32,910 --> 00:13:36,600 vai programma ir tikko miris par jums un tu būsi kādu kļūdainu logu 287 00:13:36,600 --> 00:13:40,360 ekrānā, sakot kļūda negatīvs 49 vai kļūda 23-- 288 00:13:40,360 --> 00:13:44,170 daži šķietami patvaļīgi value-- ka ir tāpēc, ka programmētājs ir iekodēts 289 00:13:44,170 --> 00:13:49,370 vērtību, piemēram, negatīva 49 vai pozitīvs 23 pārstāvēt jebkuru numuru, uzdrošinos teikt, 290 00:13:49,370 --> 00:13:53,340 no 4 miljardus iespējamām lietām kas varētu noiet greizi programmā. 291 00:13:53,340 --> 00:13:55,700 >> Tātad, kā es varētu lietot priekšrocība ir tas pats? 292 00:13:55,700 --> 00:13:58,970 Nu, ļaujiet man atvērt programmu , ka es rakstīju iepriekš, 293 00:13:58,970 --> 00:14:01,450 un kule ap tiešsaistes sauc sveiki 4. 294 00:14:01,450 --> 00:14:05,650 Un tas ir gandrīz identiski, izņemot to, ka tā ieguva mazliet kļūdu pārbaudei. 295 00:14:05,650 --> 00:14:09,660 Šajā gadījumā, es esmu atkal deklarēta Galvenais kā, ņemot divus argumentus, 296 00:14:09,660 --> 00:14:13,180 bet šoreiz, on line 17, paziņojums Es esmu dara mazliet veselība pārbaudītu. 297 00:14:13,180 --> 00:14:17,100 Es esmu pārliecinoties, ka argc vienāds vienāds ar 2. 298 00:14:17,100 --> 00:14:18,960 Jo, ja tā ir, ka nozīmē, es varu droši 299 00:14:18,960 --> 00:14:21,420 pieskarties ne tikai kronšteinu 0, bet kronšteinu 1. 300 00:14:21,420 --> 00:14:24,330 Un es iet uz priekšu un izdrukāt, šajā gadījumā, Zamyla vai Rob 301 00:14:24,330 --> 00:14:26,020 vai kāds vārds es drukāti out. 302 00:14:26,020 --> 00:14:28,020 Un tagad tikai, lai iegūtu nedaudz vairāk pareizu, 303 00:14:28,020 --> 00:14:31,910 Es esmu gatavojas skaidri atgriezties 0 neizsaka viss ir labi. 304 00:14:31,910 --> 00:14:33,300 Nekas slikts noticis. 305 00:14:33,300 --> 00:14:38,590 >> Bet pēc vienošanās, es esmu gatavojas atgriešanās 1, vai atklāti sakot visus nenoteiktas 0 vērtība, 306 00:14:38,590 --> 00:14:40,160 ja kaut kas nogāja greizi. 307 00:14:40,160 --> 00:14:43,270 Tagad lietotājs nav gatavojas tiešām paziņojums, kas notiek. 308 00:14:43,270 --> 00:14:50,410 Patiešām, ja es iedziļināties šajā direktorijā, mēs tuvinātu un darīsim Sveiki 4, 309 00:14:50,410 --> 00:14:54,210 ./hello-4 Zamyla uzvedas kā es gaidīt. 310 00:14:54,210 --> 00:14:58,570 Bet, ja es tā vietā nerakstiet kaut kas, nekas, šķiet, varētu notikt, 311 00:14:58,570 --> 00:14:59,680 bet tas nav crash. 312 00:14:59,680 --> 00:15:04,660 Un, ja es tā vietā kaut ko darīt piemēram, Rob ir prokūrists 313 00:15:04,660 --> 00:15:07,550 in Thayer-- apmaiņu patvaļīga informācija. 314 00:15:07,550 --> 00:15:13,680 Bet paziņojums, argv 1, 2, 3, 4, un 5 tagad vajadzētu pastāvēt atmiņā. 315 00:15:13,680 --> 00:15:16,540 Tas arī nav ko mana programma sagaida, 316 00:15:16,540 --> 00:15:20,300 jo es esmu pārbaudījis, vai argc vienāds atbilst 2 vai ne. 317 00:15:20,300 --> 00:15:22,140 Tāpēc es esmu tagad aizstāvēt pret to. 318 00:15:22,140 --> 00:15:25,290 >> Tagad, kā malā, mēs programmer-- vai drīzāk mēs users-- 319 00:15:25,290 --> 00:15:29,670 nekad redzēt, ka 0 vai 1, bet izmantojot instruments, ko sauc Defektu novēršana vai citus instrumentus, 320 00:15:29,670 --> 00:15:32,250 kā mēs redzēsim pirms ilgi, jūs programmētājs 321 00:15:32,250 --> 00:15:36,590 faktiski var redzēt, kas varētu būt notiek nepareizi iekšpusē jūsu programmā. 322 00:15:36,590 --> 00:15:39,170 >> Tātad, kādi jautājumi par argc? 323 00:15:39,170 --> 00:15:40,873 Jā. 324 00:15:40,873 --> 00:15:45,292 >> AUDITORIJA: Es esmu redzējis, kur viņi nav bijis raksturs, [nedzirdama] 325 00:15:45,292 --> 00:15:49,669 tikko teica string zvaigzne d, piemēram, raksturs zvaigznīte komats. 326 00:15:49,669 --> 00:15:50,710 Vai tie ir līdzvērtīgi šeit? 327 00:15:50,710 --> 00:15:51,626 >> DAVID Malan: Viņi ir. 328 00:15:51,626 --> 00:15:55,080 Tātad jautājums ir, jums ir reizēm redzējis programmas 329 00:15:55,080 --> 00:15:57,270 , piemēram, tas, ka nav saka string ARGV kronšteinu 330 00:15:57,270 --> 00:16:01,015 bet gan kaut ko pateikt tāpat char zvaigzne ARGV grupā. 331 00:16:01,015 --> 00:16:03,140 Un tur ir vēl citi varianti, ka jūs varētu redzēt. 332 00:16:03,140 --> 00:16:04,264 Tie patiešām līdzvērtīgi. 333 00:16:04,264 --> 00:16:06,240 Tagad, mums ir šie veida mācību riteņiem 334 00:16:06,240 --> 00:16:09,737 gada formā virknes CS50 bibliotēka, bet tikai nedaudz vairāk par nedēļu 335 00:16:09,737 --> 00:16:12,570 vai tāpēc mēs ejam, lai novērstu, ka obstrukcija kopumā un faktiski 336 00:16:12,570 --> 00:16:16,820 apskatīt kādā char un zvaigzne ir, un to, kā tie attiecas uz atmiņu 337 00:16:16,820 --> 00:16:18,140 pārstāvību kopumā. 338 00:16:18,140 --> 00:16:19,540 Tātad mēs būsim atpakaļ uz to. 339 00:16:19,540 --> 00:16:21,540 >> Citi jautājumi par mūsu ARGV vai argc? 340 00:16:21,540 --> 00:16:22,397 Jā. 341 00:16:22,397 --> 00:16:24,438 AUDITORIJA: Kāpēc tas atgrieztos kļūda [nedzirdama]? 342 00:16:24,438 --> 00:16:27,147 343 00:16:27,147 --> 00:16:29,230 DAVID Malan: Kāpēc to darīja atpakaļ kļūda only-- oh! 344 00:16:29,230 --> 00:16:31,813 Kā iepriekšējā gadījumā, kad mēs Tika futzing apkārt ar atmiņu, 345 00:16:31,813 --> 00:16:35,110 kāpēc tas tikai atpakaļ kļūda kad es tiešām drukāti lielu skaitu? 346 00:16:35,110 --> 00:16:36,620 Īsā atbilde ir, mēs vienkārši palaimējies. 347 00:16:36,620 --> 00:16:39,240 Vispārīgi runājot, datoru piešķir atmiņas gabalos, 348 00:16:39,240 --> 00:16:42,900 un tas deva man pietiekami lielas rieciens, ka Man prom, bez pamanīju, 349 00:16:42,900 --> 00:16:46,280 no aizkustinošs grupā 2, grupā 3, kronšteins 50, bet tiklīdz es stumtu 350 00:16:46,280 --> 00:16:49,080 mana laime, es devos tālāk robežas rieciens atmiņas 351 00:16:49,080 --> 00:16:50,520 operētājsistēma bija devis man. 352 00:16:50,520 --> 00:16:52,720 Un tas ir tad, kad to skavām un teica, nē. 353 00:16:52,720 --> 00:16:54,580 Segmentācija kļūda. 354 00:16:54,580 --> 00:16:55,692 Jā. 355 00:16:55,692 --> 00:16:58,890 >> AUDITORIJA: Kā dators zina vērtību argc? 356 00:16:58,890 --> 00:17:02,390 >> DAVID Malan: Kā dators zina vērtību argc? 357 00:17:02,390 --> 00:17:07,920 Palaižot programmu, šī programma, pēc rakstura mirgojošu uzvednē 358 00:17:07,920 --> 00:17:11,359 ir pasniedza masīvs vārdi, kas tika drukāti 359 00:17:11,359 --> 00:17:13,300 pie ātru, kas bija drukāti pie uzvednē. 360 00:17:13,300 --> 00:17:16,569 Un tā tas ir jūsu darba sistēma, kas būtībā 361 00:17:16,569 --> 00:17:20,329 aizpilda galvenie argumentus par jums. 362 00:17:20,329 --> 00:17:22,829 Tāpēc, ka ir viens no pakalpojumiem, ka jums, veida slepeni 363 00:17:22,829 --> 00:17:24,869 zem motora pārsega operētājsistēma. 364 00:17:24,869 --> 00:17:27,118 Citi jautājumi? 365 00:17:27,118 --> 00:17:27,618 Jā. 366 00:17:27,618 --> 00:17:29,787 >> AUDITORIJA: Ko core dump nozīmē? 367 00:17:29,787 --> 00:17:31,370 DAVID Malan: Ko core dump nozīmē? 368 00:17:31,370 --> 00:17:32,950 Tā ka ir labs jautājums. 369 00:17:32,950 --> 00:17:35,312 Un ļaujiet man iet atpakaļ šajā direktorijā šeit. 370 00:17:35,312 --> 00:17:37,270 Un jūs pamanīsiet, ka Man ir jaunu failu tur. 371 00:17:37,270 --> 00:17:41,670 Tas ir patiešām sauc kodols, un tas ir faktiski parasti pieklājīga izmēra faila. 372 00:17:41,670 --> 00:17:45,300 Tas ir būtībā momentuzņēmums saturs manas programmas atmiņā 373 00:17:45,300 --> 00:17:46,902 vai RAM, kad tā avarēja. 374 00:17:46,902 --> 00:17:49,110 Un tas būs noderīgs, potenciāli, diagnostiski, 375 00:17:49,110 --> 00:17:52,850 kad mēs runājam nākamajā lekcijā un apakšpunktu par debugging, 376 00:17:52,850 --> 00:17:55,730 tāpēc, ka jūs faktiski var darīt līdzvērtīgs digitālo autopsija 377 00:17:55,730 --> 00:18:00,300 uz šo failu, lai palīdzētu izdomāt ko jūs nepareizi jūsu programmā. 378 00:18:00,300 --> 00:18:01,220 Jā. 379 00:18:01,220 --> 00:18:04,450 >> AUDITORIJA: Vai argc a komandu pats, vai jūs varat nosaukt to kaut ko? 380 00:18:04,450 --> 00:18:05,575 >> DAVID Malan: Labs jautājums. 381 00:18:05,575 --> 00:18:08,040 Ir argc komandu pats par sevi, vai jūs varat nosaukt to kaut ko? 382 00:18:08,040 --> 00:18:09,290 Tas noteikti nav komanda. 383 00:18:09,290 --> 00:18:13,500 Tas ir vienkārši mainīgais s nosaukt vai arguments nosaukumu, 384 00:18:13,500 --> 00:18:15,481 un tā absolūti mēs varētu nosaukt šo foo, 385 00:18:15,481 --> 00:18:18,480 mēs varētu saukt šo joslu, kas mēdz būt go-to vārdiem, kas datoru 386 00:18:18,480 --> 00:18:19,860 zinātnieks iet. 387 00:18:19,860 --> 00:18:22,820 Bet pēc vienošanās, mēs izmantojam argc un ARGV. 388 00:18:22,820 --> 00:18:25,360 Bet tas ir tikai cilvēka konvencija, nekas vairāk. 389 00:18:25,360 --> 00:18:25,860 Viss labi. 390 00:18:25,860 --> 00:18:28,140 Tātad izrādās, es esmu bijis stāsta mazliet baltu lie-- 391 00:18:28,140 --> 00:18:31,264 un godīgi sakot, nākotnē, jūs redzēsiet mēs esam spēcīgi citus baltos melus. 392 00:18:31,264 --> 00:18:33,510 Bet tagad, mēs ejam lobīties atpakaļ vienu no tiem. 393 00:18:33,510 --> 00:18:37,310 Šajā gadījumā šeit, kad es agrāk skrēja programmu, piemēram ./hello vai ./hello-3 394 00:18:37,310 --> 00:18:42,780 Zamyla, mums bija saturu my datora atmiņa meklē aptuveni līdzīgi 395 00:18:42,780 --> 00:18:43,280 šo. 396 00:18:43,280 --> 00:18:45,070 Bet atcerēties, ko virkne ir. 397 00:18:45,070 --> 00:18:49,279 Ko mēs sakām, pirms nedēļas, ko string patiesībā ir zem motora pārsega? 398 00:18:49,279 --> 00:18:50,320 AUDITORIJA: Array chars. 399 00:18:50,320 --> 00:18:52,111 DAVID Malan: Tas ir masīvs chars, vai ne? 400 00:18:52,111 --> 00:18:55,760 Lai mēs varētu būt masīva virknes, bet, savukārt, string 401 00:18:55,760 --> 00:18:57,150 ir masīvs rakstzīmes. 402 00:18:57,150 --> 00:19:00,010 Tātad, ja es tiešām gribu būt anālais, kad es izdarīt šo attēlu, 403 00:19:00,010 --> 00:19:03,290 Es patiesi būtu zīmējums tā nedaudz vairāk kā šis, 404 00:19:03,290 --> 00:19:08,000 , kurā katrs no šiem indeksi manas ARGV masīva, 405 00:19:08,000 --> 00:19:11,432 ir pati vesela virkne kas pats par sevi ir masīvā. 406 00:19:11,432 --> 00:19:13,140 Un tagad balta meli mēs esam spēcīgi šodien 407 00:19:13,140 --> 00:19:15,181 ir tā, ka aina nav izskatās gluži kā šis. 408 00:19:15,181 --> 00:19:19,110 Patiesībā, maz kvadrātu parasti ārpus lielajām taisnstūru 409 00:19:19,110 --> 00:19:19,610 tur. 410 00:19:19,610 --> 00:19:21,280 Bet mēs atgriezīsimies pie ka pirms ilgi. 411 00:19:21,280 --> 00:19:25,440 Bet tas ir ./hello slīpsvītru 0, , ka ir īpašs raksturs, kas 412 00:19:25,440 --> 00:19:28,310 norobežo galu virkni, un mēs esam ieguvuši vēl vienu pēc 413 00:19:28,310 --> 00:19:29,360 Zamyla vārds. 414 00:19:29,360 --> 00:19:30,900 Tātad, ko tas nozīmē? 415 00:19:30,900 --> 00:19:33,410 >> Nu, ļaujiet man iet uz priekšu un atvērt divus citus piemērus 416 00:19:33,410 --> 00:19:35,220 kas ir pieejami tiešsaistē. 417 00:19:35,220 --> 00:19:40,590 Viens sauc argv1.c un otrs ir argv2. 418 00:19:40,590 --> 00:19:44,260 Tas ir super-vienkārša programma, kas atšķiras no iepriekšējām programmām 419 00:19:44,260 --> 00:19:47,260 jo tagad es esmu, izmantojot argc un ARGV šeit. 420 00:19:47,260 --> 00:19:54,300 Un tagad es esmu integrējot ar cilpu atbilst 18, no i = 0 par līdz argc. 421 00:19:54,300 --> 00:19:56,850 Un tas, ko es esmu gatavojas darīt ar šo rindiņu kodu šeit? 422 00:19:56,850 --> 00:19:58,270 Angļu valodā. 423 00:19:58,270 --> 00:20:00,510 Tas, protams, liecina izmantošanu argc. 424 00:20:00,510 --> 00:20:03,670 Bet angļu valodā, ko dara tas jādara, ja man palaist šo programmu? 425 00:20:03,670 --> 00:20:04,366 Yeah? 426 00:20:04,366 --> 00:20:07,386 >> AUDITORIJA: Tas notiek, lai drukātu savu ekrāna tik daudz reižu, cik vēlaties. 427 00:20:07,386 --> 00:20:08,260 DAVID Malan: Tieši tā. 428 00:20:08,260 --> 00:20:10,480 Tātad, kāds vārdi I tipa pie uzvednē, tas ir 429 00:20:10,480 --> 00:20:13,120 gatavojas atvemt tos uz mani vienu katrā rindā. 430 00:20:13,120 --> 00:20:14,370 Tāpēc iesim uz priekšu un darīt to. 431 00:20:14,370 --> 00:20:17,862 Ļaujiet man iet manā direktorijā un darīsim argv1 ./argv1. 432 00:20:17,862 --> 00:20:20,521 433 00:20:20,521 --> 00:20:21,770 Un tagad, pieņemsim glabā to vienkārši. 434 00:20:21,770 --> 00:20:23,834 Darīsim neko sākumā. 435 00:20:23,834 --> 00:20:26,750 Tas bija izdrukāt viena lieta, un tas patiešām programmas nosaukums, 436 00:20:26,750 --> 00:20:28,240 jo tas ir iekļauts grupā 0. 437 00:20:28,240 --> 00:20:33,290 Ja tagad es saku foo, tas gatavojas darīt tie divi, un, ja es saku foo bārs, 438 00:20:33,290 --> 00:20:35,580 tas teiksiet šīs trīs lietas. 439 00:20:35,580 --> 00:20:37,740 Tagad tas ir nedaudz interesanti, varbūt. 440 00:20:37,740 --> 00:20:41,450 Taču atgādinām, ka ARGV ir masīvs stīgas, 441 00:20:41,450 --> 00:20:45,960 bet string ir masīvs simboliem, lai mēs varētu pieņemt lietas uz augšu robs 442 00:20:45,960 --> 00:20:48,560 un piemērot ka pamata loģika un padarīt kodu, kas 443 00:20:48,560 --> 00:20:51,160 izskatās nedaudz vairāk mistisks, protams. 444 00:20:51,160 --> 00:20:53,540 Bet, ņemot ligzdotu cilpa, kaut kas līdzīgs 445 00:20:53,540 --> 00:20:57,030 tam, ko jūs varētu atgādināt no Mario, Piemēram, ja jūs to šādā veidā. 446 00:20:57,030 --> 00:21:00,380 >> Tātad tagad paziņojums on line 19, es esmu atkal atkārtojot pār maniem argumentiem, 447 00:21:00,380 --> 00:21:02,410 no 0 uz līdz argc. 448 00:21:02,410 --> 00:21:05,510 Un tagad rindā 21-- es esmu aizņēmumu triks no pagājušā week-- 449 00:21:05,510 --> 00:21:11,090 Es esmu pārbaudi, kas ir garums ARGV grupā i. 450 00:21:11,090 --> 00:21:12,920 Es esmu uzglabāt šo atbildi n. 451 00:21:12,920 --> 00:21:18,230 Un tad es esmu integrētu no j uz līdz n, kur j ir inicializēts ar 0. 452 00:21:18,230 --> 00:21:19,460 Tātad, konvencija skaitīšanai. 453 00:21:19,460 --> 00:21:22,335 Pēc tam, kad esat izmantojis i, ja jums ir Nested cilpas, jūs nevarat izmantot i atkal, 454 00:21:22,335 --> 00:21:25,770 citādi jūs clobber, iespējams, vērtība ārpus iekšējās cilpas. 455 00:21:25,770 --> 00:21:27,200 Tāpēc es esmu, izmantojot j pēc vienošanās. 456 00:21:27,200 --> 00:21:28,020 Mēs varētu izmantot k. 457 00:21:28,020 --> 00:21:31,080 Ja jums ir vairāk nekā k, jūs, iespējams, ir pārāk daudz ligzdošanu, parasti. 458 00:21:31,080 --> 00:21:33,800 Bet tagad, ievērosiet manu printf līnija ir nedaudz atšķirīgs. 459 00:21:33,800 --> 00:21:37,520 Es neesmu drukāšanas% s, es esmu drukāšanas% c, kas, protams, 460 00:21:37,520 --> 00:21:39,460 ir vietturis par char. 461 00:21:39,460 --> 00:21:40,770 >> Un tagad paziņojums šo sintaksi. 462 00:21:40,770 --> 00:21:41,270 Jauns. 463 00:21:41,270 --> 00:21:42,630 Mēs neesam redzējuši to pirms tam. 464 00:21:42,630 --> 00:21:47,290 Bet loģiski, tas tikai nozīmē, saņemt ITH virknes ARGV 465 00:21:47,290 --> 00:21:50,067 un saņemt j kāda? 466 00:21:50,067 --> 00:21:50,900 AUDITORIJA: Character. 467 00:21:50,900 --> 00:21:52,800 DAVID Malan: Character šajā virknē. 468 00:21:52,800 --> 00:21:57,100 Tātad, izmantojot kvadrātiekavas seko kvadrātiekavās, 469 00:21:57,100 --> 00:22:00,390 tas ir niršana pirmais uz ARGV s stīgām, 470 00:22:00,390 --> 00:22:02,225 un pēc tam otro kvadrātiekavas ar j 471 00:22:02,225 --> 00:22:06,580 ir iegremdēšanās rakstzīmes ka īpaši virknes ARGV. 472 00:22:06,580 --> 00:22:09,562 Un tad, tikai labu pasākumu, Es esmu drukāšanas jaunu līniju šeit. 473 00:22:09,562 --> 00:22:12,020 Tāpēc tagad ļaujiet man iet uz priekšu un atvērt pat nedaudz lielāku logu 474 00:22:12,020 --> 00:22:13,600 lai mēs varētu redzēt to darbībā. 475 00:22:13,600 --> 00:22:15,700 Ļaujiet man iet uz šo mapi. 476 00:22:15,700 --> 00:22:22,550 Un tagad darīsim argv-2-- whoops-- padarīt ARGV-2, ./argv 2. 477 00:22:22,550 --> 00:22:23,110 Enter. 478 00:22:23,110 --> 00:22:24,860 Un tas ir mazliet grūti lasīt vertikāli, 479 00:22:24,860 --> 00:22:27,920 bet tas ir tiešām nosaukums programma, kam seko tukšu līniju. 480 00:22:27,920 --> 00:22:30,210 Tagad ļaujiet man iet uz priekšu un darīt foo. 481 00:22:30,210 --> 00:22:33,210 Tāpat grūti lasīt, bet tas ir tiešām drukāšanas vienu rakstzīmi katrā rindā. 482 00:22:33,210 --> 00:22:36,780 Un, ja man bārs, tas ir tagad drukājot tiem rindu pa rindai. 483 00:22:36,780 --> 00:22:40,140 Tātad takeaway šeit ir ne tik daudz ka, wow, apskatīt šo veikls jaunajā triks 484 00:22:40,140 --> 00:22:44,750 kur var saņemt pie satura masīva īpašajām rakstzīmēm, 485 00:22:44,750 --> 00:22:48,380 bet gan to, kā mēs esam ņemot šos pamata idejas kā indeksācija uz masīva, 486 00:22:48,380 --> 00:22:51,620 un tad indeksāciju stājas masīvs, kas bija šajā masīvā, 487 00:22:51,620 --> 00:22:56,180 un tikai piemērojot vienādas idejas nedaudz sarežģītākus piemērus. 488 00:22:56,180 --> 00:22:59,560 Bet pamati tiešām nav mainījies, pat kopš pagājušajā nedēļā. 489 00:22:59,560 --> 00:23:02,350 >> Tagad tas ir sava veida savlaicīga, ar to, ka, atgādināt, nedēļā nulles 490 00:23:02,350 --> 00:23:04,110 mēs spēlējām ar telefona grāmatu, kā šis. 491 00:23:04,110 --> 00:23:06,670 Un, pat ja tas ir acīmredzami fiziskie papīra gabalus, 492 00:23:06,670 --> 00:23:09,150 Jūs varat veida iedomāties tālruņa grāmatu kā masīvu. 493 00:23:09,150 --> 00:23:12,770 Protams, ja Jums bija reimplement šo gabalu šie papīra gabalus 494 00:23:12,770 --> 00:23:15,260 datorā, iespējams, jūs varētu izmantot kaut ko 495 00:23:15,260 --> 00:23:20,270 piemēram, masīvs glabāt visiem tiem vārdus un numurus no A līdz galam 496 00:23:20,270 --> 00:23:23,800 caur Z. Tātad tas ir jauki, jo tā ļauj mums iespēju, 497 00:23:23,800 --> 00:23:28,310 varbūt, lai apsvērtu, kā jūs varētu faktiski īstenot kaut ko līdzīgu, ka. 498 00:23:28,310 --> 00:23:31,250 Tāpat kā ar virkni durvīm šeit. 499 00:23:31,250 --> 00:23:36,380 Tātad, ja es could-- mums ir nepieciešams viens brīvprātīgi, lai nāk uz augšu. 500 00:23:36,380 --> 00:23:36,980 Let 's redzēt. 501 00:23:36,980 --> 00:23:40,650 Svešs sejas, iespējams, svešs sejas varbūt. 502 00:23:40,650 --> 00:23:42,090 Kā par oranžā krāsā? 503 00:23:42,090 --> 00:23:42,680 Šeit. 504 00:23:42,680 --> 00:23:45,870 Orange krekls, nāc uz augšu. 505 00:23:45,870 --> 00:23:52,230 >> Iesim uz priekšu tagad un pārvietot šīs durvis vairāk nekā uz pusi, 506 00:23:52,230 --> 00:23:54,020 pārvietot tos no ceļu uz brīdi. 507 00:23:54,020 --> 00:23:56,600 508 00:23:56,600 --> 00:23:57,760 Kāds ir tavs vārds? 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 Prieks iepazīties. 513 00:23:59,451 --> 00:23:59,950 Viss labi. 514 00:23:59,950 --> 00:24:04,500 Tāpēc mums ir aiz šīm sešām durvis digitāli uz screen-- 515 00:24:04,500 --> 00:24:07,810 vai, drīzāk, septiņas durvis screen-- visu ķekars numuriem. 516 00:24:07,810 --> 00:24:10,099 Un es esmu teicis jums neko in advance-- piekrita? 517 00:24:10,099 --> 00:24:11,140 AJAY: Nekas iepriekš. 518 00:24:11,140 --> 00:24:14,730 DAVID Malan: Viss, ko es gribu, lai jūs darīt Tagad ir atrast par mani, un mums, 519 00:24:14,730 --> 00:24:20,920 tiešām, numurs 50, vienu soli laikā. 520 00:24:20,920 --> 00:24:21,830 >> AJAY: Number 50? 521 00:24:21,830 --> 00:24:22,580 >> DAVID Malan: numurs 50. 522 00:24:22,580 --> 00:24:24,746 Un jūs varat atklāt, kas ir aiz katra no šīm durvīm 523 00:24:24,746 --> 00:24:27,930 , vienkārši pieskaroties ar pirkstu. 524 00:24:27,930 --> 00:24:31,364 Damn to. [Smiekli] 525 00:24:31,364 --> 00:24:34,560 >> [Aplausi] 526 00:24:34,560 --> 00:24:39,540 >> Ļoti labi darīts. 527 00:24:39,540 --> 00:24:40,400 OK. 528 00:24:40,400 --> 00:24:44,090 Mums ir jauka dāvana balva par jums šeit. 529 00:24:44,090 --> 00:24:46,520 Jūsu pick filmas mēs pārrunāja pagājušajā nedēļā. 530 00:24:46,520 --> 00:24:47,362 >> AJAY: Ak, man. 531 00:24:47,362 --> 00:24:49,050 Ak, es nekad neesmu redzējis Spaceballs. 532 00:24:49,050 --> 00:24:49,520 >> DAVID Malan: Spaceballs. 533 00:24:49,520 --> 00:24:50,140 Viss labi. 534 00:24:50,140 --> 00:24:53,790 Tā turēt tikai uz vienu brīdi. 535 00:24:53,790 --> 00:24:57,430 How-- pieņemsim padara šo pārgudrību moment-- 536 00:24:57,430 --> 00:25:00,412 kā jūs iet par atrast skaitli 50? 537 00:25:00,412 --> 00:25:01,370 AJAY: Es izvēlējos nejauši. 538 00:25:01,370 --> 00:25:03,420 DAVID Malan: Tātad jūs izvēlējāties nejauši un palaimējies. 539 00:25:03,420 --> 00:25:03,790 AJAY: Jā. 540 00:25:03,790 --> 00:25:04,456 DAVID Malan: OK. 541 00:25:04,456 --> 00:25:05,050 Excellent. 542 00:25:05,050 --> 00:25:08,470 Tāpēc tagad, bija jums nav gotten laimīgs, kāds cits 543 00:25:08,470 --> 00:25:10,210 varētu būt noticis aiz šīm durvīm? 544 00:25:10,210 --> 00:25:12,930 Tātad, ja man iet uz priekšu un atklāt šos numurus šeit, 545 00:25:12,930 --> 00:25:15,180 tie patiesībā ir jauktā secībā. 546 00:25:15,180 --> 00:25:17,750 Un labākais jūs varētu būt darīts, atklāti sakot, ir par, galu galā, 547 00:25:17,750 --> 00:25:19,410 sliktākajā gadījumā, pārbaudot tos visus. 548 00:25:19,410 --> 00:25:23,000 Tātad, jums ir super-laimīgs, kas nav tas, ko mēs gribētu saucam algoritmu. 549 00:25:23,000 --> 00:25:24,730 Jā, Apsveicu. 550 00:25:24,730 --> 00:25:27,010 Bet tagad let's-- humors mani, ja jūs varētu. 551 00:25:27,010 --> 00:25:28,310 Iesim uz šo cilni šeit. 552 00:25:28,310 --> 00:25:31,460 Un šeit ir skaitļi skaidri ko, šķiet, izlases kārtībā, 553 00:25:31,460 --> 00:25:32,280 un tie bija. 554 00:25:32,280 --> 00:25:35,160 Bet tagad, ja es tā vietā prasījums ka aiz šīm durvīm 555 00:25:35,160 --> 00:25:39,070 ir skaitļi, kas tiek šķirotas. 556 00:25:39,070 --> 00:25:41,780 Mērķis tagad ir arī mūs atrast skaitli 50. 557 00:25:41,780 --> 00:25:45,910 Bet darīt to algoritmiski, un pastāstīt mums, kā jūs iet par to. 558 00:25:45,910 --> 00:25:48,020 Un, ja jūs atradīsiet to, jūs saglabāt filmu. 559 00:25:48,020 --> 00:25:49,520 Jums nav atrast, jūs dodat to atpakaļ. 560 00:25:49,520 --> 00:25:52,720 561 00:25:52,720 --> 00:25:58,112 AJAY: Tāpēc es esmu gatavojas, lai pārbaudītu galiem pirmkārt, lai noteiktu, vai there's-- 562 00:25:58,112 --> 00:26:02,048 [Smiekli un aplausi] 563 00:26:02,048 --> 00:26:04,451 564 00:26:04,451 --> 00:26:05,492 DAVID Malan: Šeit jums iet. 565 00:26:05,492 --> 00:26:17,080 566 00:26:17,080 --> 00:26:21,700 Pieņemsim apskatīt vienu no Ajay priekšgājējiem, 567 00:26:21,700 --> 00:26:25,450 Sean, kurš nebija tik laimīgs. 568 00:26:25,450 --> 00:26:28,670 Labi, tāpēc jūsu uzdevums šeit, Sean, ir šāds. 569 00:26:28,670 --> 00:26:32,970 Man ir slēpta aiz šiem durvis numuru septiņi, 570 00:26:32,970 --> 00:26:37,200 bet tucked prom dažās no šīm durvīm kā arī ir citi ārpustirgus negatīvie skaitļi. 571 00:26:37,200 --> 00:26:40,730 Un jūsu mērķis ir domāt par to augšējā rindā skaitļu kā tikai masīva. 572 00:26:40,730 --> 00:26:43,590 Esam tikai secība gabalu papīra ar cipariem aiz viņiem. 573 00:26:43,590 --> 00:26:47,640 Un jūsu mērķis ir, izmantojot tikai top masīvs šeit, atrast man numuru septiņi. 574 00:26:47,640 --> 00:26:51,200 Un mēs tad dodas uz kritiku kā jūs iet par darot to. 575 00:26:51,200 --> 00:26:52,920 Mūs atrast numuru septiņi, lūdzu. 576 00:26:52,920 --> 00:27:02,570 577 00:27:02,570 --> 00:27:03,070 Nē 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 Tas nav triks jautājums. 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 Šajā brīdī jūsu rezultāts nav ļoti labi, lai jūs varētu arī saglabāt turpinās. 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 Iet tālāk. 590 00:27:39,802 --> 00:27:42,510 Atklāti sakot, es nevaru palīdzēt, bet brīnums ko jūs pat domāt par. 591 00:27:42,510 --> 00:27:44,990 >> Sean: Es varu tikai no augšējā rindā. 592 00:27:44,990 --> 00:27:46,240 DAVID Malan: Tikai augšējā rindā. 593 00:27:46,240 --> 00:27:47,281 Tātad jūs esat ieguvuši trīs pa kreisi. 594 00:27:47,281 --> 00:27:48,310 Tāpēc atrast mani 7. 595 00:27:48,310 --> 00:27:54,758 596 00:27:54,758 --> 00:27:59,141 >> [AUDITORIJA kliedz PIEDĀVĀJUMI] 597 00:27:59,141 --> 00:28:22,210 598 00:28:22,210 --> 00:28:26,130 Tātad abi no tiem bija pārsteidzošs ļoti dažādu iemeslu dēļ. 599 00:28:26,130 --> 00:28:29,150 Tātad, tas ir, ja mēs pārtraukts pirms brīža, 600 00:28:29,150 --> 00:28:32,530 un galvenais ieskats šeit bija šīs durvis bija numuri 601 00:28:32,530 --> 00:28:37,390 aiz viņiem, kas bija sakārtoti, ideāla takeaway, par kuru ir, ka jūs varētu darīt 602 00:28:37,390 --> 00:28:39,670 būtiski labāk šis otrais example-- 603 00:28:39,670 --> 00:28:42,380 un, protams, ka bija Sean s Pirmais mēģinājums ar izlases numurus 604 00:28:42,380 --> 00:28:45,460 tikpat before-- bet tiklīdz , kā šie skaitļi ir sakārtoti, 605 00:28:45,460 --> 00:28:47,980 daudz, piemēram, tālruņu grāmatā, ko jūs varat, protams, darīt? 606 00:28:47,980 --> 00:28:50,090 Vai to, kā jūs varat sviras šīs zināšanas? 607 00:28:50,090 --> 00:28:51,530 Jā. 608 00:28:51,530 --> 00:28:54,910 >> AUDITORIJA: Tu ej pusceļā [nedzirdama]. 609 00:28:54,910 --> 00:28:55,660 DAVID Malan: Jā. 610 00:28:55,660 --> 00:28:56,160 Tieši tā. 611 00:28:56,160 --> 00:28:59,680 Tātad Ajay sākotnējais instinkts bija pārbaudīt galus, kā es atceros, 612 00:28:59,680 --> 00:29:02,320 un tad mēs veida gatavo piemērs ātri. 613 00:29:02,320 --> 00:29:05,220 Bet, ja mēs sākām to darīt vairāk metodiski pa šo līniju, 614 00:29:05,220 --> 00:29:07,860 bet sākot varbūt vidū, jo viņi sakārtoti, 615 00:29:07,860 --> 00:29:10,900 tiklīdz mēs atklāt numurs 16, tādēļ mēs know-- 616 00:29:10,900 --> 00:29:14,850 un pieņemsim darīt tieši that-- mēs Tāpēc zinu, ka 50, šodienas gadījumā, 617 00:29:14,850 --> 00:29:16,080 tagad ir labi. 618 00:29:16,080 --> 00:29:18,735 Tātad tāpat kā nedēļu nulles, kad mēs saplēsa tālruņa grāmatu pusē 619 00:29:18,735 --> 00:29:21,490 un izmeta pusi problēma prom, pati ideja šeit. 620 00:29:21,490 --> 00:29:23,680 Mēs varam mest šo pusi Problēmas prom. 621 00:29:23,680 --> 00:29:25,730 Un, iespējams, kāda jums varētu darīt algoritmiski, 622 00:29:25,730 --> 00:29:28,710 kad jūs zināt, ka 50 ir jābūt uz labo pusi, ja tas ir visur, 623 00:29:28,710 --> 00:29:31,390 ir mēģina tur, vidū no atlikušajām durvīm. 624 00:29:31,390 --> 00:29:33,450 Protams, 50 ir augstāks nekā 42, tāpēc mēs varam 625 00:29:33,450 --> 00:29:36,060 mest šo atlikušo ceturtdaļa problēmas prom, 626 00:29:36,060 --> 00:29:38,510 un, visbeidzot, noteikt kaut kas līdzīgs 50. 627 00:29:38,510 --> 00:29:41,050 Bet, tāpat kā ar tālruņa grāmatu, šie skaitļi 628 00:29:41,050 --> 00:29:44,560 tika dots mums jau šķiroto kārtība, kas atstāj mūs 629 00:29:44,560 --> 00:29:47,450 ar jautājumu, kā Jūs iegūt lietas Into sakārtoti secībā? 630 00:29:47,450 --> 00:29:49,640 Un, godīgi sakot, par kādu cenu? 631 00:29:49,640 --> 00:29:51,390 Tā ir viena lieta, lai būtu pasniedza tālruņa grāmatu 632 00:29:51,390 --> 00:29:54,810 un tad pārsteigt savus draugus, atrodot tālruņa numuru tiešām ātri, labi? 633 00:29:54,810 --> 00:29:58,520 Negants 32 lappuses, lai atrastu cilvēks no 4 miljardus lapām, 634 00:29:58,520 --> 00:30:00,470 mēs teicām bija viens ekstrēms piemērs. 635 00:30:00,470 --> 00:30:03,320 Bet cik daudz laika pagāja Verizon, lai sakārtotu šo telefona grāmatu? 636 00:30:03,320 --> 00:30:06,170 Cik daudz laika pagāja mums kārtot šos septiņus skaitļus? 637 00:30:06,170 --> 00:30:10,110 Tas ir jautājums, ko mēs esam līdz šim pilnīgi ignorēja. 638 00:30:10,110 --> 00:30:12,330 >> Tātad pieņemsim atbildēt uz šo jautājumu tagad. 639 00:30:12,330 --> 00:30:15,920 Un mēs visi esam no filmas tagad, bet mums ir dažas stresa bumbas. 640 00:30:15,920 --> 00:30:19,480 Ja, teiksim, astoņi brīvprātīgie nebūtu prātā pievienoties mums šeit? 641 00:30:19,480 --> 00:30:24,100 Iesim uz priekšu un darīt, kā par četri no jums, trīs no jums šeit? 642 00:30:24,100 --> 00:30:25,290 Get dažas jaunas sejas. 643 00:30:25,290 --> 00:30:27,220 Un četri no jums tur? 644 00:30:27,220 --> 00:30:30,760 Un now-- pieņemsim nav aizspriedumiem here-- un numurs astoņi nekā šeit uz beigām. 645 00:30:30,760 --> 00:30:32,060 Nāciet uz augšu. 646 00:30:32,060 --> 00:30:32,560 Viss labi. 647 00:30:32,560 --> 00:30:37,480 Tātad, ko mēs esam šeit, lai katrs no jums ir skaitlis. 648 00:30:37,480 --> 00:30:40,055 Ja vēlaties doties priekšu, izmantot šo numuru. 649 00:30:40,055 --> 00:30:40,763 Kāds ir tavs vārds? 650 00:30:40,763 --> 00:30:41,950 >> Artie: Artie. 651 00:30:41,950 --> 00:30:43,100 >> DAVID Malan: Artie, labi. 652 00:30:43,100 --> 00:30:44,297 Tu esi numurs 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 Tu esi numurs 2. 657 00:30:47,530 --> 00:30:49,100 Un iet uz priekšu, jo man rokas Jūs papīra lapas, 658 00:30:49,100 --> 00:30:52,130 rindā sevi up priekšā mūzikas stāv tādā pašā kārtībā, kā tur augšā. 659 00:30:52,130 --> 00:30:52,660 >> ANDY: Hi, Andy. 660 00:30:52,660 --> 00:30:53,970 >> DAVID Malan: Andy, tas ir jauki redzēt jūs. 661 00:30:53,970 --> 00:30:54,520 Numurs 3. 662 00:30:54,520 --> 00:30:55,310 >> JACOB: Jacob. 663 00:30:55,310 --> 00:30:56,760 >> DAVID Malan: Jēkabs, numurs 4. 664 00:30:56,760 --> 00:30:57,549 Laipni lūdzam uz klāja. 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 Numurs 5. 668 00:31:00,348 --> 00:31:01,200 >> Alanna: Alanna. 669 00:31:01,200 --> 00:31:02,766 >> DAVID Malan: Alanna, numuru 6. 670 00:31:02,766 --> 00:31:03,589 >> FRANCES: Frances. 671 00:31:03,589 --> 00:31:04,880 DAVID Malan: Frances, numurs 7. 672 00:31:04,880 --> 00:31:05,200 Un? 673 00:31:05,200 --> 00:31:05,830 >> RACHEL: Rachel. 674 00:31:05,830 --> 00:31:06,815 >> DAVID Malan: Rachel, numuru 8. 675 00:31:06,815 --> 00:31:07,100 Viss labi. 676 00:31:07,100 --> 00:31:08,766 Iet uz priekšu un iegūt sev šādā secībā. 677 00:31:08,766 --> 00:31:11,440 Ļaujiet man vienu atlikušo mūzika stāvēt vietā. 678 00:31:11,440 --> 00:31:13,670 Kur jums ir nepieciešams stāvēt? 679 00:31:13,670 --> 00:31:14,170 OK. 680 00:31:14,170 --> 00:31:18,710 Iet uz priekšu un vienkārši nodot savu numuru kur skatītāji var redzēt tos, 681 00:31:18,710 --> 00:31:20,340 mūzika stāvēt saskaras āru. 682 00:31:20,340 --> 00:31:27,240 Un, cerams, mūsu pirmais veselība pārbaudītu here-- 4, 2, 6. 683 00:31:27,240 --> 00:31:27,890 Oh-oh. 684 00:31:27,890 --> 00:31:29,070 Pagaidiet minūti. 685 00:31:29,070 --> 00:31:31,140 Mums nav par 8. 686 00:31:31,140 --> 00:31:35,180 Man vajag, lai izliktu jūs no piemērs kaut kā. 687 00:31:35,180 --> 00:31:35,680 Nē 688 00:31:35,680 --> 00:31:36,940 Nē, tas ir OK. 689 00:31:36,940 --> 00:31:37,890 Let 's redzēt. 690 00:31:37,890 --> 00:31:38,880 Mēs varam izdarīt. 691 00:31:38,880 --> 00:31:39,440 Stāvēt. 692 00:31:39,440 --> 00:31:43,970 693 00:31:43,970 --> 00:31:45,740 Tur mēs ejam. 694 00:31:45,740 --> 00:31:46,800 Pareiza. 695 00:31:46,800 --> 00:31:47,360 Viss labi. 696 00:31:47,360 --> 00:31:50,260 Tātad, tagad mums ir 8, 1, 3 7, 5. 697 00:31:50,260 --> 00:31:50,760 OK. 698 00:31:50,760 --> 00:31:51,360 Excellent. 699 00:31:51,360 --> 00:31:54,400 >> Tātad jautājums ir par to, pēc kādu cenu, un izmantojot kādu metodi, 700 00:31:54,400 --> 00:31:58,580 mēs varam reāli sakārtot šos numurus šeit lai mēs varētu veida strādāt atpakaļ, 701 00:31:58,580 --> 00:32:02,759 galu galā, un decide-- tas tiešām iespaidīgs, tas ir tiešām efektīvs, 702 00:32:02,759 --> 00:32:04,550 ka es varu sadalīt un iekarot tālruņa grāmatu? 703 00:32:04,550 --> 00:32:06,716 Vai tas tiešām ir efektīvs, ka Es varu sadalīt un iekarot 704 00:32:06,716 --> 00:32:08,600 šie digitālie gabali papīra uz kuģa, 705 00:32:08,600 --> 00:32:14,500 ja varbūt tas maksās mums laimi laika vai enerģijas vai CPU cikliem 706 00:32:14,500 --> 00:32:17,340 lai faktiski saņemtu mūsu datiem uz kādu šķirotas kārtībā? 707 00:32:17,340 --> 00:32:18,930 Tāpēc pieņemsim uzdot šo jautājumu. 708 00:32:18,930 --> 00:32:22,077 >> Tātad, pirmkārt off, šie skaitļi ir diezgan daudz nejaušā secībā, 709 00:32:22,077 --> 00:32:24,160 un es esmu gatavojas ierosināt viens algoritms, vai process 710 00:32:24,160 --> 00:32:25,970 ar kuru mēs varam sakārtot šiem ļaudīm. 711 00:32:25,970 --> 00:32:28,100 Es esmu gatavojas vērsties tas diezgan naivi. 712 00:32:28,100 --> 00:32:30,730 Un es esmu gatavojas atzīt , ka tas ir sava veida daudz par mani 713 00:32:30,730 --> 00:32:32,890 wrap manu prātu ap visa datu kopa uzreiz. 714 00:32:32,890 --> 00:32:33,640 Bet jūs zināt, ko? 715 00:32:33,640 --> 00:32:37,450 Es esmu gatavojas veikt dažas Ļoti vienkārši marginālās labojumi. 716 00:32:37,450 --> 00:32:41,152 4 un 2 iziet no ierindas, ja mērķis ir, lai iet no 1 gada līdz 8. 717 00:32:41,152 --> 00:32:41,860 Tātad, jūs zināt, ko? 718 00:32:41,860 --> 00:32:43,776 Es esmu nāksies tevi puiši swap, ja jūs pāriet 719 00:32:43,776 --> 00:32:46,380 fiziski pozīcijas un Jūsu gabalus papīra. 720 00:32:46,380 --> 00:32:47,894 Tagad 4 un 6, tie ir kārtībā. 721 00:32:47,894 --> 00:32:49,060 Es esmu gatavojas atstāt tos būt. 722 00:32:49,060 --> 00:32:50,227 6 un 8, tie ir kārtībā. 723 00:32:50,227 --> 00:32:51,185 Gatavojas atstāt viņiem būt. 724 00:32:51,185 --> 00:32:52,170 8 un1, no rīkojuma. 725 00:32:52,170 --> 00:32:54,790 Ja jūs divi neiebilstat pārnešana. 726 00:32:54,790 --> 00:32:57,300 Tagad 8 un 3, ja jūs puiši varētu apmainīt. 727 00:32:57,300 --> 00:32:59,320 8 un 7, ja jūs puiši varētu apmainīt. 728 00:32:59,320 --> 00:33:01,790 Un 8 un 5, ja jūs puiši varētu apmainīt. 729 00:33:01,790 --> 00:33:03,980 >> Tagad, es esmu darījis? 730 00:33:03,980 --> 00:33:05,200 Nē, protams, nav. 731 00:33:05,200 --> 00:33:07,880 Bet man ir devuši situācija labāka, vai ne? 732 00:33:07,880 --> 00:33:09,430 Kāds bija jūsu vārds atkal numuru 8? 733 00:33:09,430 --> 00:33:10,055 >> RACHEL: Rachel. 734 00:33:10,055 --> 00:33:12,850 DAVID Malan: Tātad Rachel ir efektīvi burbuļo pat diezgan tālu, 735 00:33:12,850 --> 00:33:15,660 visu ceļu līdz beigām mans masīvs numuru šeit. 736 00:33:15,660 --> 00:33:17,310 Un tā, ka problēma ir sava veida atrisināta. 737 00:33:17,310 --> 00:33:21,670 Tagad skaidri, 2 joprojām ir pārvietot mazliet, un 4 un 6 un 1. 738 00:33:21,670 --> 00:33:24,420 Bet man šķiet, ir gotten nedaudz tuvāk šķīdumā. 739 00:33:24,420 --> 00:33:26,790 Tāpēc pieņemsim piemērot šo pašu naivs heiristisko vēlreiz. 740 00:33:26,790 --> 00:33:27,690 2 un 4, OK. 741 00:33:27,690 --> 00:33:28,810 4 un 6, OK. 742 00:33:28,810 --> 00:33:29,930 6 un 1, mm-mm. 743 00:33:29,930 --> 00:33:32,230 Pieņemsim swap. 744 00:33:32,230 --> 00:33:33,200 6 un 3, mm-mm. 745 00:33:33,200 --> 00:33:34,420 Pieņemsim swap. 746 00:33:34,420 --> 00:33:35,580 6 un 7 ir OK. 747 00:33:35,580 --> 00:33:36,590 7 un 5, nope. 748 00:33:36,590 --> 00:33:37,790 Pieņemsim swap. 749 00:33:37,790 --> 00:33:38,470 Un tagad 7 un 8. 750 00:33:38,470 --> 00:33:39,862 Un kāds ir tavs vārds atkal? 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 Tāpēc tagad Frances ir vēl labāks pozīciju, jo tagad 7 un 8 754 00:33:44,230 --> 00:33:46,440 ir pareizi burbuļojot augšu uz augšu. 755 00:33:46,440 --> 00:33:47,510 Tātad 2 un 4, OK. 756 00:33:47,510 --> 00:33:48,720 4 un 1, pieņemsim swap. 757 00:33:48,720 --> 00:33:50,410 4 un 3, pieņemsim swap. 758 00:33:50,410 --> 00:33:51,550 4 un 6, tu esi OK. 759 00:33:51,550 --> 00:33:53,340 6 un 5, pieņemsim swap. 760 00:33:53,340 --> 00:33:54,590 Un tagad šie puiši ir labi. 761 00:33:54,590 --> 00:33:55,780 Mēs esam gandrīz tur. 762 00:33:55,780 --> 00:33:57,706 2 un 1, iziet no ierindas, tāpēc mijmaiņas. 763 00:33:57,706 --> 00:33:59,080 Un tagad ļaujiet man darīt veselība pārbaudītu. 764 00:33:59,080 --> 00:34:03,080 2 un 3, 3 un 4, 4 un 5, 5 un 6, 6, 7, 8. 765 00:34:03,080 --> 00:34:05,060 Labi, tāpēc mēs esam darījuši. 766 00:34:05,060 --> 00:34:09,310 >> Bet par kādu cenu darīja I šķirot šos skaitļus šeit? 767 00:34:09,310 --> 00:34:13,960 Nu, cik soļus darīja I potenciāli veikt, ja šķirošanas šiem ļaudīm? 768 00:34:13,960 --> 00:34:15,710 Nu, mēs atgriezīsimies pie šī jautājuma. 769 00:34:15,710 --> 00:34:18,030 Bet, atklāti sakot, ja jums mazliet garlaicīgi, tas ir 770 00:34:18,030 --> 00:34:22,270 veida atklājot, ka tas nebija varbūt visefektīvākā algoritms. 771 00:34:22,270 --> 00:34:25,230 Un tiešām, godīgi sakot, es esmu svīšana viss vēl ejot uz priekšu un atpakaļ. 772 00:34:25,230 --> 00:34:26,639 Ka nejutās īpaši efektīva. 773 00:34:26,639 --> 00:34:27,805 Tātad, pieņemsim mēģināt kaut ko citu. 774 00:34:27,805 --> 00:34:31,870 Ja jūs puiši varētu nomainīt paši uz šīm astoņām vērtībām. 775 00:34:31,870 --> 00:34:32,969 Labs darbs. 776 00:34:32,969 --> 00:34:36,570 >> Pieņemsim to apskatīt digitāli, lai tikai Brīdis pirms mēs cenšamies kaut ko citu, 777 00:34:36,570 --> 00:34:38,179 par to, kas tikko notika. 778 00:34:38,179 --> 00:34:41,330 Šeit, jūs gatavojaties redzēt vizualizācija šiem astoņiem cilvēkiem 779 00:34:41,330 --> 00:34:44,719 kuru zilā un sarkanā krāsā bāri ir numuri. 780 00:34:44,719 --> 00:34:46,670 Garāki josla, Jo vairāk. 781 00:34:46,670 --> 00:34:48,510 Īsāks josla, mazāks skaits. 782 00:34:48,510 --> 00:34:51,560 Un ko jūs gatavojas redzēt ir izlases pasūtījums vairāk nekā astoņi no tiem. 783 00:34:51,560 --> 00:34:55,830 Jūs esat dodas, lai redzētu šos bāri kļūst sakārtoti ar šo pašu algoritmu, 784 00:34:55,830 --> 00:34:59,890 vai noteikt instrukcijas, kas mēs saucam turpmāk burbulis kārtošanas. 785 00:34:59,890 --> 00:35:04,000 Tātad paziņojums, katru otro vai tā, divi bāri tiek iedegas sarkanā krāsā, 786 00:35:04,000 --> 00:35:05,590 tiek salīdzinātas ar datoru. 787 00:35:05,590 --> 00:35:08,630 Un tad, ja liels bārs un maz bārs ir iziet no ierindas, 788 00:35:08,630 --> 00:35:11,220 tie tiek samainīti par mani. 789 00:35:11,220 --> 00:35:15,120 >> Tagad tas ir neticami garlaicīgs skatīties to, protams, 790 00:35:15,120 --> 00:35:18,630 ļoti ilgi, bet paziņojums takeaway-- liels bars pārvietojas pa labi, 791 00:35:18,630 --> 00:35:20,460 maz bāri, kas pārvietojas pa kreisi. 792 00:35:20,460 --> 00:35:23,380 Pieņemsim pārtraukt šo procesu un paātrināt šo augšu 793 00:35:23,380 --> 00:35:27,330 lai būtu daudz ātrāk, tāpēc mēs varam iegūt augsta līmeņa sajūtu, ko, 794 00:35:27,330 --> 00:35:29,970 tiešām, burbulis kārtot dara. 795 00:35:29,970 --> 00:35:33,150 Patiešām, tas ir burbuļo līdz labajā pusē no saraksta, 796 00:35:33,150 --> 00:35:35,260 vai masīvs, lielākie bāri. 797 00:35:35,260 --> 00:35:40,020 Un otrādi, maz bāri ir burbuļošana savu ceļu uz leju, pa kreisi, 798 00:35:40,020 --> 00:35:42,950 kaut ātrākā tempā nekā mēs agrāk darījām. 799 00:35:42,950 --> 00:35:45,850 Tātad, grūtāk redzēt ar cilvēkiem, bet vizuāli tas ir patiešām to, ko 800 00:35:45,850 --> 00:35:46,540 notiek. 801 00:35:46,540 --> 00:35:49,110 >> Bet pamēģināsim fundamentāli atšķirīga pieeja tagad. 802 00:35:49,110 --> 00:35:52,387 Pamēģināsim atšķirīgs algoritms, ar kuru mums ir jums 803 00:35:52,387 --> 00:35:59,640 puiši sāk šajās oriģināls pozīcijas, kas bija šis rīkojums šeit. 804 00:35:59,640 --> 00:36:00,827 Un iesim uz priekšu tagad. 805 00:36:00,827 --> 00:36:02,910 Un es esmu gatavojas darīt kaut ko vēl vienkāršāk, vai ne? 806 00:36:02,910 --> 00:36:06,710 Atskatoties pagātnē, atkal pārnešana pairwise un atkal, gandrīz nedaudz gudrs. 807 00:36:06,710 --> 00:36:10,460 Darīsim lietas vēl naivi, kur, ja es gribu, lai sakārtotu šiem ļaudīm, 808 00:36:10,460 --> 00:36:12,560 ļaujiet man tikai glabāt meklējat vismazākās elementu. 809 00:36:12,560 --> 00:36:14,570 Tātad tagad, 4 ir Vismazāk es esmu redzējis. 810 00:36:14,570 --> 00:36:15,695 Es esmu gatavojas atcerēties, ka. 811 00:36:15,695 --> 00:36:17,750 Nē, 2 ir labāk, un atcerieties, ka. 812 00:36:17,750 --> 00:36:20,730 1 ir vēl mazāka. 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-- kāds ir tavs vārds atkal? 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 Tātad, Artie, iet uz priekšu. 819 00:36:25,460 --> 00:36:27,043 Es esmu gatavojas pull jūs no līnijas. 820 00:36:27,043 --> 00:36:28,400 Ja jūs varētu atgriezties šeit. 821 00:36:28,400 --> 00:36:30,790 Un man ir nepieciešams, lai padarītu telpu par viņu. 822 00:36:30,790 --> 00:36:32,040 Mums ir lēmuma pieņemšanas punktu šeit. 823 00:36:32,040 --> 00:36:36,000 Kā varētu mēs padarītu telpu Artie šeit sākumā, kur 1 numurs pieder? 824 00:36:36,000 --> 00:36:36,770 >> AUDITORIJA: Shift. 825 00:36:36,770 --> 00:36:38,950 >> DAVID Malan: Labi, mēs varētu pārdalīt ikvienam. 826 00:36:38,950 --> 00:36:40,860 Bet ierosināt optimizāciju. 827 00:36:40,860 --> 00:36:43,410 Ka jūtas mazliet kaitinošas man uzdot četri cilvēki 828 00:36:43,410 --> 00:36:44,620 , lai pārvietotu visu ceļu uz leju. 829 00:36:44,620 --> 00:36:45,520 Ko vēl es varētu darīt? 830 00:36:45,520 --> 00:36:46,360 >> AUDITORIJA: Switch tos. 831 00:36:46,360 --> 00:36:46,850 >> DAVID Malan: Switch tos. 832 00:36:46,850 --> 00:36:47,900 Un kāds ir tavs vārds atkal? 833 00:36:47,900 --> 00:36:48,441 >> JACOB: Jacob. 834 00:36:48,441 --> 00:36:50,330 DAVID Malan: Jēkabs, pārvietot. 835 00:36:50,330 --> 00:36:54,440 Daudz efektīvāk vienkārši ir Jacob mijmaiņas vietas ar Artie, 836 00:36:54,440 --> 00:36:56,710 pretstatā piespiežot četri visiem šiem ļaudīm, 837 00:36:56,710 --> 00:36:58,734 thank you very much, lai to pareizu pozīciju. 838 00:36:58,734 --> 00:37:01,150 Kas ir jauka par Artie tagad, viņš savā pareizā stāvoklī. 839 00:37:01,150 --> 00:37:02,060 Darīsim to vēlreiz. 840 00:37:02,060 --> 00:37:03,730 2, kas ir mazākais skaits es esmu redzējis. 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 noteikti ir mazākais. 844 00:37:07,467 --> 00:37:08,550 Nav darīt jebkuru darbu. 845 00:37:08,550 --> 00:37:09,320 Darīsim to vēlreiz. 846 00:37:09,320 --> 00:37:10,070 6. 847 00:37:10,070 --> 00:37:10,640 Mazākais? 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 Ļaujiet man atceros 4. 853 00:37:13,420 --> 00:37:13,950 3. 854 00:37:13,950 --> 00:37:15,110 Ļaujiet man atcerēties 3. 855 00:37:15,110 --> 00:37:16,080 7, 5. 856 00:37:16,080 --> 00:37:18,490 Vismazāk es esmu redzams uz šaujamieročiem ir 3. 857 00:37:18,490 --> 00:37:20,340 Ja jūs nākt uz out. 858 00:37:20,340 --> 00:37:21,986 Uz kurieni mēs ejam, lai jums? 859 00:37:21,986 --> 00:37:22,860 Un kāds ir tavs vārds? 860 00:37:22,860 --> 00:37:23,530 >> Alanna: Alanna. 861 00:37:23,530 --> 00:37:25,780 >> DAVID Malan: Alanna, mēs esam nāksies izlikt jums. 862 00:37:25,780 --> 00:37:28,670 Bet tas ir efektīvāka, tikai swap divus cilvēkus, 863 00:37:28,670 --> 00:37:31,850 nekā ir vairāki cilvēki tiešām sānsolis vairāk. 864 00:37:31,850 --> 00:37:32,850 Tagad pieņemsim darīt atkal. 865 00:37:32,850 --> 00:37:34,980 Es esmu gatavojas izvēlieties 4, lai nāk uz out. 866 00:37:34,980 --> 00:37:36,540 Un kas notiek, lai pārvietotos? 867 00:37:36,540 --> 00:37:37,750 Cipars 8, protams. 868 00:37:37,750 --> 00:37:40,260 Ja es tagad atrast skaitli 5, nāc ārā. 869 00:37:40,260 --> 00:37:42,104 Cipars 8 gatavojas saņemt izlikti vēlreiz. 870 00:37:42,104 --> 00:37:43,770 Es esmu tagad gatavojas atrast vairākus 6 vietā. 871 00:37:43,770 --> 00:37:44,410 7 vietā. 872 00:37:44,410 --> 00:37:45,080 8 vietā. 873 00:37:45,080 --> 00:37:48,590 >> Ko mēs vienkārši darīju tagad ir kaut kas ko sauc atlase kārtot, 874 00:37:48,590 --> 00:37:52,560 un, ja mēs vizualizēt to, tas ir gatavojas justies mazliet atšķirīgs. 875 00:37:52,560 --> 00:37:56,800 Iesim uz priekšu un no tā ēdienkarte šeit, tas visualization-- 876 00:37:56,800 --> 00:38:02,920 pieņemsim mainīt kuri paredzēti, come on, Firefox. 877 00:38:02,920 --> 00:38:07,610 Pieņemsim mainīt uz atlases veida. 878 00:38:07,610 --> 00:38:11,830 Un pieņemsim to paātrinātu kā iepriekš, un sākt vizualizāciju tagad. 879 00:38:11,830 --> 00:38:13,990 Un šis algoritms ir atšķiras sajust to. 880 00:38:13,990 --> 00:38:16,480 Uz katras iterācijas, atklāti sakot, tas ir vēl vienkāršāka. 881 00:38:16,480 --> 00:38:18,385 Es esmu tikai izvēloties mazāko elementu. 882 00:38:18,385 --> 00:38:21,510 Tagad, godīgi sakot, es saņēmu mazliet laimīgs, ka laiku, jo tas sakārtoti super-ātri. 883 00:38:21,510 --> 00:38:22,660 Elementi bija nejauši. 884 00:38:22,660 --> 00:38:25,520 Tas nav, kā mēs galu galā skat, būtiski ātrāk. 885 00:38:25,520 --> 00:38:29,400 Bet pieņemsim redzēt, trešais un pēdējais pieeju šeit, par to, kas notiek. 886 00:38:29,400 --> 00:38:36,230 Tāpēc iesim uz priekšu un reset jums puiši vienu gala laiks būt šādā secībā šeit. 887 00:38:36,230 --> 00:38:38,450 >> Un tagad, es esmu gatavojas būt nedaudz vairāk gudrs, 888 00:38:38,450 --> 00:38:40,220 tikai noapaļot mūsu algoritmus. 889 00:38:40,220 --> 00:38:41,230 Es esmu gatavojas darīt. 890 00:38:41,230 --> 00:38:43,140 Es esmu gatavojas neiet un atpakaļ tik daudz. 891 00:38:43,140 --> 00:38:44,900 Atklāti sakot, es esmu noguris viss tas šķērso. 892 00:38:44,900 --> 00:38:47,691 Es esmu tikai gatavojas ņemt to, kas es esmu dota sākumā saraksta, 893 00:38:47,691 --> 00:38:49,460 un es esmu gatavojas, lai sakārtotu ka tad un tur. 894 00:38:49,460 --> 00:38:50,140 Tātad, šeit mēs esam. 895 00:38:50,140 --> 00:38:51,030 Numurs 4. 896 00:38:51,030 --> 00:38:53,680 Es esmu gatavojas ievietot numuru 4 uz sakārtoti sarakstā. 897 00:38:53,680 --> 00:38:54,180 Gatavs. 898 00:38:54,180 --> 00:38:58,300 Es apgalvo tagad, un tikai, lai padarītu šo skaidrs, šī daļa no mana saraksta ir sakārtots. 899 00:38:58,300 --> 00:39:02,610 Tas ir sava veida stulba prasības, bet patiešām 4 tiek sakārtoti sarakstā izmēra vienu. 900 00:39:02,610 --> 00:39:04,210 Tagad, es esmu gatavojas uzņemties numuru 2. 901 00:39:04,210 --> 00:39:07,670 Numurs 2 Es esmu tagad gatavojas ievietot īstajā vietā. 902 00:39:07,670 --> 00:39:08,680 Tātad, ja nav 2 pieder? 903 00:39:08,680 --> 00:39:09,824 Acīmredzot, nekā šeit. 904 00:39:09,824 --> 00:39:11,490 Tik iet uz priekšu un pārvietot atpakaļ, ja jūs varētu. 905 00:39:11,490 --> 00:39:14,406 Un kāpēc nav jūs guys tikai ņemt jūsu mūzika stendi ar Jums šo laiku. 906 00:39:14,406 --> 00:39:17,020 Un pieņemsim piespiedu kārtā ievietot tevi uz saraksta sākumā. 907 00:39:17,020 --> 00:39:17,936 Tātad mazliet vairāk darba. 908 00:39:17,936 --> 00:39:20,890 Man bija, lai pārvietotos Jēkabu apkārt, un kāds ir tavs vārds? 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 Bet vismaz man nebija iet uz priekšu un atpakaļ. 912 00:39:24,350 --> 00:39:25,739 Es esmu tikai ņemot lietas, kā man iet. 913 00:39:25,739 --> 00:39:27,530 Es esmu tikai ievietojot tos īstajā vietā. 914 00:39:27,530 --> 00:39:29,220 6, tas ir faktiski diezgan viegli. 915 00:39:29,220 --> 00:39:31,510 Pieņemsim ievietot tevi tur, ja jūs tikai gribēju pāriet nedaudz. 916 00:39:31,510 --> 00:39:32,870 Numuru 8, arī diezgan viegli. 917 00:39:32,870 --> 00:39:33,741 Tiesības pār tur. 918 00:39:33,741 --> 00:39:34,240 Damn to. 919 00:39:34,240 --> 00:39:37,590 Number 1, mēs varam ne tikai mijmaiņas ar Amin šeit 920 00:39:37,590 --> 00:39:39,340 tāpēc, ka notiek izjaukt pasūtījuma. 921 00:39:39,340 --> 00:39:40,660 Tāpēc mums ir jābūt nedaudz vairāk gudrs. 922 00:39:40,660 --> 00:39:42,770 Tātad, Artie, ja jūs varētu atpakaļ uz augšu uz brīdi. 923 00:39:42,770 --> 00:39:46,550 Iesim uz priekšu un maiņu tagad, atšķirībā no mūsu iepriekšējiem algoritmiem, 924 00:39:46,550 --> 00:39:50,910 lai padarītu telpu Artie tepat sākumā. 925 00:39:50,910 --> 00:39:54,690 Tātad beigās, dienā, Es veida dara to, ko es gribēju, lai izvairītos pirms. 926 00:39:54,690 --> 00:39:57,770 Un tāpēc mans algoritms ir sava no atcelts, intelektuāli, 927 00:39:57,770 --> 00:39:59,070 no tā, kas sākotnēji bija. 928 00:39:59,070 --> 00:40:01,240 Es esmu tikai darot pārnesi citā vietā. 929 00:40:01,240 --> 00:40:02,291 Tagad es esmu pie 3. 930 00:40:02,291 --> 00:40:02,790 Ak, damn. 931 00:40:02,790 --> 00:40:04,039 Mums ir jādara vairāk darba atkal. 932 00:40:04,039 --> 00:40:05,060 Tāpēc pieņemsim push jums out. 933 00:40:05,060 --> 00:40:09,360 Pieņemsim pāriet 8, 6, 4-- oh oh-- un 3 gatavojas iet labi tur. 934 00:40:09,360 --> 00:40:11,490 Tātad vismaz nelieli ietaupījumi šoreiz. 935 00:40:11,490 --> 00:40:13,100 7, ne pārāk daudz darāmā. 936 00:40:13,100 --> 00:40:15,370 Tātad, ja jūs vēlaties, lai pop atpakaļ, pieņemsim ievietot jums. 937 00:40:15,370 --> 00:40:17,440 Un visbeidzot, 5, ja jums vēlas pop atpakaļ, mēs 938 00:40:17,440 --> 00:40:22,610 nepieciešams novirzīt tevi, tevi, tu, kamēr pieci ir vietā. 939 00:40:22,610 --> 00:40:25,670 >> Tātad, tagad, lai redzētu šo pie augsta līmeņa grafiski, 940 00:40:25,670 --> 00:40:31,080 Darīsim to algoritmu vizualizācija vienu papildu laiks. 941 00:40:31,080 --> 00:40:33,580 Tātad šis mēs saucam ievietošanas veida. 942 00:40:33,580 --> 00:40:37,700 Mēs rādīsim to, tāpat kā ātra, un sākt to šeit. 943 00:40:37,700 --> 00:40:39,580 Un tas arī ir dažādas jūtas. 944 00:40:39,580 --> 00:40:42,180 Tas ir sava veida kļūst labāk un labāk, bet tas nekad nav ideāls 945 00:40:42,180 --> 00:40:44,630 kamēr es iet un gluda minētos trūkumus. 946 00:40:44,630 --> 00:40:47,860 Jo, atkal, es esmu tikai ņemot to, ko Es esmu tiek dota no kreisās uz labo pusi. 947 00:40:47,860 --> 00:40:50,350 Tāpēc es nedabūju tik laimīgs ka viss bija perfekti. 948 00:40:50,350 --> 00:40:54,190 Tieši tāpēc mums bija šie maz mispositions ka mēs fiksētu laika gaitā. 949 00:40:54,190 --> 00:40:58,890 >> Tātad visi šie algoritmiem, šķiet, palaist nedaudz atšķirīgus panākumus. 950 00:40:58,890 --> 00:41:02,030 Patiesībā, kas jūs teiktu, ir labākais vai ātrākais līdz šim? 951 00:41:02,030 --> 00:41:03,450 Burbulis kārtot, pirmais? 952 00:41:03,450 --> 00:41:05,000 Atlase kārtot, otrais? 953 00:41:05,000 --> 00:41:08,450 Ievietošanas kārtošanas, trešais? 954 00:41:08,450 --> 00:41:10,710 Es dzirdu kādu atlases veidu. 955 00:41:10,710 --> 00:41:13,280 Citas domas? 956 00:41:13,280 --> 00:41:16,880 >> Tātad izrādās, ka visas šīs algoritmu 957 00:41:16,880 --> 00:41:22,400 būtībā tikpat efektīvs kā katrs other-- vai, tieši otrādi, tāpat kā 958 00:41:22,400 --> 00:41:25,980 efektīvs kā viens otru, tāpēc, ka mēs varam darīt fundamentāli 959 00:41:25,980 --> 00:41:28,120 labāk nekā visi trīs Šo algoritmu. 960 00:41:28,120 --> 00:41:29,990 Un tas ir mazliet balta meliem, too. 961 00:41:29,990 --> 00:41:32,580 kad es saku, kā efektīvi vai kā neefektīva, 962 00:41:32,580 --> 00:41:35,040 kas ir vismaz super-lielas vērtības n. 963 00:41:35,040 --> 00:41:38,450 Kad mums ir tikai astoņi cilvēki šeit, vai varbūt 50 vai tik bāri uz ekrāna, 964 00:41:38,450 --> 00:41:41,645 jūs absolūti ievērosiet atšķirības starp šiem trim algoritmiem. 965 00:41:41,645 --> 00:41:44,020 Bet kā n, cilvēku skaits, vai vairāki numuru, 966 00:41:44,020 --> 00:41:46,350 vai cilvēku skaits tālruņa grāmata, vai skaits interneta lapas 967 00:41:46,350 --> 00:41:48,230 in Google datu bāzē kļūst lielāka un lielāka, 968 00:41:48,230 --> 00:41:51,650 mēs redzam, ka visi trīs no šiem algoritmi ir faktiski diezgan slikta. 969 00:41:51,650 --> 00:41:54,060 Un mēs varam darīt fundamentāli labāk nekā to. 970 00:41:54,060 --> 00:41:56,830 >> Pieņemsim to apskatīt, visbeidzot, par to, ko šie algoritmi varētu 971 00:41:56,830 --> 00:41:59,520 izklausīties in konteksts daži citi 972 00:41:59,520 --> 00:42:03,550 kā arī, izmantojot šo vizualizācija šeit 973 00:42:03,550 --> 00:42:06,860 kas ieviesīs mums skaits algoritmu. 974 00:42:06,860 --> 00:42:10,330 Iesim uz priekšu un apsveikt Mūsu dalībnieki šeit, no kuriem visi 975 00:42:10,330 --> 00:42:11,690 sakārtoti sevi ļoti labi. 976 00:42:11,690 --> 00:42:15,124 Ja vēlaties veikt Šķiršanās dāvanu. 977 00:42:15,124 --> 00:42:16,540 Jūs varat saglabāt savu numuru, kā arī. 978 00:42:16,540 --> 00:42:19,460 979 00:42:19,460 --> 00:42:22,520 Un ko jūs redzēsiet, vai drīzāk dzirdēt, tagad, 980 00:42:22,520 --> 00:42:25,710 ir, ka mēs ieliekam skaņas katram no šiem stieņiem 981 00:42:25,710 --> 00:42:28,660 un saistīt to ar programmatūru, atšķirīgs biežums skaņas, 982 00:42:28,660 --> 00:42:33,970 Jūs varat wrap savu prātu vairāk audioly ap to, ko katrs no šīm lietām 983 00:42:33,970 --> 00:42:34,470 izskatās. 984 00:42:34,470 --> 00:42:39,325 Pirmais no tiem ir ievietošanas kārtošanas 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 >> Tas ir burbulis kārtošanas. 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 >> Atlase kārtošanas. 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 >> Kaut ko sauc sapludināšanas kārtošanas. 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 kārtošanas. 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 >> Tas ir tas CS50. 1000 00:44:09,430 --> 00:44:13,360 Mēs redzēsim tevi trešdien. 1001 00:44:13,360 --> 00:44:16,671 >> Teicējs: Un tagad, "Deep Domas, "ar Daven Farnham. 1002 00:44:16,671 --> 00:44:19,910 1003 00:44:19,910 --> 00:44:21,590 Kāpēc tā ir cilpa? 1004 00:44:21,590 --> 00:44:23,200 Kāpēc ne padarīt to labāku? 1005 00:44:23,200 --> 00:44:25,970 Es gribētu darīt piecu cilpu. 1006 00:44:25,970 --> 00:44:28,720 >> [Smiekli]