1 00:00:00,000 --> 00:00:10,982 2 00:00:10,982 --> 00:00:11,940 DAVID Malan: Gerai. 3 00:00:11,940 --> 00:00:16,470 Taigi tai yra CS50, ir tai yra dabar savaitės trijų pradžia. 4 00:00:16,470 --> 00:00:19,960 >> Taigi iki šiol, mes buvo raštu programas C 5 00:00:19,960 --> 00:00:23,210 kad atrodo šiek tiek kažkas panašaus į tai čia. 6 00:00:23,210 --> 00:00:25,470 Taigi mes turime porą aštrus apima viršuje. 7 00:00:25,470 --> 00:00:28,490 Mes turime int pagrindinis, negaliojančiu, ir tada kažką daryti per vidurį, 8 00:00:28,490 --> 00:00:30,590 kai šiek tiek kodo viduje tos funkcijos. 9 00:00:30,590 --> 00:00:34,170 Tačiau raktas buvo tai, kad mes kalbėjome negaliojančiu čia. 10 00:00:34,170 --> 00:00:39,320 Taigi negaliojančiu, visą šį laiką, nurodoma, kad ši programa, kai paleisti, 11 00:00:39,320 --> 00:00:41,300 galima paleisti tik per savo vardu. 12 00:00:41,300 --> 00:00:46,330 Jūs negalite įvesti bet kokius kitus žodžius ar Skaičiai po programos vardą kai 13 00:00:46,330 --> 00:00:46,830 paleisti jį. 14 00:00:46,830 --> 00:00:51,200 Taigi, pavyzdžiui, jei programa buvo surinkti į failą pavadinimu Sveiki, 15 00:00:51,200 --> 00:00:53,480 galite padaryti ./hello, bet kad tai. 16 00:00:53,480 --> 00:00:56,750 >> Vienintelis būdas, kad galėtumėte prisidėti prie šios programos 17 00:00:56,750 --> 00:00:57,960 yra paskambinus funkciją. 18 00:00:57,960 --> 00:00:59,790 Pavyzdžiui, kokią funkciją mes buvo iki šiol, naudojant 19 00:00:59,790 --> 00:01:00,950 gauti informacijos iš vartotojo? 20 00:01:00,950 --> 00:01:02,117 >> PUBLIKA: Gauk eilutę. 21 00:01:02,117 --> 00:01:04,700 DAVID Malan: Norėdami gauti eilutę, arba gauti int, ar jūs matėte kitus, 22 00:01:04,700 --> 00:01:07,630 , net jei jūs dar naudojo juos, kaip gauti ilgai, ilgai ir pan. 23 00:01:07,630 --> 00:01:09,380 Bet tarkime, kad mes tikrai norite pradėti 24 00:01:09,380 --> 00:01:12,760 rašymo programos, kurios yra šiek tiek daugiau universalus, ir, tiesą sakant, šiek tiek daugiau 25 00:01:12,760 --> 00:01:15,090 kaip komandas jūs buvo gauti, tikiuosi, 26 00:01:15,090 --> 00:01:16,550 šiek tiek pripratę. 27 00:01:16,550 --> 00:01:18,560 Kaip kompaktinio disko erdvės Dropbox. 28 00:01:18,560 --> 00:01:20,800 Tai, žinoma, pokyčiai Jūsų katalogas, darant prielaidą, 29 00:01:20,800 --> 00:01:23,590 Jūs esate John Harvardo namuose katalogas, į savo Dropbox aplanką. 30 00:01:23,590 --> 00:01:27,380 Tuo tarpu, komanda, kaip tai sukuria naują katalogą, pavadintą pset2, 31 00:01:27,380 --> 00:01:30,290 kaip jūs galbūt jau arba netrukus už problemos nustatyti du. 32 00:01:30,290 --> 00:01:33,970 Padaryti Sveiki, žinoma, yra komanda kad stato programą "labas 33 00:01:33,970 --> 00:01:35,770 iš failo pavadinimu labas taškas c. 34 00:01:35,770 --> 00:01:39,140 Ir kiekvienas iš jų atvejai, dabar mes jau 35 00:01:39,140 --> 00:01:43,620 pateikti argumentą vadinamasis komandinės eilutės, mirksi greitai, 36 00:01:43,620 --> 00:01:48,540 kad gamintojas žino, ką statyti ir tt kad mkdir žino, ką aplanko kurti, 37 00:01:48,540 --> 00:01:51,110 ir taip, kad cd žino ten, kur norite eiti. 38 00:01:51,110 --> 00:01:54,720 Tačiau iki šiol, mes nuolat sako kad pagrindinis jūsų numatytasis funkcija, 39 00:01:54,720 --> 00:01:58,500 turi void išraiška viduje šių skliausteliuose, 40 00:01:58,500 --> 00:02:01,250 tai reiškia, kad jai negali imtis jokių argumentų. 41 00:02:01,250 --> 00:02:03,240 >> Taigi pradedant šiandien ką mes ketiname daryti, 42 00:02:03,240 --> 00:02:06,270 yra, mes ketiname pradėti remti tokius dalykus kaip šis net. 43 00:02:06,270 --> 00:02:08,990 Tiesą sakant, šiuo atveju, kuris jums paprastai nėra rankiniu būdu įvesti, 44 00:02:08,990 --> 00:02:11,130 Padaryti tai daro jau už mus, ten nėra 45 00:02:11,130 --> 00:02:15,840 vienas, bet vienas, du, trys papildomos stygos po programa pavadinta 46 00:02:15,840 --> 00:02:16,850 Zaszczękać. 47 00:02:16,850 --> 00:02:18,240 Taigi, kaip mes tai pasiekti? 48 00:02:18,240 --> 00:02:20,260 >> Na, pradedant šiandien tais atvejais, kai mes norime 49 00:02:20,260 --> 00:02:22,855 siekiant prisidėti per Vadinamasis komandinės eilutės, 50 00:02:22,855 --> 00:02:24,980 mes ketiname pradėti pridedant čia kas yra yellow-- 51 00:02:24,980 --> 00:02:30,520 pakeičiant negaliojančiu su int argc kableliu styginių argv atviras laikiklis skliaustai uždaromi. 52 00:02:30,520 --> 00:02:32,520 Dabar tai įdomu už keleto priežasčių. 53 00:02:32,520 --> 00:02:35,690 Vienas iš jų, jis ketina pranešti mums rašyti programos, kurios yra šiek tiek labiau dinamiškas. 54 00:02:35,690 --> 00:02:37,570 Tačiau, daugiau įtikinamai, jis ketina atverti 55 00:02:37,570 --> 00:02:40,340 dabar pokalbis būtų kas masyvai tikrai gali 56 00:02:40,340 --> 00:02:43,300 būti naudojamas, kas eilutę tikrai yra po gaubtu, 57 00:02:43,300 --> 00:02:47,320 iki kitos savaitės, kai mes pradedame nardymas į dar giliau, kaip mašina 58 00:02:47,320 --> 00:02:48,590 kad visi iš šių dalykų darbe. 59 00:02:48,590 --> 00:02:51,920 Bet dabar, tegul piešia, galbūt, nuotraukos. 60 00:02:51,920 --> 00:02:54,950 >> Rašydami programą su pagrindinis paskelbė 61 00:02:54,950 --> 00:02:58,810 Tokiu būdu, pavyzdžiui, kad pagrindinis trunka du argumentus, int 62 00:02:58,810 --> 00:03:03,233 and-- kas duomenų tipas yra antrasis argumentas? 63 00:03:03,233 --> 00:03:04,529 >> PUBLIKA: Array. 64 00:03:04,529 --> 00:03:05,320 DAVID Malan: Array. 65 00:03:05,320 --> 00:03:09,170 Taigi atrodo iš pirmo žvilgsnio, kaip tai eilutė, bet pastebėsite, skliaustus. 66 00:03:09,170 --> 00:03:12,760 Prisiminkite paskutinį kartą pristatėme masyvo sąvoka. 67 00:03:12,760 --> 00:03:16,210 Ir masyvai naudoti skliaustus, kontekstuose pora. 68 00:03:16,210 --> 00:03:19,160 Galite naudoti aikštėje skliausteliuose eiti į masyvą 69 00:03:19,160 --> 00:03:22,710 ir gauti tam tikrą elementą, pavyzdžiui, laikiklis 0 arba laikiklis 1 arba laikiklis 2. 70 00:03:22,710 --> 00:03:25,500 Bet mes matėme, jei trumpai, praeitą savaitę, kad jūs taip pat 71 00:03:25,500 --> 00:03:28,790 naudoti šiuos skliaustus, į paskelbti dydį masyvo, 72 00:03:28,790 --> 00:03:31,790 jei iš anksto žinoti, kiek ints arba kiek stygos arba ką 73 00:03:31,790 --> 00:03:32,630 iš tikrųjų nori. 74 00:03:32,630 --> 00:03:34,790 Taigi paaiškėja, ten trečioji kontekstas čia 75 00:03:34,790 --> 00:03:37,890 kad neturi skaičių viduje iš laužtiniuose skliaustuose. 76 00:03:37,890 --> 00:03:41,920 Kai nurodote, kaip aš čia kažką panašaus argv vardas, 77 00:03:41,920 --> 00:03:44,550 kuri yra tik išgalvotas būdas sakydamas argumentas vektorių, kuris 78 00:03:44,550 --> 00:03:47,750 yra dar vienas išgalvotas būdas sakydamas savo argumentų masyvo, 79 00:03:47,750 --> 00:03:50,870 atviras laikiklis skliaustai uždaromi tik reiškia, kad jūs nebūtinai 80 00:03:50,870 --> 00:03:52,960 iš anksto žinoti, kaip didelis masyvas bus, 81 00:03:52,960 --> 00:03:55,070 bet jūs žinote, jis ketina būti masyvas. 82 00:03:55,070 --> 00:03:57,320 Taigi, jei jūs nežinote, skaičius nedėkite ten, 83 00:03:57,320 --> 00:04:01,160 atviro kronšteino glaudžiai laikiklio reiškia, kad argv nėra eilutė, 84 00:04:01,160 --> 00:04:03,124 bet eilučių masyvas. 85 00:04:03,124 --> 00:04:05,040 Taigi sintaksiškai, jei jums prisiminkite praėjusią savaitę, 86 00:04:05,040 --> 00:04:09,460 tai labai panašus į sakydamas kažkas panašaus į int amžiaus atviras laikikliu 87 00:04:09,460 --> 00:04:10,984 ir tada kažkas vėliau. 88 00:04:10,984 --> 00:04:12,150 Taigi, ką tai atrodo? 89 00:04:12,150 --> 00:04:13,399 Leiskite tikrųjų atkreipti nuotrauką. 90 00:04:13,399 --> 00:04:18,756 Taigi, kai jūs paleisti šią programą su pagrindiniais Turinčios dvi argumentai apibrėžta viduje 91 00:04:18,756 --> 00:04:21,339 tų skliausteliuose, jūs iš esmės turi bent du gabaliukus 92 00:04:21,339 --> 00:04:23,560 atminties įteikė jums po gaubtu. 93 00:04:23,560 --> 00:04:26,550 Vienas iš jų, kaip aš jums atkreipia kaip stačiakampio, ketina būti vadinamas argc. 94 00:04:26,550 --> 00:04:30,645 Ir lygiai taip pat greitai Priminti, kas yra duomenų tipas, argc? 95 00:04:30,645 --> 00:04:31,270 Taigi, tai vid. 96 00:04:31,270 --> 00:04:33,480 Taigi skaičius nuolat eiti argc-- posūkių 97 00:04:33,480 --> 00:04:35,660 , kad stovi argumentų skaičius. 98 00:04:35,660 --> 00:04:38,887 Tuo tarpu, aš sudarytas argv kaip masyvą. 99 00:04:38,887 --> 00:04:40,970 Ir aš tikrai nežino, kaip ilgai jis bus, 100 00:04:40,970 --> 00:04:42,470 taip šiandienos tikslais dot dot dot. 101 00:04:42,470 --> 00:04:43,636 Ji gali gauti tam tikros trukmės. 102 00:04:43,636 --> 00:04:45,640 Bet aš čia nuotraukoje bent keturi stačiakampiai. 103 00:04:45,640 --> 00:04:50,970 Taigi argv iš atminties, kuri saugo riekė Styga Styga Styga dot dot dot, 104 00:04:50,970 --> 00:04:53,950 ir argc yra tik vienas gabalas iš atminties sveikasis skaičius. 105 00:04:53,950 --> 00:04:55,710 >> Taigi dabar, būkime truputį tikslesnis. 106 00:04:55,710 --> 00:04:59,200 Jei kai turiu stygos šiame masyve, vadinamas 107 00:04:59,200 --> 00:05:03,290 argv, aš noriu gauti į juos atskirai, kaip praeitą savaitę, 108 00:05:03,290 --> 00:05:05,670 mes ketiname naudoti žymėjimo kaip argv laikiklio 0 109 00:05:05,670 --> 00:05:07,650 gauti pirmas dalykas masyvą. 110 00:05:07,650 --> 00:05:10,440 Argv laikiklis 1 gauti Antras dalykas, ir taip toliau. 111 00:05:10,440 --> 00:05:14,597 Svarbiausias čia yra, mes vis dar 0 indexed-- mes vis dar skaičiuojant nuo 0. 112 00:05:14,597 --> 00:05:16,430 Taigi dabar tegul iš tikrųjų įdėti kažką tai. 113 00:05:16,430 --> 00:05:21,670 Jei aš būčiau sudaryti programą, pavadintą labas iš failo pavadinimu labas taškas c, 114 00:05:21,670 --> 00:05:24,340 ir tada aš paleisti šią programą dot slash Sveiki, 115 00:05:24,340 --> 00:05:28,380 ką mano kompiuterio, mano nešiojamas, atrodo po gaubtu 116 00:05:28,380 --> 00:05:31,300 Šiuo metu aš paleisti taškas velniop labas ir paspauskite "Enter"? 117 00:05:31,300 --> 00:05:33,500 Na, tai turbūt ką galėtume apibūdinti 118 00:05:33,500 --> 00:05:37,010 kaip kompiuteris turinį atminties arba RAM-- Random Access Memory. 119 00:05:37,010 --> 00:05:40,330 Kitaip tariant, kompiuteris, kažkaip jums stebuklingai, 120 00:05:40,330 --> 00:05:45,360 kelia numeris 1 argc, AKA argcount, ir tai kelia tiesiog eilutę 121 00:05:45,360 --> 00:05:48,200 ./hello į argv laikiklio 0. 122 00:05:48,200 --> 00:05:51,750 Neįsivaizduoju, tiesą sakant, tai, kas į argv laikikliu 1, 2 arba 3, 123 00:05:51,750 --> 00:05:55,550 nes jei vartotojas turi ne įvedėte nieko be ./hello, 124 00:05:55,550 --> 00:05:58,550 mes ketiname daryti prielaidą, kad šie yra labiausiai tikėtina, šiukšlių vertybes, 125 00:05:58,550 --> 00:05:59,700 taip sakant. 126 00:05:59,700 --> 00:06:02,650 Šie atminties gabaliukus egzistuoja, bet tai ne mums 127 00:06:02,650 --> 00:06:05,710 pažvelgti į juos, nes argcount yra tik vienas. 128 00:06:05,710 --> 00:06:07,870 >> Dabar, tuo tarpu, jei aš rašyti paleisti kitą programą, 129 00:06:07,870 --> 00:06:12,250 CD, kuri yra daugiau tinkamai komandą, Jūsų mirksi prompt-- cd erdvę 130 00:06:12,250 --> 00:06:17,200 Dropbox-- kai aš paleisti, kad efektyviai, kai cd programa paleisti, argc, 131 00:06:17,200 --> 00:06:22,270 viduje mano kompiuterio atmintyje, yra Patys trumpiausią antras skaičius 2. 132 00:06:22,270 --> 00:06:25,936 Ir tada argv laikiklis o turi CD, argv laikiklis 1 turi Dropbox, 133 00:06:25,936 --> 00:06:28,560 ir tada, žinoma komanda baigia, todėl visą šį atminties 134 00:06:28,560 --> 00:06:30,420 esmės nueina ir naudojama kažkas. 135 00:06:30,420 --> 00:06:32,270 Ir štai kodėl aš sakau, tik sekundės. 136 00:06:32,270 --> 00:06:35,720 >> Tuo tarpu, jei mes mkdir pset2, vaizdas atrodo beveik tą patį, 137 00:06:35,720 --> 00:06:37,900 bet su skirtingais stygos viduje argv. 138 00:06:37,900 --> 00:06:42,570 Jei aš Zaszczękać brūkšnys labas labas taškas c, pačią idėją. 139 00:06:42,570 --> 00:06:47,060 Daugiau stuff užpildytas argv ir argc, žinoma, yra 4. 140 00:06:47,060 --> 00:06:49,150 Taigi, kitaip tariant, nors šio masyvo 141 00:06:49,150 --> 00:06:52,950 gali būti dot dot dot, kai kintamo ilgio, taip sakant, 142 00:06:52,950 --> 00:06:56,720 jūs visada žinoti, kur jo pabaigos yra, nes argc ketina pasakyti jums 143 00:06:56,720 --> 00:07:00,120 momentas, kada turite nustoti žiūri elementų argv. 144 00:07:00,120 --> 00:07:03,660 Jūs galite ieškoti tik keturių iš viso šiuo atveju. 145 00:07:03,660 --> 00:07:06,600 >> Tad dabar pats pažvelgti, galbūt, paprasta programa. 146 00:07:06,600 --> 00:07:09,070 Vienas, kad tiesiog sako labas kad kažkas panašaus Zamyla. 147 00:07:09,070 --> 00:07:12,620 Taigi, aš teigti aš ruošiuosi parašyti programą vos akimirką, per kurią galėčiau padaryti 148 00:07:12,620 --> 00:07:16,670 ./hello erdvė Zamyla, tada aš noriu mano programa atsispausdinti kažką 149 00:07:16,670 --> 00:07:18,520 super paprasta, kaip "Labas, Zamyla." 150 00:07:18,520 --> 00:07:20,100 Dabar praeityje mes naudojamas getstring. 151 00:07:20,100 --> 00:07:22,850 Taigi praeityje, net jei esate naujas programavimo, 152 00:07:22,850 --> 00:07:27,180 šansai yra jums gali pakelti programa, kuri naudoja getstring 153 00:07:27,180 --> 00:07:29,390 ir tada naudoja printf pasisveikinti su Zamyla. 154 00:07:29,390 --> 00:07:31,290 Bet tegul ne naudoti getstring šį kartą. 155 00:07:31,290 --> 00:07:37,510 Leiskite vietoj eiti į Appliant o apima standartinį I O dot val. 156 00:07:37,510 --> 00:07:41,160 Leiskite taip pat CS50 dot val. 157 00:07:41,160 --> 00:07:44,730 Dabar int main, ir dabar aš nesiruošia daryti negaliojančiu šiandien. 158 00:07:44,730 --> 00:07:51,200 Vietoj to, aš ruošiuosi daryti int argc styginių argv atviras laikiklis skliaustai uždaromi, 159 00:07:51,200 --> 00:07:52,640 nenurodant numerį. 160 00:07:52,640 --> 00:07:54,644 Ir dabar čia yra mano vadinamasis daryti. 161 00:07:54,644 --> 00:07:57,560 Ką aš ruošiuosi padaryti dabar yra, aš tikiu, ketinate daryti apie tikėjimo šuolis truputį, 162 00:07:57,560 --> 00:08:00,560 Aš ruošiuosi daryti prielaidą, kad vartotojo vyksta teisingai naudoti šią programą, 163 00:08:00,560 --> 00:08:04,980 ir aš tiesiog ketinate padaryti printf Sveiki,% sn. 164 00:08:04,980 --> 00:08:06,630 Taigi nieko naujo ten. 165 00:08:06,630 --> 00:08:11,470 Bet aš noriu dabar įdėti, ką žodis vartotojas įveda Po programos pavadinimą. 166 00:08:11,470 --> 00:08:16,970 Taigi, jei aš ./hello erdvę Zamyla, aš noriu kažkaip programiškai prieiga 167 00:08:16,970 --> 00:08:20,870 citata citatos "Zamyla." todėl aš gali eiti į mano argumentas vektorių, 168 00:08:20,870 --> 00:08:25,980 mano masyvo eilučių ir jei komandą, vėl buvo ./hello erdvė Zamyla, 169 00:08:25,980 --> 00:08:29,340 kokiu numeriu aš noriu įdėti į argv čia? 170 00:08:29,340 --> 00:08:29,840 PUBLIKA: 1. 171 00:08:29,840 --> 00:08:32,355 DAVID Malan: 1, nes laikiklis 0 paaiškėja, 172 00:08:32,355 --> 00:08:34,230 bus Programos pavadinimas, kaip matėme. 173 00:08:34,230 --> 00:08:37,789 Taigi laikiklis 1 yra pirmasis žodis kad I, vartotojas, įvedėte. 174 00:08:37,789 --> 00:08:39,559 Aš ruošiuosi eiti į priekį ir išsaugoti tai. 175 00:08:39,559 --> 00:08:42,830 Aš ruošiuosi eiti į mano aplanką kur aš pateikti šį failą. 176 00:08:42,830 --> 00:08:44,920 Aš ruošiuosi daryti, kad Hello 3. 177 00:08:44,920 --> 00:08:46,230 Comp IO yra Gerai. 178 00:08:46,230 --> 00:08:51,380 ./hello Zamyla Enter. 179 00:08:51,380 --> 00:08:54,480 Ką man daryti negerai? 180 00:08:54,480 --> 00:08:57,270 Aš sugauti netikėtai aš tik už akimirką ten. 181 00:08:57,270 --> 00:08:58,230 Ką man daryti negerai? 182 00:08:58,230 --> 00:08:59,220 >> PUBLIKA: Vardas. 183 00:08:59,220 --> 00:09:01,767 >> DAVID Malan: failo tikrųjų vadinamas hello3.c. 184 00:09:01,767 --> 00:09:03,850 Ir aš padariau, kad tik nuoseklumas, nes mes 185 00:09:03,850 --> 00:09:06,550 turėjo hello.c 's praeities internetinėje kodą. 186 00:09:06,550 --> 00:09:11,550 Taigi leiskite išspręsti šią ./hello laikiklis brūkšnys 3 Zamyla. 187 00:09:11,550 --> 00:09:12,370 Įveskite. 188 00:09:12,370 --> 00:09:14,030 Ir dabar mes turime labas, Zamyla. 189 00:09:14,030 --> 00:09:17,650 Tuo tarpu, aš galiu jį pakeisti būti Robas, arba tikrai bet koks kitas žodis. 190 00:09:17,650 --> 00:09:19,230 >> Tačiau aptarkime kampe bylą. 191 00:09:19,230 --> 00:09:24,360 Kas gali tikitės atsitiks, jei Nemanau tipo niekieno vardą ne visi? 192 00:09:24,360 --> 00:09:25,270 >> PUBLIKA: Klaida. 193 00:09:25,270 --> 00:09:27,300 >> DAVID Malan: klaida kažkoks, galbūt. 194 00:09:27,300 --> 00:09:28,200 Pažiūrėkime. 195 00:09:28,200 --> 00:09:29,440 Įveskite. 196 00:09:29,440 --> 00:09:30,210 Null. 197 00:09:30,210 --> 00:09:33,870 Taigi printf iš tikrųjų yra mažai saugo mus 198 00:09:33,870 --> 00:09:38,131 čia, ir tiesiog spausdinti atvirų paren null, bet dar blogiau dalykų gali atsitikti. 199 00:09:38,131 --> 00:09:40,130 Ir tik parodyti ką jūs visiškai 200 00:09:40,130 --> 00:09:42,800 neturėtų daryti, eikime į čia ir pradėti išnyra aplink. 201 00:09:42,800 --> 00:09:43,300 Teisė? 202 00:09:43,300 --> 00:09:46,410 Jei aš žinau, kad į paveikslėlį atmintis iš esmės yra tai, 203 00:09:46,410 --> 00:09:52,660 argv laikiklis 1 turi Zamyla, argv laikiklis 0 turi ./hello arba ./hello-3. 204 00:09:52,660 --> 00:09:55,400 Kas yra laikiklis 2? 205 00:09:55,400 --> 00:09:58,210 Taigi aš galiu atsakyti, kad klausimą sau, ar ne? 206 00:09:58,210 --> 00:10:00,460 Galiu tiesiog pakeisti 1 iki 2. 207 00:10:00,460 --> 00:10:07,270 Dabar galiu perkompiliuoti labas 3, ./hello3 Leiskite padidinti ir paspauskite "Enter". 208 00:10:07,270 --> 00:10:08,270 Oi. 209 00:10:08,270 --> 00:10:10,660 Nėra kabutes. 210 00:10:10,660 --> 00:10:12,540 Įdomu. 211 00:10:12,540 --> 00:10:15,530 Štai kokios cool pamatyti, ką dar yra čia. 212 00:10:15,530 --> 00:10:17,130 >> Taigi, ką dar yra viduje mano nešiojamas? 213 00:10:17,130 --> 00:10:20,390 Leiskite išsaugokite jį su laikikliu 3. 214 00:10:20,390 --> 00:10:25,190 Padaryti hello3, ./hello-3. 215 00:10:25,190 --> 00:10:26,500 Keistas. 216 00:10:26,500 --> 00:10:30,560 O dabar galime gauti tikrai bold-- 50. 217 00:10:30,560 --> 00:10:34,340 Taigi, kad tikrai nardymo giliai į mano kompiuterio atmintyje. 218 00:10:34,340 --> 00:10:35,930 50 indeksus. 219 00:10:35,930 --> 00:10:41,950 Todėl įsitikinkite, Hello 3 ./hello-3. 220 00:10:41,950 --> 00:10:42,680 Keistas. 221 00:10:42,680 --> 00:10:44,660 Gerai, dabar aš tiesiog ketina gauti neapgalvotas. 222 00:10:44,660 --> 00:10:47,331 Vykime į 5000. 223 00:10:47,331 --> 00:10:47,830 Viskas gerai. 224 00:10:47,830 --> 00:10:49,520 Taigi leiskite man perkompiliuoti. 225 00:10:49,520 --> 00:10:51,460 Padaryti hello3, ./hello-3. 226 00:10:51,460 --> 00:10:55,780 227 00:10:55,780 --> 00:10:56,460 Gerai. 228 00:10:56,460 --> 00:10:59,250 Dabar kai kurie iš jūsų, gali būti lemputė nenukryptų. 229 00:10:59,250 --> 00:11:01,900 Kiek turite matė šį pranešimą prieš? 230 00:11:01,900 --> 00:11:03,440 Gerai. 231 00:11:03,440 --> 00:11:04,420 Taigi, kodėl? 232 00:11:04,420 --> 00:11:07,250 >> Kursai are-- ir ten skiriasi dalykų, kurie gali sukelti tai, 233 00:11:07,250 --> 00:11:09,730 ir aiškiai esate geras draugija turime aiškiai 234 00:11:09,730 --> 00:11:11,900 sukėlė tai, kas vadinama segmentavimo kaltės. 235 00:11:11,900 --> 00:11:15,890 Ir ilga istorija trumpa šiandien, aš jau palietė atminties segmentą 236 00:11:15,890 --> 00:11:17,060 kad aš ne turėti. 237 00:11:17,060 --> 00:11:19,970 Kur segmentas tiesiog reiškia, riekė atminties, kad aš neturiu. 238 00:11:19,970 --> 00:11:25,530 Dabar kompiuteris užtikrina, kad, jei aš paleisti ./helloZamyla kad galiu paliesti argv 239 00:11:25,530 --> 00:11:27,760 būti laikiklis 0 ir argv laikiklis 1. 240 00:11:27,760 --> 00:11:32,730 Bet argc yra vertė 2, tai reiškia, kad aš esu tik allowed-- tai tarsi garbės 241 00:11:32,730 --> 00:11:35,180 system-- liesti laikiklis 0 ir laikiklis 1. 242 00:11:35,180 --> 00:11:37,990 Jeigu aš eiti toliau, ten visiškai bus atminties ten. 243 00:11:37,990 --> 00:11:40,660 Mano RAM egzistuoja fiziškai kompiuteryje. 244 00:11:40,660 --> 00:11:42,080 Bet kas žino, kas ten? 245 00:11:42,080 --> 00:11:44,450 Iš tiesų, aš bėgu kartotinis programos vienu metu. 246 00:11:44,450 --> 00:11:46,910 Aš gali turėti seen-- jei aš būčiau ne Tokiu būdu į Appliant 247 00:11:46,910 --> 00:11:49,937 bet mano Mac ar PC-- galiu turėti matė elektroniniu paštu turinį. 248 00:11:49,937 --> 00:11:52,270 Galėčiau mačiau akimirksniu žinutė Aš neseniai išsiųstas. 249 00:11:52,270 --> 00:11:55,390 Viskas, kas gali būti išlikęs aplink atminties 250 00:11:55,390 --> 00:11:59,180 galėjo būti atvertas būdu tai savavališkas kvadratinių laikiklis notacija. 251 00:11:59,180 --> 00:12:02,850 Arba, dar blogiau, jums gali tekti rasti vieną iš mano slaptažodžius 252 00:12:02,850 --> 00:12:05,859 kad aš neseniai įvestas, kad programa buvo saugomi atmintyje taip 253 00:12:05,859 --> 00:12:07,900 autentifikuoti mane, tada tiesiog rūšies paliko jį 254 00:12:07,900 --> 00:12:09,910 RAM, kol aš mesti tą programą. 255 00:12:09,910 --> 00:12:12,860 >> Ir iš tiesų, tai yra vienas iš pavojus ir vienas įgaliojimai 256 00:12:12,860 --> 00:12:15,980 naudojant panašų C kalbą Jūs turite užtikrinti nekliudomą prieigą 257 00:12:15,980 --> 00:12:18,860 į visą turinį iš programos atminties, 258 00:12:18,860 --> 00:12:21,340 ir ką blogi vaikinai gali net daryti tose cases-- 259 00:12:21,340 --> 00:12:23,807 ypač kai mes gauti interneto programavimo 260 00:12:23,807 --> 00:12:26,890 link semestro pabaigos, mes peržiūrėti šį topic-- yra baksnoti aplink, 261 00:12:26,890 --> 00:12:31,660 potencialiai kažkieno kompiuterio atminties ir rasti tokių smalsių dalykų 262 00:12:31,660 --> 00:12:32,570 kaip matėme ten. 263 00:12:32,570 --> 00:12:36,900 Arba net dar blogiau, slaptažodžius, kad jis arba ji gali tada naudoti daryti blogus dalykus. 264 00:12:36,900 --> 00:12:40,240 >> Taigi aišku aš ne tai padarysite, nes keistam dalykų pradėti atsitikti. 265 00:12:40,240 --> 00:12:42,310 Iš tiesų, tai yra programa, genda. 266 00:12:42,310 --> 00:12:44,580 Tai būtų lygiavertis Mac OS arba Windows 267 00:12:44,580 --> 00:12:46,770 programa langas tiesiog nyksta. 268 00:12:46,770 --> 00:12:48,300 Netikėtas įvyko klaida. 269 00:12:48,300 --> 00:12:50,840 Be komandų eilutės aplinka matome kažką panašaus į tai. 270 00:12:50,840 --> 00:12:54,480 Bet tai, kodėl yra aš tiesiog palietus atmintis, kuris nepriklauso man. 271 00:12:54,480 --> 00:12:57,090 >> Taigi leiskite gintis nuo šio a šiek tiek kitaip 272 00:12:57,090 --> 00:12:59,010 , žiūrėdamas šią programą čia. 273 00:12:59,010 --> 00:13:01,000 Taigi, dar kartą, skeletas kad mes matėme earlier-- 274 00:13:01,000 --> 00:13:02,480 ir aš atkreipė dėmesį į šią laiko int. 275 00:13:02,480 --> 00:13:05,900 Ir visą šį laiką pagrindinis yra iš tikrųjų grąžino vertę. 276 00:13:05,900 --> 00:13:09,120 Nors daugumoje mūsų paskaitos pavyzdžių mes niekada kadaise 277 00:13:09,120 --> 00:13:10,990 grįžti nieko pagrindinis. 278 00:13:10,990 --> 00:13:13,710 Mes tiesiog parašyti printf close garbanotas petnešomis ir viskas. 279 00:13:13,710 --> 00:13:16,500 Bet nemokamai, kas kompiliatorius buvo padaryti už jus, 280 00:13:16,500 --> 00:13:19,510 efektyviai, grįžta 0 už jus. 281 00:13:19,510 --> 00:13:22,950 Pasirodo out-- ir tai mažai counterintuitive-- kad 0 yra gera. 282 00:13:22,950 --> 00:13:24,690 Tai nereiškia, kad klaidingas savaime. 283 00:13:24,690 --> 00:13:29,080 0 yra gera, ir nors ne 0 vertė, pasaulis nusprendė, 284 00:13:29,080 --> 00:13:30,619 gali reikšti klaidą. 285 00:13:30,619 --> 00:13:32,910 Taigi, jei jūs kada nors messed kažkas ant jūsų kompiuterio, 286 00:13:32,910 --> 00:13:36,600 ar programa tik mirė nuo jūsų ir jūs Dotarłeś šiek tiek klaidingą langą 287 00:13:36,600 --> 00:13:40,360 ekrane, sakydamas klaida neigiamas 49 ar klaida 23-- 288 00:13:40,360 --> 00:13:44,170 kai, atrodytų, savavališkas value-- tai nes programuotojas sunkiai koduojami 289 00:13:44,170 --> 00:13:49,370 vertė, kaip neigiamas arba teigiamas 49 23 atstovauti bet koks skaičius, išdrįstų pasakyti, 290 00:13:49,370 --> 00:13:53,340 iš 4 milijardų galimų dalykų kad gali suklysti programą. 291 00:13:53,340 --> 00:13:55,700 >> Taigi, kaip galėčiau imtis privalumas tai pats? 292 00:13:55,700 --> 00:13:58,970 Na, leiskite man atverti programą kad aš parašiau iš anksto, 293 00:13:58,970 --> 00:14:01,450 ir baksnoti aplink internete vadinamas Hello 4. 294 00:14:01,450 --> 00:14:05,650 Ir tai beveik identiškos, išskyrus tai, kad jos gavo truputį Klaidų tikrinimas. 295 00:14:05,650 --> 00:14:09,660 Šiuo atveju, aš vėl paskelbė Pagrindinis pat atsižvelgiant du argumentus, 296 00:14:09,660 --> 00:14:13,180 bet šį kartą, on line 17 pranešimas Darau tam normalumas patikrinti tiek. 297 00:14:13,180 --> 00:14:17,100 Aš įsitikinkite, kad argc lygi lygi 2. 298 00:14:17,100 --> 00:14:18,960 Nes jei jis yra, kad tai aš galiu saugiai 299 00:14:18,960 --> 00:14:21,420 paliesti ne tik laikiklį 0, bet laikiklį 1. 300 00:14:21,420 --> 00:14:24,330 Ir aš einu į priekį ir atsispausdinti, šiuo atveju Zamyla arba Rob 301 00:14:24,330 --> 00:14:26,020 ar kokia žodis įvedžiau iš. 302 00:14:26,020 --> 00:14:28,020 O dabar tik gauti šiek tiek daugiau tinkamas, 303 00:14:28,020 --> 00:14:31,910 Aš ruošiuosi aiškiai grįžti 0, reiškia viskas yra gerai. 304 00:14:31,910 --> 00:14:33,300 Nieko blogo neatsitiko. 305 00:14:33,300 --> 00:14:38,590 >> Tačiau pagal susitarimą, aš ruošiuosi grįžti 1, arba atvirai bet ne 0 vertė, 306 00:14:38,590 --> 00:14:40,160 jei kažkas negerai. 307 00:14:40,160 --> 00:14:43,270 Dabar vartotojas nesiruošia tikrai pastebėsite, kas vyksta. 308 00:14:43,270 --> 00:14:50,410 Iš tiesų, jei aš einu į šį katalogą, mes priartinti ir padarysiu Hello 4, 309 00:14:50,410 --> 00:14:54,210 ./hello-4 Zamyla elgiasi kaip aš tikėtis. 310 00:14:54,210 --> 00:14:58,570 Bet jei aš vietoj ne tipo nieko, nieko, atrodo, kad taip atsitiktų, 311 00:14:58,570 --> 00:14:59,680 tačiau ji nėra gedimų. 312 00:14:59,680 --> 00:15:04,660 Ir jei aš vietoj kažką kaip Rob yra Proctor 313 00:15:04,660 --> 00:15:07,550 į Thayer-- pasidalijimo savavališkas informacija. 314 00:15:07,550 --> 00:15:13,680 Tačiau pranešimas, argv 1, 2, 3, 4 ir 5 dabar turėtų egzistuoti atmintyje. 315 00:15:13,680 --> 00:15:16,540 Tai taip pat yra ne tai, kas mano programa tikisi, 316 00:15:16,540 --> 00:15:20,300 nes aš patikrinti, ar argc lygus lygus 2 ar ne. 317 00:15:20,300 --> 00:15:22,140 Taigi, aš dabar ginti prieš tai. 318 00:15:22,140 --> 00:15:25,290 >> Dabar, kaip žemę, mes programmer-- ar veikiau mes users-- 319 00:15:25,290 --> 00:15:29,670 niekada matyti, kad 0 arba 1, tačiau naudojant įrankis, vadinamas Debugger, arba kitas priemones, 320 00:15:29,670 --> 00:15:32,250 kaip matysime prieš ilgas, galite programuotojas 321 00:15:32,250 --> 00:15:36,590 iš tikrųjų gali pamatyti, kas gali būti negerai viduje savo programą. 322 00:15:36,590 --> 00:15:39,170 >> Taigi, kokių nors klausimų apie argc? 323 00:15:39,170 --> 00:15:40,873 Taip. 324 00:15:40,873 --> 00:15:45,292 >> PUBLIKA: aš mačiau, kur jie neturėjo charakterį, [nesigirdi] 325 00:15:45,292 --> 00:15:49,669 tik pasakė styginių žvaigždė r, pavyzdžiui, charakteris žvaigždutė kablelis. 326 00:15:49,669 --> 00:15:50,710 Ar jie atitinka čia? 327 00:15:50,710 --> 00:15:51,626 >> DAVID Malan: Jie yra. 328 00:15:51,626 --> 00:15:55,080 Taigi klausimas yra, jūs turite kartais matė programos 329 00:15:55,080 --> 00:15:57,270 kaip tai, kad ne sako styginių argv laikiklį 330 00:15:57,270 --> 00:16:01,015 bet vietoj to ką nors pasakyti kaip char žvaigždė argv laikiklio. 331 00:16:01,015 --> 00:16:03,140 Ir ten net kita variantai, kad jūs galite pamatyti. 332 00:16:03,140 --> 00:16:04,264 Jie iš tiesų yra lygiavertis. 333 00:16:04,264 --> 00:16:06,240 Nes dabar, mes turime tai rūšiuoti mokymo ratų 334 00:16:06,240 --> 00:16:09,737 ant į eilutę į CS50 formos biblioteka, tačiau vos per savaitę 335 00:16:09,737 --> 00:16:12,570 ar taip mes ketiname pašalinti, kad obstrukcija visiškai ir iš tikrųjų 336 00:16:12,570 --> 00:16:16,820 pažvelgti, kas char ir žvaigždės , ir kaip tie susiję su atminties 337 00:16:16,820 --> 00:16:18,140 atstovavimas apskritai. 338 00:16:18,140 --> 00:16:19,540 Taigi mes grįžti prie to. 339 00:16:19,540 --> 00:16:21,540 >> Kiti klausimai apie mūsų argv ar argc? 340 00:16:21,540 --> 00:16:22,397 Taip. 341 00:16:22,397 --> 00:16:24,438 PUBLIKA: Kodėl jis grįžta klaida [nesigirdi]? 342 00:16:24,438 --> 00:16:27,147 343 00:16:27,147 --> 00:16:29,230 DAVID Malan: Kodėl tai padariau grąžina klaidos jei jums reikia oh! 344 00:16:29,230 --> 00:16:31,813 Be ankstesnėje byloje, kai mes buvo futzing aplink su atmintim, 345 00:16:31,813 --> 00:16:35,110 kodėl jis tik grąžina klaidos kai aš tikrai įvedėte didelį skaičių? 346 00:16:35,110 --> 00:16:36,620 Trumpas atsakymas yra, mes tiesiog pasisekė. 347 00:16:36,620 --> 00:16:39,240 Apskritai, kompiuterio paskirsto atmintį gabaliukus, 348 00:16:39,240 --> 00:16:42,900 ir jis man davė pakankamai didelis riekė, kad Aš toli, nepastebimai, 349 00:16:42,900 --> 00:16:46,280 paliesti laikiklio 2, laikiklis 3 laikiklis 50, bet kaip tik aš stumdosi 350 00:16:46,280 --> 00:16:49,080 mano laimė, aš peržengė ribos atminties riekė 351 00:16:49,080 --> 00:16:50,520 operacinė sistema davė man. 352 00:16:50,520 --> 00:16:52,720 Ir tai, kai jį prispaustas ir sakė, ne. 353 00:16:52,720 --> 00:16:54,580 Segmentavimas klaida. 354 00:16:54,580 --> 00:16:55,692 Taip. 355 00:16:55,692 --> 00:16:58,890 >> PUBLIKA: Kaip veikia kompiuteris žinoti argc vertę? 356 00:16:58,890 --> 00:17:02,390 >> DAVID Malan: Kaip veikia kompiuteris žinoti argc vertę? 357 00:17:02,390 --> 00:17:07,920 Paleidus programą, kad programa, pagal pobūdį mirksi eilutę 358 00:17:07,920 --> 00:17:11,359 perduodamas iš masyvo žodžiai, kurie buvo įvestas 359 00:17:11,359 --> 00:17:13,300 ne greitai, kad buvo įvedėte eilutėje. 360 00:17:13,300 --> 00:17:16,569 Ir todėl jis yra jūsų operacinė sistema, kuri iš esmės 361 00:17:16,569 --> 00:17:20,329 užpildo pagrindinių argumentų už jus. 362 00:17:20,329 --> 00:17:22,829 Štai viena iš paslaugų kad jūs gaunate, tarsi slapta 363 00:17:22,829 --> 00:17:24,869 prispaudžia gaubtu operacinė sistema. 364 00:17:24,869 --> 00:17:27,118 Kiti klausimai? 365 00:17:27,118 --> 00:17:27,618 Taip. 366 00:17:27,618 --> 00:17:29,787 >> PUBLIKA: Ką branduolys sąvartynas reiškia? 367 00:17:29,787 --> 00:17:31,370 DAVID Malan: Ką branduolys sąvartynas reiškia? 368 00:17:31,370 --> 00:17:32,950 Štai geras klausimas. 369 00:17:32,950 --> 00:17:35,312 Ir leiskite man grįžti į Šis katalogas čia. 370 00:17:35,312 --> 00:17:37,270 Ir jūs pastebėsite, kad Turiu naują failą ten. 371 00:17:37,270 --> 00:17:41,670 Tai iš tiesų vadinamas branduolys, ir tai iš tikrųjų paprastai padoraus dydžio failą. 372 00:17:41,670 --> 00:17:45,300 Tai iš esmės yra fotografiją įrodymas, kad mano programos atminties turinį 373 00:17:45,300 --> 00:17:46,902 arba RAM, kai jis sudužo. 374 00:17:46,902 --> 00:17:49,110 Ir tai bus naudinga, potencialiai diagnostiniu, 375 00:17:49,110 --> 00:17:52,850 kai mes kalbame būsimos paskaitos ir skyriuje apie derinimo, 376 00:17:52,850 --> 00:17:55,730 nes jūs iš tikrųjų galite padaryti ekvivalentas skaitmeninio skrodimo 377 00:17:55,730 --> 00:18:00,300 dėl šios bylos, kad padėtų išsiaiškinti ką padarė negerai savo programą. 378 00:18:00,300 --> 00:18:01,220 Taip. 379 00:18:01,220 --> 00:18:04,450 >> PUBLIKA: Ar argc komandą į pati, ar galite įvardyti tai nieko? 380 00:18:04,450 --> 00:18:05,575 >> DAVID Malan: Geras klausimas. 381 00:18:05,575 --> 00:18:08,040 Ar argc komandą savaime, ar galite pavadinti jį ką nors? 382 00:18:08,040 --> 00:18:09,290 Tai tikrai ne komanda. 383 00:18:09,290 --> 00:18:13,500 Tai tiesiog kintamasis s Vardas ir pavardė arba argumentas vardą, 384 00:18:13,500 --> 00:18:15,481 ir taip absoliučiai mes galima pavadinti šį foo, 385 00:18:15,481 --> 00:18:18,480 galėtume vadinti šią juostą, kuri yra linkę būti eiti į žodžius, kad kompiuterių 386 00:18:18,480 --> 00:18:19,860 mokslininkas eina į. 387 00:18:19,860 --> 00:18:22,820 Tačiau pagal susitarimą, mes naudojame argc ir argv. 388 00:18:22,820 --> 00:18:25,360 Bet tai tik žmogaus konvencija, nieko daugiau. 389 00:18:25,360 --> 00:18:25,860 Viskas gerai. 390 00:18:25,860 --> 00:18:28,140 Taigi pasirodo, aš buvau pasakoja balto lie-- tiek 391 00:18:28,140 --> 00:18:31,264 ir tiesą sakant, ateityje, pamatysite mes jau pasakojo kitas baltas melas. 392 00:18:31,264 --> 00:18:33,510 Bet dabar, mes ketiname žievelės atgal vieną iš šių. 393 00:18:33,510 --> 00:18:37,310 Šiuo atveju čia kai aš anksčiau vyko kaip ./hello arba ./hello-3 programos 394 00:18:37,310 --> 00:18:42,780 Zamyla, mes turėjome turinyje mano Kompiuterio atminties ieško beveik kaip 395 00:18:42,780 --> 00:18:43,280 tai. 396 00:18:43,280 --> 00:18:45,070 Bet prisiminti, kas eilutė. 397 00:18:45,070 --> 00:18:49,279 Ką mes galime pasakyti prieš savaitę, kas eilutė iš tikrųjų yra po kapotu? 398 00:18:49,279 --> 00:18:50,320 PUBLIKA: Array simbolių. 399 00:18:50,320 --> 00:18:52,111 DAVID Malan: Tai masyvas simbolių, tiesa? 400 00:18:52,111 --> 00:18:55,760 Taigi, mes galime turėti iš masyvo stygos, bet, savo ruožtu, seka 401 00:18:55,760 --> 00:18:57,150 yra simbolių masyvas. 402 00:18:57,150 --> 00:19:00,010 Taigi, jei aš tikrai noriu būti analinis kai piešiu šią nuotrauką, 403 00:19:00,010 --> 00:19:03,290 Aš tikrai turėtų būti brėžinys tai šiek tiek daugiau, kaip šis, 404 00:19:03,290 --> 00:19:08,000 , pagal kurį kiekvienas iš jų indeksus mano argv masyvo, 405 00:19:08,000 --> 00:19:11,432 yra pati visa eilutė kad pati yra masyve. 406 00:19:11,432 --> 00:19:13,140 Ir dabar baltas melas mes sakau šiandien 407 00:19:13,140 --> 00:19:15,181 yra tai, kad vaizdas nėra atrodo gana panašus į šį. 408 00:19:15,181 --> 00:19:19,110 Iš tiesų, mažai kvadratų yra paprastai už didelių stačiakampių 409 00:19:19,110 --> 00:19:19,610 ten. 410 00:19:19,610 --> 00:19:21,280 Bet mes grįžti į, kad iki ilgai. 411 00:19:21,280 --> 00:19:25,440 Bet tai ./hello Backslash 0, kad yra specialus simbolis, kad 412 00:19:25,440 --> 00:19:28,310 atriboja styginių pabaigą, ir mes turime dar vieną po 413 00:19:28,310 --> 00:19:29,360 Zamyla pavadinimas. 414 00:19:29,360 --> 00:19:30,900 Taigi, ką tai reiškia? 415 00:19:30,900 --> 00:19:33,410 >> Na, leiskite man eiti į priekį ir atverti kitus du pavyzdžius 416 00:19:33,410 --> 00:19:35,220 , kurie yra prieinami internete. 417 00:19:35,220 --> 00:19:40,590 Vienas iš jų yra vadinamas argv1.c ir kitas argv2. 418 00:19:40,590 --> 00:19:44,260 Tai super paprasta programa, kuri skiriasi nuo ankstesniųjų programų 419 00:19:44,260 --> 00:19:47,260 tuo, kad dabar aš naudoju argc ir argv čia. 420 00:19:47,260 --> 00:19:54,300 Ir dabar aš integruojant su už linijos į 0 linijos 18, nuo i = d iki argc. 421 00:19:54,300 --> 00:19:56,850 Ir ką aš ketinu daryti su šio kodo čia linijos? 422 00:19:56,850 --> 00:19:58,270 Anglų kalba. 423 00:19:58,270 --> 00:20:00,510 Tai akivaizdžiai rodo, naudojimą argc. 424 00:20:00,510 --> 00:20:03,670 Bet anglų kalba, ką tai daryti, jei aš paleisti šią programą? 425 00:20:03,670 --> 00:20:04,366 Taip? 426 00:20:04,366 --> 00:20:07,386 >> PUBLIKA: Jis ketina spausdinti ekrano tiek kartų, kiek norite. 427 00:20:07,386 --> 00:20:08,260 DAVID Malan: Būtent. 428 00:20:08,260 --> 00:20:10,480 Taigi ką aš žodžiai įrašykite bent eilutę, tai 429 00:20:10,480 --> 00:20:13,120 ketina atryti juos man po vieną eilutėje. 430 00:20:13,120 --> 00:20:14,370 Taigi eikime į priekį ir tai padaryti. 431 00:20:14,370 --> 00:20:17,862 Leiskite man eiti į mano katalogą ir padarysiu argv1 ./argv1. 432 00:20:17,862 --> 00:20:20,521 433 00:20:20,521 --> 00:20:21,770 Ir dabar, tegul laikyti jį paprasta. 434 00:20:21,770 --> 00:20:23,834 Darom nieko ne pirmas. 435 00:20:23,834 --> 00:20:26,750 Jis padarė spausdinti vieną dalyką, ir tai tikrai programos pavadinimas, 436 00:20:26,750 --> 00:20:28,240 nes tai yra laikiklis 0. 437 00:20:28,240 --> 00:20:33,290 Jeigu aš dabar pasakyti foo, jis ketina padaryti tie du, ir, jei aš sakau, foo bar, 438 00:20:33,290 --> 00:20:35,580 jis ketina pasakyti šiuos tris dalykus. 439 00:20:35,580 --> 00:20:37,740 Dabar tai šiek tiek įdomus, gal. 440 00:20:37,740 --> 00:20:41,450 Bet prisiminti, kad argv yra eilučių masyvas, 441 00:20:41,450 --> 00:20:45,960 bet eilutė yra iš simbolių masyvas, todėl galime imtis dalykų vienu žingsniu 442 00:20:45,960 --> 00:20:48,560 ir taikyti, kad pagrindinė logika ir padaryti kodą 443 00:20:48,560 --> 00:20:51,160 atrodo šiek tiek daugiau paslaptingas, tiesa. 444 00:20:51,160 --> 00:20:53,540 Tačiau turėdami įdėtos kilpa, kažką panašaus 445 00:20:53,540 --> 00:20:57,030 ką jūs tikriausiai pamenate, kad iš Mario, Pavyzdžiui, jei tu jį šiuo būdu. 446 00:20:57,030 --> 00:21:00,380 >> Taigi, dabar pastebėsite on line 19, aš vėl Iteracja per mano argumentus, 447 00:21:00,380 --> 00:21:02,410 nuo 0 nuo iki argc. 448 00:21:02,410 --> 00:21:05,510 Ir dabar atitinka 21-- aš skolindamasi iš paskutinio week-- triuką 449 00:21:05,510 --> 00:21:11,090 Aš patikrinti, kas yra ilgis argv laikiklio i. 450 00:21:11,090 --> 00:21:12,920 Aš saugoti, kad n atsakymą. 451 00:21:12,920 --> 00:21:18,230 Ir tada aš integruojant iš j ant iki n, kur j yra inicializuoti 0. 452 00:21:18,230 --> 00:21:19,460 Taigi, Konvencija skaičiavimui. 453 00:21:19,460 --> 00:21:22,335 Kai jūs naudojote i, jei turite įdėtos kilpos, jūs negalite naudoti i vėl, 454 00:21:22,335 --> 00:21:25,770 kitaip jums Bylų, potencialiai vertė ne vidinės kilpos. 455 00:21:25,770 --> 00:21:27,200 Taigi aš naudoju j pagal susitarimą. 456 00:21:27,200 --> 00:21:28,020 Mes galime naudoti k. 457 00:21:28,020 --> 00:21:31,080 Jei turite daugiau nei k, tikriausiai per daug lizdus, ​​paprastai. 458 00:21:31,080 --> 00:21:33,800 Bet dabar, pastebės mano printf linija yra šiek tiek kitoks. 459 00:21:33,800 --> 00:21:37,520 Aš nespausdina% s, aš spausdinti% C, kuris, žinoma, 460 00:21:37,520 --> 00:21:39,460 yra už char vietos rezervavimo ženklas. 461 00:21:39,460 --> 00:21:40,770 >> Ir dabar pastebėsite šį sintaksė. 462 00:21:40,770 --> 00:21:41,270 Nauja. 463 00:21:41,270 --> 00:21:42,630 Mes nematėme anksčiau. 464 00:21:42,630 --> 00:21:47,290 Bet logiškai, tai tiesiog reiškia, gauti osios eilutę argv 465 00:21:47,290 --> 00:21:50,067 ir gauti jth ką? 466 00:21:50,067 --> 00:21:50,900 PUBLIKA: Personažo. 467 00:21:50,900 --> 00:21:52,800 DAVID Malan: Simbolių toje eilutę. 468 00:21:52,800 --> 00:21:57,100 Taigi, naudojant skliaustus, po laužtiniuose skliaustuose, 469 00:21:57,100 --> 00:22:00,390 tai yra nardymo pirmas į argv yra stygos, 470 00:22:00,390 --> 00:22:02,225 ir tada antra Kvadrātiekavas su j 471 00:22:02,225 --> 00:22:06,580 yra nardymo į simbolių kad visų pirma eilutę argv. 472 00:22:06,580 --> 00:22:09,562 Ir tada, tik gera priemonė, Aš spausdinant naują eilutę čia. 473 00:22:09,562 --> 00:22:12,020 Taigi dabar leiskite man eiti į priekį ir atidaryti iki šiek tiek didesnio lango 474 00:22:12,020 --> 00:22:13,600 todėl mes galime pamatyti šį veiksmą. 475 00:22:13,600 --> 00:22:15,700 Leiskite man eiti į tą aplanką. 476 00:22:15,700 --> 00:22:22,550 O dabar padarysiu argv-2-- whoops-- padaryti argv-2, ./argv 2. 477 00:22:22,550 --> 00:22:23,110 Įveskite. 478 00:22:23,110 --> 00:22:24,860 Ir tai šiek tiek sunku vertikaliai skaityti, 479 00:22:24,860 --> 00:22:27,920 bet tai iš tiesų iš vardo programa, po tuščią eilutę. 480 00:22:27,920 --> 00:22:30,210 Dabar leiskite man eiti į priekį ir daryti foo. 481 00:22:30,210 --> 00:22:33,210 Panašiai sunku skaityti, bet tai Iš tiesų spausdinti vieną simbolį eilutėje. 482 00:22:33,210 --> 00:22:36,780 Ir jei aš juostą, tai dabar spausdinti tuos eilutė po eilutės. 483 00:22:36,780 --> 00:22:40,140 Taigi Takeaway čia yra ne tiek , kad wow, pažvelgti į šią tvarkingas naujos triukas 484 00:22:40,140 --> 00:22:44,750 kur galima gauti prie turinio masyvo specifinių simbolių, 485 00:22:44,750 --> 00:22:48,380 o kaip mes atsižvelgiant šiuos pagrindinius idėjos, kaip indeksavimo į masyvą, 486 00:22:48,380 --> 00:22:51,620 ir tada indeksavimo į masyvas buvo tame masyve, 487 00:22:51,620 --> 00:22:56,180 ir tik taikant tokias pačias idėjas šiek tiek sudėtingesni pavyzdžiai. 488 00:22:56,180 --> 00:22:59,560 Tačiau pagrindai tikrai ne pasikeitė, net nuo praėjusios savaitės. 489 00:22:59,560 --> 00:23:02,350 >> Dabar tai yra tarsi laiku, tuo, kad, žinote, nulinės savaitę 490 00:23:02,350 --> 00:23:04,110 mes grojo su telefonų knygoje, kaip šis. 491 00:23:04,110 --> 00:23:06,670 Ir nors tai yra žinoma, fiziniai popieriaus gabaliukai, 492 00:23:06,670 --> 00:23:09,150 galite rūšies galvoti Telefonų knyga kaip masyvą. 493 00:23:09,150 --> 00:23:12,770 Žinoma, jei jums buvo reimplement tai gabalai šie popieriaus gabalėliai 494 00:23:12,770 --> 00:23:15,260 kompiuteryje, turbūt jums būtų naudoti kažką 495 00:23:15,260 --> 00:23:20,270 kaip masyvas saugoti visus tuos vardai ir numeriai nuo A visą kelią 496 00:23:20,270 --> 00:23:23,800 per Z. Taigi, tai yra gražus, nes jis leidžia mums galimybę, 497 00:23:23,800 --> 00:23:28,310 ko gero, apsvarstyti, kaip jums gali realiai įgyvendinti kažką panašaus, kad. 498 00:23:28,310 --> 00:23:31,250 Kaip su durimis serijos čia. 499 00:23:31,250 --> 00:23:36,380 Taigi, jei aš could-- turime vieną savanoriškai ateiti iki. 500 00:23:36,380 --> 00:23:36,980 Pažiūrėkime. 501 00:23:36,980 --> 00:23:40,650 Nepažįstamas veidas galbūt, nepažįstamas veidas galbūt. 502 00:23:40,650 --> 00:23:42,090 Kaip apie oranžine spalva? 503 00:23:42,090 --> 00:23:42,680 Čia. 504 00:23:42,680 --> 00:23:45,870 Oranžinė palaidinė, nagi iki. 505 00:23:45,870 --> 00:23:52,230 >> Vykime į priekį dabar ir judėti šios durys šalikelėje, 506 00:23:52,230 --> 00:23:54,020 perkelti juos iš už akimirką būdu. 507 00:23:54,020 --> 00:23:56,600 508 00:23:56,600 --> 00:23:57,760 Koks tavo vardas? 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 Davidas. 512 00:23:58,680 --> 00:23:59,451 Nice to meet you. 513 00:23:59,451 --> 00:23:59,950 Viskas gerai. 514 00:23:59,950 --> 00:24:04,500 Taigi, mes turime už šių šešių durys skaitmeniniu į screen-- 515 00:24:04,500 --> 00:24:07,810 arba, tiksliau sakant, septynios durelės screen-- visa krūva skaičių. 516 00:24:07,810 --> 00:24:10,099 Ir aš Jums sakė nieko į advance-- sutiko? 517 00:24:10,099 --> 00:24:11,140 AJAY: Nieko iš anksto. 518 00:24:11,140 --> 00:24:14,730 DAVID Malan: Viskas, ką aš noriu jums padaryti dabar yra rasti už mane, ir už mus, 519 00:24:14,730 --> 00:24:20,920 tikrai, skaičius 50, vienas žingsnis metu. 520 00:24:20,920 --> 00:24:21,830 >> AJAY: Taškų 50? 521 00:24:21,830 --> 00:24:22,580 >> DAVID Malan: skaičius 50. 522 00:24:22,580 --> 00:24:24,746 Ir jūs galite atskleisti, kas yra Už kiekvieną iš šių durų 523 00:24:24,746 --> 00:24:27,930 tiesiog paliesdami jį pirštu. 524 00:24:27,930 --> 00:24:31,364 Velnias. [Juokas] 525 00:24:31,364 --> 00:24:34,560 >> [Plojimai] 526 00:24:34,560 --> 00:24:39,540 >> Labai gerai padaryta. 527 00:24:39,540 --> 00:24:40,400 Gerai. 528 00:24:40,400 --> 00:24:44,090 Mes turime mielą dovaną premija už jus čia. 529 00:24:44,090 --> 00:24:46,520 Jūsų pasirinkimas filmų mes aptarė praėjusią savaitę. 530 00:24:46,520 --> 00:24:47,362 >> AJAY: O, žmogau. 531 00:24:47,362 --> 00:24:49,050 O, aš niekada nemačiau Spaceballs. 532 00:24:49,050 --> 00:24:49,520 >> DAVID Malan: Spaceballs. 533 00:24:49,520 --> 00:24:50,140 Viskas gerai. 534 00:24:50,140 --> 00:24:53,790 Taigi laikykis tik vieną akimirką. 535 00:24:53,790 --> 00:24:57,430 How-- padarykime tai būti mokomi moment-- 536 00:24:57,430 --> 00:25:00,412 kaip gi tu apie rasti skaičių 50? 537 00:25:00,412 --> 00:25:01,370 AJAY: Aš pasirinkau atsitiktinai. 538 00:25:01,370 --> 00:25:03,420 DAVID Malan: Taigi jūs pasirinkote atsitiktinai ir pasisekė. 539 00:25:03,420 --> 00:25:03,790 AJAY: Taip. 540 00:25:03,790 --> 00:25:04,456 DAVID Malan: Gerai. 541 00:25:04,456 --> 00:25:05,050 Puikus. 542 00:25:05,050 --> 00:25:08,470 Taigi dabar, turėjo jums ne Dotarłeś pasisekė, ką dar 543 00:25:08,470 --> 00:25:10,210 galėjo atsitikti už šių durų? 544 00:25:10,210 --> 00:25:12,930 Taigi, jei aš einu į priekį ir atskleisti šiuos numerius čia, 545 00:25:12,930 --> 00:25:15,180 jie iš tikrųjų yra atsitiktine tvarka. 546 00:25:15,180 --> 00:25:17,750 Ir geriausia, ką gali turėti padaryta, tiesą sakant, yra iš, galiausiai, 547 00:25:17,750 --> 00:25:19,410 blogiausiu atveju, tikrinti juos visus. 548 00:25:19,410 --> 00:25:23,000 Taigi jūs turite super laimingas, kuris yra ne tai, ką mes norime skambinti algoritmą. 549 00:25:23,000 --> 00:25:24,730 Taip, sveikinimai. 550 00:25:24,730 --> 00:25:27,010 Bet dabar let's-- Humoras man, jei gali. 551 00:25:27,010 --> 00:25:28,310 Vykime į šį skirtuką čia. 552 00:25:28,310 --> 00:25:31,460 Ir čia yra aiškiai numeriai kas atrodo atsitiktine tvarka, 553 00:25:31,460 --> 00:25:32,280 ir jie buvo. 554 00:25:32,280 --> 00:25:35,160 Bet dabar, jei aš vietoj teiginys kad už šių durų 555 00:25:35,160 --> 00:25:39,070 yra skaičiai, kurie yra rūšiuojami. 556 00:25:39,070 --> 00:25:41,780 Tikslas dabar yra taip pat mus rasti skaičių 50. 557 00:25:41,780 --> 00:25:45,910 Bet tai padaryti algoritmiškai ir papasakoti, kaip jūs ketinate apie tai. 558 00:25:45,910 --> 00:25:48,020 Ir jei jūs ją rasti, jūs nuolat filmą. 559 00:25:48,020 --> 00:25:49,520 Jūs nerandate tai, jūs suteikiate jai atgal. 560 00:25:49,520 --> 00:25:52,720 561 00:25:52,720 --> 00:25:58,112 AJAY: Taigi, aš ruošiuosi patikrinti galus pirma, siekiant nustatyti, ar there's-- 562 00:25:58,112 --> 00:26:02,048 [Juokas ir plojimai] 563 00:26:02,048 --> 00:26:04,451 564 00:26:04,451 --> 00:26:05,492 DAVID Malan: Here you go. 565 00:26:05,492 --> 00:26:17,080 566 00:26:17,080 --> 00:26:21,700 Paimkime bent vieną išvaizdą iš Ajay pirmtakai, 567 00:26:21,700 --> 00:26:25,450 Sean, kuris buvo ne visai taip pasisekė. 568 00:26:25,450 --> 00:26:28,670 Gerai, kad savo užduotį čia Sean, yra taip. 569 00:26:28,670 --> 00:26:32,970 Aš paslėpti už tai durys septynetas, 570 00:26:32,970 --> 00:26:37,200 bet nuošalioje kai kuriose iš šių durų taip pat yra ir kitų ne neigiami skaičiai. 571 00:26:37,200 --> 00:26:40,730 Ir jūsų tikslas yra galvoti apie tai, viršutinėje eilutėje numerius kaip tik masyvą. 572 00:26:40,730 --> 00:26:43,590 Užtenka tik vienetų seka popieriaus su skaičiais už jų. 573 00:26:43,590 --> 00:26:47,640 Ir jūsų tikslas yra, tik naudojant viršų masyvas čia mane surasti skaičių septyni. 574 00:26:47,640 --> 00:26:51,200 Ir mes tada ketiname kritika kaip jums eiti apie tai daro. 575 00:26:51,200 --> 00:26:52,920 Kaip mus rasti skaičių septyni, prašau. 576 00:26:52,920 --> 00:27:02,570 577 00:27:02,570 --> 00:27:03,070 Ne 578 00:27:03,070 --> 00:27:06,760 579 00:27:06,760 --> 00:27:08,179 5, 19, 13. 580 00:27:08,179 --> 00:27:16,752 581 00:27:16,752 --> 00:27:17,835 Tai ne triukas klausimas. 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 Šiuo metu jūsų rezultatas nėra labai gerai, todėl jūs galite taip pat nuolat vyksta. 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 Eiti į. 590 00:27:39,802 --> 00:27:42,510 Atvirai kalbant, aš negaliu padėti, bet įdomu ką jūs net galvoti apie tai. 591 00:27:42,510 --> 00:27:44,990 >> Sean: Gebu tik iš viršutinėje eilutėje. 592 00:27:44,990 --> 00:27:46,240 DAVID Malan: Tik viršutinėje eilutėje. 593 00:27:46,240 --> 00:27:47,281 Taigi, jūs turite tris kairę. 594 00:27:47,281 --> 00:27:48,310 Taigi mane surasti 7. 595 00:27:48,310 --> 00:27:54,758 596 00:27:54,758 --> 00:27:59,141 >> [PUBLIKA šūksniai PASIŪLYMAI] 597 00:27:59,141 --> 00:28:22,210 598 00:28:22,210 --> 00:28:26,130 Taigi abu tai buvo nuostabu dėl labai skirtingų priežasčių. 599 00:28:26,130 --> 00:28:29,150 Taigi, tai yra, kai mes nerašomas prieš akimirką, 600 00:28:29,150 --> 00:28:32,530 ir svarbiausia įžvalga čia buvo šios durys buvo numerius 601 00:28:32,530 --> 00:28:37,390 už jų, kurie buvo surūšiuoti, idealus Takeaway, dėl kurių yra tai, kad jūs galite padaryti 602 00:28:37,390 --> 00:28:39,670 iš esmės geriau šis antrasis example-- 603 00:28:39,670 --> 00:28:42,380 ir, tiesą sakant, tai buvo Seano pirmasis bandymas su atsitiktinių skaičių 604 00:28:42,380 --> 00:28:45,460 kaip before-- bet kaip tik kaip šie skaičiai yra rūšiuojamos, 605 00:28:45,460 --> 00:28:47,980 panašiai kaip telefonų knygoje, ką jūs akivaizdžiai daryti? 606 00:28:47,980 --> 00:28:50,090 Arba, kaip jūs galite sverto, kad žinios? 607 00:28:50,090 --> 00:28:51,530 Taip. 608 00:28:51,530 --> 00:28:54,910 >> PUBLIKA: Nueini pusiaukelėje [nesigirdi]. 609 00:28:54,910 --> 00:28:55,660 DAVID Malan: Taip. 610 00:28:55,660 --> 00:28:56,160 Būtent. 611 00:28:56,160 --> 00:28:59,680 Taigi Ajay pradinis instinktas buvo Tikrinti galus, kaip prisimenu, 612 00:28:59,680 --> 00:29:02,320 ir tada mes tarsi užbaigtas pavyzdys greitai. 613 00:29:02,320 --> 00:29:05,220 Bet jei mes pradėjome tai daryti daugiau metodiškai palei tas linijas, 614 00:29:05,220 --> 00:29:07,860 bet pradedant galbūt viduryje, nes jie rūšiuojami, 615 00:29:07,860 --> 00:29:10,900 kaip greitai, kaip mes atskleisti skaičius 16, todėl mes know-- 616 00:29:10,900 --> 00:29:14,850 ir darykime tiksliai that-- mes Todėl žinau, kad 50, šiandienos atveju, 617 00:29:14,850 --> 00:29:16,080 jau turiu būti į dešinę. 618 00:29:16,080 --> 00:29:18,735 Taigi, kaip ir nulinės kai savaitę mes sudraskė telefonų knygą per pusę 619 00:29:18,735 --> 00:29:21,490 ir išmetė pusę problema toli, pati idėja čia. 620 00:29:21,490 --> 00:29:23,680 Mes galime mesti šį pusę problemos toli. 621 00:29:23,680 --> 00:29:25,730 Ir tikriausiai tai, ką jums gali padaryti algoritmiškai, 622 00:29:25,730 --> 00:29:28,710 kai jūs žinote, kad 50 turi būti į dešinę, jei tai bet kur, 623 00:29:28,710 --> 00:29:31,390 tai pabandyti ten, viduryje likusių durų. 624 00:29:31,390 --> 00:29:33,450 Žinoma, 50 yra didesnis nei 42, o mes galime 625 00:29:33,450 --> 00:29:36,060 mesti šį likusį ketvirtį problemos toli, 626 00:29:36,060 --> 00:29:38,510 ir, galiausiai, nustatyti kažkas panašaus į 50. 627 00:29:38,510 --> 00:29:41,050 Bet kaip su telefonų knyga, šie skaičiai 628 00:29:41,050 --> 00:29:44,560 buvo suteikta mums jau Rūšiuoti užsakymas, kuris palieka mus 629 00:29:44,560 --> 00:29:47,450 su klausimu, kaip jums gauti dalykų į surūšiuotas tam? 630 00:29:47,450 --> 00:29:49,640 Ir, tiesą sakant, kokia kaina? 631 00:29:49,640 --> 00:29:51,390 Tai vienas dalykas, kad būtų įteikė telefonų knyga 632 00:29:51,390 --> 00:29:54,810 ir tada nustebinti savo draugus ieškant telefono numeris tikrai greitai, tiesa? 633 00:29:54,810 --> 00:29:58,520 Tearing 32 puslapių iš rasti asmuo iš 4 milijardų puslapių, 634 00:29:58,520 --> 00:30:00,470 sakėme vienas kraštutinis pavyzdys. 635 00:30:00,470 --> 00:30:03,320 Bet kiek laiko prireikė "Verizon" rūšiuoti, kad telefono knygą? 636 00:30:03,320 --> 00:30:06,170 Kiek laiko tai užtruks mus Jei norite surūšiuoti šių septynis numerius? 637 00:30:06,170 --> 00:30:10,110 Štai klausimas, kad mes Iki šiol visiškai ignoruojami. 638 00:30:10,110 --> 00:30:12,330 >> Taigi leiskite atsakyti į šį klausimą dabar. 639 00:30:12,330 --> 00:30:15,920 Ir mes visi iš filmų dabar bet mes turime keletą streso kamuolius. 640 00:30:15,920 --> 00:30:19,480 Jei, tarkim, aštuoni savanoriai ne tai kad sutikote su mumis čia? 641 00:30:19,480 --> 00:30:24,100 Vykime į priekį ir daryti, kaip apie iš jūsų keturių, trys iš jūsų čia? 642 00:30:24,100 --> 00:30:25,290 Gauk keletą naujų veidų. 643 00:30:25,290 --> 00:30:27,220 Ir iš jūsų keturių ten? 644 00:30:27,220 --> 00:30:30,760 Ir now-- tegul ne šališkumas here-- ir skaičius aštuonių per čia galo. 645 00:30:30,760 --> 00:30:32,060 Nagi iki. 646 00:30:32,060 --> 00:30:32,560 Viskas gerai. 647 00:30:32,560 --> 00:30:37,480 Taigi, ką mes turime čia kiekvienas iš jūsų yra skaičius. 648 00:30:37,480 --> 00:30:40,055 Jei norite eiti į priekį, priimti šį numerį. 649 00:30:40,055 --> 00:30:40,763 Koks tavo vardas? 650 00:30:40,763 --> 00:30:41,950 >> Artie: Artie. 651 00:30:41,950 --> 00:30:43,100 >> DAVID Malan: Artie, gerai. 652 00:30:43,100 --> 00:30:44,297 Jūs esate numeris 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 Davidas. 656 00:30:46,820 --> 00:30:47,530 Jūs esate numeris 2. 657 00:30:47,530 --> 00:30:49,100 Ir eiti į priekį, nes aš ranka Jūs popierių lapų, 658 00:30:49,100 --> 00:30:52,130 išsirikiuoti save priešais muzikos stovi ta pačia tvarka, kaip iki ten. 659 00:30:52,130 --> 00:30:52,660 >> Andy: Sveiki, Andy. 660 00:30:52,660 --> 00:30:53,970 >> DAVID Malan: Andy, tai malonu matyti jus. 661 00:30:53,970 --> 00:30:54,520 3 numeris. 662 00:30:54,520 --> 00:30:55,310 >> JACOB: "Jokūbas". 663 00:30:55,310 --> 00:30:56,760 >> DAVID Malan: Jokūbas, numeris 4. 664 00:30:56,760 --> 00:30:57,549 Sveiki atvykę į laivą. 665 00:30:57,549 --> 00:30:58,090 GRANT: Grantas. 666 00:30:58,090 --> 00:30:58,881 DAVID Malan: Grantas. 667 00:30:58,881 --> 00:31:00,348 5 numeris. 668 00:31:00,348 --> 00:31:01,200 >> Alanna: Alanna. 669 00:31:01,200 --> 00:31:02,766 >> DAVID Malan: Alanna, numeris 6. 670 00:31:02,766 --> 00:31:03,589 >> FRANCES: Frances. 671 00:31:03,589 --> 00:31:04,880 DAVID Malan: Frances, skaičius 7. 672 00:31:04,880 --> 00:31:05,200 Ir? 673 00:31:05,200 --> 00:31:05,830 >> RACHEL: Rachel. 674 00:31:05,830 --> 00:31:06,815 >> DAVID Malan: Rachelė, numeris 8. 675 00:31:06,815 --> 00:31:07,100 Viskas gerai. 676 00:31:07,100 --> 00:31:08,766 Eiti į priekį ir gauti sau tokia tvarka. 677 00:31:08,766 --> 00:31:11,440 Leiskite įdėti vieną likusį muzika stovėti vietoje. 678 00:31:11,440 --> 00:31:13,670 Jeigu jums reikia stendas? 679 00:31:13,670 --> 00:31:14,170 Gerai. 680 00:31:14,170 --> 00:31:18,710 Eiti į priekį ir tiesiog įdėti savo numerius kur auditorija gali juos matyti, 681 00:31:18,710 --> 00:31:20,340 muzika stovėti susiduria išorę. 682 00:31:20,340 --> 00:31:27,240 Ir tikiuosi, mūsų pirmasis normalumas patikrinti here-- 4, 2, 6. 683 00:31:27,240 --> 00:31:27,890 Oh-oh. 684 00:31:27,890 --> 00:31:29,070 Palaukit. 685 00:31:29,070 --> 00:31:31,140 Mes neturime 8. 686 00:31:31,140 --> 00:31:35,180 Man reikia iškeldinti jus iš pavyzdys kažkaip. 687 00:31:35,180 --> 00:31:35,680 Ne 688 00:31:35,680 --> 00:31:36,940 Ne, tai viskas OK. 689 00:31:36,940 --> 00:31:37,890 Pažiūrėkime. 690 00:31:37,890 --> 00:31:38,880 Mes galime tai padaryti. 691 00:31:38,880 --> 00:31:39,440 Budėjimo. 692 00:31:39,440 --> 00:31:43,970 693 00:31:43,970 --> 00:31:45,740 Čia mes eiti. 694 00:31:45,740 --> 00:31:46,800 Teisinga. 695 00:31:46,800 --> 00:31:47,360 Viskas gerai. 696 00:31:47,360 --> 00:31:50,260 Taigi, dabar mes turime 8, 1, 3 7, 5. 697 00:31:50,260 --> 00:31:50,760 Gerai. 698 00:31:50,760 --> 00:31:51,360 Puikus. 699 00:31:51,360 --> 00:31:54,400 >> Taigi po ranka klausimas yra, ne kokia kaina, ir per kokį metodą, 700 00:31:54,400 --> 00:31:58,580 mes galime iš tikrųjų rūšiuoti šiuos numerius čia kad galėtume rūšies darbą atgal, 701 00:31:58,580 --> 00:32:02,759 galiausiai, ir decide-- tai tikrai įspūdingas, tai tikrai veiksminga, 702 00:32:02,759 --> 00:32:04,550 kad galiu padalinti ir užkariauti telefono knygą? 703 00:32:04,550 --> 00:32:06,716 Ar ji tikrai veiksminga, kad Galiu padalinti ir užkariauti 704 00:32:06,716 --> 00:32:08,600 tie skaitmeniniai kūriniai popieriaus ant lentos, 705 00:32:08,600 --> 00:32:14,500 jei gal tai vyksta mums kainavo likimo laiko ar energijos arba centrinio procesoriaus ciklų 706 00:32:14,500 --> 00:32:17,340 faktiškai gauti mūsų duomenis į kai rūšiuotų tvarka? 707 00:32:17,340 --> 00:32:18,930 Taigi leiskite paklausti šį klausimą. 708 00:32:18,930 --> 00:32:22,077 >> Taigi, pirmiausia išjungti, šie skaičiai yra į gana daug atsitiktine tvarka, 709 00:32:22,077 --> 00:32:24,160 ir aš ruošiuosi pasiūlyti vienas algoritmas, ar procesas 710 00:32:24,160 --> 00:32:25,970 , pagal kurią mes galime rūšiuoti šie žmonės. 711 00:32:25,970 --> 00:32:28,100 Aš ruošiuosi kreiptis tai gana naiviai. 712 00:32:28,100 --> 00:32:30,730 Ir aš ruošiuosi pripažinti kad tai tipo daug už mane 713 00:32:30,730 --> 00:32:32,890 wrap savo mintis apie visų duomenų iš karto. 714 00:32:32,890 --> 00:32:33,640 Bet žinote ką? 715 00:32:33,640 --> 00:32:37,450 Aš ruošiuosi padaryti kai labai paprasti ribiniai pataisymai. 716 00:32:37,450 --> 00:32:41,152 4 ir 2 yra iš tam, jei tikslas yra pereiti nuo 1 d iki 8. 717 00:32:41,152 --> 00:32:41,860 Taigi jūs žinote, ką? 718 00:32:41,860 --> 00:32:43,776 Aš ruošiuosi jums vaikinai apsikeitimo, jei įjungsite 719 00:32:43,776 --> 00:32:46,380 fiziškai pozicijos ir jūsų popieriaus lapų. 720 00:32:46,380 --> 00:32:47,894 Dabar 4 ir 6, tai eilės tvarka. 721 00:32:47,894 --> 00:32:49,060 Aš ruošiuosi palikti tie būti. 722 00:32:49,060 --> 00:32:50,227 6 ir 8, jie yra tvarkingi. 723 00:32:50,227 --> 00:32:51,185 Ėjimas palikti jiems būti. 724 00:32:51,185 --> 00:32:52,170 8 ir1, iš tam. 725 00:32:52,170 --> 00:32:54,790 Jei du neprieštarausiu Swapping. 726 00:32:54,790 --> 00:32:57,300 Dabar 8 ir 3, jei jus vaikinai gali sukeisti. 727 00:32:57,300 --> 00:32:59,320 8 ir 7, jei jus vaikinai gali sukeisti. 728 00:32:59,320 --> 00:33:01,790 Ir 8 ir 5, jei jus vaikinai gali sukeisti. 729 00:33:01,790 --> 00:33:03,980 >> Dabar, aš padariau? 730 00:33:03,980 --> 00:33:05,200 Ne, žinoma, ne. 731 00:33:05,200 --> 00:33:07,880 Bet aš padariau situacija geriau, tiesa? 732 00:33:07,880 --> 00:33:09,430 Koks buvo tavo vardas, numeris 8? 733 00:33:09,430 --> 00:33:10,055 >> RACHEL: Rachel. 734 00:33:10,055 --> 00:33:12,850 DAVID Malan: Rachelė turi efektyviai burbuliukais iki gana toli, 735 00:33:12,850 --> 00:33:15,660 visą kelią iki pabaigos mano masyvas numerius čia. 736 00:33:15,660 --> 00:33:17,310 Ir taip, kad problema yra rūšies išspręsta. 737 00:33:17,310 --> 00:33:21,670 Dabar, be abejo, 2 dar turi perkelti šiek tiek, ir 4 ir 6 ir 1. 738 00:33:21,670 --> 00:33:24,420 Bet man atrodo, kad Dotarłeś šiek tiek arčiau į tirpalą. 739 00:33:24,420 --> 00:33:26,790 Taigi leiskite taikyti tas pats naivus euristinis dar kartą. 740 00:33:26,790 --> 00:33:27,690 2 ir 4, Gerai. 741 00:33:27,690 --> 00:33:28,810 4 ir 6, Gerai. 742 00:33:28,810 --> 00:33:29,930 6 ir 1, mm mm. 743 00:33:29,930 --> 00:33:32,230 Leiskite apsikeitimo. 744 00:33:32,230 --> 00:33:33,200 6 ir 3 mm mm. 745 00:33:33,200 --> 00:33:34,420 Leiskite apsikeitimo. 746 00:33:34,420 --> 00:33:35,580 6 ir 7 yra geras. 747 00:33:35,580 --> 00:33:36,590 7 ir 5, nope. 748 00:33:36,590 --> 00:33:37,790 Leiskite apsikeitimo. 749 00:33:37,790 --> 00:33:38,470 O dabar 7 ir 8. 750 00:33:38,470 --> 00:33:39,862 Ir koks tavo vardas dar kartą? 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 Taigi dabar Frances yra net geriau pozicija, nes dabar 7 ir 8 754 00:33:44,230 --> 00:33:46,440 teisingai burbuliukais iki viršaus. 755 00:33:46,440 --> 00:33:47,510 Taigi 2 ir 4 Gerai. 756 00:33:47,510 --> 00:33:48,720 4 ir 1, tegul apsikeitimo. 757 00:33:48,720 --> 00:33:50,410 4 ir 3, tegul apsikeitimo. 758 00:33:50,410 --> 00:33:51,550 4 ir 6, esate Gerai. 759 00:33:51,550 --> 00:33:53,340 6 ir 5, tegul apsikeitimo. 760 00:33:53,340 --> 00:33:54,590 Ir dabar tie vaikinai yra geri. 761 00:33:54,590 --> 00:33:55,780 Mes beveik ten. 762 00:33:55,780 --> 00:33:57,706 2 ir 1, neveikia, todėl apsikeitimo. 763 00:33:57,706 --> 00:33:59,080 O dabar leiskite man padaryti normalumas patikrinti. 764 00:33:59,080 --> 00:34:03,080 2 ir 3, 3 ir 4, 4 ir 5, 5 ir 6, 6 ir 7, 8. 765 00:34:03,080 --> 00:34:05,060 Gerai, kad mes baigsime. 766 00:34:05,060 --> 00:34:09,310 >> Bet kokia kaina aš rūšiuoti šiuos numerius čia? 767 00:34:09,310 --> 00:34:13,960 Na, kiek žingsnių aš potencialiai imtis, kai rūšiavimas šie žmonės? 768 00:34:13,960 --> 00:34:15,710 Na, mes grįžti į šį klausimą. 769 00:34:15,710 --> 00:34:18,030 Bet, tiesą sakant, jei turite tiek nuobodu, tai 770 00:34:18,030 --> 00:34:22,270 rūšies atskleisti tuo, kad tai buvo ne gal efektyviausias algoritmas. 771 00:34:22,270 --> 00:34:25,230 Ir iš tiesų, tiesą sakant, aš prakaitavimas visi daugiau vaikščioti pirmyn ir atgal. 772 00:34:25,230 --> 00:34:26,639 Tai nesijautė itin efektyvus. 773 00:34:26,639 --> 00:34:27,805 Taigi pabandykime ką nors kita. 774 00:34:27,805 --> 00:34:31,870 Jei vaikinai galėtų iš naujo patys šių aštuonių vertybių. 775 00:34:31,870 --> 00:34:32,969 Geras darbas. 776 00:34:32,969 --> 00:34:36,570 >> Paimkime pažvelgti skaitmeniniu, nes tik akimirka prieš mums pabandyti kažką kita, 777 00:34:36,570 --> 00:34:38,179 ką tik atsitiko. 778 00:34:38,179 --> 00:34:41,330 Iki čia, jūs ketinate pamatyti vizualizacija šių aštuonių žmonių 779 00:34:41,330 --> 00:34:44,719 , kai mėlyna ir raudona barai atstovauti numerius. 780 00:34:44,719 --> 00:34:46,670 Aukštesni baras, didesnis skaičius. 781 00:34:46,670 --> 00:34:48,510 Trumpesnis baras, mažesnis skaičius. 782 00:34:48,510 --> 00:34:51,560 Ir ką jūs ketinate pamatyti yra atsitiktine tvarka daugiau nei aštuoni iš jų. 783 00:34:51,560 --> 00:34:55,830 Jūs ketinate žiūrėti šiuos barai gauti surūšiuoti pagal tą patį algoritmą, 784 00:34:55,830 --> 00:34:59,890 arba nustatyti nurodymų, kurie mes paskambinsime šiol burbulas rūšiuoti. 785 00:34:59,890 --> 00:35:04,000 Taigi pastebėti, kas antras, arba tiek, du barai, yra apšviesti raudonai, 786 00:35:04,000 --> 00:35:05,590 yra palyginti kompiuteriu. 787 00:35:05,590 --> 00:35:08,630 Ir tada, jei didelis baras, mažai baras neveikia, 788 00:35:08,630 --> 00:35:11,220 jie yra pavertė mane. 789 00:35:11,220 --> 00:35:15,120 >> Dabar tai yra neįtikėtinai varginantis žiūrėti tai, žinoma, 790 00:35:15,120 --> 00:35:18,630 labai ilgai, bet pastebėsite, takeaway-- stambių barų persikelia į dešinę, 791 00:35:18,630 --> 00:35:20,460 mažai barai juda į kairę. 792 00:35:20,460 --> 00:35:23,380 Leiskite nutraukti šį procesą, ir pagreitinti tai padaryti 793 00:35:23,380 --> 00:35:27,330 bus daug greičiau, todėl mes galime gauti aukšto lygio jausmą, ką, 794 00:35:27,330 --> 00:35:29,970 Iš tiesų, burbulas tarsi daro. 795 00:35:29,970 --> 00:35:33,150 Iš tiesų, tai burbuliuoja iki dešinė pusė sąrašo 796 00:35:33,150 --> 00:35:35,260 arba masyvas, didesnių barai. 797 00:35:35,260 --> 00:35:40,020 Ir atvirkščiai, mažai barai burbuliuoja savo kelią žemyn į kairę, 798 00:35:40,020 --> 00:35:42,950 nors ir sparčiau kaip mes anksčiau padarė. 799 00:35:42,950 --> 00:35:45,850 Taigi, sunkiau pamatyti su žmonėmis, bet vizualiai tai tikrai ką 800 00:35:45,850 --> 00:35:46,540 vyksta. 801 00:35:46,540 --> 00:35:49,110 >> Bet pabandykime iš esmės Kitoks požiūris dabar. 802 00:35:49,110 --> 00:35:52,387 Pabandykime skiriasi algoritmas, pagal kurį mes turime jums 803 00:35:52,387 --> 00:35:59,640 vaikinai pradėti jų originalus pozicijos, kurios buvo šis įsakymas čia. 804 00:35:59,640 --> 00:36:00,827 Ir tegul eiti į priekį dabar. 805 00:36:00,827 --> 00:36:02,910 Ir aš ruošiuosi daryti kažką dar paprasčiau, tiesa? 806 00:36:02,910 --> 00:36:06,710 Žvelgiant atgal, keičiant poromis vėl ir vėl, beveik tiek protingas. 807 00:36:06,710 --> 00:36:10,460 Padarykim ką dar naiviai, kur, jei aš noriu sutvarkyti šie žmonės, 808 00:36:10,460 --> 00:36:12,560 leiskite man tiesiog nuolat ieško už mažiausio elemento. 809 00:36:12,560 --> 00:36:14,570 Taigi dabar, 4 yra Mažiausiai aš mačiau. 810 00:36:14,570 --> 00:36:15,695 Aš ruošiuosi prisiminti. 811 00:36:15,695 --> 00:36:17,750 Ne, 2 yra geriau, ir prisiminti, kad. 812 00:36:17,750 --> 00:36:20,730 1 yra dar mažesnė. 813 00:36:20,730 --> 00:36:21,970 3, 7, 5. 814 00:36:21,970 --> 00:36:22,470 Gerai. 815 00:36:22,470 --> 00:36:23,750 One-- koks tavo vardas dar kartą? 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 Taigi, Artie, eiti į priekį. 819 00:36:25,460 --> 00:36:27,043 Aš ruošiuosi traukti jus iš linijos. 820 00:36:27,043 --> 00:36:28,400 Jei galėtumėte grįžti čia. 821 00:36:28,400 --> 00:36:30,790 Ir man reikia, kad paliktume jį. 822 00:36:30,790 --> 00:36:32,040 Mes turime sprendimą tašką čia. 823 00:36:32,040 --> 00:36:36,000 Kaip mes galime padaryti kambarį už Artie čia pradžioje, kur skaičius 1 priklauso? 824 00:36:36,000 --> 00:36:36,770 >> PUBLIKA: Shift ". 825 00:36:36,770 --> 00:36:38,950 >> DAVID Malan: Gerai, mes galėtų perkelti visus. 826 00:36:38,950 --> 00:36:40,860 Bet siūlyti optimizavimas. 827 00:36:40,860 --> 00:36:43,410 Tai jaučiasi šiek tiek erzina man užduoti keturi žmonės 828 00:36:43,410 --> 00:36:44,620 pereiti visą kelią žemyn. 829 00:36:44,620 --> 00:36:45,520 Ką dar galėčiau padaryti? 830 00:36:45,520 --> 00:36:46,360 >> PUBLIKA: juos Switch. 831 00:36:46,360 --> 00:36:46,850 >> DAVID Malan: Perjungti juos. 832 00:36:46,850 --> 00:36:47,900 Ir koks tavo vardas dar kartą? 833 00:36:47,900 --> 00:36:48,441 >> JACOB: "Jokūbas". 834 00:36:48,441 --> 00:36:50,330 DAVID Malan: Jokūbas, judėti. 835 00:36:50,330 --> 00:36:54,440 Daug efektyviau tiesiog turėti Jokūbas apsikeitimo vietų su Artie, 836 00:36:54,440 --> 00:36:56,710 , palyginti su verčia visi keturi šių žmonių, 837 00:36:56,710 --> 00:36:58,734 labai ačiū, kad jų teisinga pozicija. 838 00:36:58,734 --> 00:37:01,150 Kas malonu apie Artie dabar jis savo teisingą padėtį. 839 00:37:01,150 --> 00:37:02,060 Leiskite tai padaryti dar kartą. 840 00:37:02,060 --> 00:37:03,730 2, tai mažiausias skaičius Mačiau. 841 00:37:03,730 --> 00:37:05,690 3, 7, 5. 842 00:37:05,690 --> 00:37:06,190 Gerai. 843 00:37:06,190 --> 00:37:07,467 2 yra tikrai mažiausios. 844 00:37:07,467 --> 00:37:08,550 Negalima daryti bet kokį darbą. 845 00:37:08,550 --> 00:37:09,320 Darom vėl. 846 00:37:09,320 --> 00:37:10,070 6. 847 00:37:10,070 --> 00:37:10,640 Mažiausias? 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 Leiskite man prisiminti 4. 853 00:37:13,420 --> 00:37:13,950 3. 854 00:37:13,950 --> 00:37:15,110 Leiskite man prisiminti 3. 855 00:37:15,110 --> 00:37:16,080 7, 5. 856 00:37:16,080 --> 00:37:18,490 Mažiausias skaičius aš matyti šį perdavimą yra 3. 857 00:37:18,490 --> 00:37:20,340 Jei norite ateiti iš. 858 00:37:20,340 --> 00:37:21,986 Kur mes einame, kad Jums? 859 00:37:21,986 --> 00:37:22,860 Ir koks tavo vardas? 860 00:37:22,860 --> 00:37:23,530 >> Alanna: Alanna. 861 00:37:23,530 --> 00:37:25,780 >> DAVID Malan: Alanna, mes teks iškeldinti jus. 862 00:37:25,780 --> 00:37:28,670 Bet tai yra efektyvesnis, tiesiog sukeisti du žmones, 863 00:37:28,670 --> 00:37:31,850 nei turėti kelis žmones iš tikrųjų išsisukti daugiau. 864 00:37:31,850 --> 00:37:32,850 Dabar galime tai padaryti dar kartą. 865 00:37:32,850 --> 00:37:34,980 Aš ruošiuosi pasirinkti 4, todėl ateiti iš. 866 00:37:34,980 --> 00:37:36,540 Ir kas vyksta judėti? 867 00:37:36,540 --> 00:37:37,750 Taškų 8, žinoma. 868 00:37:37,750 --> 00:37:40,260 Jeigu aš dabar rasti skaičių 5, nagi iš. 869 00:37:40,260 --> 00:37:42,104 Taškų 8 ketina gauti iškeldinti dar kartą. 870 00:37:42,104 --> 00:37:43,770 Aš dabar ketina rasti skaičių 6 vietoje. 871 00:37:43,770 --> 00:37:44,410 7 vietoje. 872 00:37:44,410 --> 00:37:45,080 8 vietoje. 873 00:37:45,080 --> 00:37:48,590 >> Ką mes tiesiog padarė dabar kažkas vadinamas atranka tarsi, 874 00:37:48,590 --> 00:37:52,560 ir jei mes vizualizuoti tai, tai ketina jaustis šiek tiek skiriasi. 875 00:37:52,560 --> 00:37:56,800 Vykime į priekį ir iš to meniu čia, tai visualization-- 876 00:37:56,800 --> 00:38:02,920 tegul tai pakeisti to-- Nagi, Firefox. 877 00:38:02,920 --> 00:38:07,610 Leiskite jį pakeisti atrankos rūšiuoti. 878 00:38:07,610 --> 00:38:11,830 Ir tegul jį pagreitinti, kaip ir anksčiau, ir pradėti vizualizuoti dabar. 879 00:38:11,830 --> 00:38:13,990 Ir tai algoritmas yra skiriasi feel it. 880 00:38:13,990 --> 00:38:16,480 Dėl kiekvienos iteracijos, tiesą sakant, tai dar labiau paprasta. 881 00:38:16,480 --> 00:38:18,385 Aš tiesiog pasirinkdami mažiausias elementas. 882 00:38:18,385 --> 00:38:21,510 Dabar, tiesą sakant, aš turiu šiek tiek pasisekė, kad kartą, kad ji rūšiuojami super greitai. 883 00:38:21,510 --> 00:38:22,660 Elementai buvo atsitiktinis. 884 00:38:22,660 --> 00:38:25,520 Tai nėra, kaip mes galų gale matyti, iš esmės greičiau. 885 00:38:25,520 --> 00:38:29,400 Bet pažiūrėkime, trečiasis ir paskutinis požiūris čia, kaip į tai, kas vyksta. 886 00:38:29,400 --> 00:38:36,230 Taigi eikime į priekį ir iš naujo jums, vaikinai vienas galutinis laikas būtų tokia tvarka čia. 887 00:38:36,230 --> 00:38:38,450 >> Ir dabar, aš ruošiuosi būti šiek tiek daugiau protingas, 888 00:38:38,450 --> 00:38:40,220 tiesiog baigia savo algoritmus. 889 00:38:40,220 --> 00:38:41,230 Aš ruošiuosi tai padaryti. 890 00:38:41,230 --> 00:38:43,140 Aš ruošiuosi ne eiti pirmyn ir atgal tiek daug. 891 00:38:43,140 --> 00:38:44,900 Atvirai kalbant, aš pavargau visa tai važiuojantiems. 892 00:38:44,900 --> 00:38:47,691 Aš tik ketina imtis, ką aš duotas sąrašo pradžioje 893 00:38:47,691 --> 00:38:49,460 ir aš ruošiuosi rūšiuoti kad tada ir ten. 894 00:38:49,460 --> 00:38:50,140 Taigi čia mes esame. 895 00:38:50,140 --> 00:38:51,030 Taškų 4. 896 00:38:51,030 --> 00:38:53,680 Aš ruošiuosi įdėti skaičių 4 į rūšiuojami sąraše. 897 00:38:53,680 --> 00:38:54,180 Atlikta. 898 00:38:54,180 --> 00:38:58,300 Aš teigia ir dabar, o tik, kad tai daugiau aišku, tai mano sąrašo dalis rūšiuojamos. 899 00:38:58,300 --> 00:39:02,610 Tai koks kvailas reikalavimo, tačiau iš tiesų 4 yra rūšiuojami nuo dydžio vieną sąrašą. 900 00:39:02,610 --> 00:39:04,210 Dabar aš ruošiuosi imtis numeris 2. 901 00:39:04,210 --> 00:39:07,670 Taškų 2 Aš dabar ketina įdėti į tinkamą vietą. 902 00:39:07,670 --> 00:39:08,680 Taigi, kur veikia 2 priklauso? 903 00:39:08,680 --> 00:39:09,824 Akivaizdu, kad čia. 904 00:39:09,824 --> 00:39:11,490 Taigi pirmyn ir judėti pirmyn, jei gali. 905 00:39:11,490 --> 00:39:14,406 Ir kodėl gi ne jums, vaikinai tiesiog jūsų muzika išsiskiria su jumis šį kartą. 906 00:39:14,406 --> 00:39:17,020 Ir tegul prievarta įrašyti jums į Sąrašo pradžioje. 907 00:39:17,020 --> 00:39:17,936 Taigi šiek tiek daugiau darbo. 908 00:39:17,936 --> 00:39:20,890 Turėjau pereiti Jokūbą aplink, ir koks tavo vardas? 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 bent jau aš ne eiti į priekį ir atgal. 912 00:39:24,350 --> 00:39:25,739 Aš tik atsižvelgiant dalykų, kaip aš einu. 913 00:39:25,739 --> 00:39:27,530 Aš tiesiog įdėti juos į tinkamą vietą. 914 00:39:27,530 --> 00:39:29,220 6, iš tikrųjų tai yra gana lengva. 915 00:39:29,220 --> 00:39:31,510 Leiskite įdėti tave ten, jei tiesiog norėjau šiek tiek peržengti. 916 00:39:31,510 --> 00:39:32,870 Taškų 8, taip pat gana lengva. 917 00:39:32,870 --> 00:39:33,741 Teisė ten. 918 00:39:33,741 --> 00:39:34,240 Velnias. 919 00:39:34,240 --> 00:39:37,590 Skaičius 1, mes galime ne tik apsikeitimo su Amin čia 920 00:39:37,590 --> 00:39:39,340 nes tai vyksta bałagan užsakymo. 921 00:39:39,340 --> 00:39:40,660 Taigi, mes turime būti šiek tiek daugiau protingas. 922 00:39:40,660 --> 00:39:42,770 Taigi, Artie, jei galėtų atsarginę kopiją akimirką. 923 00:39:42,770 --> 00:39:46,550 Vykime į priekį ir pereiti dabar skirtingai nuo mūsų ankstesnių algoritmų, 924 00:39:46,550 --> 00:39:50,910 padaryti kambarį Artie čia pradžioje. 925 00:39:50,910 --> 00:39:54,690 Taigi tuo dienos pabaigoje, aš natūra daryti tai, ką aš norėjau, kad būtų išvengta anksčiau. 926 00:39:54,690 --> 00:39:57,770 Ir taip mano algoritmas yra tarsi iš atstatomi, intelektualiai, 927 00:39:57,770 --> 00:39:59,070 iš to, ką jis iš pradžių buvo. 928 00:39:59,070 --> 00:40:01,240 Aš tiesiog daro perjungti kitu klausimu. 929 00:40:01,240 --> 00:40:02,291 Dabar aš ne 3. 930 00:40:02,291 --> 00:40:02,790 O damn. 931 00:40:02,790 --> 00:40:04,039 Turime vėl padaryti daugiau darbo. 932 00:40:04,039 --> 00:40:05,060 Taigi leiskite stumti jums. 933 00:40:05,060 --> 00:40:09,360 Pereikime 8, 6, 4-- oh oh-- ir 3 ketina eiti tiesiai ten. 934 00:40:09,360 --> 00:40:11,490 Taigi bent šiek tiek sutaupyti šį laiką. 935 00:40:11,490 --> 00:40:13,100 7, o ne per daug darbo turi būti padaryta. 936 00:40:13,100 --> 00:40:15,370 Taigi, jei norite, kad pop atgal, tegul įdėti ". 937 00:40:15,370 --> 00:40:17,440 Ir galiausiai, 5, jei jums norite pop atgal, mes 938 00:40:17,440 --> 00:40:22,610 reikia perkelti jus, jus, tu, kol penkių yra vietoje. 939 00:40:22,610 --> 00:40:25,670 >> Taigi dabar tai pamatyti adresu aukšto lygio grafiškai, 940 00:40:25,670 --> 00:40:31,080 darykime šį algoritmą vizualizacija vienas papildomas laikas. 941 00:40:31,080 --> 00:40:33,580 Taigi, tai mes vadiname įterpimo rūšiuoti. 942 00:40:33,580 --> 00:40:37,700 Mes paleisti jį kaip greitai, ir pradėti jį čia. 943 00:40:37,700 --> 00:40:39,580 Ir tai taip pat turi skirtingą įspūdį. 944 00:40:39,580 --> 00:40:42,180 Tai tarsi vis geriau ir geriau, bet tai niekada tobula 945 00:40:42,180 --> 00:40:44,630 kol aš eiti ir sklandžiai tose spragas. 946 00:40:44,630 --> 00:40:47,860 Nes, vėlgi, aš tik atsižvelgiant, kas Aš skiriant iš kairės į dešinę. 947 00:40:47,860 --> 00:40:50,350 Taigi, aš negavau taip pasisekė kad viskas buvo tobula. 948 00:40:50,350 --> 00:40:54,190 Štai kodėl mes turėjome tai mažai mispositions kad ilgalaikis laikui bėgant. 949 00:40:54,190 --> 00:40:58,890 >> Taigi visų šių algoritmų atrodo paleisti šiek tiek skirtingais tempais. 950 00:40:58,890 --> 00:41:02,030 Tiesą sakant, kuri jums pasakyti geriausias ar sparčiausiai iki šiol? 951 00:41:02,030 --> 00:41:03,450 Burbulas rūšiuoti, pirmas? 952 00:41:03,450 --> 00:41:05,000 Atrankos tarsi, antrasis? 953 00:41:05,000 --> 00:41:08,450 Insertion sort, trečia? 954 00:41:08,450 --> 00:41:10,710 Girdžiu kai atrankos rūšių. 955 00:41:10,710 --> 00:41:13,280 Kitos mintys? 956 00:41:13,280 --> 00:41:16,880 >> Taigi paaiškėja, kad visų šių algoritmų 957 00:41:16,880 --> 00:41:22,400 yra iš esmės toks pat efektyvus, kaip kiekvienas other-- arba, atvirkščiai, kaip 958 00:41:22,400 --> 00:41:25,980 neefektyvus, nes viena nuo kitos, nes mes galime padaryti iš esmės 959 00:41:25,980 --> 00:41:28,120 geriau nei visi trys Šių algoritmų. 960 00:41:28,120 --> 00:41:29,990 Ir tai iš balto melo tiek, per daug. 961 00:41:29,990 --> 00:41:32,580 kai aš sakau, kaip efektyvus arba kaip neefektyvus, 962 00:41:32,580 --> 00:41:35,040 tai bent super didelės vertės n. 963 00:41:35,040 --> 00:41:38,450 Kai mes turime tik aštuoni žmonės čia o gal 50 ar panašiai barai ekrane, 964 00:41:38,450 --> 00:41:41,645 jūs visiškai pastebėsite skirtumus tarp šių trijų algoritmų. 965 00:41:41,645 --> 00:41:44,020 Bet kaip n, žmonių skaičius, arba numerių skaičius, 966 00:41:44,020 --> 00:41:46,350 arba žmonių skaičius telefoną knyga, arba tinklalapių skaičius 967 00:41:46,350 --> 00:41:48,230 "Google" duomenų bazėje gauna didesni ir didesni, 968 00:41:48,230 --> 00:41:51,650 matysime, kad visi šie trys algoritmai yra tikrai gana prasta. 969 00:41:51,650 --> 00:41:54,060 Ir mes galime padaryti iš esmės geriau nei tai. 970 00:41:54,060 --> 00:41:56,830 >> Leiskite pažvelgti, pagaliau, ką šie algoritmai might 971 00:41:56,830 --> 00:41:59,520 skamba kaip iš kontekstas keletą kitų 972 00:41:59,520 --> 00:42:03,550 taip pat taikant šį vizualizacija čia 973 00:42:03,550 --> 00:42:06,860 kad bus pristatyti mums algoritmų skaičius. 974 00:42:06,860 --> 00:42:10,330 Vykime į priekį ir pasveikinti mūsų dalyviai čia, visi iš jų 975 00:42:10,330 --> 00:42:11,690 rūšiuoti save labai gerai. 976 00:42:11,690 --> 00:42:15,124 Jei norite imtis atsisveikinimo dovaną. 977 00:42:15,124 --> 00:42:16,540 Jūs galite laikyti savo numerius, taip pat. 978 00:42:16,540 --> 00:42:19,460 979 00:42:19,460 --> 00:42:22,520 Ir tai, ką jūs pamatysite, ar veikiau išgirsti, dabar, 980 00:42:22,520 --> 00:42:25,710 yra tas, kad mes įdėti garsai Kiekvieną iš šių barų 981 00:42:25,710 --> 00:42:28,660 ir susieti ją su programine įranga, skiriasi dažnis garso, 982 00:42:28,660 --> 00:42:33,970 galite wrap savo proto daugiau audioly aplink tai, ką kiekvienas iš šių dalykų 983 00:42:33,970 --> 00:42:34,470 atrodyti. 984 00:42:34,470 --> 00:42:39,325 Iš kurių pirmasis yra įterpimo rūšiuoti 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 >> Tai burbulas rūšiuoti. 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 >> Atrankos rikiuoti. 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 >> Kažkas pavadino sujungti rūšiuoti. 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 rikiuoti. 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 >> Štai jį CS50. 1000 00:44:09,430 --> 00:44:13,360 Pamatysime jus trečiadienį. 1001 00:44:13,360 --> 00:44:16,671 >> Narrator: O dabar, "Deep Mintys ", pagal Daven Farnham. 1002 00:44:16,671 --> 00:44:19,910 1003 00:44:19,910 --> 00:44:21,590 Kodėl tai už linijos? 1004 00:44:21,590 --> 00:44:23,200 Kodėl gi ne padaryti jį geriau? 1005 00:44:23,200 --> 00:44:25,970 Norėčiau padaryti penkis kilpą. 1006 00:44:25,970 --> 00:44:28,720 >> [Juokas]