1 00:00:00,000 --> 00:00:10,982 2 00:00:10,982 --> 00:00:11,940 DAVID MALAN: Okei. 3 00:00:11,940 --> 00:00:16,470 Tämä on siis CS50, ja tämä on nyt alussa viikolla kolme. 4 00:00:16,470 --> 00:00:19,960 >> Joten tähän asti olemme kirjoittanut ohjelmia C 5 00:00:19,960 --> 00:00:23,210 että näyttää hieman jotain tällaista täällä. 6 00:00:23,210 --> 00:00:25,470 Joten meillä pari terävä sisältää huipulla. 7 00:00:25,470 --> 00:00:28,490 Meillä int, tärkein, mitätön, ja Sitten jotain tekemistä keskellä, 8 00:00:28,490 --> 00:00:30,590 jotkut hieman koodin sisällä Tämän toiminnon. 9 00:00:30,590 --> 00:00:34,170 Mutta avain on ollut se, että olemme sanoneet mitätön täällä. 10 00:00:34,170 --> 00:00:39,320 Niin mitätön, kaiken tämän ajan, täsmennetään että tämä ohjelma, kun ajaa, 11 00:00:39,320 --> 00:00:41,300 voidaan suorittaa vain kautta nimensä. 12 00:00:41,300 --> 00:00:46,330 Et voi kirjoittaa muita sanoja tai numerot jälkeen ohjelman nimi, kun 13 00:00:46,330 --> 00:00:46,830 käynnissä se. 14 00:00:46,830 --> 00:00:51,200 Niinpä esimerkiksi, jos ohjelma olisi kootaan tiedosto nimeltä Hei, 15 00:00:51,200 --> 00:00:53,480 voisit tehdä ./hello, mutta se on se. 16 00:00:53,480 --> 00:00:56,750 >> Ainoa tapa, jolla voisit hyödynnetään tässä ohjelmassa 17 00:00:56,750 --> 00:00:57,960 on soittamalla toiminto. 18 00:00:57,960 --> 00:00:59,790 Esimerkiksi mitä toimintoa olemme käyttäneet tähän mennessä 19 00:00:59,790 --> 00:01:00,950 saada käyttäjän syötettä? 20 00:01:00,950 --> 00:01:02,117 >> Yleisö: Get merkkijono. 21 00:01:02,117 --> 00:01:04,700 DAVID MALAN: Saada merkkijono, tai saada int, tai olet nähnyt muita, 22 00:01:04,700 --> 00:01:07,630 vaikka et ole käyttänyt niitä vielä, kuten saada pitkä, pitkä ja vastaavat. 23 00:01:07,630 --> 00:01:09,380 Mutta oletetaan, että me todella haluavat aloittaa 24 00:01:09,380 --> 00:01:12,760 kirjallisesti ohjelmia, jotka ovat hieman monipuolinen, ja suoraan sanoen hieman 25 00:01:12,760 --> 00:01:15,090 kuten komennot, jotka olet ollut saada, toivottavasti 26 00:01:15,090 --> 00:01:16,550 hieman tottunut. 27 00:01:16,550 --> 00:01:18,560 Kuten cd tilaa Dropbox. 28 00:01:18,560 --> 00:01:20,800 Tämä tietenkin, muutokset hakemistoon, olettaen 29 00:01:20,800 --> 00:01:23,590 olet John Harvardin kotona hakemistoon, Dropbox-kansioon. 30 00:01:23,590 --> 00:01:27,380 Samalla tätä komentoa luo uuden hakemiston nimeltä pset2, 31 00:01:27,380 --> 00:01:30,290 Kuten ehkä jo tai tulee pian ongelma asettaa kaksi. 32 00:01:30,290 --> 00:01:33,970 Tee Hei, tietenkin, on komento joka rakentaa ohjelma nimeltä hei 33 00:01:33,970 --> 00:01:35,770 tiedostosta nimeltä Hello piste c. 34 00:01:35,770 --> 00:01:39,140 Ja kussakin näistä tapauksissa, nyt meillä on ollut 35 00:01:39,140 --> 00:01:43,620 tarjoavat väitteen ns komentoriviltä, ​​vilkkuu nopea, 36 00:01:43,620 --> 00:01:48,540 jotta make tietää mitä rakentaa, ja niin että mkdir tietää mitä kansioita ja luoda, 37 00:01:48,540 --> 00:01:51,110 ja niin, että cd tietää jos haluat mennä. 38 00:01:51,110 --> 00:01:54,720 Mutta tähän asti, pidämme sanomalla että tärkein, oletusselain toiminto, 39 00:01:54,720 --> 00:01:58,500 on mitätön ilme sisällä näitä sulkuja, 40 00:01:58,500 --> 00:02:01,250 mikä tarkoittaa, että se ei voi mitään perusteluja. 41 00:02:01,250 --> 00:02:03,240 >> Joten alkaa tänään, mitä aiomme tehdä 42 00:02:03,240 --> 00:02:06,270 on, aiomme aloittaa tukevat näitä asioita vielä. 43 00:02:06,270 --> 00:02:08,990 Itse asiassa tässä tapauksessa, johon ei yleensä käsin kirjoittaa, 44 00:02:08,990 --> 00:02:11,130 Tee on tehnyt tätä Meille ei ole 45 00:02:11,130 --> 00:02:15,840 yksi mutta yksi, kaksi, kolme ylimääräistä jouset jälkeen ohjelman nimeksi 46 00:02:15,840 --> 00:02:16,850 kalahtaa. 47 00:02:16,850 --> 00:02:18,240 Miten siis saavuttaa tämän? 48 00:02:18,240 --> 00:02:20,260 >> No, alkaa tänään, tapauksissa, joissa haluamme 49 00:02:20,260 --> 00:02:22,855 tarjota aineksia kautta niin kutsuttu komentorivi, 50 00:02:22,855 --> 00:02:24,980 aiomme aloittaa lisäämällä Tässä mitä on yellow-- 51 00:02:24,980 --> 00:02:30,520 korvaa mitättömiksi int argc pilkulla string argv alkusulkumerkki alkusulkumerkki. 52 00:02:30,520 --> 00:02:32,520 Nyt tämä on mielenkiintoinen pari syistä. 53 00:02:32,520 --> 00:02:35,690 Yksi, se tulee olkaamme kirjoittaa ohjelmia, jotka ovat hieman dynaamisempaa. 54 00:02:35,690 --> 00:02:37,570 Mutta, enemmän vetoavasti, se tulee avata 55 00:02:37,570 --> 00:02:40,340 nyt keskustelu siitä, mitä taulukot voi todella 56 00:02:40,340 --> 00:02:43,300 käyttää, mitä merkkijonon todella on alla huppu, 57 00:02:43,300 --> 00:02:47,320 vasta ensi viikolla, kun alamme sukellus ja jopa syvemmälle, kuinka kone on 58 00:02:47,320 --> 00:02:48,590 että kaikki tätä kamaa työtä. 59 00:02:48,590 --> 00:02:51,920 Mutta nyt, nyt piirtää, ehkä kuva. 60 00:02:51,920 --> 00:02:54,950 >> Kun kirjoitat ohjelmaa tärkeimpien julisti 61 00:02:54,950 --> 00:02:58,810 tällä tavalla, siten, että pääasiallinen ottaa kaksi argumenttia, int 62 00:02:58,810 --> 00:03:03,233 ja-- mitä tietotyyppi on toinen argumentti? 63 00:03:03,233 --> 00:03:04,529 >> Yleisö: Array. 64 00:03:04,529 --> 00:03:05,320 DAVID MALAN: Array. 65 00:03:05,320 --> 00:03:09,170 Joten se näyttää ensi silmäyksellä kuin se on merkkijono, mutta huomaa hakasulkeissa. 66 00:03:09,170 --> 00:03:12,760 Muistaa viime kerralla esittelimme käsitettä jono. 67 00:03:12,760 --> 00:03:16,210 Ja taulukot käyttää hakasulkeissa pari yhteyksissä. 68 00:03:16,210 --> 00:03:19,160 Voit käyttää neliö Suluissa mennä array 69 00:03:19,160 --> 00:03:22,710 ja saada erityinen tekijä, kuten kannatin 0 tai kannatin 1 tai kiinnike 2. 70 00:03:22,710 --> 00:03:25,500 Mutta näimme, jos lyhyesti, viime viikolla, että tekin 71 00:03:25,500 --> 00:03:28,790 käyttää näitä hakasuluissa julistaa koko joukko, 72 00:03:28,790 --> 00:03:31,790 Jos tiedät etukäteen, kuinka monta ints tai kuinka monta jouset tai mitä 73 00:03:31,790 --> 00:03:32,630 todella haluavat. 74 00:03:32,630 --> 00:03:34,790 Joten se kääntyy siellä n kolmasosaa yhteydessä täällä 75 00:03:34,790 --> 00:03:37,890 että ei ole numero sisällä neliön suluissa. 76 00:03:37,890 --> 00:03:41,920 Kun määrittelet, koska minulla on täällä, nimeä jotain argv, 77 00:03:41,920 --> 00:03:44,550 joka on vain hieno tapa sanoen väite vektori, joka 78 00:03:44,550 --> 00:03:47,750 on toinen hieno tapa sanoen joukko väitteitä, 79 00:03:47,750 --> 00:03:50,870 alkusulkumerkki alkusulkumerkki vain tarkoittaa sitä, että et välttämättä 80 00:03:50,870 --> 00:03:52,960 tietää etukäteen, kuinka suuri matriisi tulee olemaan, 81 00:03:52,960 --> 00:03:55,070 mutta tiedät, että se tulee olemaan jono. 82 00:03:55,070 --> 00:03:57,320 Joten jos et tiedä numero älä laita sitä sinne, 83 00:03:57,320 --> 00:04:01,160 varten alkusulkumerkki alkusulkumerkki tarkoittaa, että argv ei ole merkkijono, 84 00:04:01,160 --> 00:04:03,124 mutta Merkkijonotaulukko. 85 00:04:03,124 --> 00:04:05,040 Niin syntaktisesti, jos muistelen viime viikolla, 86 00:04:05,040 --> 00:04:09,460 se on hyvin samankaltainen kuin sanomalla jotain int ikäisille alkusulkumerkki, 87 00:04:09,460 --> 00:04:10,984 ja sitten jotain sen jälkeen. 88 00:04:10,984 --> 00:04:12,150 Mitä tämä näyttää? 89 00:04:12,150 --> 00:04:13,399 Katsotaanpa itse piirtää kuvan. 90 00:04:13,399 --> 00:04:18,756 Joten kun ajaa ohjelman Main ottaa kaksi argumenttia määritelty sisällä 91 00:04:18,756 --> 00:04:21,339 Näiden sulkuja, voit olennaisesti vähintään kaksi paloina 92 00:04:21,339 --> 00:04:23,560 muistia luovutetaan sinulle alla huppu. 93 00:04:23,560 --> 00:04:26,550 Yksi, koska Tulen tasapeliä kuin tämän suorakulmion, aiotaan kutsutaan argc. 94 00:04:26,550 --> 00:04:30,645 Ja yhtä nopea kertaus, mikä on tietojen tyyppi argc? 95 00:04:30,645 --> 00:04:31,270 Joten se on int. 96 00:04:31,270 --> 00:04:33,480 Niin numero tulee mennä argc-- kierrosta 97 00:04:33,480 --> 00:04:35,660 että sanoista argumentti count. 98 00:04:35,660 --> 00:04:38,887 Samalla olen laatinut argv kuin array. 99 00:04:38,887 --> 00:04:40,970 Ja en todellakaan tiedä kuinka kauan se tulee olemaan, 100 00:04:40,970 --> 00:04:42,470 niin nykypäivän tarkoituksia dot dot dot. 101 00:04:42,470 --> 00:04:43,636 Se saattaa saada joidenkin pituudesta. 102 00:04:43,636 --> 00:04:45,640 Mutta olen tässä kuvassa vähintään neljä suorakulmioita. 103 00:04:45,640 --> 00:04:50,970 Joten argv kimpale muisti, joka tallentaa string merkkijono dot dot dot, 104 00:04:50,970 --> 00:04:53,950 ja argc on vain yksi murikka muistia kokonaisluku. 105 00:04:53,950 --> 00:04:55,710 >> Joten nyt, olkaamme hieman tarkempi. 106 00:04:55,710 --> 00:04:59,200 Jos, kun minulla on jouset Tässä array, nimeltään 107 00:04:59,200 --> 00:05:03,290 argv, haluan saada niitä yksilöllisesti, aivan kuten viime viikolla, 108 00:05:03,290 --> 00:05:05,670 aiomme käyttää merkintätapaa kuten argv kiinnike 0 109 00:05:05,670 --> 00:05:07,650 saada ensimmäinen asia array. 110 00:05:07,650 --> 00:05:10,440 Argv kiinnike 1 päästä Toinen asia, ja niin edelleen. 111 00:05:10,440 --> 00:05:14,597 Tärkeintä tässä on, että olemme edelleen 0 indexed-- olemme yhä laskien 0. 112 00:05:14,597 --> 00:05:16,430 Joten nyt Katsotaanpa todella laittaa jotain tässä. 113 00:05:16,430 --> 00:05:21,670 Jos olisin koota ohjelma nimeltä hello tiedosto nimeltä Hei piste c, 114 00:05:21,670 --> 00:05:24,340 ja sitten juoksen, että ohjelma DOT slash hei, 115 00:05:24,340 --> 00:05:28,380 mitä minun tietokone, minun laptop, näyttää alla huppu 116 00:05:28,380 --> 00:05:31,300 hetkellä juoksen piste slash hei ja paina Enter? 117 00:05:31,300 --> 00:05:33,500 No, tämä on ehkä mitä voisimme kuvata 118 00:05:33,500 --> 00:05:37,010 kuten sisällön tietokoneen muisti, tai RAM-- Random Access Memory. 119 00:05:37,010 --> 00:05:40,330 Toisin sanoen, tietokone, jotenkin sinulle maagisesti, 120 00:05:40,330 --> 00:05:45,360 tuo numero 1 argc, AKA argcount, ja se asettaa kirjaimellisesti merkkijonon 121 00:05:45,360 --> 00:05:48,200 ./hello in argv kiinnike 0. 122 00:05:48,200 --> 00:05:51,750 Minulla ei ole aavistustakaan, rehellisesti, mitä in argv kiinnike 1 tai 2 tai 3, 123 00:05:51,750 --> 00:05:55,550 koska jos käyttäjä ei ole kirjoittanut mitään lisäksi ./hello, 124 00:05:55,550 --> 00:05:58,550 aiomme olettaa, että nämä todennäköisimmin roskaa arvot, 125 00:05:58,550 --> 00:05:59,700 niin sanoakseni. 126 00:05:59,700 --> 00:06:02,650 Nämä paloina muistia olemassa, mutta se ei ole meidän 127 00:06:02,650 --> 00:06:05,710 tarkastella niitä, koska argcount on vain yksi. 128 00:06:05,710 --> 00:06:07,870 >> Nyt puolestaan, jos minä kirjoittaa suorittaa toisen ohjelman, 129 00:06:07,870 --> 00:06:12,250 CD-soitin, joka on asianmukaisesti komennon, Kirjoita vilkkuu prompt-- cd tilaa 130 00:06:12,250 --> 00:06:17,200 Dropbox-- kun ajaa että, tehokkaasti, Kun CD-ohjelma käynnistetään, argc, 131 00:06:17,200 --> 00:06:22,270 sisällä minun tietokoneen muistiin, on eniten briefest toinen numero 2. 132 00:06:22,270 --> 00:06:25,936 Ja sitten argv kiinnike o on CD, argv kiinnike 1 on Dropbox, 133 00:06:25,936 --> 00:06:28,560 ja sitten tietysti komento valmis, joten kaikki tämä muisti 134 00:06:28,560 --> 00:06:30,420 olennaisesti menee pois ja käytetään jotain muuta. 135 00:06:30,420 --> 00:06:32,270 Ja siksi sanon vain sekunnin murto. 136 00:06:32,270 --> 00:06:35,720 >> Samaan aikaan, jos teemme mkdir pset2, kuva näyttää lähes sama, 137 00:06:35,720 --> 00:06:37,900 mutta eri jouset sisällä argv. 138 00:06:37,900 --> 00:06:42,570 Jos teen kalahtaa viiva hei Hei piste C, sama idea. 139 00:06:42,570 --> 00:06:47,060 Enemmän tavaraa täytetään varten argv, ja argc, on tietenkin 4. 140 00:06:47,060 --> 00:06:49,150 Eli toisin sanoen, vaikka tämä joukko 141 00:06:49,150 --> 00:06:52,950 ehkä dot dot dot, joidenkin vaihtelevan pituuden, niin sanoakseni, 142 00:06:52,950 --> 00:06:56,720 tiedät aina, missä lopussa se on, koska argc tulee kertoa 143 00:06:56,720 --> 00:07:00,120 missä vaiheessa sinun pitää lopettaa katsot elementtejä argv. 144 00:07:00,120 --> 00:07:03,660 Voit vain katsoa neljä yhteensä tässä tapauksessa. 145 00:07:03,660 --> 00:07:06,600 >> Joten nyt katsomaan, ehkä, yksinkertainen ohjelma. 146 00:07:06,600 --> 00:07:09,070 Joka vain sanoo hei joku kuten Zamyla. 147 00:07:09,070 --> 00:07:12,620 Joten väitän aion kirjoittaa ohjelman vain hetken, jonka kautta voisin tehdä 148 00:07:12,620 --> 00:07:16,670 ./hello tilaa Zamyla, ja sitten haluan Oma ohjelma tulostaa jotain 149 00:07:16,670 --> 00:07:18,520 Super-yksinkertainen kuten "Hei, Zamyla." 150 00:07:18,520 --> 00:07:20,100 Nyt aikaisemmin olemme käyttäneet getstring. 151 00:07:20,100 --> 00:07:22,850 Niin menneisyydessä, vaikka olet uusi ohjelma, 152 00:07:22,850 --> 00:07:27,180 kertoimet ovat voit lietsoa ohjelma, joka käyttää getstring 153 00:07:27,180 --> 00:07:29,390 ja käyttää sitten Printf moikkaamaan Zamyla. 154 00:07:29,390 --> 00:07:31,290 Mutta ei käytä getstring tällä kertaa. 155 00:07:31,290 --> 00:07:37,510 Saanen sen sijaan mennä Appliant ja älä vakiovarusteista I O dot tuntia. 156 00:07:37,510 --> 00:07:41,160 Saanen myös CS50 piste tuntia. 157 00:07:41,160 --> 00:07:44,730 Nyt int main, ja nyt olen aio tehdä mitätön tänään. 158 00:07:44,730 --> 00:07:51,200 Sen sijaan aion tehdä int argc string argv alkusulkumerkki alkusulkumerkki, 159 00:07:51,200 --> 00:07:52,640 ei määriteltiin joukko. 160 00:07:52,640 --> 00:07:54,644 Ja nyt täällä on minun niin kutsuttu tekemään. 161 00:07:54,644 --> 00:07:57,560 Mitä aion tehdä nyt, minä olen aikoo tehdä hieman uskonharppaus 162 00:07:57,560 --> 00:08:00,560 Aion olettaa, että käyttäjän aio käyttää tätä ohjelmaa oikein, 163 00:08:00,560 --> 00:08:04,980 ja olen vain menossa do printf Hei,% sn. 164 00:08:04,980 --> 00:08:06,630 Joten mitään uutta siellä. 165 00:08:06,630 --> 00:08:11,470 Mutta haluan nyt laittaa mitä sana käyttäjätyypit jälkeen ohjelman nimi. 166 00:08:11,470 --> 00:08:16,970 Joten jos en ./hello tilaa Zamyla, minä haluavat jotenkin ohjelmallisesti 167 00:08:16,970 --> 00:08:20,870 Lainaan lainaus "Zamyla." niin minä voi mennä minun argumentti vektori, 168 00:08:20,870 --> 00:08:25,980 minun Merkkijonotaulukko, ja jos komento, jälleen, oli ./hello tilaa Zamyla, 169 00:08:25,980 --> 00:08:29,340 mitä numero haluanko laittaa argv täällä? 170 00:08:29,340 --> 00:08:29,840 Yleisö: 1. 171 00:08:29,840 --> 00:08:32,355 DAVID MALAN: 1, koska kiinnike 0 osoittautuu 172 00:08:32,355 --> 00:08:34,230 tulee olemaan Ohjelman nimi, kuten näimme. 173 00:08:34,230 --> 00:08:37,789 Joten kiinnike 1 on ensimmäinen sana että minä, käyttäjä, on kirjoittanut. 174 00:08:37,789 --> 00:08:39,559 Aion mennä eteenpäin ja tallentaa. 175 00:08:39,559 --> 00:08:42,830 Aion mennä minun kansioon missä Olen asettanut tämän tiedoston. 176 00:08:42,830 --> 00:08:44,920 Aion tehdä tehdä hei 3. 177 00:08:44,920 --> 00:08:46,230 Comp IO on kunnossa. 178 00:08:46,230 --> 00:08:51,380 ./hello Zamyla Enter. 179 00:08:51,380 --> 00:08:54,480 Mitä tein väärin? 180 00:08:54,480 --> 00:08:57,270 Olin yllätettiin itseäni vain hetken siellä. 181 00:08:57,270 --> 00:08:58,230 Mitä tein väärin? 182 00:08:58,230 --> 00:08:59,220 >> Yleisö: Nimi. 183 00:08:59,220 --> 00:09:01,767 >> DAVID MALAN: tiedoston erotuksesta hello3.c. 184 00:09:01,767 --> 00:09:03,850 Ja tein sen vain johdonmukaisuus, koska olemme 185 00:09:03,850 --> 00:09:06,550 oli hello.c n menneisyyden online koodin. 186 00:09:06,550 --> 00:09:11,550 Joten korjata ./hello kiinnike viiva 3 Zamyla. 187 00:09:11,550 --> 00:09:12,370 Enter. 188 00:09:12,370 --> 00:09:14,030 Ja nyt meillä on hei, Zamyla. 189 00:09:14,030 --> 00:09:17,650 Samalla voin vaihtaa tätä olla Rob, tai oikeastaan ​​mikä tahansa muu sana. 190 00:09:17,650 --> 00:09:19,230 >> Mutta katsotaanpa harkita nurkkaan tapaus. 191 00:09:19,230 --> 00:09:24,360 Mikä voisi odotat tapahtuu, jos En kirjoita kenenkään nimeä ollenkaan? 192 00:09:24,360 --> 00:09:25,270 >> Yleisö: Virhe. 193 00:09:25,270 --> 00:09:27,300 >> DAVID MALAN: virhe jonkinlaisia, ehkä. 194 00:09:27,300 --> 00:09:28,200 Katsotaanpa. 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 Joten printf siitä tosiasiallisesti pieni suojaava meistä 198 00:09:33,870 --> 00:09:38,131 täällä, ja kirjaimellisesti tulostus avoin paren null, mutta vielä pahempaa asioita voi tapahtua. 199 00:09:38,131 --> 00:09:40,130 Ja juuri osoittamaan jotain aivan 200 00:09:40,130 --> 00:09:42,800 ei pitäisi tehdä, mennään sisään täällä ja alkaa tönäisi ympärillä. 201 00:09:42,800 --> 00:09:43,300 Oikea? 202 00:09:43,300 --> 00:09:46,410 Jos tiedän, että kuvaa muisti on olennaisesti tätä, 203 00:09:46,410 --> 00:09:52,660 argv kiinnike 1 on Zamyla, argv kiinnike 0 on ./hello, tai ./hello-3. 204 00:09:52,660 --> 00:09:55,400 Mikä on kiinnike 2? 205 00:09:55,400 --> 00:09:58,210 Joten en voi vastata, että kyseenalaistaa itseni, eikö? 206 00:09:58,210 --> 00:10:00,460 Voin vain muuttaa 1 2. 207 00:10:00,460 --> 00:10:07,270 Voin nyt uudelleenkääntää Hei 3, ./hello3 Katsotaanpa lähentää ja paina Enter. 208 00:10:07,270 --> 00:10:08,270 Oho. 209 00:10:08,270 --> 00:10:10,660 Ei lainausmerkki. 210 00:10:10,660 --> 00:10:12,540 Mielenkiintoinen. 211 00:10:12,540 --> 00:10:15,530 Niin, että on tavallaan siistiä mitä muuta on täällä. 212 00:10:15,530 --> 00:10:17,130 >> Joten mitä muuta on sisällä minun laptop? 213 00:10:17,130 --> 00:10:20,390 Säästetään se kiinnike 3. 214 00:10:20,390 --> 00:10:25,190 Tee hello3, ./hello-3. 215 00:10:25,190 --> 00:10:26,500 Utelias. 216 00:10:26,500 --> 00:10:30,560 Ja nyt mennään todella bold-- 50. 217 00:10:30,560 --> 00:10:34,340 Niin, että todella sukellus syvälle minun tietokoneen muistiin. 218 00:10:34,340 --> 00:10:35,930 50 indeksit. 219 00:10:35,930 --> 00:10:41,950 Joten hei 3 ./hello-3. 220 00:10:41,950 --> 00:10:42,680 Utelias. 221 00:10:42,680 --> 00:10:44,660 Okei, nyt olen vain menossa holtiton. 222 00:10:44,660 --> 00:10:47,331 Mennään 5000. 223 00:10:47,331 --> 00:10:47,830 Kunnossa. 224 00:10:47,830 --> 00:10:49,520 Haluan siis käännä uudelleen. 225 00:10:49,520 --> 00:10:51,460 Tee 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 Nyt jotkut teistä, saattaa olla lamppu menee pois. 229 00:10:59,250 --> 00:11:01,900 Kuinka moni teistä on nähnyt tämän viestin ennen? 230 00:11:01,900 --> 00:11:03,440 OK. 231 00:11:03,440 --> 00:11:04,420 Niin, miksi? 232 00:11:04,420 --> 00:11:07,250 >> Kerroin are-- ja siellä erilainen asioita, jotka voivat aiheuttaa tämän, 233 00:11:07,250 --> 00:11:09,730 ja selvästi olet hyvässä company-- meillä on selvästi 234 00:11:09,730 --> 00:11:11,900 aiheutti mitä kutsutaan segmentointi vika. 235 00:11:11,900 --> 00:11:15,890 Ja pitkän tarinan lyhyesti tänään, minä ovat käsitelleet segmentti muistia 236 00:11:15,890 --> 00:11:17,060 että minun ei pitäisi olla. 237 00:11:17,060 --> 00:11:19,970 Jos segmentti tarkoittaa vain kimpale muistin, että minun ei pitäisi olla. 238 00:11:19,970 --> 00:11:25,530 Nyt tietokoneen takaa, että jos minä run ./helloZamyla että voin koskettaa argv 239 00:11:25,530 --> 00:11:27,760 olla teline 0 ja argv kiinnike 1. 240 00:11:27,760 --> 00:11:32,730 Mutta argc on arvo 2, joka tarkoittaa, että minä olen vain allowed-- se on tavallaan kunnia 241 00:11:32,730 --> 00:11:35,180 system-- koskettaa kannatin 0 ja kiinnike 1. 242 00:11:35,180 --> 00:11:37,990 Jos menen pitemmälle, siellä ehdottomasti olemaan muistia siellä. 243 00:11:37,990 --> 00:11:40,660 Oma RAM on fyysisesti olemassa tietokoneeseen. 244 00:11:40,660 --> 00:11:42,080 Mutta kuka tietää mitä siellä on? 245 00:11:42,080 --> 00:11:44,450 Itse olen käynnissä useita ohjelmia kerrallaan. 246 00:11:44,450 --> 00:11:46,910 Saatan olla seen-- jos en Näin on Appliant 247 00:11:46,910 --> 00:11:49,937 mutta Macin tai PC-- voisin olla nähnyt sisältöä sähköpostitse. 248 00:11:49,937 --> 00:11:52,270 Olen ehkä nähnyt hetkessä Viestin Olen viime aikoina lähettänyt. 249 00:11:52,270 --> 00:11:55,390 Mitään, mikä voisi olla viipyvä noin muistissa 250 00:11:55,390 --> 00:11:59,180 olisi näytetty tapa tämä mielivaltainen hakasulkeen merkintätapa. 251 00:11:59,180 --> 00:12:02,850 Tai vielä pahempaa, saatat olla löytyi yksi minun salasanoja 252 00:12:02,850 --> 00:12:05,859 että olisin viime aikoina kirjoitettu, että ohjelma oli tallennettu muistiin niin 253 00:12:05,859 --> 00:12:07,900 todentamaan minulle, ja sitten vain sellainen jätti 254 00:12:07,900 --> 00:12:09,910 RAM kunnes lopetin kyseisen ohjelman. 255 00:12:09,910 --> 00:12:12,860 >> Ja todellakin, tämä on yksi vaaran ja yksi valtuuksia 256 00:12:12,860 --> 00:12:15,980 käyttää kieltä kuin C. Sinulla on esteetön pääsy 257 00:12:15,980 --> 00:12:18,860 koko sisältö ohjelman muistiin, 258 00:12:18,860 --> 00:12:21,340 ja mitä roistoja voi jopa tehdä niissä cases-- 259 00:12:21,340 --> 00:12:23,807 varsinkin kun me päästä web ohjelmointi 260 00:12:23,807 --> 00:12:26,890 loppupuolella lukukauden, me palata tähän topic-- on penkoa, 261 00:12:26,890 --> 00:12:31,660 mahdollisesti jonkun tietokoneen muistia ja löytää sellainen utelias asioita 262 00:12:31,660 --> 00:12:32,570 kuten näimme siellä. 263 00:12:32,570 --> 00:12:36,900 Tai vielä pahempaa vielä, salasanoja, jotka hän tai hän voi sitten käyttää tehdä pahoja asioita. 264 00:12:36,900 --> 00:12:40,240 >> Niin selvästi Minun ei olisi pitänyt tehdä tätä, koska outoja asioita alkaa tapahtua. 265 00:12:40,240 --> 00:12:42,310 Todellakin, tämä on ohjelma kaatuu. 266 00:12:42,310 --> 00:12:44,580 Tämä olisi vastaava Mac OS tai Windows 267 00:12:44,580 --> 00:12:46,770 Ohjelman ikkuna vain katoaa. 268 00:12:46,770 --> 00:12:48,300 Odottamaton virhe. 269 00:12:48,300 --> 00:12:50,840 Vuonna komentorivin ympäristö näemme jotain tällaista. 270 00:12:50,840 --> 00:12:54,480 Mutta siksi on olen yksinkertaisesti koskettamalla muistia, joka ei kuulu minulle. 271 00:12:54,480 --> 00:12:57,090 >> Joten puolustaa vastaan hieman eri tavalla 272 00:12:57,090 --> 00:12:59,010 katsomalla tästä ohjelmasta. 273 00:12:59,010 --> 00:13:01,000 Niin, jälleen, luuranko että näimme earlier-- 274 00:13:01,000 --> 00:13:02,480 ja olen korostanut tällä kertaa int. 275 00:13:02,480 --> 00:13:05,900 Ja koko tämän ajan tärkein on todellakin palasi arvo. 276 00:13:05,900 --> 00:13:09,120 Vaikka useimmissa luento Esimerkkejä olemme kertaakaan käytetty 277 00:13:09,120 --> 00:13:10,990 Palaa mitään main. 278 00:13:10,990 --> 00:13:13,710 Olemme vain kirjoittaa printf lähellä kihara ahdin ja se on siinä. 279 00:13:13,710 --> 00:13:16,500 Mutta ilmaiseksi, mitä kääntäjä tehnyt sinulle, 280 00:13:16,500 --> 00:13:19,510 tehokkaasti, on palaamassa 0 sinulle. 281 00:13:19,510 --> 00:13:22,950 Kääntyy out-- ja se on hieman counterintuitive--, että 0 on hyvä. 282 00:13:22,950 --> 00:13:24,690 Se ei tarkoita vääriä sinänsä. 283 00:13:24,690 --> 00:13:29,080 0 on hyvä, ja ei-0 arvo, maailma on päättänyt, 284 00:13:29,080 --> 00:13:30,619 voi merkitä virhettä. 285 00:13:30,619 --> 00:13:32,910 Joten jos olet joskus sekaisin jotain tietokoneeseen, 286 00:13:32,910 --> 00:13:36,600 tai ohjelma on juuri kuollut teitä ja olet saanut joitakin virheellisiä ikkuna 287 00:13:36,600 --> 00:13:40,360 näytön sanoen virhe negatiivinen 49 tai virhe 23-- 288 00:13:40,360 --> 00:13:44,170 jotkut melko sattumanvarainen value-- se koska ohjelmoija on koodannut 289 00:13:44,170 --> 00:13:49,370 arvo kuin negatiivinen 49 tai positiivinen 23 edustaa mitä tahansa määrää, uskallan sanoa, 290 00:13:49,370 --> 00:13:53,340 4 miljardin mahdolliset asiat että voisi mennä pieleen ohjelmaan. 291 00:13:53,340 --> 00:13:55,700 >> Joten miten voisin ottaa hyödyntää tätä itse? 292 00:13:55,700 --> 00:13:58,970 No, minäpä avata ohjelman että olen kirjoittanut aiemmin, 293 00:13:58,970 --> 00:14:01,450 ja penkoa verkossa nimeltään Hei 4. 294 00:14:01,450 --> 00:14:05,650 Ja se on lähes identtinen, paitsi että sen sai hieman virheiden tarkkailun. 295 00:14:05,650 --> 00:14:09,660 Tässä tapauksessa olen taas julisti Tärkein kuin ottaa kaksi argumenttia, 296 00:14:09,660 --> 00:14:13,180 mutta tällä kertaa linjalla 17, huomautus Teen vähän järki tarkistaa. 297 00:14:13,180 --> 00:14:17,100 Olen varmista, että argc vastaa yhtä kuin 2. 298 00:14:17,100 --> 00:14:18,960 Koska jos se on, että tarkoittaa, että voin turvallisesti 299 00:14:18,960 --> 00:14:21,420 koskettaa paitsi kiinnike 0, mutta kiinnike 1. 300 00:14:21,420 --> 00:14:24,330 Ja menen eteenpäin ja tulostaa, Tässä tapauksessa Zamyla tai Rob 301 00:14:24,330 --> 00:14:26,020 tai mitä sanaa olen kirjoittanut ulos. 302 00:14:26,020 --> 00:14:28,020 Ja nyt vain saada hieman enemmän oikea, 303 00:14:28,020 --> 00:14:31,910 Aion nimenomaisesti palata 0 merkitä kaikki on hyvin. 304 00:14:31,910 --> 00:14:33,300 Mitään pahaa tapahtunut. 305 00:14:33,300 --> 00:14:38,590 >> Mutta sopimuksen mukaan, aion palauttaa 1, tai suoraan sanottuna ei-0-arvo, 306 00:14:38,590 --> 00:14:40,160 jos jotain meni pieleen. 307 00:14:40,160 --> 00:14:43,270 Nyt käyttäjä ei tule todella huomaa mitä tapahtuu. 308 00:14:43,270 --> 00:14:50,410 Tosin jos menen tähän hakemistoon, me lähentää ja tekevät Hei 4, 309 00:14:50,410 --> 00:14:54,210 ./hello-4 Zamyla käyttäytyy kuin odotan. 310 00:14:54,210 --> 00:14:58,570 Mutta jos sen sijaan älä kirjoita mitään, mikään ei tunnu tapahtuvan, 311 00:14:58,570 --> 00:14:59,680 mutta se ei kaadu. 312 00:14:59,680 --> 00:15:04,660 Ja jos minä sen sijaan tehdä jotain kuten Rob on Proctor 313 00:15:04,660 --> 00:15:07,550 in Thayer-- jakaminen mielivaltaisia ​​tietoja. 314 00:15:07,550 --> 00:15:13,680 Mutta ilmoitus, argv 1, 2, 3, 4, ja 5 pitäisi nyt olla muistissa. 315 00:15:13,680 --> 00:15:16,540 Sekin, ei mitä Oma ohjelma odottaa, 316 00:15:16,540 --> 00:15:20,300 koska olen tarkistanut, onko argc vastaa = 2 tai ei. 317 00:15:20,300 --> 00:15:22,140 Joten olen nyt puolustaen tätä. 318 00:15:22,140 --> 00:15:25,290 >> Nyt, kuten syrjään, me programmer-- tai pikemminkin me users-- 319 00:15:25,290 --> 00:15:29,670 koskaan näe, että 0 tai 1, mutta käyttämällä työkalu nimeltään viankorjaus, tai muita välineitä, 320 00:15:29,670 --> 00:15:32,250 kuten tulemme näkemään ennen kauan, olet ohjelmoija 321 00:15:32,250 --> 00:15:36,590 voi itse nähdä, mitä voisi olla pielessä sisällä oman ohjelman. 322 00:15:36,590 --> 00:15:39,170 >> Joten kysyttävää argc? 323 00:15:39,170 --> 00:15:40,873 Joo. 324 00:15:40,873 --> 00:15:45,292 >> Yleisö: Olen nähnyt missä he ei ole ollut merkki, [kuulumaton] 325 00:15:45,292 --> 00:15:49,669 juuri sanoi merkkijono tähti d, kuten merkin tähdellä pilkku. 326 00:15:49,669 --> 00:15:50,710 Ovatko he vastaavat täällä? 327 00:15:50,710 --> 00:15:51,626 >> DAVID MALAN: He ovat. 328 00:15:51,626 --> 00:15:55,080 Joten kysymys kuuluu, sinulla on joskus nähnyt ohjelmat 329 00:15:55,080 --> 00:15:57,270 näin, että ei sanoa merkkijono argv kiinnike 330 00:15:57,270 --> 00:16:01,015 vaan sanoa jotain kuten nieriä tähti argv kiinnike. 331 00:16:01,015 --> 00:16:03,140 Ja siellä on jopa muita variantteja, saatat nähdä. 332 00:16:03,140 --> 00:16:04,264 Ne ovat todella vastaavat. 333 00:16:04,264 --> 00:16:06,240 Nyt meillä on nämä tavallaan apupyörät 334 00:16:06,240 --> 00:16:09,737 on muodossa merkkijonon CS50 kirjasto, mutta reilussa viikossa 335 00:16:09,737 --> 00:16:12,570 tai niin aiomme poistaa että tukos kokonaan ja todellisuudessa 336 00:16:12,570 --> 00:16:16,820 katsokaa mitä nieriää ja tähti ovat, ja miten ne liittyvät muistin 337 00:16:16,820 --> 00:16:18,140 edustus yleisemmin. 338 00:16:18,140 --> 00:16:19,540 Niin me palaamme siihen. 339 00:16:19,540 --> 00:16:21,540 >> Muihin kysymyksiin meidän argv tai argc? 340 00:16:21,540 --> 00:16:22,397 Joo. 341 00:16:22,397 --> 00:16:24,438 Yleisö: Miksi se palaa error [äänetön]? 342 00:16:24,438 --> 00:16:27,147 343 00:16:27,147 --> 00:16:29,230 DAVID MALAN: Miksi se palauttaa virheen only-- oh! 344 00:16:29,230 --> 00:16:31,813 Edellisessä tapauksessa, kun olivat futzing noin muistilla, 345 00:16:31,813 --> 00:16:35,110 miksi se vain palauttaa virheen kun olen todella kirjoittanut iso numero? 346 00:16:35,110 --> 00:16:36,620 Lyhyt vastaus on, me vain onnekas. 347 00:16:36,620 --> 00:16:39,240 Yleisesti ottaen, tietokone varaa muistia paloina, 348 00:16:39,240 --> 00:16:42,900 ja se antoi minulle tarpeeksi iso kimpale että Sain pois, kenenkään huomaamatta, 349 00:16:42,900 --> 00:16:46,280 koskettaa kiinnike 2, kannatin 3, kiinnike 50, mutta heti kun työnsin 350 00:16:46,280 --> 00:16:49,080 onneani, menin pidemmälle rajat kimpale muistia 351 00:16:49,080 --> 00:16:50,520 käyttöjärjestelmä oli antanut minulle. 352 00:16:50,520 --> 00:16:52,720 Ja silloin se tukahduttaa ja sanoi, ei. 353 00:16:52,720 --> 00:16:54,580 Segmentointi virhe. 354 00:16:54,580 --> 00:16:55,692 Joo. 355 00:16:55,692 --> 00:16:58,890 >> Yleisö: Miten tietokone tietää arvo argc? 356 00:16:58,890 --> 00:17:02,390 >> DAVID MALAN: Miten tietokone tietää arvo argc? 357 00:17:02,390 --> 00:17:07,920 Kun käynnistät ohjelman, joka ohjelma, luonteen mukaan vilkkuu nopea, 358 00:17:07,920 --> 00:17:11,359 luovutetaan joukko sanoja, jotka kirjoitetaan 359 00:17:11,359 --> 00:17:13,300 kehotteeseen, että oli kirjoitetun nopeaa. 360 00:17:13,300 --> 00:17:16,569 Ja niin se on käyttöjärjestelmä joka olennaisesti 361 00:17:16,569 --> 00:17:20,329 asuttujen pääasialliset väitteet sinulle. 362 00:17:20,329 --> 00:17:22,829 Niin, että yksi palveluista että saat, tavallaan salaa 363 00:17:22,829 --> 00:17:24,869 alla huppu käyttöjärjestelmä. 364 00:17:24,869 --> 00:17:27,118 Muita kysymyksiä? 365 00:17:27,118 --> 00:17:27,618 Joo. 366 00:17:27,618 --> 00:17:29,787 >> Yleisö: Mitä core dump tarkoittaa? 367 00:17:29,787 --> 00:17:31,370 DAVID MALAN: Mitä core dump tarkoittaa? 368 00:17:31,370 --> 00:17:32,950 Niin se on hyvä kysymys. 369 00:17:32,950 --> 00:17:35,312 Ja anna minun mennä takaisin tähän hakemistoon täällä. 370 00:17:35,312 --> 00:17:37,270 Ja huomaat, että Minulla on uusi tiedosto sinne. 371 00:17:37,270 --> 00:17:41,670 Se on todellakin kutsutaan ydin, ja se on todella tyypillisesti kunnon kokoinen tiedosto. 372 00:17:41,670 --> 00:17:45,300 Se on pohjimmiltaan tilannekuva sisältö minun ohjelman muistiin 373 00:17:45,300 --> 00:17:46,902 tai RAM kun se kaatui. 374 00:17:46,902 --> 00:17:49,110 Ja tämä on hyödyllistä, mahdollisesti diagnostisesti, 375 00:17:49,110 --> 00:17:52,850 kun puhumme tulevaisuudessa luento ja osio virheenkorjaus, 376 00:17:52,850 --> 00:17:55,730 koska voit itse tehdä vastaa digitaalisen ruumiinavaus 377 00:17:55,730 --> 00:18:00,300 kyseisestä tiedostosta auttaa selvittää mitä teit väärin ohjelmaan. 378 00:18:00,300 --> 00:18:01,220 Joo. 379 00:18:01,220 --> 00:18:04,450 >> Yleisö: Onko argc komento itse, tai voi you name it jotain? 380 00:18:04,450 --> 00:18:05,575 >> DAVID MALAN: Hyvä kysymys. 381 00:18:05,575 --> 00:18:08,040 On argc komennon itsessään, tai voi you name it jotain? 382 00:18:08,040 --> 00:18:09,290 Se ei todellakaan ole komentoa. 383 00:18:09,290 --> 00:18:13,500 Se on yksinkertaisesti muuttujan nimi tai argumentti nimi, 384 00:18:13,500 --> 00:18:15,481 ja niin ehdottomasti meidän voisi kutsua tätä foo, 385 00:18:15,481 --> 00:18:18,480 voisimme kutsua tätä baari, jotka yleensä olla go-sanoja, jotka tietokone 386 00:18:18,480 --> 00:18:19,860 tiedemies menee. 387 00:18:19,860 --> 00:18:22,820 Mutta sopimuksen mukaan, käytämme argc ja argv. 388 00:18:22,820 --> 00:18:25,360 Mutta se on vain ihmisen yleissopimus, ei muuta. 389 00:18:25,360 --> 00:18:25,860 Kunnossa. 390 00:18:25,860 --> 00:18:28,140 Niin osoittautuu, olen ollut kertoo hieman valkoinen lie-- 391 00:18:28,140 --> 00:18:31,264 ja rehellisesti, tulevaisuudessa, näet olemme kertoneet muiden valkoisten valheiden. 392 00:18:31,264 --> 00:18:33,510 Mutta nyt olemme menossa kuoria takaisin yksi näistä. 393 00:18:33,510 --> 00:18:37,310 Tässä tapauksessa tässä kun olen aiemmin juoksi ohjelmaa kuten ./hello tai ./hello-3 394 00:18:37,310 --> 00:18:42,780 Zamyla, meillä oli sisältö minun tietokoneen muistiin näköinen kutakuinkin 395 00:18:42,780 --> 00:18:43,280 tätä. 396 00:18:43,280 --> 00:18:45,070 Mutta muista mitä merkkijono on. 397 00:18:45,070 --> 00:18:49,279 Mitä sanomme viikko sitten mitä merkkijono todella on alla huppu? 398 00:18:49,279 --> 00:18:50,320 Yleisö: Array merkkiä. 399 00:18:50,320 --> 00:18:52,111 DAVID MALAN: Se joukko merkkiä, eikö? 400 00:18:52,111 --> 00:18:55,760 Joten saatamme olla erilaisia jouset, mutta puolestaan ​​merkkijono 401 00:18:55,760 --> 00:18:57,150 on joukko merkkejä. 402 00:18:57,150 --> 00:19:00,010 Joten jos en todellakaan halua olla anaali kun piirrän tätä kuvaa, 403 00:19:00,010 --> 00:19:03,290 Olisin todella piirustus se vähän enemmän kuin tämä, 404 00:19:03,290 --> 00:19:08,000 jolloin kussakin näistä indeksit minun argv array, 405 00:19:08,000 --> 00:19:11,432 on itse koko jono että itse on jono. 406 00:19:11,432 --> 00:19:13,140 Ja nyt valkoinen valhe kerromme tänään 407 00:19:13,140 --> 00:19:15,181 on, että kuva ei näyttää aivan kuten tämä. 408 00:19:15,181 --> 00:19:19,110 Itse asiassa, pikku neliöt ovat tyypillisesti ulkopuolella iso suorakaide 409 00:19:19,110 --> 00:19:19,610 siellä. 410 00:19:19,610 --> 00:19:21,280 Mutta me palaamme että ennen pitkää. 411 00:19:21,280 --> 00:19:25,440 Mutta tämä on ./hello kenoviiva 0, että on erityinen merkki, joka 412 00:19:25,440 --> 00:19:28,310 rajataan loppuun merkkijonon, ja meillä on toinen jälkeen 413 00:19:28,310 --> 00:19:29,360 Zamyla nimi. 414 00:19:29,360 --> 00:19:30,900 Mitä tämä tarkoittaa? 415 00:19:30,900 --> 00:19:33,410 >> No, anna minun mennä eteenpäin ja avata kaksi muuta esimerkkiä 416 00:19:33,410 --> 00:19:35,220 jotka ovat saatavilla verkossa. 417 00:19:35,220 --> 00:19:40,590 Yksi on nimeltään argv1.c ja toinen on argv2. 418 00:19:40,590 --> 00:19:44,260 Se on erittäin yksinkertainen ohjelma, joka eroaa aiemmista ohjelmista 419 00:19:44,260 --> 00:19:47,260 että nyt olen käyttäen argc ja argv täällä. 420 00:19:47,260 --> 00:19:54,300 Ja nyt olen integroituminen silmukka linjassa 18, alkaen i = 0 jopa argc. 421 00:19:54,300 --> 00:19:56,850 Ja mitä aion tehdä Tämän rivi koodia täällä? 422 00:19:56,850 --> 00:19:58,270 Englanti. 423 00:19:58,270 --> 00:20:00,510 Tämä tietysti osoittaa käytön argc. 424 00:20:00,510 --> 00:20:03,670 Mutta Englanti, mitä se tehdä, jos en suorita tämä ohjelma? 425 00:20:03,670 --> 00:20:04,366 Joo? 426 00:20:04,366 --> 00:20:07,386 >> Yleisö: Se tulee tulostaa näytön niin monta kertaa kuin haluat. 427 00:20:07,386 --> 00:20:08,260 DAVID MALAN: Aivan. 428 00:20:08,260 --> 00:20:10,480 Niin mitä sanoja minä kirjoita kehotteeseen, se on 429 00:20:10,480 --> 00:20:13,120 menossa oksentaa ne minulle yksi riviä kohden. 430 00:20:13,120 --> 00:20:14,370 Joten mene eteenpäin ja tehdä tämän. 431 00:20:14,370 --> 00:20:17,862 Anna minun mennä minun hakemistoon ja eivät tee argv1 ./argv1. 432 00:20:17,862 --> 00:20:20,521 433 00:20:20,521 --> 00:20:21,770 Ja nyt, nyt pitää se yksinkertainen. 434 00:20:21,770 --> 00:20:23,834 Tehdään mitään aluksi. 435 00:20:23,834 --> 00:20:26,750 Se teki tulostaa yksi asia, ja se on todellakin ohjelman nimi, 436 00:20:26,750 --> 00:20:28,240 koska se on kiinnike 0. 437 00:20:28,240 --> 00:20:33,290 Jos minä nyt sanon foo, se tulee tehdä nämä kaksi, ja jos sanon foo bar, 438 00:20:33,290 --> 00:20:35,580 se aikoo sanoa ne kolme asiaa. 439 00:20:35,580 --> 00:20:37,740 Nyt se on hieman mielenkiintoinen, ehkä. 440 00:20:37,740 --> 00:20:41,450 Mutta muistuttaa, että argv on Merkkijonotaulukko, 441 00:20:41,450 --> 00:20:45,960 mutta jono on joukko merkkiä, jotta voimme asioita lovi 442 00:20:45,960 --> 00:20:48,560 ja soveltaa että perus logiikan ja tehdä koodia, joka 443 00:20:48,560 --> 00:20:51,160 näyttää hieman arvoituksellisesti, tosin. 444 00:20:51,160 --> 00:20:53,540 Vaan siksi, että sisäkkäisiä silmukka, jotain sukua 445 00:20:53,540 --> 00:20:57,030 mitä saatat muistaa Mario, esimerkiksi, jos teit sen tällä tavalla. 446 00:20:57,030 --> 00:21:00,380 >> Joten nyt huomaa linjalla 19, olen jälleen iteroidessaan yli minun argumentteja, 447 00:21:00,380 --> 00:21:02,410 0 jopa argc. 448 00:21:02,410 --> 00:21:05,510 Ja nyt linjassa 21-- olen lainanotto temppu viime week-- 449 00:21:05,510 --> 00:21:11,090 Olen tarkkailun mitä on pituus argv kiinnike i. 450 00:21:11,090 --> 00:21:12,920 Olen säilytykseen että vastaus n. 451 00:21:12,920 --> 00:21:18,230 Ja sitten olen yhdistämään järjestelmässään J enintään n, missä j alustetaan arvoon 0. 452 00:21:18,230 --> 00:21:19,460 Niin, yleissopimus laskemista varten. 453 00:21:19,460 --> 00:21:22,335 Kun olet käyttänyt i, jos sinulla on sisäkkäisiä silmukka, et voi käyttää uudelleen i, 454 00:21:22,335 --> 00:21:25,770 muuten saat hakata, mahdollisesti, arvo ulkopuolella sisemmän silmukan. 455 00:21:25,770 --> 00:21:27,200 Joten Käytän j sopimuksin. 456 00:21:27,200 --> 00:21:28,020 Voisimme käyttää k. 457 00:21:28,020 --> 00:21:31,080 Jos sinulla on enemmän kuin k, luultavasti on liian paljon pesiviä, tyypillisesti. 458 00:21:31,080 --> 00:21:33,800 Mutta nyt huomaa minun printf linja on hieman erilainen. 459 00:21:33,800 --> 00:21:37,520 En tulostus% s, olen tulostus% c, joka tietenkin, 460 00:21:37,520 --> 00:21:39,460 on paikkamerkki merkkiä. 461 00:21:39,460 --> 00:21:40,770 >> Ja nyt huomaa tämän syntaksin. 462 00:21:40,770 --> 00:21:41,270 Uusi. 463 00:21:41,270 --> 00:21:42,630 Emme ole nähneet sitä ennen. 464 00:21:42,630 --> 00:21:47,290 Mutta loogisesti, tämä tarkoittaa vain sitä, saada nteen merkkijono argv 465 00:21:47,290 --> 00:21:50,067 ja saada j mitä? 466 00:21:50,067 --> 00:21:50,900 Yleisö: Luonne. 467 00:21:50,900 --> 00:21:52,800 DAVID MALAN: Luonne että merkkijono. 468 00:21:52,800 --> 00:21:57,100 Joten hakasulkuja jonka jälkeen hakasulkeissa 469 00:21:57,100 --> 00:22:00,390 tämä on sukellus ensimmäinen osaksi argv n jouset, 470 00:22:00,390 --> 00:22:02,225 ja sitten toinen hakasuluilla kanssa j 471 00:22:02,225 --> 00:22:06,580 on sukeltaa merkkiä että erityisesti merkkijono argv. 472 00:22:06,580 --> 00:22:09,562 Ja sitten vain hyvä toimenpide, Olen tulostus uuden linjan täällä. 473 00:22:09,562 --> 00:22:12,020 Joten nyt anna minun mennä eteenpäin ja avata jopa hieman isompi ikkuna 474 00:22:12,020 --> 00:22:13,600 jotta voimme nähdä tämän toiminnassa. 475 00:22:13,600 --> 00:22:15,700 Anna minun mennä tuohon kansioon. 476 00:22:15,700 --> 00:22:22,550 Ja nyt eivät tee argv-2-- whoops-- tehdä argv-2, ./argv 2. 477 00:22:22,550 --> 00:22:23,110 Enter. 478 00:22:23,110 --> 00:22:24,860 Ja se on vähän vaikea lukea pystysuunnassa, 479 00:22:24,860 --> 00:22:27,920 mutta se on todellakin nimi ohjelma, jota seuraa tyhjä rivi. 480 00:22:27,920 --> 00:22:30,210 Nyt haluaisin mennä eteenpäin ja tehdä foo. 481 00:22:30,210 --> 00:22:33,210 Samoin vaikea lukea, mutta se on todellakin tulostat yhden merkin riville. 482 00:22:33,210 --> 00:22:36,780 Ja jos en baari, se on nyt niiden tulostaminen rivi riviltä. 483 00:22:36,780 --> 00:22:40,140 Joten nouto tässä ei niinkään että, vau, katsokaa tätä siisti uusi temppu 484 00:22:40,140 --> 00:22:44,750 jossa voit saada klo sisältö array erityiset merkkiä, 485 00:22:44,750 --> 00:22:48,380 vaan pikemminkin siitä, miten viemme näitä perus ajatuksia, kuten indeksointi taulukkoon, 486 00:22:48,380 --> 00:22:51,620 ja sitten indeksoimisen ryhmän, joka oli siinä array, 487 00:22:51,620 --> 00:22:56,180 ja vain soveltamalla samoja ideoita hieman kehittyneempi esimerkkejä. 488 00:22:56,180 --> 00:22:59,560 Mutta perusasiat todellakaan ole muuttunut, vaikka viime viikolla. 489 00:22:59,560 --> 00:23:02,350 >> Nyt tämä on tavallaan ajankohtainen, siitä, että muistaa, viikolla nolla 490 00:23:02,350 --> 00:23:04,110 leikittiin puhelinluettelo näin. 491 00:23:04,110 --> 00:23:06,670 Ja vaikka tämä ei tietenkään fyysinen paperinpaloja, 492 00:23:06,670 --> 00:23:09,150 voit sellaista ajatella puhelinluettelossa array. 493 00:23:09,150 --> 00:23:12,770 Varmasti, jos olit reimplement Tämän kappaletta näitä paperilappuja 494 00:23:12,770 --> 00:23:15,260 tietokoneessa, luultavasti käyttäisit jotain 495 00:23:15,260 --> 00:23:20,270 kuten array tallentaa kaikki nämä nimiä ja numeroita aina 496 00:23:20,270 --> 00:23:23,800 Z. Joten tämä on mukavaa, koska se antaa meille mahdollisuuden, 497 00:23:23,800 --> 00:23:28,310 ehkä pohtia, kuinka voisit todella toteuttaa jotain sellaista. 498 00:23:28,310 --> 00:23:31,250 Kuten sarja ovien täällä. 499 00:23:31,250 --> 00:23:36,380 Jos siis could-- tarvitsemme yhden vapaaehtoisesti tulla ylös. 500 00:23:36,380 --> 00:23:36,980 Katsotaanpa. 501 00:23:36,980 --> 00:23:40,650 Tunne kasvot ehkä, tuntemattomia kasvoja ehkä. 502 00:23:40,650 --> 00:23:42,090 Entä oranssi? 503 00:23:42,090 --> 00:23:42,680 Täällä. 504 00:23:42,680 --> 00:23:45,870 Oranssi paita, tule ylös. 505 00:23:45,870 --> 00:23:52,230 >> Mennään eteenpäin nyt ja liikkua nämä ovet yli puolella, 506 00:23:52,230 --> 00:23:54,020 siirtää nämä pois tieltä hetkeksi. 507 00:23:54,020 --> 00:23:56,600 508 00:23:56,600 --> 00:23:57,760 Mikä sinun nimesi on? 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 Hauska tavata. 513 00:23:59,451 --> 00:23:59,950 Kunnossa. 514 00:23:59,950 --> 00:24:04,500 Joten meillä on takana kuusi ovet digitaalisesti screen-- 515 00:24:04,500 --> 00:24:07,810 tai pikemminkin seitsemän ovet screen-- koko joukko numeroita. 516 00:24:07,810 --> 00:24:10,099 Ja olen kertonut sinulle mitään vuonna advance-- sovittu? 517 00:24:10,099 --> 00:24:11,140 Ajay: Mikään etukäteen. 518 00:24:11,140 --> 00:24:14,730 DAVID MALAN: Haluan sinun tekevän Nyt on löytää minulle ja meille, 519 00:24:14,730 --> 00:24:20,920 todella, numero 50, yksi askel kerrallaan. 520 00:24:20,920 --> 00:24:21,830 >> Ajay: Numero 50? 521 00:24:21,830 --> 00:24:22,580 >> DAVID MALAN: numero 50. 522 00:24:22,580 --> 00:24:24,746 Ja voit paljastaa mitä takana jokainen näistä ovien 523 00:24:24,746 --> 00:24:27,930 yksinkertaisesti koskettamalla sitä sormella. 524 00:24:27,930 --> 00:24:31,364 Hitto. [Naurua] 525 00:24:31,364 --> 00:24:34,560 >> [APPLAUSE] 526 00:24:34,560 --> 00:24:39,540 >> Hyvin tehty. 527 00:24:39,540 --> 00:24:40,400 OK. 528 00:24:40,400 --> 00:24:44,090 Meillä on ihana lahja palkinto sinua täällä. 529 00:24:44,090 --> 00:24:46,520 Kourallinen elokuvia me keskusteltiin viime viikolla. 530 00:24:46,520 --> 00:24:47,362 >> Ajay: Voi hitto. 531 00:24:47,362 --> 00:24:49,050 Voi, en ole koskaan nähnyt Spaceballs. 532 00:24:49,050 --> 00:24:49,520 >> DAVID MALAN: Spaceballs. 533 00:24:49,520 --> 00:24:50,140 Kunnossa. 534 00:24:50,140 --> 00:24:53,790 Joten pidä vain yksi hetki. 535 00:24:53,790 --> 00:24:57,430 How-- Tehdään tästä oppivainen moment-- 536 00:24:57,430 --> 00:25:00,412 miten te sitten löytää numero 50? 537 00:25:00,412 --> 00:25:01,370 Ajay: Valitsin satunnaisesti. 538 00:25:01,370 --> 00:25:03,420 DAVID MALAN: Eli valitsit satunnaisesti ja onnisti. 539 00:25:03,420 --> 00:25:03,790 Ajay: Kyllä. 540 00:25:03,790 --> 00:25:04,456 DAVID MALAN: OK. 541 00:25:04,456 --> 00:25:05,050 Erinomainen. 542 00:25:05,050 --> 00:25:08,470 Joten nyt, jos et olisi saanut onnekas, mitä muuta 543 00:25:08,470 --> 00:25:10,210 olisi voinut tapahtua takana nämä ovet? 544 00:25:10,210 --> 00:25:12,930 Joten jos menen eteenpäin ja paljastaa numerot tähän, 545 00:25:12,930 --> 00:25:15,180 ne todellisuudessa ovat satunnaisessa järjestyksessä. 546 00:25:15,180 --> 00:25:17,750 Ja parasta mitä voi olla tehty, rehellisesti, tapahtuu lopulta 547 00:25:17,750 --> 00:25:19,410 pahimmassa tapauksessa, tarkistaa ne kaikki. 548 00:25:19,410 --> 00:25:23,000 Sait erittäin onnekas, joka Sitä emme kutsuisi algoritmia. 549 00:25:23,000 --> 00:25:24,730 Kyllä, onnittelut. 550 00:25:24,730 --> 00:25:27,010 Mutta nyt let's-- huumori minulle, jos voisit. 551 00:25:27,010 --> 00:25:28,310 Mennään tähän välilehden täällä. 552 00:25:28,310 --> 00:25:31,460 Ja tässä ovat numerot selvästi mikä näyttää olevan satunnaisessa järjestyksessä, 553 00:25:31,460 --> 00:25:32,280 ja he olivat. 554 00:25:32,280 --> 00:25:35,160 Mutta jos nyt sen sijaan vaatimus että takana nämä ovet 555 00:25:35,160 --> 00:25:39,070 ovat lukuja, jotka on lajiteltu. 556 00:25:39,070 --> 00:25:41,780 Tavoitteena on nyt myös löydät meidät numero 50. 557 00:25:41,780 --> 00:25:45,910 Mutta ei se algorithmically, ja Kerro meille, miten aiot asialle. 558 00:25:45,910 --> 00:25:48,020 Ja jos löydät sen, sinulla pitää elokuvaa. 559 00:25:48,020 --> 00:25:49,520 Et löydä sitä, voit antaa sen takaisin. 560 00:25:49,520 --> 00:25:52,720 561 00:25:52,720 --> 00:25:58,112 Ajay: Joten aion tarkistaa päät ensin, onko there's-- 562 00:25:58,112 --> 00:26:02,048 [Naurua ja suosionosoituksia] 563 00:26:02,048 --> 00:26:04,451 564 00:26:04,451 --> 00:26:05,492 DAVID MALAN: Ole hyvä. 565 00:26:05,492 --> 00:26:17,080 566 00:26:17,080 --> 00:26:21,700 Katsotaanpa katsomaan yksi ja Ajay edeltäjistä, 567 00:26:21,700 --> 00:26:25,450 Sean, joka ei ollut aivan yhtä onnekas. 568 00:26:25,450 --> 00:26:28,670 OK, joten teidän tehtävänne täällä, Sean, on seuraava. 569 00:26:28,670 --> 00:26:32,970 Olen piilossa nämä ovet numero seitsemän, 570 00:26:32,970 --> 00:26:37,200 mutta makaavat jossain näistä ovet sekä muita ei-negatiivisia lukuja. 571 00:26:37,200 --> 00:26:40,730 Ja sinun tehtäväsi on ajatella tätä ylärivin numeroita vain array. 572 00:26:40,730 --> 00:26:43,590 Olemme vain jono kappaletta Paperin numeroilla takana. 573 00:26:43,590 --> 00:26:47,640 Ja tavoitteena on, vain käyttämällä alkuun array täällä, etsi minulle numero seitsemän. 574 00:26:47,640 --> 00:26:51,200 Ja me sitten menossa kritiikkiä miten edetä tee sitä. 575 00:26:51,200 --> 00:26:52,920 Etsi meidät numero seitsemän, kiitos. 576 00:26:52,920 --> 00:27:02,570 577 00:27:02,570 --> 00:27:03,070 Ei 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 Se ei ole temppu kysymys. 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 Tässä vaiheessa pisteet ei ole kovin hyvä, joten voit yhtä hyvin pitää käynnissä. 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 Mennä. 590 00:27:39,802 --> 00:27:42,510 Rehellisesti, en voi olla ihmettelemättä mitä olet edes ajatellut. 591 00:27:42,510 --> 00:27:44,990 >> SEAN: En voi kestää vain ylärivissä. 592 00:27:44,990 --> 00:27:46,240 DAVID MALAN: Vain ylärivissä. 593 00:27:46,240 --> 00:27:47,281 Joten sinulla kolme vasemmalle. 594 00:27:47,281 --> 00:27:48,310 Joten löytää minut 7. 595 00:27:48,310 --> 00:27:54,758 596 00:27:54,758 --> 00:27:59,141 >> [Yleisö huutaa EHDOTUKSET] 597 00:27:59,141 --> 00:28:22,210 598 00:28:22,210 --> 00:28:26,130 Joten nämä molemmat olivat uskomattomia hyvin erilaisista syistä. 599 00:28:26,130 --> 00:28:29,150 Joten tämä on, jos me jäi hetki sitten, 600 00:28:29,150 --> 00:28:32,530 ja Avainoivallus täällä on nämä ovet olivat numerot 601 00:28:32,530 --> 00:28:37,390 niiden takana että lajiteltiin, ihanteellinen takeaway jolle on, että voisitte tehdä 602 00:28:37,390 --> 00:28:39,670 pohjimmiltaan paremmin Tämän toisen example-- 603 00:28:39,670 --> 00:28:42,380 ja todellakin, että oli Seanin Ensimmäinen yritys satunnaisluvuilla 604 00:28:42,380 --> 00:28:45,460 yhtä before-- mutta heti koska nämä luvut lajitellaan, 605 00:28:45,460 --> 00:28:47,980 aivan kuten puhelinluettelossa, mitä voit tietysti tehdä? 606 00:28:47,980 --> 00:28:50,090 Tai miten voit hyödyntää tätä tietoa? 607 00:28:50,090 --> 00:28:51,530 Joo. 608 00:28:51,530 --> 00:28:54,910 >> Yleisö: Menet puolitiehen [kuultavissa]. 609 00:28:54,910 --> 00:28:55,660 DAVID MALAN: Joo. 610 00:28:55,660 --> 00:28:56,160 Täsmälleen. 611 00:28:56,160 --> 00:28:59,680 Joten Ajay saaman ensivaikutelman oli tarkistaa päät, muistaakseni, 612 00:28:59,680 --> 00:29:02,320 ja sitten me tavallaan päättynyt Esimerkiksi nopeasti. 613 00:29:02,320 --> 00:29:05,220 Mutta jos alkaisimme tehdä tätä enemmän suunnitelmallisesti tämänsuuntaista, 614 00:29:05,220 --> 00:29:07,860 mutta alkaa ehkä keskellä, koska he lajitellaan, 615 00:29:07,860 --> 00:29:10,900 kun me paljastaa numero 16, siksi know-- 616 00:29:10,900 --> 00:29:14,850 ja tehkäämme juuri that-- me Siksi tiedämme, että 50, nykypäivän tapauksessa 617 00:29:14,850 --> 00:29:16,080 on saanut olla oikealle. 618 00:29:16,080 --> 00:29:18,735 Joten aivan kuten viikko nolla, kun me repäisi puhelinluettelon kahtia 619 00:29:18,735 --> 00:29:21,490 ja heitti puolet ongelma pois, sama ajatus täällä. 620 00:29:21,490 --> 00:29:23,680 Voimme heittää tämä puoli ongelman pois. 621 00:29:23,680 --> 00:29:25,730 Ja luultavasti mitä voisi tehdä algorithmically, 622 00:29:25,730 --> 00:29:28,710 Kun tiedät, että 50 on oltava oikealle, jos se on kaikkialla, 623 00:29:28,710 --> 00:29:31,390 on kokeilla siellä, keskellä jäljellä ovet. 624 00:29:31,390 --> 00:29:33,450 Tietenkin, 50 on suurempi kuin 42, joten voimme 625 00:29:33,450 --> 00:29:36,060 heittää tämän jäljellä neljännes ongelman pois, 626 00:29:36,060 --> 00:29:38,510 ja lopuksi, tunnistaa jotain 50. 627 00:29:38,510 --> 00:29:41,050 Mutta aivan kuten puhelinluettelo, nämä numerot 628 00:29:41,050 --> 00:29:44,560 annettiin meille jo lajitellut järjestys, joka jättää meidät 629 00:29:44,560 --> 00:29:47,450 kysymystä, miten te saada asiat lajitelluiksi järjestyksessä? 630 00:29:47,450 --> 00:29:49,640 Ja rehellisesti sanottuna, millä hinnalla? 631 00:29:49,640 --> 00:29:51,390 On eri asia olla ojensi puhelinluettelo 632 00:29:51,390 --> 00:29:54,810 ja sitten yllättää ystäväsi löytämällä puhelinnumeron todella nopeasti, eikö? 633 00:29:54,810 --> 00:29:58,520 Revittiin 32 sivua etsimään henkilö pois 4 miljardia sivua, 634 00:29:58,520 --> 00:30:00,470 sanoimme oli äärimmäinen esimerkki. 635 00:30:00,470 --> 00:30:03,320 Mutta kuinka kauan se kestää Verizon lajitella että puhelinluetteloon? 636 00:30:03,320 --> 00:30:06,170 Kuinka kauan se kestää meitä lajitella nämä seitsemän numeroa? 637 00:30:06,170 --> 00:30:10,110 Se on kysymys, että olemme toistaiseksi täysin huomiotta. 638 00:30:10,110 --> 00:30:12,330 >> Joten vastata tähän kysymykseen nyt. 639 00:30:12,330 --> 00:30:15,920 Ja me kaikki olemme ulkona elokuvia nyt mutta meillä on joitakin stressi pallot. 640 00:30:15,920 --> 00:30:19,480 Jos vaikkapa kahdeksan vapaaehtoisia panisi pahakseni tuloaan täällä? 641 00:30:19,480 --> 00:30:24,100 Mennään eteenpäin ja tehdä, entä neljä teistä, te kolme täällä? 642 00:30:24,100 --> 00:30:25,290 Saada uusia kasvoja. 643 00:30:25,290 --> 00:30:27,220 Ja neljä teistä siellä? 644 00:30:27,220 --> 00:30:30,760 Ja now-- älkäämme bias here-- ja numero kahdeksan tänne päähän. 645 00:30:30,760 --> 00:30:32,060 Tule ylös. 646 00:30:32,060 --> 00:30:32,560 Kunnossa. 647 00:30:32,560 --> 00:30:37,480 Joten mitä meillä on täällä jokainen teistä on numero. 648 00:30:37,480 --> 00:30:40,055 Jos haluat mennä eteenpäin, ota tämä numero. 649 00:30:40,055 --> 00:30:40,763 Mikä sinun nimesi on? 650 00:30:40,763 --> 00:30:41,950 >> Artie: Artie. 651 00:30:41,950 --> 00:30:43,100 >> DAVID MALAN: Artie, okei. 652 00:30:43,100 --> 00:30:44,297 Olet numero 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 Olet numero 2. 657 00:30:47,530 --> 00:30:49,100 Ja mennä eteenpäin, niin annan te paperiarkkeja, 658 00:30:49,100 --> 00:30:52,130 riviin itsenne edessä musiikki seisoo samassa järjestyksessä kuin sinne. 659 00:30:52,130 --> 00:30:52,660 >> Andy: Hei, Andy. 660 00:30:52,660 --> 00:30:53,970 >> DAVID MALAN: Andy, on mukava nähdä sinua. 661 00:30:53,970 --> 00:30:54,520 Numero 3. 662 00:30:54,520 --> 00:30:55,310 >> Jaakobin Jacob. 663 00:30:55,310 --> 00:30:56,760 >> DAVID MALAN: Jacob, numero 4. 664 00:30:56,760 --> 00:30:57,549 Tervetuloa. 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 Numero 5. 668 00:31:00,348 --> 00:31:01,200 >> Alanna: Alanna. 669 00:31:01,200 --> 00:31:02,766 >> DAVID MALAN: Alanna, numero 6. 670 00:31:02,766 --> 00:31:03,589 >> FRANCES: Frances. 671 00:31:03,589 --> 00:31:04,880 DAVID MALAN: Frances, numero 7. 672 00:31:04,880 --> 00:31:05,200 Ja? 673 00:31:05,200 --> 00:31:05,830 >> Raakelin Rachel. 674 00:31:05,830 --> 00:31:06,815 >> DAVID MALAN: Rachel, numero 8. 675 00:31:06,815 --> 00:31:07,100 Kunnossa. 676 00:31:07,100 --> 00:31:08,766 Mennä eteenpäin ja saada itsesi tässä järjestyksessä. 677 00:31:08,766 --> 00:31:11,440 Esitän yhden jäljellä musiikki seistä paikallaan. 678 00:31:11,440 --> 00:31:13,670 Missä tarvitset jalustan? 679 00:31:13,670 --> 00:31:14,170 OK. 680 00:31:14,170 --> 00:31:18,710 Mennä eteenpäin ja vain laittaa numeroita jossa yleisö voi nähdä niitä, 681 00:31:18,710 --> 00:31:20,340 nuottiteline ulospäin. 682 00:31:20,340 --> 00:31:27,240 Ja toivottavasti ensimmäinen järki tarkistaa here-- 4, 2, 6. 683 00:31:27,240 --> 00:31:27,890 Oh-oh. 684 00:31:27,890 --> 00:31:29,070 Hetkinen. 685 00:31:29,070 --> 00:31:31,140 Meillä ei ole 8. 686 00:31:31,140 --> 00:31:35,180 Minun täytyy häätää sinua Esimerkiksi jotenkin. 687 00:31:35,180 --> 00:31:35,680 Ei 688 00:31:35,680 --> 00:31:36,940 Ei, se on OK. 689 00:31:36,940 --> 00:31:37,890 Katsotaanpa. 690 00:31:37,890 --> 00:31:38,880 Voimme tehdä tämän. 691 00:31:38,880 --> 00:31:39,440 Valmiustila. 692 00:31:39,440 --> 00:31:43,970 693 00:31:43,970 --> 00:31:45,740 Siellä mennään. 694 00:31:45,740 --> 00:31:46,800 Oikein. 695 00:31:46,800 --> 00:31:47,360 Kunnossa. 696 00:31:47,360 --> 00:31:50,260 Joten, nyt meillä on 8, 1, 3 7, 5. 697 00:31:50,260 --> 00:31:50,760 OK. 698 00:31:50,760 --> 00:31:51,360 Erinomainen. 699 00:31:51,360 --> 00:31:54,400 >> Joten kysymys käsillä on kello mitä kustannuksia, ja millaisin menetelmä, 700 00:31:54,400 --> 00:31:58,580 voimme itse lajitella numerot tähän jotta voimme sellaista työtä taaksepäin, 701 00:31:58,580 --> 00:32:02,759 lopulta, ja decide-- on se todella vaikuttava, se on todella tehokas, 702 00:32:02,759 --> 00:32:04,550 että voin jakaa ja valloittaa puhelinluettelo? 703 00:32:04,550 --> 00:32:06,716 Onko se todella tehokas, että Voin jakaa ja valloittaa 704 00:32:06,716 --> 00:32:08,600 nämä digitaaliset kappaleet paperin taululle, 705 00:32:08,600 --> 00:32:14,500 jos ehkä se tulee maksamaan meille onnen aikaa tai energiaa tai suorittimen käytön 706 00:32:14,500 --> 00:32:17,340 itse saada tietomme johonkin lajitellut järjestyksessä? 707 00:32:17,340 --> 00:32:18,930 Joten kysyä sama kysymys. 708 00:32:18,930 --> 00:32:22,077 >> Joten ensimmäinen pois, nämä luvut ovat melko paljon satunnaisessa järjestyksessä, 709 00:32:22,077 --> 00:32:24,160 ja aion ehdottaa yksi algoritmi, tai prosessi 710 00:32:24,160 --> 00:32:25,970 jonka avulla voimme järjestää nämä ihmiset. 711 00:32:25,970 --> 00:32:28,100 Aion lähestyä tämän melko naiivisti. 712 00:32:28,100 --> 00:32:30,730 Ja aion tunnustaa että se on aika paljon minulle 713 00:32:30,730 --> 00:32:32,890 kääri mieleeni ympäri koko aineistossa asettaa kerralla. 714 00:32:32,890 --> 00:32:33,640 Mutta tiedätkö mitä? 715 00:32:33,640 --> 00:32:37,450 Aion tehdä joitakin hyvin yksinkertainen marginaalinen korjauksia. 716 00:32:37,450 --> 00:32:41,152 4 ja 2 ovat epäkunnossa, jos Tavoitteena on siirtyä 1 jopa 8. 717 00:32:41,152 --> 00:32:41,860 Niin tiedät mitä? 718 00:32:41,860 --> 00:32:43,776 Aion saada sinut kaverit vaihtaa, jos vaihdat 719 00:32:43,776 --> 00:32:46,380 fyysisesti kantoja ja teidän paperilappuja. 720 00:32:46,380 --> 00:32:47,894 Nyt 4 ja 6, nämä ovat kunnossa. 721 00:32:47,894 --> 00:32:49,060 Aion jättää ne olla. 722 00:32:49,060 --> 00:32:50,227 6 ja 8, ne ovat kunnossa. 723 00:32:50,227 --> 00:32:51,185 Aio jättää niitä olla. 724 00:32:51,185 --> 00:32:52,170 8 ja1, epäkunnossa. 725 00:32:52,170 --> 00:32:54,790 Jos kaksi panisi pahakseni vaihtamalla. 726 00:32:54,790 --> 00:32:57,300 Nyt 8 ja 3, jos te voisi vaihtaa. 727 00:32:57,300 --> 00:32:59,320 8 ja 7, jos te voisi vaihtaa. 728 00:32:59,320 --> 00:33:01,790 Ja 8 ja 5, jos te voisi vaihtaa. 729 00:33:01,790 --> 00:33:03,980 >> Nyt olen tehnyt? 730 00:33:03,980 --> 00:33:05,200 Ei, ei tietenkään. 731 00:33:05,200 --> 00:33:07,880 Mutta olen tehnyt tilanne parempi, eikö? 732 00:33:07,880 --> 00:33:09,430 Mikä olikaan nimesi, numero 8? 733 00:33:09,430 --> 00:33:10,055 >> Raakelin Rachel. 734 00:33:10,055 --> 00:33:12,850 DAVID MALAN: So Rachel on tehokkaasti kuplina jopa melko pitkälle, 735 00:33:12,850 --> 00:33:15,660 aina loppuun Oma joukko numeroita täällä. 736 00:33:15,660 --> 00:33:17,310 Ja niin, että ongelma on tavallaan ratkaistu. 737 00:33:17,310 --> 00:33:21,670 Nyt selvästi, 2 vielä liikkuvat vähän, ja 4 ja 6 ja 1. 738 00:33:21,670 --> 00:33:24,420 Mutta olen ilmeisesti saanut hieman lähempänä ratkaisua. 739 00:33:24,420 --> 00:33:26,790 Joten soveltaa tätä samaa naiivi heuristinen uudelleen. 740 00:33:26,790 --> 00:33:27,690 2 ja 4, OK. 741 00:33:27,690 --> 00:33:28,810 4 ja 6, OK. 742 00:33:28,810 --> 00:33:29,930 6 ja 1, mm, mm. 743 00:33:29,930 --> 00:33:32,230 Katsotaanpa swap. 744 00:33:32,230 --> 00:33:33,200 6 ja 3, mm-mm. 745 00:33:33,200 --> 00:33:34,420 Katsotaanpa swap. 746 00:33:34,420 --> 00:33:35,580 6 ja 7 on OK. 747 00:33:35,580 --> 00:33:36,590 7 ja 5, Ehei. 748 00:33:36,590 --> 00:33:37,790 Katsotaanpa swap. 749 00:33:37,790 --> 00:33:38,470 Ja nyt 7 ja 8. 750 00:33:38,470 --> 00:33:39,862 Ja mikä nimesi olikaan? 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 Joten nyt Frances on vieläkin parempi asennossa, koska nyt 7 ja 8 754 00:33:44,230 --> 00:33:46,440 oikein kuplina ylös. 755 00:33:46,440 --> 00:33:47,510 Niin 2 ja 4, OK. 756 00:33:47,510 --> 00:33:48,720 4 ja 1, nyt swap. 757 00:33:48,720 --> 00:33:50,410 4 ja 3, nyt swap. 758 00:33:50,410 --> 00:33:51,550 4 ja 6, olet kunnossa. 759 00:33:51,550 --> 00:33:53,340 6 ja 5, nyt swap. 760 00:33:53,340 --> 00:33:54,590 Ja nyt nämä kaverit ovat hyviä. 761 00:33:54,590 --> 00:33:55,780 Olemme melkein perillä. 762 00:33:55,780 --> 00:33:57,706 2 ja 1, epäkunnossa, niin vaihda. 763 00:33:57,706 --> 00:33:59,080 Ja nyt haluan tehdä järki tarkistaa. 764 00:33:59,080 --> 00:34:03,080 2 ja 3, 3 ja 4, 4 ja 5, 5 ja 6, 6 ja 7, 8. 765 00:34:03,080 --> 00:34:05,060 OK, joten olemme valmiit. 766 00:34:05,060 --> 00:34:09,310 >> Mutta millä hinnalla tein lajitella numerot tähän? 767 00:34:09,310 --> 00:34:13,960 No, kuinka monta askelta tein mahdollisesti ottaa, kun lajittelu nämä ihmiset? 768 00:34:13,960 --> 00:34:15,710 No, me palaamme tähän kysymykseen. 769 00:34:15,710 --> 00:34:18,030 Mutta rehellisesti sanottuna, jos sinulla vähän tylsää, että on 770 00:34:18,030 --> 00:34:22,270 sellaista paljastaa, että tämä ei ollut ehkä tehokkain algoritmi. 771 00:34:22,270 --> 00:34:25,230 Ja todellakin, suoraan sanottuna, olen hikoilu sitäkin kävely edestakaisin. 772 00:34:25,230 --> 00:34:26,639 Se ei tuntunut erityisen tehokasta. 773 00:34:26,639 --> 00:34:27,805 Joten kokeilla jotain muuta. 774 00:34:27,805 --> 00:34:31,870 Jos te voisi palauttaa itsenne nämä kahdeksan arvoja. 775 00:34:31,870 --> 00:34:32,969 Hyvää työtä. 776 00:34:32,969 --> 00:34:36,570 >> Katsotaanpa katsomaan digitaalisesti, vain hetki ennen kuin yrittää jotain muuta, 777 00:34:36,570 --> 00:34:38,179 mitä juuri tapahtui. 778 00:34:38,179 --> 00:34:41,330 Jopa täällä, olet tulleet visualisointi näistä kahdeksasta ihmisillä 779 00:34:41,330 --> 00:34:44,719 jolloin sininen ja punainen pylväät edustavat numeroita. 780 00:34:44,719 --> 00:34:46,670 Pitempi palkki, isompi numero. 781 00:34:46,670 --> 00:34:48,510 Lyhyempi palkki, pienempi numero. 782 00:34:48,510 --> 00:34:51,560 Ja mitä aiot nähdä on satunnaisessa järjestyksessä enemmän kuin kahdeksan. 783 00:34:51,560 --> 00:34:55,830 Tulette näkemään näitä baareja saada järjestetty, että sama algoritmi, 784 00:34:55,830 --> 00:34:59,890 tai joukko ohjeita, jotka soitamme vastedes kupla lajitella. 785 00:34:59,890 --> 00:35:04,000 Niin huomaa, joka toinen tai niin, kaksi palkkia syttyy punaisena, 786 00:35:04,000 --> 00:35:05,590 verrattiin keskenään tietokoneen. 787 00:35:05,590 --> 00:35:08,630 Ja sitten jos iso baari ja pieni baari ovat epäkunnossa, 788 00:35:08,630 --> 00:35:11,220 niitä vaihtoivat minulle. 789 00:35:11,220 --> 00:35:15,120 >> Nyt tämä on uskomattoman tylsiä katsella tätä, varmasti, 790 00:35:15,120 --> 00:35:18,630 kovin pitkään, mutta huomaa takeaway-- iso palkit liikkuvat oikealle, 791 00:35:18,630 --> 00:35:20,460 pikku baareja liikkuu vasemmalle. 792 00:35:20,460 --> 00:35:23,380 Katsotaanpa keskeyttää tämän prosessin ja nopeuttaa sitä 793 00:35:23,380 --> 00:35:27,330 olla paljon nopeampi, joten voimme saada korkean tason tunnetta mitä, 794 00:35:27,330 --> 00:35:29,970 todellakin, kupla lajitella tekee. 795 00:35:29,970 --> 00:35:33,150 Itse asiassa, se kuplii saakka Oikealla puolella luettelon, 796 00:35:33,150 --> 00:35:35,260 tai matriisi, isompi baareja. 797 00:35:35,260 --> 00:35:40,020 Ja kääntäen, pikku baarit ovat kuplivaa tiensä alas vasemmalle, 798 00:35:40,020 --> 00:35:42,950 joskin nopeammin kuin me aiemmin teki. 799 00:35:42,950 --> 00:35:45,850 Niin, vaikeampi nähdä ihmisten kanssa, mutta visuaalisesti se on todellakin mitä 800 00:35:45,850 --> 00:35:46,540 oli tapahtumassa. 801 00:35:46,540 --> 00:35:49,110 >> Mutta yritetään perusteellisesti erilaista lähestymistapaa nyt. 802 00:35:49,110 --> 00:35:52,387 Kokeillaan eri algoritmi, jonka olemme sinulle 803 00:35:52,387 --> 00:35:59,640 kaverit alkaa nämä alkuperäiset kantoja, mikä oli tässä järjestyksessä täällä. 804 00:35:59,640 --> 00:36:00,827 Ja mennään eteenpäin nyt. 805 00:36:00,827 --> 00:36:02,910 Ja aion tehdä jotain jopa helpompaa, eikö? 806 00:36:02,910 --> 00:36:06,710 Jälkeenpäin vaihtamalla pairwise jälleen ja taas, melkein hieman ovela. 807 00:36:06,710 --> 00:36:10,460 Tehdään asiat vieläkin sinisilmäisesti, missä jos haluan lajitella nämä ihmiset, 808 00:36:10,460 --> 00:36:12,560 haluan vain pitää näköinen pienimpien elementti. 809 00:36:12,560 --> 00:36:14,570 Joten nyt, 4 Vähiten olen nähnyt. 810 00:36:14,570 --> 00:36:15,695 Aion muistaa. 811 00:36:15,695 --> 00:36:17,750 Ei, 2 on parempi, ja muistaa, että. 812 00:36:17,750 --> 00:36:20,730 1 on vieläkin pienempi. 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-- mikä nimesi olikaan? 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 Niin, Artie, mennä eteenpäin. 819 00:36:25,460 --> 00:36:27,043 Aion vetää sinut ulos linja. 820 00:36:27,043 --> 00:36:28,400 Jos voisit tulla takaisin tänne. 821 00:36:28,400 --> 00:36:30,790 Ja minun täytyy tehdä tilaa hänelle. 822 00:36:30,790 --> 00:36:32,040 Meillä ratkaisupiste täällä. 823 00:36:32,040 --> 00:36:36,000 Kuinka me saatamme tehdä tilaa Artie täällä alussa, jossa numero 1 kuuluu? 824 00:36:36,000 --> 00:36:36,770 >> Yleisö: Shift. 825 00:36:36,770 --> 00:36:38,950 >> DAVID MALAN: OK, me voisi siirtää kaikille. 826 00:36:38,950 --> 00:36:40,860 Mutta ehdottaa optimointi. 827 00:36:40,860 --> 00:36:43,410 Se tuntuu hieman harmittaa minun esittävän neljä ihmistä 828 00:36:43,410 --> 00:36:44,620 siirtää kokonaan alas. 829 00:36:44,620 --> 00:36:45,520 Mitä muuta voisin tehdä? 830 00:36:45,520 --> 00:36:46,360 >> Yleisö: Vaihda ne. 831 00:36:46,360 --> 00:36:46,850 >> DAVID MALAN: Vaihda ne. 832 00:36:46,850 --> 00:36:47,900 Ja mikä nimesi olikaan? 833 00:36:47,900 --> 00:36:48,441 >> Jaakobin Jacob. 834 00:36:48,441 --> 00:36:50,330 DAVID MALAN: Jacob, liikkua. 835 00:36:50,330 --> 00:36:54,440 Paljon tehokkaampaa vain on Jacob swap paikoissa Artie, 836 00:36:54,440 --> 00:36:56,710 toisin kuin pakottaa kaikki neljä nämä ihmiset, 837 00:36:56,710 --> 00:36:58,734 kiitos paljon, että niiden oikea asento. 838 00:36:58,734 --> 00:37:01,150 Mikä on mukavaa noin Artie nyt hän on hänen oikeassa asennossa. 839 00:37:01,150 --> 00:37:02,060 Tehdään tämä uudestaan. 840 00:37:02,060 --> 00:37:03,730 2, joka on pienin määrä olen nähnyt. 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 on ehdottomasti pienin. 844 00:37:07,467 --> 00:37:08,550 Ei tarvitse tehdä mitään työtä. 845 00:37:08,550 --> 00:37:09,320 Tehdään se uudestaan. 846 00:37:09,320 --> 00:37:10,070 6. 847 00:37:10,070 --> 00:37:10,640 Pienin? 848 00:37:10,640 --> 00:37:11,140 8. 849 00:37:11,140 --> 00:37:11,590 Ehei. 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 Minäpä muistan 4. 853 00:37:13,420 --> 00:37:13,950 3. 854 00:37:13,950 --> 00:37:15,110 Minäpä muistan 3. 855 00:37:15,110 --> 00:37:16,080 7, 5. 856 00:37:16,080 --> 00:37:18,490 Vähiten olen nähnyt tämän eteen on 3. 857 00:37:18,490 --> 00:37:20,340 Jos haluat tulla ulos. 858 00:37:20,340 --> 00:37:21,986 Mihin olemme menossa laittaa sinut? 859 00:37:21,986 --> 00:37:22,860 Ja mikä on nimesi? 860 00:37:22,860 --> 00:37:23,530 >> Alanna: Alanna. 861 00:37:23,530 --> 00:37:25,780 >> DAVID MALAN: Alanna, olemme täytyy häätää teidät. 862 00:37:25,780 --> 00:37:28,670 Mutta joka on tehokkaampi, vain vaihtaa kaksi ihmistä, 863 00:37:28,670 --> 00:37:31,850 kuin olla useita ihmisiä todella kiertää yli. 864 00:37:31,850 --> 00:37:32,850 Nyt tämä uudelleen. 865 00:37:32,850 --> 00:37:34,980 Aion valita 4, joten tule ulos. 866 00:37:34,980 --> 00:37:36,540 Ja kuka liikkua? 867 00:37:36,540 --> 00:37:37,750 Numero 8, tietenkin. 868 00:37:37,750 --> 00:37:40,260 Jos minä nyt löytää numero 5, tule ulos. 869 00:37:40,260 --> 00:37:42,104 Numero 8 nappaa häätää jälleen. 870 00:37:42,104 --> 00:37:43,770 Minä lähden nyt löytää numero 6 paikallaan. 871 00:37:43,770 --> 00:37:44,410 7 paikallaan. 872 00:37:44,410 --> 00:37:45,080 8 paikallaan. 873 00:37:45,080 --> 00:37:48,590 >> Mitä me vain teimme nyt jotain kutsutaan valinta lajitella, 874 00:37:48,590 --> 00:37:52,560 ja jos me visualisoida, se on menossa tuntea hieman erilainen. 875 00:37:52,560 --> 00:37:56,800 Mennään eteenpäin ja tästä menu täällä, tämä visualization-- 876 00:37:56,800 --> 00:38:02,920 katsotaanpa muuttaa to-- tule, Firefox. 877 00:38:02,920 --> 00:38:07,610 Katsotaanpa vaihtaa tämän valinnan lajitella. 878 00:38:07,610 --> 00:38:11,830 Ja katsotaanpa nopeuttaa sitä kuin ennen, ja aloittaa visualisointi nyt. 879 00:38:11,830 --> 00:38:13,990 Ja tämä algoritmi on eri fiilis. 880 00:38:13,990 --> 00:38:16,480 On jokaisen iteraation, rehellisesti, se on vieläkin yksinkertaisempaa. 881 00:38:16,480 --> 00:38:18,385 Olen vain valitsemalla pienimmän alkion. 882 00:38:18,385 --> 00:38:21,510 Nyt rehellisesti, sain hieman onnekas, että aikaa, koska se lajitellaan supernopea. 883 00:38:21,510 --> 00:38:22,660 Elementit olivat satunnaisia. 884 00:38:22,660 --> 00:38:25,520 Se ei ole, kuten tulemme lopulta katso, pohjimmiltaan nopeammin. 885 00:38:25,520 --> 00:38:29,400 Mutta katsotaanpa kolmas ja viimeinen lähestyä täällä, mitä on tekeillä. 886 00:38:29,400 --> 00:38:36,230 Joten mene eteenpäin ja nollata te viimeisen kerran olla tässä järjestyksessä täällä. 887 00:38:36,230 --> 00:38:38,450 >> Ja nyt aion olla hieman viisaampi, 888 00:38:38,450 --> 00:38:40,220 vain pyöristää meidän algoritmeja. 889 00:38:40,220 --> 00:38:41,230 Aion tehdä tämän. 890 00:38:41,230 --> 00:38:43,140 Aion mennä edestakaisin niin paljon. 891 00:38:43,140 --> 00:38:44,900 Suoraan sanottuna olen kyllästynyt Kaiken tämän läpikäymiseen. 892 00:38:44,900 --> 00:38:47,691 Olen juuri menossa tekemään mitä olen annetaan listan alkuun, 893 00:38:47,691 --> 00:38:49,460 ja aion lajitella että silloin ja siellä. 894 00:38:49,460 --> 00:38:50,140 Joten tässä ollaan. 895 00:38:50,140 --> 00:38:51,030 Numero 4. 896 00:38:51,030 --> 00:38:53,680 Aion lisätä numeron 4 osaksi lajiteltu luettelo. 897 00:38:53,680 --> 00:38:54,180 Tehty. 898 00:38:54,180 --> 00:38:58,300 Väitän nyt, ja vain tehdä tätä enemmän selkeä, tämä osa minun luettelo on järjestetty. 899 00:38:58,300 --> 00:39:02,610 Se on tavallaan typerä väite, mutta todellakin 4 lajitellaan listan kokoa yhdellä. 900 00:39:02,610 --> 00:39:04,210 Nyt aion ottaa numero 2. 901 00:39:04,210 --> 00:39:07,670 Numero 2 Minä lähden nyt aseta oikeaan paikkaan. 902 00:39:07,670 --> 00:39:08,680 Joten miten 2 kuuluu? 903 00:39:08,680 --> 00:39:09,824 On selvää, tänne. 904 00:39:09,824 --> 00:39:11,490 Joten mene eteenpäin ja muuttaa takaisin, jos voisit. 905 00:39:11,490 --> 00:39:14,406 Ja miksi et kaverit vain ottaa musiikki seisoo sinua tällä kertaa. 906 00:39:14,406 --> 00:39:17,020 Ja lähdetään väkisin työnnä sinua osaksi listan alkuun. 907 00:39:17,020 --> 00:39:17,936 Joten hieman enemmän työtä. 908 00:39:17,936 --> 00:39:20,890 Minulla oli siirtyä Jacob ympärillä, ja mikä on nimesi? 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 Mutta ainakin en mene edestakaisin. 912 00:39:24,350 --> 00:39:25,739 Olen vain ottaen asioita kuin menen. 913 00:39:25,739 --> 00:39:27,530 Olen vain lisäämällä ne oikeassa paikassa. 914 00:39:27,530 --> 00:39:29,220 6, tämä on oikeastaan ​​aika helppoa. 915 00:39:29,220 --> 00:39:31,510 Katsotaanpa lisätä sinut tuonne, jos Halusin siirtyä hieman. 916 00:39:31,510 --> 00:39:32,870 Numero 8, myös melko helppoa. 917 00:39:32,870 --> 00:39:33,741 Tuolla. 918 00:39:33,741 --> 00:39:34,240 Hitto. 919 00:39:34,240 --> 00:39:37,590 Numero 1 emme voi vain Vaihdetaan Amin täällä, 920 00:39:37,590 --> 00:39:39,340 Koska se menee sotkea järjestys. 921 00:39:39,340 --> 00:39:40,660 Joten meidän on oltava hieman viisaampi. 922 00:39:40,660 --> 00:39:42,770 Niin, Artie, jos voisit varmuuskopioida hetkeksi. 923 00:39:42,770 --> 00:39:46,550 Mennään eteenpäin ja siirtää nyt Toisin kuin edellisessä algoritmeja, 924 00:39:46,550 --> 00:39:50,910 tehdä tilaa Artie täällä alussa. 925 00:39:50,910 --> 00:39:54,690 Joten lopussa päivä, olen sellainen tekee mitä halusin välttää ennen. 926 00:39:54,690 --> 00:39:57,770 Ja niin minun algoritmi on tavallaan on päinvastainen, älyllisesti, 927 00:39:57,770 --> 00:39:59,070 siitä, mitä se alun perin oli. 928 00:39:59,070 --> 00:40:01,240 Teen vain siirtymistä eri kohdista. 929 00:40:01,240 --> 00:40:02,291 Nyt olen 3. 930 00:40:02,291 --> 00:40:02,790 Voi hitto. 931 00:40:02,790 --> 00:40:04,039 Meidän on tehtävä enemmän työtä uudelleen. 932 00:40:04,039 --> 00:40:05,060 Joten työntää sinut ulos. 933 00:40:05,060 --> 00:40:09,360 Siirrytään 8, 6, 4-- oh oh-- ja 3 ei mene oikeassa. 934 00:40:09,360 --> 00:40:11,490 Niin ainakin hiukan säästöjä tällä kertaa. 935 00:40:11,490 --> 00:40:13,100 7, ei liikaa tehtävää. 936 00:40:13,100 --> 00:40:15,370 Joten jos haluat pop takaisin, katsotaanpa aseta sinua. 937 00:40:15,370 --> 00:40:17,440 Ja lopuksi, 5, jos haluavat pop takaisin, me 938 00:40:17,440 --> 00:40:22,610 täytyy siirtää sinut,, te, kunnes viisi on paikallaan. 939 00:40:22,610 --> 00:40:25,670 >> Joten nyt nähdä tämä on korkealla tasolla graafisesti, 940 00:40:25,670 --> 00:40:31,080 Tehdään tämä algoritmi visualisointi yksi lisäaikaa. 941 00:40:31,080 --> 00:40:33,580 Joten tämä nimitämme lisäyslajittelun. 942 00:40:33,580 --> 00:40:37,700 Me ajaa sitä yhtä nopeasti, ja aloittaa sen täällä. 943 00:40:37,700 --> 00:40:39,580 Ja sekin on eri mieltä. 944 00:40:39,580 --> 00:40:42,180 Se on tavallaan paranee ja parempi, mutta se ei ole koskaan täydellinen 945 00:40:42,180 --> 00:40:44,630 kunnes menen ja sileä näitä aukkoja. 946 00:40:44,630 --> 00:40:47,860 Koska, jälleen, olen vain ottaa mitä Olen annetaan vasemmalta oikealle. 947 00:40:47,860 --> 00:40:50,350 Joten en saanut niin onnekas että kaikki oli täydellistä. 948 00:40:50,350 --> 00:40:54,190 Siksi meillä oli näitä pikku mispositions, että kiinteän ajan. 949 00:40:54,190 --> 00:40:58,890 >> Joten kaikki nämä algoritmit näyttävät ajaa hieman eri tahtiin. 950 00:40:58,890 --> 00:41:02,030 Itse asiassa, mikä sanot paras tai nopein tähän mennessä? 951 00:41:02,030 --> 00:41:03,450 Bubble sort, ensimmäinen? 952 00:41:03,450 --> 00:41:05,000 Valinta lajitella, toinen? 953 00:41:05,000 --> 00:41:08,450 Lisäyslajittelun, kolmas? 954 00:41:08,450 --> 00:41:10,710 Kuulen joidenkin valinta lajittelee. 955 00:41:10,710 --> 00:41:13,280 Muita ajatuksia? 956 00:41:13,280 --> 00:41:16,880 >> Joten näyttää siltä, ​​että kaikki nämä algoritmit 957 00:41:16,880 --> 00:41:22,400 ovat pohjimmiltaan aivan yhtä tehokas kuin kukin other-- tai päinvastoin, kuten 958 00:41:22,400 --> 00:41:25,980 tehoton kuin toisiaan, koska voimme tehdä perusteellisesti 959 00:41:25,980 --> 00:41:28,120 parempi kuin kaikki kolme näiden algoritmien. 960 00:41:28,120 --> 00:41:29,990 Ja se on hieman valkoinen valhe, too. 961 00:41:29,990 --> 00:41:32,580 kun sanon niin tehokas tai tehoton, 962 00:41:32,580 --> 00:41:35,040 joka on ainakin super-suuret arvot n. 963 00:41:35,040 --> 00:41:38,450 Kun meillä on vain kahdeksan ihmistä täällä, tai ehkä 50 tai niin baareissa ruudulla, 964 00:41:38,450 --> 00:41:41,645 sinun ehdottomasti huomaat eroja Näistä kolme algoritmeja. 965 00:41:41,645 --> 00:41:44,020 Mutta kuten n, ihmisten määrä, tai useita numeroita, 966 00:41:44,020 --> 00:41:46,350 tai joukko ihmisiä puhelimeen kirja, tai useita web-sivuja 967 00:41:46,350 --> 00:41:48,230 Googlen tietokannasta saa isompia ja isompia, 968 00:41:48,230 --> 00:41:51,650 näemme, että kaikki nämä kolme algoritmit ovat oikeastaan ​​aika huono. 969 00:41:51,650 --> 00:41:54,060 Ja voimme tehdä perusteellisesti parempaa. 970 00:41:54,060 --> 00:41:56,830 >> Katsotaanpa katsomaan lopuksi, mitä nämä algoritmit pitää 971 00:41:56,830 --> 00:41:59,520 kuulostavat yhteydessä muutama muu 972 00:41:59,520 --> 00:42:03,550 sekä tapa tämän visualisointi täällä 973 00:42:03,550 --> 00:42:06,860 että esittelee meille määrän algoritmeja. 974 00:42:06,860 --> 00:42:10,330 Mennään eteenpäin ja onnittelen osallistujista täällä, jotka kaikki 975 00:42:10,330 --> 00:42:11,690 järjestetty erittäin hyvin. 976 00:42:11,690 --> 00:42:15,124 Jos haluat ottaa jakaus lahja. 977 00:42:15,124 --> 00:42:16,540 Voit pitää numerot samoin. 978 00:42:16,540 --> 00:42:19,460 979 00:42:19,460 --> 00:42:22,520 Ja mitä näet, tai pikemminkin kuulla, nyt 980 00:42:22,520 --> 00:42:25,710 on, että laitamme äänet kullekin näistä baareja 981 00:42:25,710 --> 00:42:28,660 ja liittää sen ohjelmisto, eri äänen taajuutta, 982 00:42:28,660 --> 00:42:33,970 voit ympäröidä mieltäsi enemmän audioly ympärille, mitä kukin näistä asioista 983 00:42:33,970 --> 00:42:34,470 näyttää. 984 00:42:34,470 --> 00:42:39,325 Joista ensimmäinen on lisäyslajittelun 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 >> Tämä on kupla lajitella. 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 >> Valinta lajitella. 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 >> Jotain kutsutaan yhdistämisen tavallaan. 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 lajitella. 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 >> Se on siinä CS50. 1000 00:44:09,430 --> 00:44:13,360 Nähdään keskiviikkona. 1001 00:44:13,360 --> 00:44:16,671 >> Kertoja: Ja nyt, "Deep Ajatuksia ", jonka Daven Farnham. 1002 00:44:16,671 --> 00:44:19,910 1003 00:44:19,910 --> 00:44:21,590 Miksi se silmukka? 1004 00:44:21,590 --> 00:44:23,200 Miksi ei tehdä paremmin? 1005 00:44:23,200 --> 00:44:25,970 Saisin viisi silmukka. 1006 00:44:25,970 --> 00:44:28,720 >> [Naurua]