1 00:00:00,000 --> 00:00:10,900 2 00:00:10,900 --> 00:00:15,860 >> HIZLARIA 1: Ondo da, beraz, hau da, CS50 hau da, bost aste bukaera honetan. 3 00:00:15,860 --> 00:00:19,220 Eta, azken aldiz gogoratzen garela hasi fancier datuak begira 4 00:00:19,220 --> 00:00:22,310 Konpondu hasi egiturak arazo, hori aurkeztu hasi 5 00:00:22,310 --> 00:00:25,640 arazo berriak, baina hori da gakoa hariztaketa moduko izan ditugula 6 00:00:25,640 --> 00:00:27,940 den nodo nodo egiten hasi zen. 7 00:00:27,940 --> 00:00:30,085 Eta noski, hau da banaka lotuta zerrenda bat. 8 00:00:30,085 --> 00:00:31,960 Eta arabera banaka lotuta, Esan nahi dut, ez da bakar bat 9 00:00:31,960 --> 00:00:33,380 nodo horietako bakoitzean artean haria. 10 00:00:33,380 --> 00:00:35,890 Turns hazlerik egin dezakezu Bi aldiz lotuta zerrendak bezalako gauzak 11 00:00:35,890 --> 00:00:38,470 Horren bidez, gezi bat behar duzu bi norabideetan joan da, eta horrek 12 00:00:38,470 --> 00:00:40,320 eraginkortasun zenbait laguntzeko. 13 00:00:40,320 --> 00:00:42,000 Baina hau konpondu arazoa? 14 00:00:42,000 --> 00:00:43,500 Zer arazo hau konpondu zuen? 15 00:00:43,500 --> 00:00:46,620 Zergatik zaintzeko genuen astelehenean? 16 00:00:46,620 --> 00:00:49,820 Zergatik, teorian, ez zuen axola astelehenean dugu? 17 00:00:49,820 --> 00:00:50,630 Zer egiten du? 18 00:00:50,630 --> 00:00:51,950 >> Ikusleak: dinamikoki ahal dugu tamainaz aldatu da. 19 00:00:51,950 --> 00:00:53,740 >> HIZLARIA 1: OK, ahal dugu, beraz, dinamikoki tamainaz aldatu da. 20 00:00:53,740 --> 00:00:54,710 Ondo egina duzu, bai. 21 00:00:54,710 --> 00:00:57,560 Beraz dinamikoki ditzakezu resize honetan Datuen egitura, array bat, berriz, 22 00:00:57,560 --> 00:01:00,760 oroitzapen, jakin behar duzu priori zenbat espazio nahi duzu 23 00:01:00,760 --> 00:01:03,870 eta pixka bat gehiago behar izanez gero espazioa, Oraindik motatako zorte. 24 00:01:03,870 --> 00:01:05,560 Array berri oso bat sortu behar duzu. 25 00:01:05,560 --> 00:01:07,893 Guztia eraman behar duzu zure beste batetik, datu, 26 00:01:07,893 --> 00:01:10,600 azkenean askatzeko zaharrak array , ahal duzu eta, ondoren, jarraitu bada. 27 00:01:10,600 --> 00:01:13,891 Zein besterik ez oso garestia sentitzen eta oso eraginkorra, eta hain zuzen ere, ahal izango da. 28 00:01:13,891 --> 00:01:14,890 Baina hori ez da guztia ona. 29 00:01:14,890 --> 00:01:18,180 Prezioa ordaindu dugu, zer izan zen nabarmenagoa prezioen dugu 30 00:01:18,180 --> 00:01:20,550 lotuta zerrenda bat erabiliz ordaindu? 31 00:01:20,550 --> 00:01:22,825 >> Ikusleak: behar dugu erabili horietako bakoitzerako espazio bikoitzean. 32 00:01:22,825 --> 00:01:25,200 HIZLARIA 1: Bai, orain behar dugu gutxienez bi aldiz, askoz leku gisa. 33 00:01:25,200 --> 00:01:27,700 Izan ere, konturatu nintzen argazki honetan nahiz eta pixka bat engainagarria, 34 00:01:27,700 --> 00:01:32,200 CS50 moderno asko ere IDE delako ordenagailuak, erakusle edo helbide 35 00:01:32,200 --> 00:01:33,700 Ez da, hain zuzen, lau byte. 36 00:01:33,700 --> 00:01:36,090 Da oso sarritan horiek zortzi egun byte, eta horrek 37 00:01:36,090 --> 00:01:38,530 beheko bitartekorik laukizuzenak ez errealitatean 38 00:01:38,530 --> 00:01:40,900 diren mota bi aldiz, zer idatzi dut herri gisa big, 39 00:01:40,900 --> 00:01:44,409 horrek esan nahi du hiru aldiz erabiltzen ari zarela espazio askoz bestela izan liteke beste. 40 00:01:44,409 --> 00:01:46,700 Orain, aldi berean, ez gara oraindik byte hizketan, ezta? 41 00:01:46,700 --> 00:01:49,140 Oraindik ez dute zertan hitz egiten dugu megabyte edo gigabyte, 42 00:01:49,140 --> 00:01:51,000 egiturak lortu big datu horiek ezean. 43 00:01:51,000 --> 00:01:54,510 >> Eta, beraz, gaur egun kontuan hartu hasten gara nola liteke datuak aztertuko ditugu 44 00:01:54,510 --> 00:01:57,310 gehiago eraginkortasunez ere bada Izan ere, datu handiagoa lortzen. 45 00:01:57,310 --> 00:02:00,360 Baina saia gaitezen canonicalize eragiketak lehen 46 00:02:00,360 --> 00:02:02,460 hauetan egin ahal izango dituzu Datu-egitura mota. 47 00:02:02,460 --> 00:02:04,790 Beraz, bat lotuta antzeko zerbait Zerrenda oro har onartzen 48 00:02:04,790 --> 00:02:07,514 eragiketak gustatzen ezabatu sartu, eta bilatu. 49 00:02:07,514 --> 00:02:08,639 Eta zer esan nahi dut? 50 00:02:08,639 --> 00:02:11,222 Bakarrik esan ohi duten, pertsona daude lotuta zerrenda erabiliz gero, 51 00:02:11,222 --> 00:02:14,287 dute edo beste norbaitek jarri ditu abian ezabatu, txertatze moduan jokatzen duela 52 00:02:14,287 --> 00:02:16,120 eta bilaketa, ahal duzu orain benetan zerbait egin 53 00:02:16,120 --> 00:02:18,030 Datuen egitura batera erabilgarria. 54 00:02:18,030 --> 00:02:20,760 Beraz, dezagun begirada bat nola liteke ezartzeko dugu at 55 00:02:20,760 --> 00:02:24,530 lotuta zerrenda kodea batzuk honela. 56 00:02:24,530 --> 00:02:27,885 >> Beraz, hori besterik ez C kodea batzuk, ez, nahiz eta programa osoa 57 00:02:27,885 --> 00:02:29,260 benetan dudala azkar harrotua. 58 00:02:29,260 --> 00:02:32,300 Ez da banaketa alorrean online kodea, ez du benetan exekutatu delako. 59 00:02:32,300 --> 00:02:33,790 Baina konturatu besterik ez dut iruzkin bat esan du, 60 00:02:33,790 --> 00:02:36,130 dot dot dot, ez da zerbait ez dot dot dot, zerbait dago. 61 00:02:36,130 --> 00:02:38,410 Eta dezagun begiratu besterik zer mamitsuena zatiak dira. 62 00:02:38,410 --> 00:02:40,790 Beraz, hiru lerro, gogorarazten hori da orain 63 00:02:40,790 --> 00:02:45,960 proposatutako azken nodo bat deklaratzen dugu denbora, objektuak angeluzuzena horietakoa. 64 00:02:45,960 --> 00:02:48,790 Int bat N egingo dugun deitu ditu, baina ezer esaten diogu, 65 00:02:48,790 --> 00:02:51,920 eta, ondoren, hurrengo izeneko egitura nodo izar bat. 66 00:02:51,920 --> 00:02:55,520 Eta argi izaten, bigarren hori lerroa, on line sei, zer da hori? 67 00:02:55,520 --> 00:02:57,930 Zer egiten ari da guretzat? 68 00:02:57,930 --> 00:03:01,044 Zalantzarik gabe, itxura gehiago delako gure ohiko aldagai baino críptica. 69 00:03:01,044 --> 00:03:02,740 >> Ikusleak: mugitu bat baino gehiago egiten du. 70 00:03:02,740 --> 00:03:04,650 >> HIZLARIA: 1 mugitu bat baino gehiago egiten du. 71 00:03:04,650 --> 00:03:08,580 Eta hain zuzen ere, helbidea gordetzeko izango da 72 00:03:08,580 --> 00:03:11,582 hori ekarri nahi izan nodoaren semantikoki ondoan, ezta? 73 00:03:11,582 --> 00:03:13,540 Beraz, ez da joan zertan ezer mugitu. 74 00:03:13,540 --> 00:03:15,290 Besterik joan balio bat gordetzeko, hau da, 75 00:03:15,290 --> 00:03:17,170 helbidea izango da beste nodo batzuk, 76 00:03:17,170 --> 00:03:20,810 eta horregatik esan dugu, eta egitura nodo star, star denotatu 77 00:03:20,810 --> 00:03:22,370 erakuslea edo helbidea. 78 00:03:22,370 --> 00:03:26,390 Ados, beraz, gaur egun dugun suposatuko baduzu N honetan gurekin eskuragarri, eta dezagun 79 00:03:26,390 --> 00:03:29,490 suposatuko beste norbaitek ditu Osoko zenbaki osoa sorta bat txertatuko 80 00:03:29,490 --> 00:03:30,400 Lotuta zerrenda. 81 00:03:30,400 --> 00:03:35,640 Eta lotzen zerrenda da adierazi uneren arabera 82 00:03:35,640 --> 00:03:39,040 Zerrenda izeneko aldakorra da Hemen ere gainditu parametro gisa, 83 00:03:39,040 --> 00:03:43,120 Nola joan lerro buruz 14 bilaketa gauzatzeko? 84 00:03:43,120 --> 00:03:45,990 Beste era batera esanda, I gauzatzeko banaiz horren helburua bizitzan funtzio 85 00:03:45,990 --> 00:03:48,889 int bat eta gero hartu lotutako zerrenda baten hasieran, 86 00:03:48,889 --> 00:03:50,430 Hori lotuta zerrendan erakuslea da. 87 00:03:50,430 --> 00:03:52,992 Lehen bezala, nork uste dut David astelehenean gure boluntario izan zen, 88 00:03:52,992 --> 00:03:54,700 zuen seinalatuz zen Lotuta osoak zerrenda, 89 00:03:54,700 --> 00:03:57,820 gara pasatzen ari bagina bezala da David gure argudioa hemen bezala. 90 00:03:57,820 --> 00:03:59,990 Nola egiten dugu zerrenda honetan zeharkatzen buruz? 91 00:03:59,990 --> 00:04:04,640 Beno, bihurtzen da, nahiz erakusleak nahiko berria orain guri dira, 92 00:04:04,640 --> 00:04:07,010 hau nahiko egin ahal izango dugu zuzenean. 93 00:04:07,010 --> 00:04:09,500 >> Aurrera joan noa eta Aldi baterako aldagai bat izendatuko duten 94 00:04:09,500 --> 00:04:12,364 konbentzio besterik ez da joan erakuslea deitu behar da, edo PTR, 95 00:04:12,364 --> 00:04:14,030 baina zuk ezer nahi duzun deitu daiteke. 96 00:04:14,030 --> 00:04:16,470 Eta ez dut hasieratzeko joan zerrendatik hasieraraino. 97 00:04:16,470 --> 00:04:20,050 Beraz, mota dezakezu honen ustez Lehengo egunean me irakaslearekin, 98 00:04:20,050 --> 00:04:23,580 motatako norbait seinalatuz Gure gizakiak boluntarioen artean. 99 00:04:23,580 --> 00:04:26,470 Beraz, aldi baterako aldagai bat hori da, naiz ez da gauza bera seinalatuz 100 00:04:26,470 --> 00:04:31,390 Gure duten coincidentally izeneko boluntario David ere seinalatuz zen. 101 00:04:31,390 --> 00:04:35,440 Orain erakuslea da berriz ez nulua, zeren abisuaren 102 00:04:35,440 --> 00:04:40,350 nulua duten Sentinel balio berezi batzuk the demarcates zerrenda amaieran, 103 00:04:40,350 --> 00:04:44,280 I, berriz, ez du seinalatuz naiz orain Gure azken boluntario bezala lurrean 104 00:04:44,280 --> 00:04:47,190 zen, goazen aurrera eta honako hau. 105 00:04:47,190 --> 00:04:51,820 Erakuslea bada eta gaur egun, mota nahi dut ikasleak zer egin genuen egin 106 00:04:51,820 --> 00:04:57,410 erakuslea dot hurrengo structure-- bada berdin baizik, erakuslea dot N berdinen 107 00:04:57,410 --> 00:05:02,290 n aldakorra berdin, du Argumentu hori izan da gainditu, 108 00:05:02,290 --> 00:05:05,370 gero, aurrera egin nahi dut eta esan egia itzuliko. 109 00:05:05,370 --> 00:05:11,020 Zenbaki N-barrutik Aurkitu ditut nire zerrenda lotuta nodo bat. 110 00:05:11,020 --> 00:05:13,500 Baina dot jada ez Testuinguru honetan lan egiten du, 111 00:05:13,500 --> 00:05:17,260 delako erakuslea, PTR, da Hain zuzen ere, erakuslea, helbide bat, 112 00:05:17,260 --> 00:05:20,632 Egia esan, ezin dugu wonderfully azkenik sintaxia zati bat erabili 113 00:05:20,632 --> 00:05:22,590 Marka mota hori intuitiboa zentzu eta egia esan, 114 00:05:22,590 --> 00:05:27,870 gezi bat hemen erabili, eta horrek esan nahi joan osokoa han ere, helbide horretara. 115 00:05:27,870 --> 00:05:30,160 Beraz, oso antzekoa da dot operadorea espiritua, 116 00:05:30,160 --> 00:05:33,860 baina erakuslea da, ez delako erakuslea eta ez benetako egitura bat bera, 117 00:05:33,860 --> 00:05:35,380 gezi erabili besterik ez dugu. 118 00:05:35,380 --> 00:05:40,620 >> Beraz, bada, egungo nodo hori ez nuenez, Aldi baterako aldagai, naiz seinalatuz 119 00:05:40,620 --> 00:05:43,060 ez da N, zer egin nahi dut? 120 00:05:43,060 --> 00:05:45,910 Beno, nire giza boluntario Hemen izan genuen joan den egunean, 121 00:05:45,910 --> 00:05:49,710 Nire lehen giza ez bada bat dut nahi, eta, agian, bigarren Giza ez da 122 00:05:49,710 --> 00:05:52,660 Bat egin nahi dut, eta hirugarrena, berriz, I Fisikoki mantentzeko mugitzea. 123 00:05:52,660 --> 00:05:54,690 Like nola ez zapaldu dut zerrenda baten bidez? 124 00:05:54,690 --> 00:05:57,470 Array bat izan dugu, zuk besterik ez dut plus plus bezala egin. 125 00:05:57,470 --> 00:06:03,660 Baina kasu honetan, aski da egiten erakuslea, lortzen, erakusle, hurrengo. 126 00:06:03,660 --> 00:06:07,580 Beste era batera esanda, hurrengo eremuan Ezkerreko eskuak guztia bezalakoa da 127 00:06:07,580 --> 00:06:10,880 gure astelehenean giza boluntarioak beste nodo batzuk amaitzen erabiliz ziren. 128 00:06:10,880 --> 00:06:12,890 Horiek euren hurrengo bizilagunak ziren. 129 00:06:12,890 --> 00:06:17,060 >> Beraz, zerrenda honen bidez zapaldu nahi badut, Ezin dut besterik ez dut plus plus jada, 130 00:06:17,060 --> 00:06:20,120 Ordez daukat esateko I, erakusle, va 131 00:06:20,120 --> 00:06:24,650 edozein izanda ere, hurrengo eremua da berdina, hurrengo eremua da, hurrengo eremua da, 132 00:06:24,650 --> 00:06:28,350 ezker esku guztiek honako izan duten etapa seinalatuz dugu 133 00:06:28,350 --> 00:06:30,000 Ondorengo balioak batzuk. 134 00:06:30,000 --> 00:06:32,590 Eta bidez lortu badut iterazio osoa dela, 135 00:06:32,590 --> 00:06:39,330 eta, azkenik, nulua hit dut ez izatea aurkitutako N oraindik, itzuli besterik ez dut faltsua. 136 00:06:39,330 --> 00:06:44,100 Beraz, berriro ere, hori hemen egiten ari garen guztia, duela une bat argazki bakoitzeko, 137 00:06:44,100 --> 00:06:47,840 da seinalatuz hasita Zerrendaren zentzuzkoa hasita. 138 00:06:47,840 --> 00:06:50,970 Eta ondoren, egiaztatu, balioa da I bederatzi berdina bila nabil? 139 00:06:50,970 --> 00:06:52,650 Hala bada, egia itzuliko dut eta egin dut. 140 00:06:52,650 --> 00:06:56,450 Hala ez bada, nire eskua eguneratu dut, AKA erakuslea, apuntatzen 141 00:06:56,450 --> 00:06:59,540 hurrengo gezi en kokapenean, eta ondoren, hurrengo gezi kokalekua 142 00:06:59,540 --> 00:07:00,480 eta hurrengoan. 143 00:07:00,480 --> 00:07:03,770 Ez dut besterik gabe array hau paseoan. 144 00:07:03,770 --> 00:07:06,010 >> Beraz, berriro ere, nork zaintzen? 145 00:07:06,010 --> 00:07:07,861 Like zer da horretarako osagai bat? 146 00:07:07,861 --> 00:07:10,360 Beno, gogoratzen sartu garela pila baten ideia, eta horrek 147 00:07:10,360 --> 00:07:15,400 da datuak abstraktu bat idatzi neurrian izan ere Ez bat C gauza, ez da CS50 gauza bat, 148 00:07:15,400 --> 00:07:19,430 Ideia abstraktu bat, ideia hau da bata bestearen gainean gauzak pilatzeko 149 00:07:19,430 --> 00:07:21,820 Hori egikaritu egin daiteke modu ezberdinetan sortak. 150 00:07:21,820 --> 00:07:25,600 Eta proposatu dugu, modu batean izan zen sorta bat, edo lotuta zerrenda batekin. 151 00:07:25,600 --> 00:07:29,570 Eta bihurtzen da kanonikoki hori, bat pila gutxienez bi eragiketa onartzen. 152 00:07:29,570 --> 00:07:32,320 Eta buzz hitz push dira, nahi bultza zerbait pila gainean, 153 00:07:32,320 --> 00:07:34,770 erretilu berri bat bezala jantokia, edo pop, 154 00:07:34,770 --> 00:07:39,000 horrek esan nahi du goreneko kentzeko jangela pila batetik erretilua 155 00:07:39,000 --> 00:07:41,500 aretoan, eta gero, agian batzuk beste eragiketa baita. 156 00:07:41,500 --> 00:07:45,770 Beraz, nola liteke egitura definitzen dugu ari gara orain pila bat deituz? 157 00:07:45,770 --> 00:07:50,020 >> Beno, baldintza guztiak izan dugu Gure eskura sintaxia C. ere esan dut, 158 00:07:50,020 --> 00:07:53,830 eman dit mota definizio bat pila baten barruan eta egitura bat, 159 00:07:53,830 --> 00:07:58,030 Array bat da esan behar, baten noa zenbaki-sorta oso eta, ondoren, tamaina. 160 00:07:58,030 --> 00:08:00,930 Beraz, beste era batera esanda, nahi badut hau ezartzeko kodea ere, 161 00:08:00,930 --> 00:08:03,830 Goazen me eta mota marraztu Zer da hau esaten. 162 00:08:03,830 --> 00:08:06,317 Beraz, hori esaten, emadazu egitura hori lortu array bat, 163 00:08:06,317 --> 00:08:09,400 eta ez dakit zer ahalmena da, itxuraz konstante batzuk egin dut hori 164 00:08:09,400 --> 00:08:10,858 beste nonbait definitu, eta hori da isuna. 165 00:08:10,858 --> 00:08:15,260 Baina demagun besterik ez da inor, bi, hiru, lau, bost. 166 00:08:15,260 --> 00:08:16,700 Beraz, edukiera 5 da. 167 00:08:16,700 --> 00:08:21,730 Barrutik elementu hau nire egitura zenbakiak deitu behar da. 168 00:08:21,730 --> 00:08:24,020 Eta gero, bat behar dut beste aldagai itxuraz 169 00:08:24,020 --> 00:08:27,814 izeneko tamaina hasieran noa zeintzuk diren zero hasieratu. 170 00:08:27,814 --> 00:08:29,730 Bada ez da ezer ere pila, tamaina zero da, 171 00:08:29,730 --> 00:08:31,420 eta zabor balio da zenbakietan. 172 00:08:31,420 --> 00:08:33,450 Daukat zer han, besterik gabe, ideia ez. 173 00:08:33,450 --> 00:08:36,059 >> Beraz bultza nahi badut pila gainean zerbait, 174 00:08:36,059 --> 00:08:40,780 Suposatzen funtzioa bultzada deitu dut, eta Bultza 50, 50 zenbaki bezala esaten dut, 175 00:08:40,780 --> 00:08:44,090 non zenukete proposatuko I marraztu array honetan? 176 00:08:44,090 --> 00:08:47,124 Bost erantzun posible ugari bertaratu da. 177 00:08:47,124 --> 00:08:48,790 Nora egin 50 zenbakira bultza nahi duzu? 178 00:08:48,790 --> 00:08:51,899 Helburua hemen bada, berriro, deitu du funtzioa push, argumentu bat pasatzen 179 00:08:51,899 --> 00:08:52,940 50eko, non ez dut jarri? 180 00:08:52,940 --> 00:08:55,680 181 00:08:55,680 --> 00:08:59,052 Bost Posible% 20 aukera behar bezala asmatzen. 182 00:08:59,052 --> 00:08:59,896 Bai? 183 00:08:59,896 --> 00:09:00,740 >> Ikusleak: Far eskubidea. 184 00:09:00,740 --> 00:09:01,990 >> HIZLARIA 1: Far eskubidea. 185 00:09:01,990 --> 00:09:08,359 Ez dago gaur egun,% 25 aukera bat behar bezala asmatzen. 186 00:09:08,359 --> 00:09:09,650 Beraz, hori litzateke benetan fina. 187 00:09:09,650 --> 00:09:12,770 Konbentzio bidez, sorta batekin esango dut, Oro har, ez genuke utzi goialdean hasteko, 188 00:09:12,770 --> 00:09:14,519 baina, zalantzarik gabe, ezin izan dugu eskubidea hasiko da. 189 00:09:14,519 --> 00:09:17,478 Beraz spoiler hemen izango litzateke naiz seguruenik ezkerreko marraztuko ditu, 190 00:09:17,478 --> 00:09:20,060 besterik array normal bat, non ere gustatuko I hasiko da ezkerretik eskuinera. 191 00:09:20,060 --> 00:09:21,780 Baina baduzu irauli aritmetika, fina. 192 00:09:21,780 --> 00:09:23,060 Besterik ez da, konbentzionalak ez. 193 00:09:23,060 --> 00:09:24,880 Ados, bat egin behar dut Gehiago aldaketa arren. 194 00:09:24,880 --> 00:09:27,710 Orain dudala zerbait bultzatu Nik pila gainean, zer da hurrengoa? 195 00:09:27,710 --> 00:09:29,400 >> Ondo da, Kontatzailea tamaina behar dut. 196 00:09:29,400 --> 00:09:32,600 Beraz, aurrera eta joan me eguneratu hau, zero izan zen. 197 00:09:32,600 --> 00:09:35,950 Eta horren ordez, orain, noa bata balioa jartzen. 198 00:09:35,950 --> 00:09:39,460 Eta orain, demagun beste bultza dut zenbakia pila gainean, bezala 51. 199 00:09:39,460 --> 00:09:42,680 Beno, beste bat gehiago egin nahi izan dut aldaketa, hau da, bi muga arte. 200 00:09:42,680 --> 00:09:46,100 Eta gero, suposatzen bat gehiago bultza dut kopurua 61 bezalako pila gainean, 201 00:09:46,100 --> 00:09:52,530 orain tamaina eguneratu behar dut inor gehiago denbora, eta 3 balioa tamainaren bezala lortu. 202 00:09:52,530 --> 00:09:54,690 Eta orain, demagun pop deitu nion. 203 00:09:54,690 --> 00:09:57,250 Orain pop, konbentzio, ez du argumentu bat hartu. 204 00:09:57,250 --> 00:10:00,430 Pila batekin, oro har, erretiluko metaforaren point 205 00:10:00,430 --> 00:10:03,450 da ez duzula diskrezioa dute joan erretilu hori lortzeko, egin daitekeen guztia 206 00:10:03,450 --> 00:10:06,330 da bat goreneko irekiko pila, hain zuzen ere. 207 00:10:06,330 --> 00:10:08,010 Hori da datu-egitura zer honek. 208 00:10:08,010 --> 00:10:12,250 >> Beraz, logika horren arabera badut esan pop, zer dator off? 209 00:10:12,250 --> 00:10:13,080 Beraz, 61. 210 00:10:13,080 --> 00:10:15,402 Beraz, benetan zer ordenagailua da memorian egingo? 211 00:10:15,402 --> 00:10:16,610 Zer esan nahi du nire kode egin? 212 00:10:16,610 --> 00:10:20,330 Zer egingo zenuke zuk proposatzen pantailan agertzen diren aldatu dugu? 213 00:10:20,330 --> 00:10:23,410 Zer aldatu behar? 214 00:10:23,410 --> 00:10:24,960 Sentitzen dugu? 215 00:10:24,960 --> 00:10:26,334 Beraz, 61 lortu genuen kentzeko. 216 00:10:26,334 --> 00:10:27,500 Beraz, behin betiko egin daiteke hori. 217 00:10:27,500 --> 00:10:28,640 Eta 61 gai naiz kentzeko. 218 00:10:28,640 --> 00:10:30,980 Eta gero, zer beste aldaketaren beharra gertatuko? 219 00:10:30,980 --> 00:10:33,160 Tamaina ziurrenik atzera joateko bi aukera du. 220 00:10:33,160 --> 00:10:34,210 Eta beraz, hori da isuna. 221 00:10:34,210 --> 00:10:36,690 Baina a minute, tamaina itxaron Une batean, duela hiru urte. 222 00:10:36,690 --> 00:10:38,240 Dezagun, besterik gabe behatu check azkar bat utzi. 223 00:10:38,240 --> 00:10:41,810 Nola jakin genuen dugun Wanted 61 kentzeko? 224 00:10:41,810 --> 00:10:42,760 Leihoa ari garelako. 225 00:10:42,760 --> 00:10:46,450 Eta beraz, bigarren etxebizitza tamaina hori daukat. 226 00:10:46,450 --> 00:10:48,470 >> Itxaron minutu bat, naiz atzera pentsatzen, astean bi 227 00:10:48,470 --> 00:10:51,660 denean hitz egiten hasi ginen arrayak, non hau zen kokapena zero, 228 00:10:51,660 --> 00:10:55,920 Hau izan zen, hiri bat, hau izan zen kokapena bi, hau kokapena hiru, lau da, 229 00:10:55,920 --> 00:10:58,460 itxura bezalakoa da tamainaren arteko erlazioa 230 00:10:58,460 --> 00:11:02,780 eta hori kendu nahi dut elementua Dirudienez sorta batetik nahiko luke zer? 231 00:11:02,780 --> 00:11:05,120 Tamaina ken bat. 232 00:11:05,120 --> 00:11:07,786 Eta beraz, gizakiak nola ezagutzen dugun 61 datorrela. 233 00:11:07,786 --> 00:11:09,160 Nola da ordenagailua jakin behar? 234 00:11:09,160 --> 00:11:11,701 Zure kodea, non duzu seguraski tamaina ken bat egin nahi, 235 00:11:11,701 --> 00:11:14,950 beraz, hiru ken bat, bi, eta hori da, esan nahi 61 kendu nahi dugu. 236 00:11:14,950 --> 00:11:18,000 Eta gero, hain zuzen eguneratu ahal beraz, tamaina horretako tamaina orain 237 00:11:18,000 --> 00:11:20,300 Hiru doa bi besterik ez den. 238 00:11:20,300 --> 00:11:24,520 Eta besterik pedante izan nahi du, noa Hori egin dut, eskuineko proposatzeko? 239 00:11:24,520 --> 00:11:27,660 Senez proposatu duzu zuzentasunez 61 behar dut kentzeko. 240 00:11:27,660 --> 00:11:30,700 Baina ez dute mota horretako I Sort ahaztuak 61 kentzeko? 241 00:11:30,700 --> 00:11:33,790 Eraginkortasunez Nik ahaztuta Egia esan, ez da hori. 242 00:11:33,790 --> 00:11:37,680 Eta uste Pset4 atzera, zuk irakurri bada Kernet buruzko artikulu, PDF 243 00:11:37,680 --> 00:11:40,780 izan dugun you guys irakurri, edo zuk Aste honetan irakurri beharko Pset4 da. 244 00:11:40,780 --> 00:11:44,300 Gogoratzen hori da, benetan oso lotuta daudenak ordenagailua Kernet ideia osoa. 245 00:11:44,300 --> 00:11:47,820 Zer ordenagailu bat, oro har, ez da, ahazten besterik ez da, non zerbait da, 246 00:11:47,820 --> 00:11:51,300 baina ez da joan, eta atsegin saiatu da urratu out edo jaramonik ez 247 00:11:51,300 --> 00:11:54,560 zero eta bai bit horiek edo beste ausazko eredua batzuk 248 00:11:54,560 --> 00:11:56,690 egin zaitez beraz, nahita ez baduzu. 249 00:11:56,690 --> 00:11:58,930 Beraz, zure intuizioa zen eskubidea, gaitezen 61 kentzeko. 250 00:11:58,930 --> 00:12:00,650 Baina, egia esan, ez dugu kezkatu. 251 00:12:00,650 --> 00:12:04,040 Besterik ez duzu ahaztu behar dugu ez da gure tamaina aldatuz. 252 00:12:04,040 --> 00:12:05,662 >> Orain ez dago pila honekin arazo bat da. 253 00:12:05,662 --> 00:12:07,620 Gauzak bultzaka jarraitzen badut pila gainean, zer da 254 00:12:07,620 --> 00:12:11,167 jakina gertatuko gutxiren buruan une denboran? 255 00:12:11,167 --> 00:12:12,500 Den espazioa agortu goaz. 256 00:12:12,500 --> 00:12:13,580 Eta zer egiten dugu? 257 00:12:13,580 --> 00:12:14,680 Mota horretako izorratu dugu. 258 00:12:14,680 --> 00:12:19,000 Ekintza honek, ez du utzi array tamaina aldatu digu, erabiliko duelako 259 00:12:19,000 --> 00:12:21,240 sintaxia hau, baduzu uste back aste bi, 260 00:12:21,240 --> 00:12:23,520 behin deklaratu duzun array baten tamaina, 261 00:12:23,520 --> 00:12:26,780 Oraindik ez dugu oraindik non ikusten mekanismo bat array tamaina aldatu ahal izango dira. 262 00:12:26,780 --> 00:12:29,020 Eta hain zuzen ere, C ez dauka eginbide hori. 263 00:12:29,020 --> 00:12:32,524 Esaten baduzu eman dit bost Nths, deitu zenbakiak, 264 00:12:32,524 --> 00:12:33,940 Hori da lortu nahi bazoazela guztiak. 265 00:12:33,940 --> 00:12:38,790 Beraz, gaur egun egiten dugu, astelehenetan, izan irtenbide bat adierazteko gaitasuna 266 00:12:38,790 --> 00:12:42,480 nahiz eta, besterik gabe, pentsatzen dugu behar gure pila definizioa 267 00:12:42,480 --> 00:12:46,840 hard-kodetuak array batzuk ez izan, baina besterik Helbide bat gordetzeko. 268 00:12:46,840 --> 00:12:47,890 >> Zergatik da hau? 269 00:12:47,890 --> 00:12:51,690 Orain dugu eroso egon Izan ere, nire programa exekutatzen denean, 270 00:12:51,690 --> 00:12:53,730 Naiz zentzuzkoa joan Giza eskatu behar dute, 271 00:12:53,730 --> 00:12:55,110 Zenbat zenbaki ez gorde nahi duzu? 272 00:12:55,110 --> 00:12:56,776 Beraz, sarrera nonbait etorriko da. 273 00:12:56,776 --> 00:12:59,140 Baina behin ezagutzen dut kopurua, orduan besterik ezin dut 274 00:12:59,140 --> 00:13:02,470 zer funtziona emateko erabili me memoria zatia? 275 00:13:02,470 --> 00:13:03,580 Malloc erabili ahal izango dut. 276 00:13:03,580 --> 00:13:06,710 Eta edozein kopuru esan dezaket byte Nths hauetarako itzuli nahi dut. 277 00:13:06,710 --> 00:13:10,910 Eta guztia zenbakiak gorde behar dut aldakorreko hemen egitura honen barruan 278 00:13:10,910 --> 00:13:13,480 zer izan behar du? 279 00:13:13,480 --> 00:13:18,440 Zer benetan sartzen da Egoera honetan zenbakiak? 280 00:13:18,440 --> 00:13:21,300 Bai, lehenengo erakuslea zatia memoria hori byte, 281 00:13:21,300 --> 00:13:24,940 edo zehatzago esanda, helbidea byte horiek lehena. 282 00:13:24,940 --> 00:13:27,300 Ez du axola bat izanez gero byte edo milioi byte, 283 00:13:27,300 --> 00:13:28,890 Besterik lehenengo buruzko zaintzeko behar dut. 284 00:13:28,890 --> 00:13:31,530 Zeren eta zer malloc bermeak eta Nire sistema eragilearen bermeak, 285 00:13:31,530 --> 00:13:34,170 dela memoria I zatia eskuratu, alboko izango da joan. 286 00:13:34,170 --> 00:13:35,378 Bertan ez da hutsuneak izango. 287 00:13:35,378 --> 00:13:38,576 Beraz, 50 dudan galdetzen badiezu byte edo 1.000 byte, 288 00:13:38,576 --> 00:13:40,450 ari dira guztiak ere izango da joan Atzera itzuli itzuli. 289 00:13:40,450 --> 00:13:44,500 Eta hain luze zein handia, nola gogoratzen dut Askoz galdetu nion, guztiak jakin behar dut 290 00:13:44,500 --> 00:13:46,230 Lehen, hala nola helbidea da. 291 00:13:46,230 --> 00:13:48,660 >> Beraz, gaur kodea gaitasuna behar dugu. 292 00:13:48,660 --> 00:13:51,280 Bada ere, gurekin eramango da joan denbora gehiago hau idatzi arte, 293 00:13:51,280 --> 00:13:55,900 Orain ezin dugu memoria hori berresleitzeko arabera besterik helbide ezberdina gordetzeko ez 294 00:13:55,900 --> 00:13:59,060 handiago edo are nahi badugu memoria zatia txikiagoa. 295 00:13:59,060 --> 00:14:00,170 Beraz, merkataritza off bat hemen. 296 00:14:00,170 --> 00:14:01,360 Orain dinamismoa lortu dugu. 297 00:14:01,360 --> 00:14:03,350 Dugu oraindik contiguousness aldarrikatzen ari naiz. 298 00:14:03,350 --> 00:14:05,881 Delako malloc emango digu memoria alboko zatia. 299 00:14:05,881 --> 00:14:08,630 Baina hori ere mina bat izango da guretzat lepoan, programatzailea, 300 00:14:08,630 --> 00:14:09,770 den benetan kodea eman. 301 00:14:09,770 --> 00:14:10,730 Lan gehiago besterik ez da. 302 00:14:10,730 --> 00:14:13,930 Kodea Akin zer nintzen behar dugu duela une bat besterik ez out joaz. 303 00:14:13,930 --> 00:14:16,120 Oso doable, baina konplexutasuna gehitzen da. 304 00:14:16,120 --> 00:14:19,520 Eta beraz, sustatzailearen denbora, programatzaile denbora da oraindik beste baliabide 305 00:14:19,520 --> 00:14:22,520 agian hori gastatu behar dugu Denbora pixka ezaugarri berriak lortzeko. 306 00:14:22,520 --> 00:14:24,020 Eta gero, jakina, ez ilara batean. 307 00:14:24,020 --> 00:14:26,227 Ez diogu hau sartu Xehetasun askoz bat. 308 00:14:26,227 --> 00:14:27,560 Baina espirituz oso antzekoa da. 309 00:14:27,560 --> 00:14:31,220 Ilara bat ezartzeko izan dut, eta dagokion eragiketak, 310 00:14:31,220 --> 00:14:35,660 enqueue edo adierazten du, atsegin gehitu edo kendu, esateko modu sofistikatuagoak bat besterik ez da, 311 00:14:35,660 --> 00:14:38,100 enqueue edo adierazten du, honela. 312 00:14:38,100 --> 00:14:41,170 Besterik ezin dut eman eta egitura bat neure burua hori berriro zenbaki baten array ditu, 313 00:14:41,170 --> 00:14:44,000 hori berriro tamaina bat dauka, Baina zergatik orain behar dut 314 00:14:44,000 --> 00:14:46,940 ilara baten aurrealdean segimendua egiteko? 315 00:14:46,940 --> 00:14:50,630 Ez nuen jakin behar nire pila aurrealdean. 316 00:14:50,630 --> 00:14:53,570 Beno, badut berriro batentzat Ilara dezagun besterik hard 317 00:14:53,570 --> 00:14:57,870 bost bezalakoa izatea Kode Hemen egon daitezkeen zenbaki osoko. 318 00:14:57,870 --> 00:15:00,940 Beraz, hau zero, bat, bi, hiru, lau da. 319 00:15:00,940 --> 00:15:03,430 Hau izango da Zenbakiak izeneko berriro. 320 00:15:03,430 --> 00:15:06,940 Eta hau tamaina deitu behar da. 321 00:15:06,940 --> 00:15:10,056 >> Zergatik ez da nahikoa tamaina besterik ez izatea? 322 00:15:10,056 --> 00:15:11,680 Beno, goazen on horrek bultza zenbaki horiek berberak. 323 00:15:11,680 --> 00:15:14,220 Beraz pushed-- I enqueued dut, edo bultzatu. 324 00:15:14,220 --> 00:15:20,150 Orain ilaran dut 50, eta, ondoren, 51, eta, ondoren, 61, eta dot dot dot. 325 00:15:20,150 --> 00:15:21,070 Beraz, hori enqueue da. 326 00:15:21,070 --> 00:15:23,176 Enqueued I 50, 51 orduz, ondoren, 61. 327 00:15:23,176 --> 00:15:25,050 Eta hori itxura berdin- beraz, orain arte, pila bat, 328 00:15:25,050 --> 00:15:27,190 ezik behar dut aldaketa bat egin behar izan du. 329 00:15:27,190 --> 00:15:33,680 Tamaina horretako eguneratu behar dut, beraz, I joan Hutsetik batera bi hiru orain. 330 00:15:33,680 --> 00:15:35,760 Zelan Adierazten? 331 00:15:35,760 --> 00:15:36,890 Zer gertatzen Adierazten batekin? 332 00:15:36,890 --> 00:15:41,950 Nor off zerrenda honetan lehenengo etorri beharko Apple Store lerroan bada? 333 00:15:41,950 --> 00:15:42,780 Beraz, 50. 334 00:15:42,780 --> 00:15:44,700 Beraz, mota zailagoa denbora hau da. 335 00:15:44,700 --> 00:15:47,880 Azken aldiz, Berriz super zen erraza besterik ez tamaina ken bat, 336 00:15:47,880 --> 00:15:51,440 Lortu dut eraginkortasunez nire array amaierara arte non zenbakiak dira, 61 kentzen. 337 00:15:51,440 --> 00:15:52,920 Baina ez daukat 61 kendu nahi. 338 00:15:52,920 --> 00:15:55,030 50 hartu nahi dut, nor Han izan 5:00 AM 339 00:15:55,030 --> 00:15:56,790 lerro alde iPhone edo whatnot berria. 340 00:15:56,790 --> 00:16:01,200 Eta, beraz, 50 kentzeko, I ezin da besterik egin, ezta? 341 00:16:01,200 --> 00:16:02,547 50 I zeharkatu ahal izango dira. 342 00:16:02,547 --> 00:16:04,380 Baina, esan besterik ez dugu dugu ez dute, beraz, anal izan 343 00:16:04,380 --> 00:16:06,330 egindako urratu edo datuak ezkutatu. 344 00:16:06,330 --> 00:16:08,090 Besterik ezin dugu ahaztu, non da. 345 00:16:08,090 --> 00:16:12,330 >> Baina aldatu dut nire tamaina bada orain bi, nahikoa informazio hori 346 00:16:12,330 --> 00:16:15,711 zer gertatzen da nire ilarako jakin nahi? 347 00:16:15,711 --> 00:16:16,680 Ez da benetan. 348 00:16:16,680 --> 00:16:19,830 Atsegin dut nire neurriko bi da, baina non hasten da ilaran, 349 00:16:19,830 --> 00:16:22,980 batez ere, oraindik ere badut memorian zenbaki horiek berberak. 350 00:16:22,980 --> 00:16:24,260 50, 51, 61. 351 00:16:24,260 --> 00:16:27,090 Beraz, gogoratu behar dut orain non aurrealdean dago. 352 00:16:27,090 --> 00:16:29,630 Eta horrela sortu proposatu dudan bezala Han, besterik ez dugu deitzen dute egingo 353 00:16:29,630 --> 00:16:33,729 Garren aurrean, zeinaren hasierako balio izan behar zuen zer? 354 00:16:33,729 --> 00:16:35,270 Zero, besterik zerrendan hasieran. 355 00:16:35,270 --> 00:16:40,876 Baina orain gain decrementing tamaina, kontatzaileak besterik ez dugu aurrealdean. 356 00:16:40,876 --> 00:16:42,000 Orain hemen beste arazo bat da. 357 00:16:42,000 --> 00:16:43,030 Beraz, I mantendu egingo da behin. 358 00:16:43,030 --> 00:16:47,520 Demagun hau kopurua da atsegin 121, 124, eta, ondoren, dammit, 359 00:16:47,520 --> 00:16:48,610 Naiz Espazioa dut dut. 360 00:16:48,610 --> 00:16:50,390 Baina itxaron minutu bat, ez naiz. 361 00:16:50,390 --> 00:16:55,630 Beraz, istorioa Puntu honetan, suposatzen duten tamainarekin bat, bi da, 362 00:16:55,630 --> 00:17:00,370 Hiru, lau, beraz, suposatzen duten tamaina lau da, aurrealdean bat da, 363 00:17:00,370 --> 00:17:01,621 beraz, 51 aurrealdean dago. 364 00:17:01,621 --> 00:17:04,329 Beste zenbaki bat jarri nahi dut hemen, baina, dammit, naiz espazioa atera nuen. 365 00:17:04,329 --> 00:17:06,710 Baina ez naiz benetan, ezta? 366 00:17:06,710 --> 00:17:11,192 Non izan batzuk jarri dut balio gehigarri 171 like? 367 00:17:11,192 --> 00:17:13,400 Bai, eta ahal nuen besterik nolako go back baino ez da, ezta? 368 00:17:13,400 --> 00:17:18,161 Eta gero zeharkatu 50, edo besterik gainidatzi 171 batekin. 369 00:17:18,161 --> 00:17:20,410 Eta zuk galdetzen ari bazara, zergatik Gure zenbakiak lortu, beraz, ausazko, 370 00:17:20,410 --> 00:17:24,150 horiek normalean hartzen dira ordenagailuan zientzia Harvard ikastaroak CS50 ondoren. 371 00:17:24,150 --> 00:17:27,510 Baina hori optimizazioa ona izan zen, orain ez naiz espazioa alferrik galtzen. 372 00:17:27,510 --> 00:17:30,750 Oraindik ere gogoratu behar dut nola big gauza hau erabatekoa da. 373 00:17:30,750 --> 00:17:31,500 Guztira, bost da. 374 00:17:31,500 --> 00:17:33,375 Zeren eta ez dut nahi hasteko gainidatziz 51. 375 00:17:33,375 --> 00:17:36,260 Beraz, orain nago oraindik tokirik gabe, beraz, arazo berdina ere. 376 00:17:36,260 --> 00:17:39,140 Baina ikusiko duzu nola orain Zure kodea, ziurrenik duzu 377 00:17:39,140 --> 00:17:41,910 apur bat gehiago idatzi izan konplexutasun hori gerta dadin. 378 00:17:41,910 --> 00:17:44,510 Eta hain zuzen ere, zer operadorea C in ziurrenik ematen dizu 379 00:17:44,510 --> 00:17:48,110 magikoki Horretarako zirkulartasunik du? 380 00:17:48,110 --> 00:17:50,160 Bai eragile-modulua, ehuneko ikurra. 381 00:17:50,160 --> 00:17:53,160 Beraz, zein da cool mota ilara bat buruz, marrazketa-array mantendu dugu nahiz 382 00:17:53,160 --> 00:17:56,520 lerro zuzenak bezalako hauetan bezala, baduzu Mota honen zurubi bezala pentsatzen 383 00:17:56,520 --> 00:18:00,341 zirkulu baten inguruan, orduan besterik senez mota lan egiten du adimen 384 00:18:00,341 --> 00:18:01,590 Apur bat dela uste dut gehiago garbian. 385 00:18:01,590 --> 00:18:05,190 Oraindik ezartzea izango litzateke duzu kodea ere eredu mental hori. 386 00:18:05,190 --> 00:18:07,550 Beraz, ez da zaila, , azken finean, martxan jarri ahal izateko 387 00:18:07,550 --> 00:18:12,430 baina oraindik ere galtzen dugu size-- du, hobeto esanda, gaitasuna, tamainaz aldatu Horretarako dugu behintzat. 388 00:18:12,430 --> 00:18:15,310 >> Array kentzeko behar dugu, ez dugu ordezkatu erakuslea bakar batekin, 389 00:18:15,310 --> 00:18:20,010 eta gero nire kodea nonbait Dut a zer funtziona benetan sortzeko deitu 390 00:18:20,010 --> 00:18:23,720 array zenbakiak deitzen? 391 00:18:23,720 --> 00:18:26,190 Malloc edo antzeko batzuk funtzioa, zehazki. 392 00:18:26,190 --> 00:18:30,481 Pilak edo ilarak buruzko edozein galdera. 393 00:18:30,481 --> 00:18:30,980 Bai? 394 00:18:30,980 --> 00:18:33,657 395 00:18:33,657 --> 00:18:34,240 Ona galdera. 396 00:18:34,240 --> 00:18:35,830 Zer modulo litzateke hemen erabiltzen dituzu. 397 00:18:35,830 --> 00:18:38,520 Beraz, oro har, erabiltzen denean mod, hala egin behar duzu 398 00:18:38,520 --> 00:18:40,620 tamaina batera Datu egitura osoa. 399 00:18:40,620 --> 00:18:44,120 Beraz, zerbait bost edo ahalmena, bada like konstante da, hau da, ziurrenik, tartean. 400 00:18:44,120 --> 00:18:47,100 Baina besterik modulo bost egiten Seguru asko ez da nahikoa, 401 00:18:47,100 --> 00:18:51,380 Jakin behar dugulako egiten dugu inguruan biltzea hemen edo hemen edo hemen. 402 00:18:51,380 --> 00:18:54,160 Beraz, ziurrenik, gainera, inplikatzeko nahi joan 403 00:18:54,160 --> 00:18:57,220 Gauza tamainaren, edo Azalean aldakorra baita. 404 00:18:57,220 --> 00:19:00,140 Beraz, besterik ez da hau, nahiko simple adierazpen aritmetika, 405 00:19:00,140 --> 00:19:02,000 baina modulo funtsezko osagai izango litzateke. 406 00:19:02,000 --> 00:19:03,330 >> Izango bada film Beraz, azken finean. 407 00:19:03,330 --> 00:19:05,780 Animazio bat duten batzuk beste unibertsitate batean folks 408 00:19:05,780 --> 00:19:08,060 bildu ditudan dugu Eztabaida honen egokituta. 409 00:19:08,060 --> 00:19:12,630 Jack ikasteko eskatzen du ilarak eta estatistikak buruzko kontuak. 410 00:19:12,630 --> 00:19:19,010 411 00:19:19,010 --> 00:19:21,890 >> ZINEMA: Bazen behin, han Jack izeneko tipo bat zegoen. 412 00:19:21,890 --> 00:19:25,330 Lagunak egiteko orduan, Jack ez knack bat. 413 00:19:25,330 --> 00:19:28,220 Beraz, Jack joan nahi du hitz egin mirestua gehienak ezagutzen zituen. 414 00:19:28,220 --> 00:19:30,920 Joan zen Lou nahi zuen eta galdetu zion, zer egin dezaket? 415 00:19:30,920 --> 00:19:33,400 Lou ikusi bere laguna benetan distressed zen. 416 00:19:33,400 --> 00:19:36,050 Beno, hasi zen, besterik ez begiratu nola jantzita zaren. 417 00:19:36,050 --> 00:19:38,680 Ez arropa izanez beste itxura batekin? 418 00:19:38,680 --> 00:19:39,660 Bai, esan zuen Jack. 419 00:19:39,660 --> 00:19:40,840 Ziur egiten dut. 420 00:19:40,840 --> 00:19:43,320 Nire etxea etorri eta Horiek erakutsiko dizut. 421 00:19:43,320 --> 00:19:44,550 Beraz batera joan ziren Jack izateko. 422 00:19:44,550 --> 00:19:47,520 Eta Jack erakutsi Lou koadroan non bere kamisetak guztiak gordetzen zituen, 423 00:19:47,520 --> 00:19:49,260 eta bere prakak eta galtzerdiak. 424 00:19:49,260 --> 00:19:52,290 Lou esan, duzu ikusten dut zure arropa pila bat. 425 00:19:52,290 --> 00:19:54,870 Zergatik ez batzuk janzten duzu beste batzuk awhile behin? 426 00:19:54,870 --> 00:19:58,020 >> Jack esan, bai, orduan I arropa eta galtzerdiak kendu, 427 00:19:58,020 --> 00:20:00,780 Horiek garbitu dut eta jarri Horietako koadroan kanpoan. 428 00:20:00,780 --> 00:20:03,210 Ondoren datorrena du Gaur goizean, eta eman dut hop. 429 00:20:03,210 --> 00:20:06,380 Joan nintzen koadroan, eta hori lortzeko Nire arropa goiko off. 430 00:20:06,380 --> 00:20:09,070 Lou azkar konturatu Jack arazoa. 431 00:20:09,070 --> 00:20:12,080 Mantendu zuen arropa, CD-en, eta pila liburuak. 432 00:20:12,080 --> 00:20:14,420 Noiz iritsi zen zerbait irakurri edo higadura, 433 00:20:14,420 --> 00:20:17,100 Goiko liburu edo arropa aukeratu zuen litzaidake. 434 00:20:17,100 --> 00:20:19,500 Ondoren Bukatutakoan, he jartzen eskubidea atzera. 435 00:20:19,500 --> 00:20:21,970 Atzera jo litzateke, pila gainean. 436 00:20:21,970 --> 00:20:24,460 Konponbidea ezagutzen dut, esan triunfatzailetik ozen bat. 437 00:20:24,460 --> 00:20:27,090 Den ikasi behar da hasteko ilaran bat erabiliz. 438 00:20:27,090 --> 00:20:29,870 Lou hartu zuen Jack arropa eta zintzilik horiek armairutik. 439 00:20:29,870 --> 00:20:32,710 Eta hura hustu zuen koadroan, dituena besterik ez zuen egiten. 440 00:20:32,710 --> 00:20:36,500 >> Ondoren, esan zuen orain Jack, amaieran Egunean, jarri zure arropa ezkerrean 441 00:20:36,500 --> 00:20:37,990 noiz jarri zuri. 442 00:20:37,990 --> 00:20:41,300 Ondoren bihar goizean duzunean ikusi eguzkia, zure arropa zaitez 443 00:20:41,300 --> 00:20:43,440 eskubidea, lerro amaieran aurrera. 444 00:20:43,440 --> 00:20:44,880 Ez duzu ikusi? esan zuen Lou. 445 00:20:44,880 --> 00:20:46,370 Hain polita izango da. 446 00:20:46,370 --> 00:20:49,770 Janzten dituzu guztia behin janzten duzu zerbait aurretik, bi aldiz. 447 00:20:49,770 --> 00:20:52,670 Eta ilarak guztia bere gelan eta apal batean, 448 00:20:52,670 --> 00:20:55,160 Jack beharra sentitzen hasi nahiko bere buruaz ziur. 449 00:20:55,160 --> 00:20:59,720 Lou esker guztiei eta Bere ilaran wonderful. 450 00:20:59,720 --> 00:21:01,220 HIZLARIA 1: Ondo da, adorable da. 451 00:21:01,220 --> 00:21:05,920 452 00:21:05,920 --> 00:21:10,080 Beraz, zer izan da benetan joan kanpaia orain azpian? 453 00:21:10,080 --> 00:21:12,370 Hori erakusle dugu, malloc dugula, 454 00:21:12,370 --> 00:21:15,680 hori, sortzeko gaitasuna dugu memoria zatiak geure buruari 455 00:21:15,680 --> 00:21:16,344 dinamikoki. 456 00:21:16,344 --> 00:21:18,510 Beraz, hau irudi dugu bat da beste egun antzematen. 457 00:21:18,510 --> 00:21:21,180 Ez benetan dwell dugu Gainean, baina argazki hau 458 00:21:21,180 --> 00:21:24,180 diotela azpian joan astez kanpaia orain. 459 00:21:24,180 --> 00:21:27,050 Eta beraz, honek suposatzen du, besterik ez Hori marraztuko dugu laukizuzen bat, 460 00:21:27,050 --> 00:21:28,180 zure ordenagailuaren memorian. 461 00:21:28,180 --> 00:21:31,850 Eta, agian, zure ordenagailuan, edo CS50 NAN, memoria edo Memoria gigako ditu 462 00:21:31,850 --> 00:21:33,050 edo bi gigabyte edo lau. 463 00:21:33,050 --> 00:21:34,450 Ez da benetan axola. 464 00:21:34,450 --> 00:21:37,240 Zure sistema eragilearen Windows edo Mac OS edo Linux, 465 00:21:37,240 --> 00:21:41,120 funtsean, zure programa aukera ematen du sarbidea ez duela pentsatzea 466 00:21:41,120 --> 00:21:42,982 osoa emateko zure ordenagailuaren memorian, 467 00:21:42,982 --> 00:21:45,440 nahiz eta martxan egon liteke, nahiz Anitz programak aldi berean. 468 00:21:45,440 --> 00:21:46,990 Beraz, egia esan, hori ez da benetan lan. 469 00:21:46,990 --> 00:21:49,448 Baina ilusio bat mota da Zure programen guztiei. 470 00:21:49,448 --> 00:21:53,110 Beraz, bada, bi RAM kontzertuak izan duzu, hau da nola ordenagailua pentsatu ahal liteke. 471 00:21:53,110 --> 00:21:57,110 >> Orain coincidentally, horietako bat Gauzak, memoria segmentu horietako bat, 472 00:21:57,110 --> 00:21:58,350 pila bat deitu. 473 00:21:58,350 --> 00:22:01,680 Eta hain zuzen ere, edozein Horrela, idaztea kodea urrun 474 00:22:01,680 --> 00:22:05,900 deitzen ari zarela a funtzioa, adibidez nagusia da. 475 00:22:05,900 --> 00:22:08,410 Gogoratu edonoiz dudan marraztuko ordenagailuaren memoria, 476 00:22:08,410 --> 00:22:10,640 Beti marraztu dut Sort laukizuzen baten erdia hemen 477 00:22:10,640 --> 00:22:12,520 eta ez traba hizketan Zer da goian buruz. 478 00:22:12,520 --> 00:22:15,980 Nagusia deitzen da, nire erreklamatzeko delako memoria sliver honetan lortu duzu 479 00:22:15,980 --> 00:22:16,970 jaisten hemen. 480 00:22:16,970 --> 00:22:20,650 Eta funtzio bat izeneko nagusia bada swap bezala, ondo swap hemen doa. 481 00:22:20,650 --> 00:22:23,720 Eta bihurtzen da, hori da non nik bukatzen da. 482 00:22:23,720 --> 00:22:26,277 Zerbait On pila bat deitu Zure ordenagailuaren memoria barruan. 483 00:22:26,277 --> 00:22:28,360 Orain egunaren amaieran, hau da, besterik gabe, helbideak. 484 00:22:28,360 --> 00:22:30,680 Byte zero bezalakoa da, byte, byte 2 milioi. 485 00:22:30,680 --> 00:22:33,130 Baina pentsatzen baduzu Objektu angeluzuzena honetan bezala, 486 00:22:33,130 --> 00:22:35,130 guztiak behin egiten ari gara deitzen dugun denbora funtzioa da 487 00:22:35,130 --> 00:22:37,180 memoria zati berri bat layering. 488 00:22:37,180 --> 00:22:41,700 Funtzio hori xerra bat ematen ari gara bere memoria zati batekin lan. 489 00:22:41,700 --> 00:22:44,490 >> Eta gogoratzen orain hori da garrantzitsuena. 490 00:22:44,490 --> 00:22:46,400 Ditugun ez bada delako swap antzeko zerbait 491 00:22:46,400 --> 00:22:51,610 eta bi A eta B eta atsegin aldagai lokalak balio horiek aldatu eta bi dugun 492 00:22:51,610 --> 00:22:55,130 bi eta bat, oroitzapen den swap itzultzen denean, 493 00:22:55,130 --> 00:22:58,330 da xerra hau bagina bezala da oroimenaren besterik desagertuko da. 494 00:22:58,330 --> 00:23:00,080 Egia esan, ez da oraindik ez forensically. 495 00:23:00,080 --> 00:23:01,940 Eta zerbait oraindik benetan. 496 00:23:01,940 --> 00:23:05,410 Baina kontzeptu, izango duenez arren, guztiz joan da. 497 00:23:05,410 --> 00:23:10,910 Eta hain nagusia ez daki lanaren edozein swap funtzioa hori ere egin zen, 498 00:23:10,910 --> 00:23:14,890 egia esan, horiek gainditu ezean erakuslea batzuen erreferentzia argudioak. 499 00:23:14,890 --> 00:23:17,790 Orain, oinarrizko konponbidea swap arazoa dela 500 00:23:17,790 --> 00:23:19,970 da gauza pasatuz helbidea arabera. 501 00:23:19,970 --> 00:23:23,250 Baina bihurtzen da, ere, zer da dira gertatzen zati hori gainetik 502 00:23:23,250 --> 00:23:26,330 Laukizuzenaren denbora honetan guztian Oraindik ez dago ez da gehiago memoria gora. 503 00:23:26,330 --> 00:23:28,790 Eta noiz dinamikoki esleitu memoria, 504 00:23:28,790 --> 00:23:32,020 da GetString, barrutik ala bertan ez dugu egiten duzu CS50 batean 505 00:23:32,020 --> 00:23:34,710 liburutegia, edo zuk mutil bada deitu malloc eta galdetu 506 00:23:34,710 --> 00:23:37,950 zatia sistema eragilearen memoria, ez du pila datoz. 507 00:23:37,950 --> 00:23:40,960 Orduan beste leku batetik zure ordenagailuaren memorian 508 00:23:40,960 --> 00:23:42,220 hori zeure deitu. 509 00:23:42,220 --> 00:23:43,430 Eta hori ez da edozein ezberdinetan. 510 00:23:43,430 --> 00:23:44,285 RAM bera da. 511 00:23:44,285 --> 00:23:45,160 Memoria bera da. 512 00:23:45,160 --> 00:23:49,080 Besterik ez da RAM hori da It Han ordez hemen behera. 513 00:23:49,080 --> 00:23:50,750 >> Eta beraz, zer esan nahi du horrek? 514 00:23:50,750 --> 00:23:53,650 Beno, zure ordenagailuan badu memoria kopuru finitu bat 515 00:23:53,650 --> 00:23:57,450 eta pila hazi da, eta beraz, esateko, eta zeure, arabera 516 00:23:57,450 --> 00:23:59,349 gezi honetarako, behera hazten. 517 00:23:59,349 --> 00:24:01,140 Beste era batera esanda, behin denbora malloc deitu, 518 00:24:01,140 --> 00:24:03,430 zu xerra bat ematen ari da oroimenaren goitik, 519 00:24:03,430 --> 00:24:06,630 orduan, agian, pixka bat txikiagoa, gero pixka bat txikiagoa, malloc deitzen diozun bakoitzean, 520 00:24:06,630 --> 00:24:10,100 zeure, erabilera da, Mota da hazten, 521 00:24:10,100 --> 00:24:11,950 eta gertuago zer hazten? 522 00:24:11,950 --> 00:24:13,382 Pila. 523 00:24:13,382 --> 00:24:14,840 Beraz, ez da hau, badirudi ideia ona bezala? 524 00:24:14,840 --> 00:24:18,420 525 00:24:18,420 --> 00:24:22,140 Esan nahi dut, non ez da benetan argi zuk bakarrik bada zer gehiago egin ahal izango duzu 526 00:24:22,140 --> 00:24:23,910 memoria kopuru finitu bat. 527 00:24:23,910 --> 00:24:25,200 Baina hori da, ziur aski txarra. 528 00:24:25,200 --> 00:24:27,920 Bi gezi horiek bat dira kraska jakina, beste bat da. 529 00:24:27,920 --> 00:24:31,930 >> Eta bihurtzen da txarra lasaia dela, jende batek bereziki programazio ona, 530 00:24:31,930 --> 00:24:36,140 eta ordenagailuak sartu aldatu nahian, Errealitate hau ustiatu daiteke. 531 00:24:36,140 --> 00:24:38,290 Izan ere, kontuan hartu dezagun snippet apur bat. 532 00:24:38,290 --> 00:24:41,350 Beraz, hau adibide bat irakurri ahal izango da buruz Wikipedian xehetasun gehiago. 533 00:24:41,350 --> 00:24:43,100 Seinalatu egingo dugu at Artikulu bitxia bada. 534 00:24:43,100 --> 00:24:45,650 Baina ez zen erasoa, oro har, buffer gainezkatzea gisa ezagutzen duten 535 00:24:45,650 --> 00:24:49,570 duela existitu, betiere gizakiak Izan manipulatzeko gaitasuna izan 536 00:24:49,570 --> 00:24:53,120 ordenagailuaren memoria, batez ere, C. Beraz, programa hau oso arbitrarioa da, 537 00:24:53,120 --> 00:24:55,130 baina dezagun irakurri behetik gora hasita. 538 00:24:55,130 --> 00:24:57,650 Main argc char izar argv sartu. 539 00:24:57,650 --> 00:24:59,830 Beraz, hori hartzen duen programa bat da komando lerroko argumentuak. 540 00:24:59,830 --> 00:25:03,620 Eta nagusiak ez du itxuraz deia funtzioa, dei egiten F sinpletasunagatik. 541 00:25:03,620 --> 00:25:04,610 Eta pasatzen da zer? 542 00:25:04,610 --> 00:25:05,490 Argv bat. 543 00:25:05,490 --> 00:25:09,320 Beraz pasatzen F sartu da edozein dela ere hitza da duten erabiltzaileak Idatzitako 544 00:25:09,320 --> 00:25:11,500 ondoren gonbitan programan izena guztietan. 545 00:25:11,500 --> 00:25:15,730 Beraz, askoz Caesar edo Vigenere, adibidez, horiek argv batera egiten gogoratzen dezakezu. 546 00:25:15,730 --> 00:25:16,680 >> Beraz, zer da F? 547 00:25:16,680 --> 00:25:19,760 F kate bat hartzen du Bere argumentu bakar gisa, 548 00:25:19,760 --> 00:25:22,100 AKA char izar bat, bera Gauza, kate gisa. 549 00:25:22,100 --> 00:25:24,920 Eta arbitrarioki deitu du Adibide honetan taberna. 550 00:25:24,920 --> 00:25:27,710 Eta gero, char c 12 besterik layman-terminoak, 551 00:25:27,710 --> 00:25:31,750 zer da char c parentesi 12 guretzat egiten? 552 00:25:31,750 --> 00:25:33,440 Zer ari da egiten, ezta? 553 00:25:33,440 --> 00:25:36,490 Memoria esleitzean, zehazki, 12 byte 12 chars da. 554 00:25:36,490 --> 00:25:36,990 Hain zuzen ere. 555 00:25:36,990 --> 00:25:40,000 Eta gero, azken lerroa, irabiatu eta kopia, ziurrenik duzun ikusi. 556 00:25:40,000 --> 00:25:43,360 Hau katea kopia bat da horren helburua bizitzan funtzio 557 00:25:43,360 --> 00:25:48,160 da bere bigarren argumentua kopiatzeko bere lehen argumentua sartu, 558 00:25:48,160 --> 00:25:51,190 baina bakarrik bat sortu Zenbait byte kopurua. 559 00:25:51,190 --> 00:25:53,860 Beraz, hirugarren argudio dio, zenbat byte kopiatu behar duzu? 560 00:25:53,860 --> 00:25:56,720 Bar luzera, edozein dela ere idatzi erabiltzaile. 561 00:25:56,720 --> 00:25:59,320 Eta edukiekin taberna, katea, dira 562 00:25:59,320 --> 00:26:02,330 memorian kopiatzen adierazi C. 563 00:26:02,330 --> 00:26:04,060 >> Beraz, hau badirudi ergelak mota, eta hala da. 564 00:26:04,060 --> 00:26:06,300 Adibidez contrived bat da, baina ordezkaria da 565 00:26:06,300 --> 00:26:10,100 eraso vectors klase bat, programa bat erasotzeko modu bat. 566 00:26:10,100 --> 00:26:15,050 Guztiak gauza ederra da eta ona erabiltzaileak bada Hitz hori 11 karaktere motak 567 00:26:15,050 --> 00:26:18,040 edo gutxiago, plus backslash zero. 568 00:26:18,040 --> 00:26:22,830 Zer baino erabiltzaile mota gehiago bada 11 edo 12 edo 20 edo 50 karaktere? 569 00:26:22,830 --> 00:26:25,090 Zein da programa hau duzu? 570 00:26:25,090 --> 00:26:29,360 Balizko seg errua. Honez joan bar sortu dena den blindly kopiatu 571 00:26:29,360 --> 00:26:31,750 Bere luzera, hau da, literalki bar dena, 572 00:26:31,750 --> 00:26:36,307 helbidea sartu C. Baina C adierazi ditu bakarrik preemptively 12 byte bezala emandako. 573 00:26:36,307 --> 00:26:37,640 Baina ez dago check osagarriak ez da. 574 00:26:37,640 --> 00:26:38,700 Ez dago baldintza bada. 575 00:26:38,700 --> 00:26:40,580 Error no hemen egiaztapena dago. 576 00:26:40,580 --> 00:26:43,270 >> Eta orain zer programa hau da joan egin besterik blindly da 577 00:26:43,270 --> 00:26:45,750 Gauza bat kopiatu bestera. 578 00:26:45,750 --> 00:26:47,880 Eta, beraz, hau marraztuko bagenu irudi gisa, hona hemen 579 00:26:47,880 --> 00:26:49,860 besterik memoria espazioa sliver. 580 00:26:49,860 --> 00:26:53,470 Beraz, behealdean nabarituko, dugu bertako taberna aldakorra dute. 581 00:26:53,470 --> 00:26:57,330 Beraz, nahi store-- joan erakuslea tokiko argumentu hori, baizik eta 582 00:26:57,330 --> 00:26:58,672 katea bar gordetzeko dugu. 583 00:26:58,672 --> 00:27:00,380 Eta gero, bakarrik nabarituko honen gainean pila bat ere, 584 00:27:00,380 --> 00:27:02,505 delako eskatu duzun aldi bakoitzean memoria, pila egiteko, 585 00:27:02,505 --> 00:27:04,310 Pixka bat jartzen da egiten Pictorially gainetik, 586 00:27:04,310 --> 00:27:06,270 ohar horretan lortu dugu 12 byte dago. 587 00:27:06,270 --> 00:27:10,690 Goiko inork ezker C parentesi zero eta da Alde beheko eskuineko C parentesi 11 da. 588 00:27:10,690 --> 00:27:12,870 Hori besterik nola ordenagailuak Neure irten. 589 00:27:12,870 --> 00:27:18,300 Beraz, intuizioa, bada bar gehiago ditu 12 guztira pertsonaiak, besteak baino 590 00:27:18,300 --> 00:27:25,790 backslash zero, non da 12 edo C parentesi 12 joango gara? 591 00:27:25,790 --> 00:27:28,440 Edo, hobeto esanda, non 12an da Pertsonaia edo 13an pertsonaia, 592 00:27:28,440 --> 00:27:30,900 ehungarren pertsonaia joan amaituko irudian? 593 00:27:30,900 --> 00:27:33,400 Gainetik edo azpitik? 594 00:27:33,400 --> 00:27:36,300 >> Eskuin, zeren nahiz pila bera hazten goranzko, 595 00:27:36,300 --> 00:27:39,590 behin stuff jarri dituzun batean ezazu, diseinu arrazoiengatik, 596 00:27:39,590 --> 00:27:41,294 memoria jartzen goitik behera. 597 00:27:41,294 --> 00:27:44,460 Beraz duzun got baino gehiago 12 byte bada, bar gainidaztera hasteko joan zaren. 598 00:27:44,460 --> 00:27:47,280 Orain, hori akats bat da, baina da Ez benetan big aurre. 599 00:27:47,280 --> 00:27:51,130 Baina akordio handi bat da, ez da delako gauza gehiago gertatzen oroimenez. 600 00:27:51,130 --> 00:27:53,074 Hortaz, hona hemen nola guk jarri kaixo, argi izan behar du. 601 00:27:53,074 --> 00:27:54,490 Idatzi dut kaixo ere bada gonbitan. 602 00:27:54,490 --> 00:27:59,330 H-E-L-L-O backslash zero, eta ondorioz sortu barruan 12 byte horiek, eta super seguru gaude. 603 00:27:59,330 --> 00:28:00,330 Dena ondo dago. 604 00:28:00,330 --> 00:28:03,020 Baina zerbait badut idatzi luzeagoak, potentzialki da 605 00:28:03,020 --> 00:28:05,860 to bar espaziora arrastaka joan. 606 00:28:05,860 --> 00:28:08,405 Baina okerrago oraindik, hura bihurtzen Denbora horretan guztian egindako, 607 00:28:08,405 --> 00:28:11,530 inoiz ez dugu hitz egin du, nahiz eta da, pila beste gauzak egiteko erabiltzen da. 608 00:28:11,530 --> 00:28:13,560 Ez da bakarrik aldagai lokalak. 609 00:28:13,560 --> 00:28:15,100 >> C mailan hizkuntza oso txikia da. 610 00:28:15,100 --> 00:28:17,810 Eta Ordena ezkutuka pila ere erabiltzen 611 00:28:17,810 --> 00:28:21,260 gogoratzera bat funtzioa deitzen da, zer 612 00:28:21,260 --> 00:28:26,040 helbidea, aurreko funtzioa da, Beraz, funtzio hori atzera jauzi egin ahal izango da. 613 00:28:26,040 --> 00:28:29,980 Beraz nagusiak deiak trukatu, artean gauza pila gainean bultzatu 614 00:28:29,980 --> 00:28:34,380 ez dira aldagai lokalak trukeak, edo bere argumentuak, ezkutuka ere bultzatu 615 00:28:34,380 --> 00:28:37,510 pila gainean irudikatzen gisa du xerra gorriekin hemen, 616 00:28:37,510 --> 00:28:40,520 nagusiaren helbidea, fisikoki da zure ordenagailuaren memorian, 617 00:28:40,520 --> 00:28:44,180 beraz, orduan swap egiten da, ordenagailuaren daki atzera joan nagusiak behar dut 618 00:28:44,180 --> 00:28:46,760 eta amaitzeko, funtzio nagusia exekutatzean. 619 00:28:46,760 --> 00:28:51,960 Beraz, hau da arriskutsua orain, bada delako Erabiltzaile ondo kaixo baino gehiagotan motak, 620 00:28:51,960 --> 00:28:57,030 hala nola, erabiltzailearen sarrera hori clobbers edo atal gorria gainidazten, 621 00:28:57,030 --> 00:28:59,820 logikoki bada ordenagailuaren besterik blindly suposatuko joan 622 00:28:59,820 --> 00:29:03,830 xerra gorri horretan byte direla helbidea eta bertan itzuliko beharko da, 623 00:29:03,830 --> 00:29:09,020 aurkariarekiko zer da bada smart enough edo Zortea byte sekuentzia bat jarri 624 00:29:09,020 --> 00:29:13,450 ez dagoela helbide baten itxura du, baina kode-helbidea da 625 00:29:13,450 --> 00:29:18,730 berak ordenagailua nahi duen to nagusiak ordez exekutatu? 626 00:29:18,730 --> 00:29:21,670 >> Beste era batera esanda, zer egin badu Erabiltzaile gonbitan idazten ari da, 627 00:29:21,670 --> 00:29:23,850 Ez da zerbait kaltegabea kaixo bezala, 628 00:29:23,850 --> 00:29:28,210 baina, egia esan, hori da baliokidea kodea erabiltzaile honen fitxategi guztiak ezabatu? 629 00:29:28,210 --> 00:29:30,060 Edo email euren pasahitza niri? 630 00:29:30,060 --> 00:29:31,940 Edo hasi saioa amaitzeko euren zanpatze, ezta? 631 00:29:31,940 --> 00:29:34,920 Ez dago modu bat da, ez dezagun zeintzuk gaur, Hori ere idatzi izan dute, ez bakarrik kaixo 632 00:29:34,920 --> 00:29:36,711 Mundu edo bere izena, funtsean, ezin izan dute 633 00:29:36,711 --> 00:29:39,570 kodea, zeroz ere gainditu eta direnak, ordenagailua 634 00:29:39,570 --> 00:29:43,450 biak kodea eta helbideak akatsak. 635 00:29:43,450 --> 00:29:48,950 Beraz, nahiz eta zertxobait abstraktuan, bada Erabiltzaile nahikoa aurkakotasun kodea motak 636 00:29:48,950 --> 00:29:52,330 Hori irudirik gisa orokortu egingo A. A eraso edo aurkariek da. 637 00:29:52,330 --> 00:29:53,140 Gauzak hain txarra. 638 00:29:53,140 --> 00:29:55,306 Guk ez dugu axola buruz Zenbakiak edo zero edo direnak 639 00:29:55,306 --> 00:29:59,470 gaur, hala nola amaituko duzun atal gorria gainidatziz, 640 00:29:59,470 --> 00:30:01,580 nabarituko byte sekuentzia hori. 641 00:30:01,580 --> 00:30:05,020 O 835 C zero zortzi zero. 642 00:30:05,020 --> 00:30:08,960 Eta orain, Wikipediako artikulu bezala hemen proposatu du, baduzu orain benetan hasteko 643 00:30:08,960 --> 00:30:12,460 Zure ordenagailuaren byteak etiketatzea memoria, zer Wikipedia artikulua da 644 00:30:12,460 --> 00:30:19,060 proposatzen, zer helbidea bada duten goi-ezkerreko byte 80 C 0 3508 da. 645 00:30:19,060 --> 00:30:22,200 >> Beste era batera esanda, txarra lasaia bada nahikoa smart bere kodearekin 646 00:30:22,200 --> 00:30:26,650 benetan jarri zenbaki bat hemen, kodearen helbidea dagokio 647 00:30:26,650 --> 00:30:29,180 berak injektatu Ordenagailua sartu, zuk 648 00:30:29,180 --> 00:30:31,050 Ordenagailua engainatu ezer egiten sartu. 649 00:30:31,050 --> 00:30:34,140 Fitxategiak kendu, mezu Gauzak, zure trafiko sniffing, 650 00:30:34,140 --> 00:30:36,710 literalki ezer izan ordenagailu injektatu. 651 00:30:36,710 --> 00:30:39,220 Eta beraz buffer overflow bat bere core eraso 652 00:30:39,220 --> 00:30:43,530 besterik da ergela, ergel array baten premiazko dagoela 653 00:30:43,530 --> 00:30:45,840 ek ez zuen bere mugak hautatuta. 654 00:30:45,840 --> 00:30:48,850 Eta hau da, zer da super arriskutsua eta, aldi berean, indartsua super 655 00:30:48,850 --> 00:30:52,560 C da, ez dugu, hain zuzen ere memoria edozein lekutan sarbide. 656 00:30:52,560 --> 00:30:55,320 Da guretzat, programatzaileak, Jatorrizko kodea idatzi duten 657 00:30:55,320 --> 00:30:59,330 darn edozein luzera egiaztatzeko array manipulatzeko ari gara. 658 00:30:59,330 --> 00:31:00,750 Beraz, argi eta garbi, zer da konpondu? 659 00:31:00,750 --> 00:31:03,190 Itzuli roll badugu honetarako kodea, Nik ez besterik 660 00:31:03,190 --> 00:31:08,000 bar luzera aldatzeko, zer bestela egiaztatzeko behar dut? 661 00:31:08,000 --> 00:31:10,620 Zer gehiago behar izan dut egiten Eraso hori erabat eragozten? 662 00:31:10,620 --> 00:31:14,110 Ez dut nahi, besterik blindly esan Hori byte asko bezala kopiatu behar duzu 663 00:31:14,110 --> 00:31:16,140 bar luzera da gisa. 664 00:31:16,140 --> 00:31:18,910 Esan nahi dut, bezala kopiatu gisa byte tabernan daude 665 00:31:18,910 --> 00:31:24,090 to the esleitu eman memoria, edo 12 Gehienez. 666 00:31:24,090 --> 00:31:27,450 Beraz, egoera badu nolabaiteko behar dut horrela, ez egiaztatu bar luzera, 667 00:31:27,450 --> 00:31:32,800 baina 12 dugu kode besterik gogorra gainditzen baditu 12 maximoa distantzia gisa. 668 00:31:32,800 --> 00:31:35,910 Buffer deiturikoak Bestela gainezkatzea erasoa gertatu daiteke. 669 00:31:35,910 --> 00:31:38,451 Diapositibak horietako behealdean, Oraindik bitxia gehiago irakurri nahi izanez gero 670 00:31:38,451 --> 00:31:41,200 benetako jatorrizko artikulua da nahi izanez gero, begirada bat hartu. 671 00:31:41,200 --> 00:31:44,550 >> Baina orain, prezioen artean Hemen ordaintzen zen inefficiencies. 672 00:31:44,550 --> 00:31:46,680 Beraz, hori izan zen azkar bat maila baxua begirada zer 673 00:31:46,680 --> 00:31:49,709 arazoak, orain sortzen ahal dugun ordenagailuaren memorian eskuratzeko aukera dute. 674 00:31:49,709 --> 00:31:51,750 Baina beste arazo bat dugu Dagoeneko astelehenean stumbled 675 00:31:51,750 --> 00:31:53,800 besterik eraginkortasunik eza zen lotuta zerrenda. 676 00:31:53,800 --> 00:31:56,019 Denbora lineala itzuli gara. 677 00:31:56,019 --> 00:31:57,560 Jada ez Alboko array bat daukagu. 678 00:31:57,560 --> 00:31:58,980 Guk ez dugu izan ausazko sarbidea. 679 00:31:58,980 --> 00:32:00,710 Ezin dugu erabili plazan tarte idazkera. 680 00:32:00,710 --> 00:32:04,590 Izan dugu, literalki, berriz, begizta bat erabili den moduko une bat lehenago idatzi nuen. 681 00:32:04,590 --> 00:32:09,740 Baina, astelehena, erreklamatu ahal dugun dugu creep atzera eraginkortasuna erresuman sartu 682 00:32:09,740 --> 00:32:13,040 hori da zerbait lortzeko logarithmic agian, edo onena, hala ere, 683 00:32:13,040 --> 00:32:16,120 agian zerbait hori da etengabeko denbora deiturikoak. 684 00:32:16,120 --> 00:32:19,840 Beraz, nola egin dezaket by duten berri horiek erabilita egiten dugu tresnak, helbide hauek, erakusleak horiek, 685 00:32:19,840 --> 00:32:22,210 eta geure gauza hari? 686 00:32:22,210 --> 00:32:23,960 Beno, suposatzen duela Hemen, horiek mordo bat dira 687 00:32:23,960 --> 00:32:27,170 to bat gorde nahi dugu zenbakiak Datuen egitura eta bilaketa modu eraginkorrean. 688 00:32:27,170 --> 00:32:30,960 Erabat dugu aste atzera egiteko bi, bota horiek array batean, 689 00:32:30,960 --> 00:32:33,150 bila hasten bilaketa bitarra erabiliz. 690 00:32:33,150 --> 00:32:34,040 Banatu eta agindu. 691 00:32:34,040 --> 00:32:37,720 Eta hain zuzen ere idatzi zenuen PSET3 bilaketa bitarra, 692 00:32:37,720 --> 00:32:40,100 Non programa ezarriko duzu. 693 00:32:40,100 --> 00:32:40,890 Baina zer jakin behar duzu. 694 00:32:40,890 --> 00:32:45,060 Ez dago gehiago bat mota clever hau egiteko modu. 695 00:32:45,060 --> 00:32:47,390 Pixka bat gehiago sofistikatua da eta agian 696 00:32:47,390 --> 00:32:50,830 ikusteko aukera ematen digu zergatik bitar bilaketa beraz, askoz azkarrago. 697 00:32:50,830 --> 00:32:52,980 Lehenik eta behin, dezagun aurkezten zuhaitz baten ideia. 698 00:32:52,980 --> 00:32:54,730 Horrek are in arren Errealitate zuhaitzak motatako 699 00:32:54,730 --> 00:32:57,730 Hau bezalako hazten, ordenagailuaren munduan zientzia motatako hazten dira beheranzko 700 00:32:57,730 --> 00:33:00,830 familiako zuhaitz bat da, non behar duzun bezala zure aiton-amonak edo amonak handia 701 00:33:00,830 --> 00:33:04,580 edo whatnot goian, patriarka hartan eta Familiako matriarka, bat besterik ez 702 00:33:04,580 --> 00:33:07,930 erro, nodo, behean llamado bertan bere seme-alabak dira, 703 00:33:07,930 --> 00:33:11,442 horren azpitik bere seme-alabak dira, edo Bere ondorengoek, oro har. 704 00:33:11,442 --> 00:33:13,400 Eta edonork zintzilik off Familiako hondoan 705 00:33:13,400 --> 00:33:16,070 zuhaitz, gainera izanik familian gazteena, 706 00:33:16,070 --> 00:33:19,520 ere ezin izan generikoki zuhaitzaren hostoak deritzo. 707 00:33:19,520 --> 00:33:21,800 >> Beraz, hau mordo bat besterik ez da Hitzak eta definizioei 708 00:33:21,800 --> 00:33:25,790 Zerbait ordenagailu zuhaitz bat izeneko zientzia, familia zuhaitz bat bezalakoa da. 709 00:33:25,790 --> 00:33:28,770 Baina ez da incarnations hazlerik zuhaitz, horietako bat 710 00:33:28,770 --> 00:33:30,780 da bilaketa zuhaitz bitar bat izeneko. 711 00:33:30,780 --> 00:33:34,380 Eta ahal duzun tease mota aparte zer gauza hau ez. 712 00:33:34,380 --> 00:33:37,180 Beno, binary da zein zentzutan? 713 00:33:37,180 --> 00:33:41,455 Non hemen dator bitarraren? 714 00:33:41,455 --> 00:33:41,955 Sentitzen dugu? 715 00:33:41,955 --> 00:33:45,961 716 00:33:45,961 --> 00:33:47,210 Ez da hainbeste bai bat edo. 717 00:33:47,210 --> 00:33:52,000 It gehiago nodo bakoitzak duen ez da bi haur baino gehiagok, hemen ikusi dugun bezala. 718 00:33:52,000 --> 00:33:54,990 , Zuhaitz bat, oro har, eta Zure guraso eta aiton-amonak 719 00:33:54,990 --> 00:33:57,640 Haurrek asko izan daiteke, edo grandkids dute benetan nahi bezala, 720 00:33:57,640 --> 00:34:00,820 eta, beraz, adibidez, hiru ez daukagu haurrak eskuineko eskua nodo hori off, 721 00:34:00,820 --> 00:34:05,480 baina zuhaitz bitar batean, nodo bat du zero, bat, edo bi haurrak Gehienez. 722 00:34:05,480 --> 00:34:08,496 Eta hori jabetza polit bat da, Orain bi capped bada delako, 723 00:34:08,496 --> 00:34:10,620 gai izango garela uste du log base txiki bat lortzeko bi 724 00:34:10,620 --> 00:34:11,975 Ekintza gertatzen da hemen, azken finean. 725 00:34:11,975 --> 00:34:13,350 Beraz, zerbait logaritmikoa dugu. 726 00:34:13,350 --> 00:34:14,558 Baina une batean gehiago. 727 00:34:14,558 --> 00:34:19,810 Bilaketa zuhaitz esan nahi duten zenbakiek dira antolatu besteak beste, ezkerretik haurraren 728 00:34:19,810 --> 00:34:22,429 balio erroa baino handiagoa da. 729 00:34:22,429 --> 00:34:26,010 Eta bere eskuineko umea da erro bera baino handiagoa zen. 730 00:34:26,010 --> 00:34:29,290 Beste era batera esanda, edozein hartzen baduzu nodes, argazki hau zirkuluak, 731 00:34:29,290 --> 00:34:31,840 eta haren ezkerreko eta etorkizunari begira Seme-alaba eta bere eskuineko haur, 732 00:34:31,840 --> 00:34:34,739 lehenengoa baino gutxiago izan behar du, bigarrena baino handiagoa izan behar du. 733 00:34:34,739 --> 00:34:36,159 Beraz, behatu egiaztatu 55. 734 00:34:36,159 --> 00:34:37,780 Seme-alaba ezker It 33 da. 735 00:34:37,780 --> 00:34:38,620 It baino gutxiago. 736 00:34:38,620 --> 00:34:40,929 55, bere eskuineko seme-77 da. 737 00:34:40,929 --> 00:34:41,783 Baino handiagoa da. 738 00:34:41,783 --> 00:34:43,199 Eta hori definizio errekurtsiboa da. 739 00:34:43,199 --> 00:34:46,480 Behin horietako bat egiaztatu ahal izan genuen nodo eta eredua bera eutsi litzateke. 740 00:34:46,480 --> 00:34:49,389 >> Beraz, zein da bat ere polita binary bilaketa zuhaitz, da 741 00:34:49,389 --> 00:34:52,204 Bat, martxan jarri ahal izango dugu egitura batekin, besterik gabe, nahi hau. 742 00:34:52,204 --> 00:34:54,620 Eta bota ari gara, nahiz eta egiturak asko zure at, 743 00:34:54,620 --> 00:34:56,560 samarra ari dira Intuitiboa orain, zorionez. 744 00:34:56,560 --> 00:35:00,570 Sintaxia ziur urrutira dago oraindik, baina nodo baten edukiak honetan 745 00:35:00,570 --> 00:35:02,786 Testuinguru eta mantendu dugu nodo hitza erabiliz, 746 00:35:02,786 --> 00:35:04,910 Laukizuzen bat ote den pantailan edo zirkulu baten gainean, 747 00:35:04,910 --> 00:35:08,970 edukiontzi orokorra batzuk besterik ez da, zuhaitz baten kasu honetan, bat bezala hasi 748 00:35:08,970 --> 00:35:11,780 ikusi genuen, oso bat behar dugu nodo bakoitzeko 749 00:35:11,780 --> 00:35:15,460 eta, ondoren, behar dut bi erakusleak seinalatuz Umearen ezkerreko eta eskuineko seme, 750 00:35:15,460 --> 00:35:16,590 hurrenez hurren. 751 00:35:16,590 --> 00:35:20,730 Beraz, nola guk ezartzeko duten egitura bat ere. 752 00:35:20,730 --> 00:35:22,315 Eta nola liteke ezartzeko nuen kodea? 753 00:35:22,315 --> 00:35:26,730 Beno, dezagun azkar bat Adibidez, txiki-txiki honetan begiratu. 754 00:35:26,730 --> 00:35:29,820 Ez da funtzionala, baina ez dut kopiatu eta egitura itsatsi. 755 00:35:29,820 --> 00:35:33,510 Eta bada bitar bat nire funtzioa bilaketa zuhaitz bilaketa deritzo, 756 00:35:33,510 --> 00:35:36,980 eta honek bi argumentu hartzen, zenbaki oso N batekin eta erakuslea 757 00:35:36,980 --> 00:35:41,400 nodo bat, beraz, erakuslea zuhaitz baten inguruan edo zuhaitz baten erro erakuslea, 758 00:35:41,400 --> 00:35:43,482 nola ez, N bilatuz itzultzea? 759 00:35:43,482 --> 00:35:45,440 Beno, lehenik eta behin, ez naiz delako erakusleak aurre, 760 00:35:45,440 --> 00:35:46,750 Behatu kontrol bat egin nahi dut. 761 00:35:46,750 --> 00:35:54,279 Zuhaitz berdin berdin nulua bada, da: Zuhaitz hau edo ez zuhaitz hau? 762 00:35:54,279 --> 00:35:55,070 Ezin da izan, ezta? 763 00:35:55,070 --> 00:35:56,870 I am bada nulua iragana, ez dago ezer han. 764 00:35:56,870 --> 00:35:59,230 I baliteke baita besterik blindly esan itzultzeko faltsua. 765 00:35:59,230 --> 00:36:04,050 Didazu ezer ez bada, ziur aski, ez dut Bat-zenbakia N. aurkitu Beraz, zer gehiago agian I 766 00:36:04,050 --> 00:36:04,750 egiaztatu orain? 767 00:36:04,750 --> 00:36:12,830 Baita beste N badago esan noa edozein dela zuhaitz nodo baino txikiagoa 768 00:36:12,830 --> 00:36:16,300 Dudan da entregatu N balio. 769 00:36:16,300 --> 00:36:20,270 Beste era batera esanda, zenbakia banago Ba, N bila, nodo baino gutxiago 770 00:36:20,270 --> 00:36:21,340 Naiz bila dagoela. 771 00:36:21,340 --> 00:36:23,190 Eta nodoa nabil zuhaitz deitzen denean, 772 00:36:23,190 --> 00:36:26,370 eta aurreko adibidea gogoratzen Balio at lortu erakuslea ere, 773 00:36:26,370 --> 00:36:28,310 Gezi idazkera erabiliko dut. 774 00:36:28,310 --> 00:36:35,960 Beraz N zuhaitz gezi baino gutxiago bada N, kontzeptualki, ezker nahi dut. 775 00:36:35,960 --> 00:36:38,590 Zelan express bilatuta utzi nuen? 776 00:36:38,590 --> 00:36:41,560 Argi izan, hau da, bada Galdera Irudian, 777 00:36:41,560 --> 00:36:44,612 eta izan dut gainditu goreneko dagoela gezi hori behera seinalatuz. 778 00:36:44,612 --> 00:36:45,570 Hori da nire zuhaitz erakuslea. 779 00:36:45,570 --> 00:36:48,060 Zuhaitzaren erroan dut apuntatzen naiz. 780 00:36:48,060 --> 00:36:52,100 Eta esan ari naiz, zeren 44 zenbakira, nahierara. 781 00:36:52,100 --> 00:36:55,300 Da baino 44 gutxiago edo 55 jakina baino handiagoa? 782 00:36:55,300 --> 00:36:56,360 Beraz, baino txikiagoa da. 783 00:36:56,360 --> 00:36:58,760 Eta beraz, honek badu baldintza aplikatzen da. 784 00:36:58,760 --> 00:37:03,981 Beraz, kontzeptu, zer egin nahi dut bilatu hurrengo I 44 bila nabil bada? 785 00:37:03,981 --> 00:37:04,480 Bai? 786 00:37:04,480 --> 00:37:08,310 787 00:37:08,310 --> 00:37:11,100 >> Zehazki, nahi dut bilatu ezkerreko haur, 788 00:37:11,100 --> 00:37:12,789 edo ezkerrera argazki honen azpi-zuhaitz. 789 00:37:12,789 --> 00:37:14,830 Eta hain zuzen ere, let me bidez Irudian behera hemen 790 00:37:14,830 --> 00:37:17,770 une bat besterik ez, geroztik Ezin dut urratu honek egindako. 791 00:37:17,770 --> 00:37:21,150 Hemen hasten naiz 55 bada, eta Dakit hori 44 balio du 792 00:37:21,150 --> 00:37:23,180 Nabil for da ezkerretik, gauza 793 00:37:23,180 --> 00:37:26,010 ren liburu telefonoa urraketaren bezala erdi edo zuhaitza urraketaren erdia. 794 00:37:26,010 --> 00:37:29,660 Zaintzeko buruzko Jada ez dut zuhaitzaren zati honetan osoan. 795 00:37:29,660 --> 00:37:33,270 Eta, hala ere, bitxia zen dagokionez egitura, hemen hori baino gauza hau 796 00:37:33,270 --> 00:37:36,682 33 batekin hasten da, berez, hori bilatu zuhaitz bitar bat da. 797 00:37:36,682 --> 00:37:39,890 Hitzaren errekurtsiboak direla eta lehen esan dudan hain zuzen ere, hau da datu-egitura bat da 798 00:37:39,890 --> 00:37:41,707 definizioz errekurtsiboak da. 799 00:37:41,707 --> 00:37:44,540 Zuhaitz bat hori da, hau izan ditzakezu handia, baina bakoitzak bere seme-alabetako 800 00:37:44,540 --> 00:37:46,870 zuhaitz bat besterik ez da apur bat txikiagoak adierazten du. 801 00:37:46,870 --> 00:37:50,910 Horren ordez, haren aitona izateaz edo amona, gaur egun besterik ez ama da 802 00:37:50,910 --> 00:37:54,300 or-- Ezin dut ez esatea ama edo aita, hori arraroa izango litzateke. 803 00:37:54,300 --> 00:37:59,000 Horren ordez, bi seme-alabak bertan anaia eta anaia bezala izango litzateke. 804 00:37:59,000 --> 00:38:01,120 Familiako zuhaitza belaunaldi berria. 805 00:38:01,120 --> 00:38:02,900 Baina egituraz, ideia bera da. 806 00:38:02,900 --> 00:38:06,790 Eta bihurtzen da funtzio bat daukat zeinarekin dut bilaketa bitarra bat bilatu ahal 807 00:38:06,790 --> 00:38:07,290 zuhaitza. 808 00:38:07,290 --> 00:38:08,680 Bilaketa deritzo. 809 00:38:08,680 --> 00:38:17,870 Bilatu I N zuhaitz gezi-ezkerrean N-balioa baino handiagoa da, bestela, 810 00:38:17,870 --> 00:38:18,870 Une at nagoela. 811 00:38:18,870 --> 00:38:20,800 Duela une bat istorioan 55. 812 00:38:20,800 --> 00:38:23,780 Izeneko funtzio bat daukat bilaketa hori besterik ezin dut 813 00:38:23,780 --> 00:38:29,660 gainditu N honetan eta errekurtsiboki bilatu azpi-zuhaitz eta itzulera besterik 814 00:38:29,660 --> 00:38:30,620 edozein dela ere erantzun hori. 815 00:38:30,620 --> 00:38:33,530 Bestela Dut batzuk final oinarri kasuan hemen. 816 00:38:33,530 --> 00:38:35,310 >> Zer da, azken kasu? 817 00:38:35,310 --> 00:38:36,570 Zuhaitz bai da nulua. 818 00:38:36,570 --> 00:38:39,980 Balioa, naiz bai bila hori baino txikiago edo handiagoa 819 00:38:39,980 --> 00:38:42,610 edo berdintzen. 820 00:38:42,610 --> 00:38:44,750 Eta berdina esan izan dut berdinak, baina logikoki da 821 00:38:44,750 --> 00:38:46,500 besterik gabe, bestela hemen esaten baliokidea. 822 00:38:46,500 --> 00:38:49,150 Beraz, egia da nola zerbait aurkitu dut. 823 00:38:49,150 --> 00:38:51,710 Beraz, espero dugu hau da are gehiago sinesgarria adibidez 824 00:38:51,710 --> 00:38:54,900 ergelak sigma funtzioa baino hitzaldiak batzuk bat egin dugu atzera, 825 00:38:54,900 --> 00:38:58,360 non bezain erraza zen begizta bat erabili behar da gora zenbatu batetik zenbaki guztiak 826 00:38:58,360 --> 00:39:02,390 N. Here datu-egitura baten bidez bera errekurtsiboki da 827 00:39:02,390 --> 00:39:07,050 definitu eta errekurtsiboki marraztuta, orain dugu geure burua adierazteko gaitasuna izan 828 00:39:07,050 --> 00:39:09,780 kode hori errekurtsiboak da bera. 829 00:39:09,780 --> 00:39:12,580 Beraz, hau zehatza berean kodea hemen da. 830 00:39:12,580 --> 00:39:14,400 >> Beraz, zer beste arazo batzuk konpondu ahal izango dugu? 831 00:39:14,400 --> 00:39:18,160 Beraz, urrats polita egin urruntzen une bat besterik zuhaitzak. 832 00:39:18,160 --> 00:39:20,130 Hemen da, esan, Alemaniako bandera. 833 00:39:20,130 --> 00:39:22,020 Eta ez dago argi bat Bandera hau eredu. 834 00:39:22,020 --> 00:39:23,811 Eta ez da asko munduko banderak dagoela 835 00:39:23,811 --> 00:39:27,560 dira hau bezain sinplea dagokionez euren kolore eta eredu. 836 00:39:27,560 --> 00:39:31,930 Baina demagun da hori gisa gordeta .gif, Edo JPEG bat, edo bitmap, edo ping bat, 837 00:39:31,930 --> 00:39:34,240 edozein fitxategi formatu grafiko horrekin Oraindik ezagutzen, 838 00:39:34,240 --> 00:39:36,460 eta horietako batzuk gaude jolastuz Pset4 ere. 839 00:39:36,460 --> 00:39:41,550 Honek ez dirudi merezi gordetzeko pixel beltza, pixel beltza, pixel beltzak, 840 00:39:41,550 --> 00:39:44,790 dot, dot, dot, sorta oso bat Lehenengo scanline pixel beltzak, 841 00:39:44,790 --> 00:39:47,430 edo errenkadan, ondoren, sorta oso bat eta, ondoren, sorta oso bat bera 842 00:39:47,430 --> 00:39:49,530 bera, eta, ondoren, bat gorria pixel sorta osoa, 843 00:39:49,530 --> 00:39:53,020 pixel gorria, gorria pixel, orduan oso bat pixel horia sorta, horia, ezta? 844 00:39:53,020 --> 00:39:55,050 >> Bertan, besteak beste eraginkortasunik eza da hemen. 845 00:39:55,050 --> 00:39:59,040 Nola litzateke senez duzu Alemaniako bandera konprimitu 846 00:39:59,040 --> 00:40:01,320 da fitxategi bezala gauzatzeko bada? 847 00:40:01,320 --> 00:40:04,940 Ezin dugu zer informazio Like traba diskoko gordetzeko ordenan 848 00:40:04,940 --> 00:40:08,040 Gure fitxategiaren tamaina txikitzeko bezalako a kilobyte, zerbait megabyte bat 849 00:40:08,040 --> 00:40:09,430 txikiago? 850 00:40:09,430 --> 00:40:13,130 TIIRA soberakina gezurrak Hemen argi eta garbi izan behar du? 851 00:40:13,130 --> 00:40:13,880 Zer izan nahi duzu? 852 00:40:13,880 --> 00:40:14,380 Bai? 853 00:40:14,380 --> 00:40:21,380 854 00:40:21,380 --> 00:40:21,970 Hain zuzen ere. 855 00:40:21,970 --> 00:40:24,550 Zergatik ez, baino gogoratu darn pixel bakoitzaren kolorea 856 00:40:24,550 --> 00:40:28,200 besterik ez duzu Pset4 ere egiten ari bezalako bit fitxategi formatua batera, 857 00:40:28,200 --> 00:40:32,060 zergatik ez dute besterik ez duzu egin kontatuta pixel zutabea, adibidez 858 00:40:32,060 --> 00:40:35,370 pixel beltz mordo bat, mordo bat gorria eta horia mordo bat, 859 00:40:35,370 --> 00:40:39,210 eta, ondoren, nolabait kodetzeko du errepikatu ideia hau 100 aldiz 860 00:40:39,210 --> 00:40:41,020 edo errepikatu 1.000 aldiz hau? 861 00:40:41,020 --> 00:40:43,430 Non 100 edo 1.000 da zenbaki oso bat besterik ez da, beraz, 862 00:40:43,430 --> 00:40:47,290 ihes zenbaki bakar bat besterik ez ordez, ehunka edo milaka 863 00:40:47,290 --> 00:40:48,270 pixelez osagarriak. 864 00:40:48,270 --> 00:40:50,990 Eta, hain zuzen, hori da nola dugu Alemaniako bandera konprimitu daiteke. 865 00:40:50,990 --> 00:40:51,490 Eta 866 00:40:51,490 --> 00:40:53,470 Orain Frantziako bandera buruz zer? 867 00:40:53,470 --> 00:40:58,930 Eta nolabaiteko apur bat ariketa mental, zein bandera 868 00:40:58,930 --> 00:41:01,040 konprimituta daiteke diskoko gehiago? 869 00:41:01,040 --> 00:41:05,720 Alemaniako bandera edo frantsesek bandera, planteamendu hori hartzen badugu? 870 00:41:05,720 --> 00:41:08,490 Alemaniako bandera, zeren ez dago erredundantzia horizontal gehiago. 871 00:41:08,490 --> 00:41:12,190 Eta diseinua, fitxategi grafiko asko formatuetan ez, hain zuzen eskaneatzea gisa lerro lan 872 00:41:12,190 --> 00:41:12,830 horizontalki. 873 00:41:12,830 --> 00:41:14,674 Lan egin izan dute bertikalean, besterik gizateriaren 874 00:41:14,674 --> 00:41:17,090 Duela urte erabaki hori zaitugu Oro har, gauza ilara pentsatzea 875 00:41:17,090 --> 00:41:18,880 Ilara ordez zutabea zutabe arabera. 876 00:41:18,880 --> 00:41:20,820 Beraz, hain zuzen ere, ez bazina den fitxategia begiratzeko 877 00:41:20,820 --> 00:41:24,670 Alemaniako bandera bat eta frantses bat tamaina Ez, hain luze bereizmen den bezala 878 00:41:24,670 --> 00:41:27,530 du, zabalera bera bera eta altuera, hau 879 00:41:27,530 --> 00:41:31,580 Hemen da handiagoa izan, joan duzulako yourself hiru bider errepikatu dute. 880 00:41:31,580 --> 00:41:35,570 Urdina, errepikatu zehaztu egin beharko duzu yourself, zuria, errepikatu zeure burua, gorria, 881 00:41:35,570 --> 00:41:36,740 errepikatu yourself. 882 00:41:36,740 --> 00:41:39,000 Ezin duzu besterik gabe, joan guztiak eskuineko bidea. 883 00:41:39,000 --> 00:41:41,200 Eta alde batera utzita, egiteko garbitu konpresioa 884 00:41:41,200 --> 00:41:43,910 nonahi, horiek dira bada video-- batetik lau markoak duzu 885 00:41:43,910 --> 00:41:45,890 film bat gogoratzen bideoa edo, oro har, 886 00:41:45,890 --> 00:41:47,286 29 edo 30 fotograma segundoko bezala. 887 00:41:47,286 --> 00:41:50,410 Da flip liburu txiki bat bezalakoa da non duzu besterik ikusten irudia, irudi, irudia, irudi, 888 00:41:50,410 --> 00:41:54,410 irudia besterik super azkarra hain itxura pantailan agertzen diren aktoreek mugitzen dira. 889 00:41:54,410 --> 00:41:57,130 Hemen da on erle bumble bat lore-sorta bat goialdean. 890 00:41:57,130 --> 00:41:59,790 Eta nahiz eta izan da mota izan zaila Lehen begiratuan ikusten, 891 00:41:59,790 --> 00:42:04,020 mugitzen gauza bakarra Pelikula honek erlea da. 892 00:42:04,020 --> 00:42:06,880 >> Zer da gordetzeko muda Bideo Konprimatu gabe? 893 00:42:06,880 --> 00:42:11,420 Zaborraren a video gordetzeko moduko It lau irudi ia berdin gisa 894 00:42:11,420 --> 00:42:13,670 desberdintzen neurrian bakarrik non erlea bezala. 895 00:42:13,670 --> 00:42:16,280 Bota dezakezu kanpoan gehien Informazio hori 896 00:42:16,280 --> 00:42:20,190 eta gogoratu soilik, adibidez, Lehenengo markoa eta azken markoa, 897 00:42:20,190 --> 00:42:22,180 gakoa markoak dut badituzu inoiz hitza entzun, 898 00:42:22,180 --> 00:42:24,337 eta besterik gorde erdialdera non erlea da. 899 00:42:24,337 --> 00:42:26,170 Eta zuk ez izan arrosa guztia gordetzeko, 900 00:42:26,170 --> 00:42:28,330 eta urdinak, eta baloreak berdea baita. 901 00:42:28,330 --> 00:42:31,200 Beraz, hau da, bakarrik esaten duten konpresioa da nonahi. 902 00:42:31,200 --> 00:42:34,900 Teknika bat erabiltzen dugu askotan da edo hartu ematen du egun hauetan. 903 00:42:34,900 --> 00:42:38,750 >> Baina, nola ez, testu konprimitu duzu? 904 00:42:38,750 --> 00:42:40,450 Zelan duzun testu konprimitzeko buruz joan? 905 00:42:40,450 --> 00:42:45,410 Beno, pertsonaia bakoitzak urtean Ascii byte bat, edo zortzi bit. 906 00:42:45,410 --> 00:42:47,360 Eta hori da mota muda, ezta? 907 00:42:47,360 --> 00:42:51,160 Seguruenik bat idazten duzulako eta E eta I eta O eta U asko 908 00:42:51,160 --> 00:42:55,270 W edo Q edo Z bezalako baino gehiago askotan, hizkuntzaren arabera eta horietan 909 00:42:55,270 --> 00:42:56,610 zalantzarik idazten ari zaren. 910 00:42:56,610 --> 00:42:59,600 Eta beraz, zergatik erabiltzen ari gara Gutun bakoitzean zortzi bit, 911 00:42:59,600 --> 00:43:02,040 Gutxienez barne popular letrak, ezta? 912 00:43:02,040 --> 00:43:05,300 Zergatik ez bit gutxiago erabili super popular letrak, 913 00:43:05,300 --> 00:43:07,760 E bezala, gauzak asmatzen dituzu Lehenengo Fortune gurpila ere, 914 00:43:07,760 --> 00:43:10,450 eta erabili bit gehiago gutxiago popular letrak? 915 00:43:10,450 --> 00:43:10,950 Zergatik? 916 00:43:10,950 --> 00:43:13,130 Besterik ez gara joan delako Horietako gutxiagotan erabili. 917 00:43:13,130 --> 00:43:15,838 >> Beno, bihurtzen da ez dagoela dute Horretarako egindako saiakerak egon dira. 918 00:43:15,838 --> 00:43:18,630 Eta gogoratzen duzu mailakoa bada eskolan edo, Morse kodea. 919 00:43:18,630 --> 00:43:20,400 Morse kodea puntuekin ditu eta marrak erabil daitekeen 920 00:43:20,400 --> 00:43:24,270 alanbre gisa batera transmititzen soinuak edo nolabaiteko seinale. 921 00:43:24,270 --> 00:43:25,930 Baina Morse kodea super garbi bat da. 922 00:43:25,930 --> 00:43:29,010 Sistema bitar bat mota da puntu edo marrak duzula. 923 00:43:29,010 --> 00:43:30,977 Baina ikusten duzu, esate baterako, bi puntuekin bada. 924 00:43:30,977 --> 00:43:33,810 Edo uste itzuliz gero operadorea Nork beep, beep, beep bezala doa, 925 00:43:33,810 --> 00:43:36,760 beep, trigger apur bat kolpatzeko Hori seinale bat igortzen, 926 00:43:36,760 --> 00:43:40,360 , hartzaileari, bi jasotzen baduzu puntuak, zer mezu jaso duzu? 927 00:43:40,360 --> 00:43:43,490 Erabat arbitrarioak. 928 00:43:43,490 --> 00:43:44,450 >> I? 929 00:43:44,450 --> 00:43:45,060 I? 930 00:43:45,060 --> 00:43:47,500 Edo zer naizenean edo I? 931 00:43:47,500 --> 00:43:49,570 Agian bi besterik E ko eskubidea izan da? 932 00:43:49,570 --> 00:43:52,480 Beraz, ez da arazo hau da Morse batera decodability of 933 00:43:52,480 --> 00:43:54,890 kodea, zeinaren ezean Pertsona duzun mezuaren bidalketa 934 00:43:54,890 --> 00:43:59,510 benetan pausarazten orain arteko ordena ditzakezu ikusi edo letrak arteko aldeak entzuteko, 935 00:43:59,510 --> 00:44:02,990 Ez da nahikoa, besterik gabe, korronte bat bidaltzeko zeroen eta bai, 936 00:44:02,990 --> 00:44:05,610 edo puntuak eta marrak, han anbiguotasuna delako. 937 00:44:05,610 --> 00:44:08,640 E dot bakar bat da, beraz, nahi izanez gero Ikusten bi puntu edo bi puntu entzuten, 938 00:44:08,640 --> 00:44:11,254 agian bi E ko da edo, agian, I. bat da 939 00:44:11,254 --> 00:44:13,670 Beraz, bat-sistema bat behar dugu gutxi duten baino gehiago clever. 940 00:44:13,670 --> 00:44:16,851 Beraz izeneko gizon bat Huffman urte Duela sortu zen zehazki honekin. 941 00:44:16,851 --> 00:44:18,600 Beraz, ari gara joan Begirada azkar bat hartu behar da 942 00:44:18,600 --> 00:44:20,114 Nola zuhaitz hau oso lotuta daudenak dira. 943 00:44:20,114 --> 00:44:22,530 Demagun hau dela batzuk ergelak mezuan bidali nahi duzu, 944 00:44:22,530 --> 00:44:26,342 besterik A, B osatzen dute, C-ren D's eta E-ren, baina han erredundantzia asko da hemen. 945 00:44:26,342 --> 00:44:27,550 Ez da ekarri English izateko. 946 00:44:27,550 --> 00:44:28,341 Ez da enkriptatuko. 947 00:44:28,341 --> 00:44:30,540 Mezuaren ergelak bat besterik ez da errepikapena asko. 948 00:44:30,540 --> 00:44:34,010 Beraz, bada benetan zenbatu out duzun guztia du A, B-ren eta C-ren, D's, eta E-ren, hona hemen 949 00:44:34,010 --> 00:44:34,890 maiztasuna. 950 00:44:34,890 --> 00:44:37,800 Letrak% 20 dira A, letrak% 45 951 00:44:37,800 --> 00:44:39,660 E-ren, eta beste hiru maiztasunak dira. 952 00:44:39,660 --> 00:44:41,960 Gora zenbatu ditugu han eskuz eta besterik ez zuen math. 953 00:44:41,960 --> 00:44:44,579 >> Beraz, izarrekin bihurtzen da Huffman, aspaldi, 954 00:44:44,579 --> 00:44:46,620 konturatu, hori badakizu zer, eraikin hasi badut 955 00:44:46,620 --> 00:44:51,172 zuhaitz bat, edo baso, izango bada, honela, honako hauek egin ahal izango dut. 956 00:44:51,172 --> 00:44:53,880 Bakoitzari nodo emateko noa letrak zaintzen dut buruz of 957 00:44:53,880 --> 00:44:55,530 eta naiz gordetzeko noa nodo horren barruan 958 00:44:55,530 --> 00:44:58,610 maiztasunak hamarren bat bezala balio, edo erabili izan duzu N batekin, gehiegi, 959 00:44:58,610 --> 00:45:00,210 baina besterik ez dugu erabili mugikor bat hemen. 960 00:45:00,210 --> 00:45:03,100 Eta algoritmoa you dela proposatu zuen 961 00:45:03,100 --> 00:45:07,210 nodo bakarreko basoa hau hartu zuhaitzak, zuhaitz beraz super laburrak, 962 00:45:07,210 --> 00:45:11,920 eta lotu batekin hasten zara talde berria, guraso berriak, izango bada. 963 00:45:11,920 --> 00:45:16,150 Eta hori egin duzu aukeratuz aldi berean bi maiztasunak txikiena. 964 00:45:16,150 --> 00:45:18,110 Beraz,% 10 eta% 10 hartu nuen. 965 00:45:18,110 --> 00:45:19,090 Nodo berri bat sortu dut. 966 00:45:19,090 --> 00:45:20,910 Eta nodo berria deitu nion% 20. 967 00:45:20,910 --> 00:45:22,750 >> Zein bi nodo hurrengo uztartzeko? 968 00:45:22,750 --> 00:45:23,810 Pixka bat anbiguoa da. 969 00:45:23,810 --> 00:45:26,643 Beraz, ez du korner batzuen kasuak da kontuan hartu, baina gauza politak mantentzeko, 970 00:45:26,643 --> 00:45:29,300 % 20 aukeratu noa - Orain, haurrek ez ikusi dut. 971 00:45:29,300 --> 00:45:33,640 % 20 aukeratu noa eta % 15 eta bi ertzak berria marrazteko. 972 00:45:33,640 --> 00:45:35,624 Eta orain, bi nodo ez logikoki uztartzeko? 973 00:45:35,624 --> 00:45:38,540 Ez ikusi egin seme-alaba guztiak, denak bilobak, besterik sustraiak begiratzeko 974 00:45:38,540 --> 00:45:39,070 orain. 975 00:45:39,070 --> 00:45:42,220 Zein bi nodo elkarrekin lotzeko dut? 976 00:45:42,220 --> 00:45:44,530 Bi Point eta 0,35. 977 00:45:44,530 --> 00:45:45,890 Hargatik bi ertzak berria marraztu zidan. 978 00:45:45,890 --> 00:45:47,570 Eta gero, ez dut ezker bat lortu. 979 00:45:47,570 --> 00:45:48,650 Beraz, hemen, zuhaitz bat da. 980 00:45:48,650 --> 00:45:51,160 Eta nik nahita landu dira motatako polit agertzen, 981 00:45:51,160 --> 00:45:55,870 baina konturatu ertzak duten Era berean, etiketatu zero eta bat. 982 00:45:55,870 --> 00:45:59,510 Beraz, ezker ertz guztiak zero dira edonola, baina koherentziaz. 983 00:45:59,510 --> 00:46:01,170 Eskuineko ertzak guztiak dira. 984 00:46:01,170 --> 00:46:05,070 >> Eta orain zer Hoffman proposatu da, B a ordezkatzen nahi baduzu, 985 00:46:05,070 --> 00:46:10,080 ordezkatzen 66. zenbakira beharrean bezala Ascii horretan zortzi bit osoa da, 986 00:46:10,080 --> 00:46:13,360 badakizu zer, denda besterik ereduarekin zero, zero, zero, 987 00:46:13,360 --> 00:46:17,030 zero, hori delako bidea da Nire zuhaitz batetik, Mr. Huffman zuhaitza 988 00:46:17,030 --> 00:46:18,600 erro batetik hosto izateko. 989 00:46:18,600 --> 00:46:20,970 A gorde nahi baduzu E, aldiz, ez 990 00:46:20,970 --> 00:46:26,290 zortzi bit E. bat ordezkatzen duten bidali Horren ordez, bidal zer bit eredua? 991 00:46:26,290 --> 00:46:26,890 One. 992 00:46:26,890 --> 00:46:30,410 Eta zer da buruz hau da, polita E hori ezagunena letra da, 993 00:46:30,410 --> 00:46:32,340 eta erabiltzen ari zarela laburrena da kodea. 994 00:46:32,340 --> 00:46:34,090 Hurrengo ezagunena Gutun hura bezalako itxura 995 00:46:34,090 --> 00:46:37,380 A. zegoen eta, beraz, zenbat bit zuen proposamen hau erabili zuen? 996 00:46:37,380 --> 00:46:38,270 Zero, bat. 997 00:46:38,270 --> 00:46:41,060 >> Eta hori delako inplementatu Zuhaitz hau bezala, oraingoz 998 00:46:41,060 --> 00:46:43,350 utzi zeintzuk me han zalantzarako biderik Morse gisa 999 00:46:43,350 --> 00:46:46,090 kodea, guztiak ere Honi buruz Laguntza gutunak 1000 00:46:46,090 --> 00:46:48,780 ertz horien amaieran dira. 1001 00:46:48,780 --> 00:46:50,580 Beraz, hori besterik ez da Zuhaitz bat aplikatzea. 1002 00:46:50,580 --> 00:46:52,538 Hau is-- eta olatuen dut hau nire eskua nola duzu 1003 00:46:52,538 --> 00:46:55,570 Hau ezartzeko liteke C egitura gisa. 1004 00:46:55,570 --> 00:46:58,260 Besterik konbinatu behar dugu Sinbolo bat, char bat bezala, 1005 00:46:58,260 --> 00:46:59,910 eta maiztasuna ezker eta eskuin. 1006 00:46:59,910 --> 00:47:02,510 Baina ikus ditzagun bi at final adibide egingo duzun 1007 00:47:02,510 --> 00:47:06,070 eskuratu nahiko ondoren ezagutzen galdetegi zero arazo girotuta bost. 1008 00:47:06,070 --> 00:47:09,210 >> Beraz, ez da datu-egitura da hash taula bat bezala ezagutzen. 1009 00:47:09,210 --> 00:47:12,247 Eta hash taula bat motatako da hozteko kuboak duela. 1010 00:47:12,247 --> 00:47:14,830 Eta demagun lau ontzi daude han Hemen, besterik gabe, lau hutsunerik. 1011 00:47:14,830 --> 00:47:20,830 Hemen karta-sorta bat da, eta hemen dago Kluba, aitzurra, club, diamante, club, 1012 00:47:20,830 --> 00:47:25,960 diamante, club, diamante, clubs-- beraz, hau da, ausazko. 1013 00:47:25,960 --> 00:47:30,330 Bihotzak, hearts-- hain naiz Sarrerek guztiak bucketizing hemen. 1014 00:47:30,330 --> 00:47:32,430 Eta hash taula beharrak bat zure sarrera begiratzeko, 1015 00:47:32,430 --> 00:47:34,850 eta gero jarri jakin batean place oinarritutako zer ikusten duzun. 1016 00:47:34,850 --> 00:47:35,600 Algoritmo bat da. 1017 00:47:35,600 --> 00:47:37,980 Eta super bat erabiltzen ari nintzen bisuala algoritmo sinpleak. 1018 00:47:37,980 --> 00:47:40,030 Horietatik zati gogorrena izan zen zer pictures ziren gogoratzeko. 1019 00:47:40,030 --> 00:47:41,590 Eta gero, lau gauzak guztira han. 1020 00:47:41,590 --> 00:47:45,440 >> Orain pilak hazten ari da, eta horrek diseinu nahita gauza da hemen. 1021 00:47:45,440 --> 00:47:46,540 Baina zer gehiago egin nezakeela? 1022 00:47:46,540 --> 00:47:49,080 Beraz, hemen benetan izan dugu bat Eskola Azterketa liburu zahar mordo. 1023 00:47:49,080 --> 00:47:51,240 Demagun mordo bat ikasleak izenak hemen daude. 1024 00:47:51,240 --> 00:47:52,570 Hemen hash taula bat handiagoa da. 1025 00:47:52,570 --> 00:47:54,867 Horren ordez, lau kubo, Ditut, demagun 26. 1026 00:47:54,867 --> 00:47:57,950 Eta ez genuen joan maileguan 26 nahi kanpotik [gauzak? Annenberg?], Beraz, 1027 00:47:57,950 --> 00:48:00,289 Hemen da bost ordezkatzen dituzten A Z. bidez Eta badut 1028 00:48:00,289 --> 00:48:03,580 Ikasle bat, eta izen batekin hasten da ikusten, Bere galdetegi jarri ez noa. 1029 00:48:03,580 --> 00:48:08,850 Norbaitek C rekin hasten bada, han, A-- benetan, ez zuen nahi hori egin. 1030 00:48:08,850 --> 00:48:10,060 B hemen baino gehiago doa. 1031 00:48:10,060 --> 00:48:13,390 Beraz, lortu dut A eta B eta C. Eta orain, hemen beste bat ikaslea da. 1032 00:48:13,390 --> 00:48:16,212 Baina hash taula hau bada sorta batekin garatuta, 1033 00:48:16,212 --> 00:48:17,920 Motatako naiz izorratu puntu honetan, ezta? 1034 00:48:17,920 --> 00:48:19,510 Mota behar dut nonbait hau jarri. 1035 00:48:19,510 --> 00:48:24,380 >> Beraz, ez dut hori ebazteko modu bat da, guztiak eskuinera, A lanpetuta dago, B lanpetuta dago, C lanpetuta dago. 1036 00:48:24,380 --> 00:48:28,880 Jarri zion D. Beraz at noa Lehenengo, ausazko berehalako sarbidea daukat 1037 00:48:28,880 --> 00:48:31,064 ikasleentzat kuboak bakoitzari. 1038 00:48:31,064 --> 00:48:33,230 Baina orain, mota horretako transferituta Zerbait lineala sartu, 1039 00:48:33,230 --> 00:48:36,750 bilatu norbaitek ikasi nahi badut delako cuyo nombre A batekin hasten da, hemen begiratu dut. 1040 00:48:36,750 --> 00:48:38,854 Baina hau ez da A Ikasle bila nabil, 1041 00:48:38,854 --> 00:48:41,520 Dute, mota horretako I egiaztapena hasteko kuboak, zer egin nuen delako 1042 00:48:41,520 --> 00:48:44,530 zen linealki ordenatu Datuen egitura probarik. 1043 00:48:44,530 --> 00:48:47,710 Esaten modu ergelak besterik begiratu eskuragarri dagoen lehen irekitzea, 1044 00:48:47,710 --> 00:48:51,850 eta B plan bat bezala jarri, nolabait esateko, edo kasu honetan D plan, balioa 1045 00:48:51,850 --> 00:48:53,340 Kokapena ordez ere. 1046 00:48:53,340 --> 00:48:56,470 Hau da, besterik gabe, beraz, nik baduzu 26 kokaleku eta ikasleek ez lortu 1047 00:48:56,470 --> 00:49:00,600 Izen Q edo Z, edo antzeko zerbait ekin Hori, gutxienez, espazioa erabiltzen ari zarela. 1048 00:49:00,600 --> 00:49:03,140 >> Baina Jadanik ikusi dugu gehiago clever soluzioak hemen, ezta? 1049 00:49:03,140 --> 00:49:04,870 Zer egingo zenuke ordez Talka bat baduzu? 1050 00:49:04,870 --> 00:49:06,670 Bi pertsona behar bada izena eman, zer egingo zenuke 1051 00:49:06,670 --> 00:49:09,160 izan dira gehiago smarter edo Konponbidea intuitiboa baino zerbait 1052 00:49:09,160 --> 00:49:12,840 A D non izan behar den jarriz? 1053 00:49:12,840 --> 00:49:14,810 Zergatik ez joan besterik ez dut Kanpotik [? Annenberg?], 1054 00:49:14,810 --> 00:49:19,960 malloc, beste nodo bezala, jarri hemen, eta, ondoren, jarri ikaslea bat, hemen. 1055 00:49:19,960 --> 00:49:22,120 Beraz, funtsean daukat array baten nolabaiteko, 1056 00:49:22,120 --> 00:49:25,590 edo, agian, gehiago Dotorea ari garen bezala lotutako zerrenda bat ikusteko hasita. 1057 00:49:25,590 --> 00:49:29,520 >> Eta beraz, hash taula bat egitura bat da Hori besterik honen itxura, 1058 00:49:29,520 --> 00:49:33,900 baina gehiago cleverly izeneko duzu zerbait Aparteko kateatzea, zeinaren bidez hash taula bat 1059 00:49:33,900 --> 00:49:38,340 Nahiko besterik array bat da, bakoitzak zeinen elementu ez da zenbaki bat, 1060 00:49:38,340 --> 00:49:40,470 lotutako zerrenda bat da berez. 1061 00:49:40,470 --> 00:49:45,080 Beraz sarbidea super azkarra lortu duzu non zure balio hash erabakitzeko. 1062 00:49:45,080 --> 00:49:48,059 Askoz txartelak Adibidez duen bezala, Erabakiak azkar egin nuen. 1063 00:49:48,059 --> 00:49:49,600 Bihotzak doa hemen, diamante doa hemen. 1064 00:49:49,600 --> 00:49:52,180 Bera hemen, hemen doa, D doa hemen, B doa hemen. 1065 00:49:52,180 --> 00:49:55,740 Beraz, azkar super look-ak, eta bada kasu batean exekutatu gertatuko duzu 1066 00:49:55,740 --> 00:49:59,429 non lortu duzun talkak, bi izen bereko beste pertsona, bai gero 1067 00:49:59,429 --> 00:50:00,970 hasi besterik ez duzu horiek elkarrekin lotuz. 1068 00:50:00,970 --> 00:50:03,900 Eta, agian, horiek ordenatuta mantentzeko duzu Ordena, agian ez duzu. 1069 00:50:03,900 --> 00:50:05,900 Baina, gutxienez, orain dinamismoa ditugu. 1070 00:50:05,900 --> 00:50:10,250 Beraz, alde batetik, azkar super daukagu denbora etengabe, eta denbora lineal mota 1071 00:50:10,250 --> 00:50:14,110 lotutako zerrendak hauek bada tartean hasteko apur bat luze lortzeko. 1072 00:50:14,110 --> 00:50:16,880 >> Beraz, silly bat mota honetako, geeky txantxa Duela urte. 1073 00:50:16,880 --> 00:50:19,590 CS50 Hack-a-thon berean, ikasleak egiaztatu denean, 1074 00:50:19,590 --> 00:50:22,040 TF batzuk edo CA urtero pentsatzen dibertigarria da jartzea 1075 00:50:22,040 --> 00:50:27,772 Hau bezalako kartel bat, non, besterik gabe, esan nahi zure izena A batekin hasten bada, 1076 00:50:27,772 --> 00:50:28,870 Horrela joan. 1077 00:50:28,870 --> 00:50:31,110 Zure izen hasten bada B batekin, joan OK Halako, 1078 00:50:31,110 --> 00:50:33,290 Bitxia da, agian, geroago seihilekoan. 1079 00:50:33,290 --> 00:50:36,420 Baina ez dago beste Hau eginez, too modu. 1080 00:50:36,420 --> 00:50:37,410 Goazen horretan itzuli. 1081 00:50:37,410 --> 00:50:38,600 >> Beraz, ez da egitura hau. 1082 00:50:38,600 --> 00:50:40,420 Eta hau da gure azken Gaurko egitura, 1083 00:50:40,420 --> 00:50:42,400 bertan trie bat izeneko zerbait da. 1084 00:50:42,400 --> 00:50:47,140 T-R-I-E, eta horregatik batzuk laburra da berreskuratzeko, baina trie deitzen. 1085 00:50:47,140 --> 00:50:51,389 Beraz, trie bat da, beste interesgarri Ideia horiek asko amalgama. 1086 00:50:51,389 --> 00:50:52,930 Zuhaitz bat, eta hori ikusi dugu aurretik da. 1087 00:50:52,930 --> 00:50:54,180 Ez da bilaketa zuhaitz bitar bat. 1088 00:50:54,180 --> 00:50:58,410 Zuhaitz bat da edozein seme-alaben kopurua batera, baina trie batean ume bakoitza 1089 00:50:58,410 --> 00:51:00,090 array bat da. 1090 00:51:00,090 --> 00:51:04,790 Tamaina sorta, esan, 26 edo, agian, 27 hyphenated izenak gaitu nahi izanez gero 1091 00:51:04,790 --> 00:51:06,790 edo pertsonen izenak ere Apostrofeak. 1092 00:51:06,790 --> 00:51:08,280 >> Eta, beraz, hau da datu-egitura bat da. 1093 00:51:08,280 --> 00:51:10,290 Eta begiratzen goitik bada behera, atsegin baduzu 1094 00:51:10,290 --> 00:51:13,710 Goiko node han, M begiratu, da Gauza kontatuta han seinalatuz, 1095 00:51:13,710 --> 00:51:17,665 hau da, gero A, X, W, E, L, L. Hau da, besterik datuak egitura arbitrarioki 1096 00:51:17,665 --> 00:51:19,120 pertsonen izenak gordetzeko da. 1097 00:51:19,120 --> 00:51:25,720 Eta Maxwell da honako besterik ek gorde array bidea array array bat. 1098 00:51:25,720 --> 00:51:30,050 Baina zer da harrigarria buruz trie bat da , lotuta zerrenda bat, berriz, eta, are gehiago, 1099 00:51:30,050 --> 00:51:34,520 Array, onena inoiz ahaztuak duguna denbora lineal edo logaritmikoa denbora bila 1100 00:51:34,520 --> 00:51:35,600 Norbaitek eman. 1101 00:51:35,600 --> 00:51:40,530 Datu trie bat egitura hau, bada ere nire datu egitura da izen bat du 1102 00:51:40,530 --> 00:51:43,720 eta Maxwell bila ari naiz, naiz hura nahiko azkar aurkitu du. 1103 00:51:43,720 --> 00:51:47,910 M-A-X-W-E-L-L I begiratu besterik ez. Bada Datu egitura, aldiz, 1104 00:51:47,910 --> 00:51:51,830 N milioi bat bada, ez da, bada bat milioi datu-egitura honetan izenak, 1105 00:51:51,830 --> 00:51:57,100 Maxwell da oraindik ere izango da joan ikusgai besterik M-A-X-W-E-L-L ondoren 1106 00:51:57,100 --> 00:51:58,090 urrats. 1107 00:51:58,090 --> 00:52:01,276 Eta David-- D-A-V-I-D pausoak. 1108 00:52:01,276 --> 00:52:03,400 Beste era batera esanda, eraikiz Datuen egitura bat hori da, 1109 00:52:03,400 --> 00:52:07,240 lortu array horiek guztiak, denak ere ausazko sarbidea onartzen beraiek, 1110 00:52:07,240 --> 00:52:11,090 Jendearen gora begiratzen hasi ahal izango dut izendatzeko denbora hori da kopuru bat erabiliz 1111 00:52:11,090 --> 00:52:14,340 Ez kopurua proportzionala Datuen egitura gauza, 1112 00:52:14,340 --> 00:52:16,330 Lehendik dauden milioi bat bezalako izen. 1113 00:52:16,330 --> 00:52:20,135 Zenbatekoa garaiko me hartzen aurkitzeko M-A-X-W-E-L-L datu-egitura honetan da 1114 00:52:20,135 --> 00:52:22,260 proportzionala ez du Datuen egitura tamaina, 1115 00:52:22,260 --> 00:52:25,930 baina izena luzera. 1116 00:52:25,930 --> 00:52:28,440 Eta errealistan du izenak eman begira ari gara 1117 00:52:28,440 --> 00:52:29,970 ez dira inoiz ero izango dituzte joan. 1118 00:52:29,970 --> 00:52:32,600 Agian norbaitek 10 karaktere ditu izendatzeko, 20 pertsonaia izen. 1119 00:52:32,600 --> 00:52:33,900 Zalantzarik gabe, finitua da, ezta? 1120 00:52:33,900 --> 00:52:37,110 Ez dago Lurrean giza da nor ahalik eta izen luzeena du, 1121 00:52:37,110 --> 00:52:39,920 baina izen hori konstante bat balio luzera du, ezta? 1122 00:52:39,920 --> 00:52:41,980 Ez du inolako zentzurik ere aldatu egiten dira. 1123 00:52:41,980 --> 00:52:45,090 Beraz, modu honetan, dugu Datu-egitura bat lortzen 1124 00:52:45,090 --> 00:52:47,800 denbora etengabe look-up da. 1125 00:52:47,800 --> 00:52:50,670 Hainbat urrats hartu du sarrera iraupena arabera, 1126 00:52:50,670 --> 00:52:54,250 baina ez izen kopurua Datuen egitura. 1127 00:52:54,250 --> 00:52:58,700 Beraz, izen-kopurua bikoiztu badugu Mila milioi bi milioi batetik, datorren urtean, 1128 00:52:58,700 --> 00:53:03,720 Aurkikuntza Maxwell joan hartu zehatza zazpi urrats kopuru bera 1129 00:53:03,720 --> 00:53:04,650 haren bila. 1130 00:53:04,650 --> 00:53:08,810 Eta horrela lortzen omen dugu Gure denbora exekutatzen Grial Santua. 1131 00:53:08,810 --> 00:53:10,860 >> Beraz, deialdiak azkar pare bat. 1132 00:53:10,860 --> 00:53:11,850 Quiz zero da datozen. 1133 00:53:11,850 --> 00:53:14,600 Duten ikastaroaren web orrian buruzko gehiago hurrengo egunotan zehar. 1134 00:53:14,600 --> 00:53:17,120 Asteleheneko lecture-- opor da hemen Harvard astelehenean. 1135 00:53:17,120 --> 00:53:18,850 Ez da New Haven, beraz, klase hartzen ari gara 1136 00:53:18,850 --> 00:53:20,310 New Haven hitzaldia astelehenean. 1137 00:53:20,310 --> 00:53:22,550 Dena filmatu egingo da eta, ohi bezala, zuzenean, 1138 00:53:22,550 --> 00:53:24,900 baina dezagun amaituko du gaur 30 segundo clip 1139 00:53:24,900 --> 00:53:26,910 "Deep Thoughts" izeneko Daven Farnham, zeinaren 1140 00:53:26,910 --> 00:53:30,850 iaz inspiratu zen larunbaterako Night Live-ren "Deep Thoughts" 1141 00:53:30,850 --> 00:53:35,700 by Jack Handy, bertan orain egin behar zentzurik. 1142 00:53:35,700 --> 00:53:38,810 >> ZINEMA: Eta orain, "Deep Gogoeta "Daven Farnham arabera. 1143 00:53:38,810 --> 00:53:42,100 1144 00:53:42,100 --> 00:53:42,870 Hash taula. 1145 00:53:42,870 --> 00:53:45,940 1146 00:53:45,940 --> 00:53:47,660 >> HIZLARIA 1: Ondo da, hori da oraingoz. 1147 00:53:47,660 --> 00:53:48,805 Datorren astetik Ikusiko dugu. 1148 00:53:48,805 --> 00:53:55,380 1149 00:53:55,380 --> 00:53:56,680 >> DOUG: eguneroko ekintza ikusteko. 1150 00:53:56,680 --> 00:53:58,304 Beraz, dezagun begirada bat oraintxe. 1151 00:53:58,304 --> 00:53:59,890 Hortaz, hona hemen, ordenatu gabe array bat dugu. 1152 00:53:59,890 --> 00:54:04,860 >> IAN: Doug, ahal Animatu eta berrabiarazi joan honen bigarren bat besterik ez, mesedez. 1153 00:54:04,860 --> 00:54:08,562 Ondo da, kamerak, gogor ari dira orain Ekintza betiere prest bazaude, Doug, OK? 1154 00:54:08,562 --> 00:54:11,020 DOUG: Ondo da, beraz, zer egiten dugun hemen Unsorted array bat da. 1155 00:54:11,020 --> 00:54:13,960 Eta elementu guztiak koloretako Nik gorria dela, hain zuzen ere adierazteko, 1156 00:54:13,960 --> 00:54:14,460 Sailkatu. 1157 00:54:14,460 --> 00:54:17,960 Beraz, gogora ekarri zuen lehen gauza egiten dugun da geratzen array erdia ordenatzeko dugu. 1158 00:54:17,960 --> 00:54:20,630 Ondoren eskubidea ordenatzeko dugu array erdia. 1159 00:54:20,630 --> 00:54:22,830 Eta ya-da, ya-da, ya-da, horiek batu ditugu elkarrekin. 1160 00:54:22,830 --> 00:54:24,520 Eta erabat ordenatuko array bat dugu. 1161 00:54:24,520 --> 00:54:25,360 Beraz, nola batu, ordenatu egiten du lan. 1162 00:54:25,360 --> 00:54:27,109 >> IAN: Tira, Tira, Tira, ebaki, moztu, ebaki, moztu. 1163 00:54:27,109 --> 00:54:30,130 Doug, ezin duzu besterik ya-da, ya-da, ya-da, zure bidea batu ordenatu bidez. 1164 00:54:30,130 --> 00:54:31,970 >> DOUG: besterik ez nuen. 1165 00:54:31,970 --> 00:54:32,832 Fina da. 1166 00:54:32,832 --> 00:54:33,540 Ona joan gara. 1167 00:54:33,540 --> 00:54:34,760 Let mantentzeko en besterik rolling. 1168 00:54:34,760 --> 00:54:35,380 Beraz, hala ere, 1169 00:54:35,380 --> 00:54:37,800 >> IAN: azaldu behar duzu Hori baino gehiago, erabat da. 1170 00:54:37,800 --> 00:54:39,999 Hori besterik ez da nahikoa. 1171 00:54:39,999 --> 00:54:41,790 DOUG: Ian, ez dugu atzera joan bat behar. 1172 00:54:41,790 --> 00:54:42,350 Fina da. 1173 00:54:42,350 --> 00:54:45,690 Beraz, hala ere, aurrera jarraituko dugu merge-- batera bada Ian, ari filmatze erdian dugu. 1174 00:54:45,690 --> 00:54:46,612 >> IAN: badakit. 1175 00:54:46,612 --> 00:54:49,320 Eta ezin dugu besterik ya-da, ya-da, ya-da, prozesu osoan zehar. 1176 00:54:49,320 --> 00:54:52,200 Azaltzeko nola egin behar duzu bi aldeak batu elkarrekin emateko. 1177 00:54:52,200 --> 00:54:53,570 >> DOUG: Baina dagoeneko dugu azaldu bi sides-- nola 1178 00:54:53,570 --> 00:54:55,321 >> IAN: Besterik ez duzu agerian batu array bat. 1179 00:54:55,321 --> 00:54:56,486 DOUG: prozesua ezagutzen dute. 1180 00:54:56,486 --> 00:54:57,172 Fin ari dira. 1181 00:54:57,172 --> 00:54:58,380 Haren gainetik joan gara hamar aldiz. 1182 00:54:58,380 --> 00:55:00,330 >> IAN: Saltatutako duzu besterik eskubidea baino gehiago. 1183 00:55:00,330 --> 00:55:03,360 Atzera goaz bat, zuk ezin duzu ya-da, bere gainean ya-da. 1184 00:55:03,360 --> 00:55:05,480 Ondo da, itzuli bat. 1185 00:55:05,480 --> 00:55:07,833 >> DOUG: atzera egin behar dut diapositiba guztietan barrena? 1186 00:55:07,833 --> 00:55:08,332 My God. 1187 00:55:08,332 --> 00:55:11,008 1188 00:55:11,008 --> 00:55:13,004 Da seigarren aldiz, Ian bezalakoa da. 1189 00:55:13,004 --> 00:55:13,940 Fina da. 1190 00:55:13,940 --> 00:55:15,200 >> IAN: Ondo da. 1191 00:55:15,200 --> 00:55:16,590 Prest al zaude? 1192 00:55:16,590 --> 00:55:17,400 Great. 1193 00:55:17,400 --> 00:55:18,950 Ekintza.