1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:03,340 [Musika jotzen] 3 00:00:03,340 --> 00:00:11,020 4 00:00:11,020 --> 00:00:14,010 >> DAVID MALAN: Hau da CS50. 5 00:00:14,010 --> 00:00:18,090 Eta hori bai hasiera eta da literalki ia amaieran bezala end-- 6 00:00:18,090 --> 00:00:18,825 Aste Sei. 7 00:00:18,825 --> 00:00:20,030 8 00:00:20,030 --> 00:00:22,640 >> A partekatu nuke pentsatu nuen fun Izan ere, pixka. 9 00:00:22,640 --> 00:00:25,370 Bota dut hau osatzen batetik iragan seihileko datu multzo. 10 00:00:25,370 --> 00:00:29,710 Gogoratzen ahal duzu eskatu dugun guztietan p set formulario dituzu online Ikusi izan bada 11 00:00:29,710 --> 00:00:31,580 edo pertsona duzun bertaratu bada. 12 00:00:31,580 --> 00:00:33,020 Eta hemen datuak. 13 00:00:33,020 --> 00:00:34,710 Beraz, gaur egun oso aurreikus zen. 14 00:00:34,710 --> 00:00:37,126 Baina pixka bat pasatzeko nahi genuen denbora zurekin hala ere. 15 00:00:37,126 --> 00:00:40,599 Nahi edonork antzemateko ere, hori zergatik Grafiko da hain jaggy, gora behera, gora behera, 16 00:00:40,599 --> 00:00:41,265 beraz, koherentziaz? 17 00:00:41,265 --> 00:00:42,980 18 00:00:42,980 --> 00:00:45,130 Zer egin gailur bakoitzarekin eta askak ordezkatzen? 19 00:00:45,130 --> 00:00:46,005 >> IKUSLEEN: [INAUDIBLE] 20 00:00:46,005 --> 00:00:47,002 21 00:00:47,002 --> 00:00:47,835 DAVID MALAN: Izan ere. 22 00:00:47,835 --> 00:00:50,900 23 00:00:50,900 --> 00:00:55,480 Eta gehiago amusingly, Jainkoa debekatzeko, hitzaldi bat eduki genuen ostiralean 24 00:00:55,480 --> 00:00:58,960 lauhilekoaren hasieran, hori zer gertatuko ikusiko dugu. 25 00:00:58,960 --> 00:01:03,430 Gaur egun, beraz, partake dugu pixka bat datuen egitura buruz. 26 00:01:03,430 --> 00:01:06,660 Eta emateko sendo bat gehiago arazoak eredu mental bostetan, 27 00:01:06,660 --> 00:01:07,450 hau da, orain atera. 28 00:01:07,450 --> 00:01:10,817 Gaizki idatzitako hitzak, dua, zaitugu testu fitxategi bat entregatu 100,000 batzuk 29 00:01:10,817 --> 00:01:12,650 plus ingelesez hitz eta izan zaren joan 30 00:01:12,650 --> 00:01:17,770 irudikatu nola cleverly kargatu memoria, RAM, datu batzuk erabiliz 31 00:01:17,770 --> 00:01:19,330 Nahiago duzun egitura. 32 00:01:19,330 --> 00:01:22,470 >> Orain, besteak beste, datu-egitura bat izan liteke izango da, baina, ziurrenik, ez du izan behar, 33 00:01:22,470 --> 00:01:25,630 nahiko sinplista lotutako zerrenda, bertan azken aldiz sartu dugu. 34 00:01:25,630 --> 00:01:29,220 Eta lotuta zerrenda bat, gutxienez, izan array bat abantaila bat. 35 00:01:29,220 --> 00:01:32,096 Zer abantaila bat lotutako zerrenda bat, dudarik gabe? 36 00:01:32,096 --> 00:01:32,950 >> Ikusleak: txertatzea. 37 00:01:32,950 --> 00:01:33,908 >> DAVID MALAN: txertatzea. 38 00:01:33,908 --> 00:01:34,155 39 00:01:34,155 --> 00:01:35,196 Zer esan nahi duzu? 40 00:01:35,196 --> 00:01:37,872 >> Ikusleak: Anywhere zehar Zerrendako [INAUDIBLE]. 41 00:01:37,872 --> 00:01:38,770 >> DAVID MALAN: Ongi. 42 00:01:38,770 --> 00:01:42,090 Beraz, elementu bat dagoen lekuan sar dezakezu Zerrendako erdian nahi duzun 43 00:01:42,090 --> 00:01:45,490 ezer nahastu beharrik gabe, izan ere, ondorioztatu dugu gure sailkatzeko 44 00:01:45,490 --> 00:01:47,630 eztabaidak, ez da nahitaez gauza ona, 45 00:01:47,630 --> 00:01:51,200 denbora hartzen duelako benetan mugitu gizakiak horiek guztiak ezkerrera edo eskuinera. 46 00:01:51,200 --> 00:01:55,540 Eta, beraz, lotuta zerrenda batekin, ahal duzu besterik malloc esleitu, nodo berri bat, 47 00:01:55,540 --> 00:01:58,385 eta, ondoren, pare bat egunera erakusleak bi, hiru eragiketa max-- 48 00:01:58,385 --> 00:02:01,480 eta norbaitek zirrikitua gai gara zerrenda batean edozein lekutan. 49 00:02:01,480 --> 00:02:03,550 >> Zer gehiago abantailatsuena lotutako zerrenda bat? 50 00:02:03,550 --> 00:02:04,980 51 00:02:04,980 --> 00:02:05,659 Bai? 52 00:02:05,659 --> 00:02:06,534 >> IKUSLEEN: [INAUDIBLE] 53 00:02:06,534 --> 00:02:07,538 54 00:02:07,538 --> 00:02:08,413 DAVID MALAN: Perfect. 55 00:02:08,413 --> 00:02:10,590 56 00:02:10,590 --> 00:02:11,090 Perfect. 57 00:02:11,090 --> 00:02:12,070 Benetan dinamikoa da. 58 00:02:12,070 --> 00:02:15,100 Eta ez duzula konpromisoa ari, Aldez aurretik, tamaina finko batzuk 59 00:02:15,100 --> 00:02:18,750 memoria zatia, bezala duzu izango litzateke sorta batekin, goitik, eta horietako 60 00:02:18,750 --> 00:02:22,455 dela soilik nodo esleitu ahal izango duzu eskaria horrela askoz espazioa bakarrik erabiliz 61 00:02:22,455 --> 00:02:23,330 benetan behar duzun bezala. 62 00:02:23,330 --> 00:02:26,830 Sorta batekin Aitzitik, you might ustekabean esleitu too little. 63 00:02:26,830 --> 00:02:28,871 Eta gero, besterik ez da joan lepoan mina bat izan nahi du 64 00:02:28,871 --> 00:02:32,440 handiagoa array berri bat reallocate kopiatu dena baino gehiago, askatu zaharra array, 65 00:02:32,440 --> 00:02:33,990 eta, ondoren, zure negozioa buruz mugitu. 66 00:02:33,990 --> 00:02:37,479 Edo okerrago, modu esleitu dakizukeela memoria gehiago benetan behar baino, 67 00:02:37,479 --> 00:02:40,520 eta beraz, zu oso bat izan behar da sparsely biztanle array, nolabait esateko. 68 00:02:40,520 --> 00:02:44,350 >> Beraz lotutako zerrenda bat ematen dizu horien dinamismoa eta malgutasuna abantailak 69 00:02:44,350 --> 00:02:46,080 txertatzeak eta ezabatzeak batez. 70 00:02:46,080 --> 00:02:48,000 Baina ziur aski ez ordaindutako prezioa izan behar da. 71 00:02:48,000 --> 00:02:50,000 Izan ere, gai honetaz galdetegi zero esploratzen 72 00:02:50,000 --> 00:02:52,430 zen merkataritza-off pare bat horrela ikusten dugu orain arte. 73 00:02:52,430 --> 00:02:56,161 Beraz, zer da, prezio bat ordaindu edo bat lotuta zerrenda arazotxo? 74 00:02:56,161 --> 00:02:56,660 Bai. 75 00:02:56,660 --> 00:02:57,560 >> IKUSLEEN: Ez ausazko sarbidea. 76 00:02:57,560 --> 00:02:58,809 >> DAVID MALAN: Ez ausazko sarbidea. 77 00:02:58,809 --> 00:02:59,540 Baina nork zaintzen? 78 00:02:59,540 --> 00:03:01,546 Ausazko sarbidea ez du jotzen sinesgarria. 79 00:03:01,546 --> 00:03:02,421 >> IKUSLEEN: [INAUDIBLE] 80 00:03:02,421 --> 00:03:04,865 81 00:03:04,865 --> 00:03:05,740 DAVID MALAN: Zehazki. 82 00:03:05,740 --> 00:03:07,580 Izan nahi baduzu algoritmoa jakin bat 83 00:03:07,580 --> 00:03:10,170 eta utzi benetan me proposatzen bereziki, bilaketa bitarra, eta horrek 84 00:03:10,170 --> 00:03:12,600 da bat bit bat nahiko erabili dugu ez baduzu, ausazko sarbidea, 85 00:03:12,600 --> 00:03:15,516 ezin duzu aritmetika simple hori egin erdiko elementua bezala topatzeko 86 00:03:15,516 --> 00:03:16,530 eta saltoka eskubidea da. 87 00:03:16,530 --> 00:03:20,239 Ordez daukazu lehen hasiko elementu eta linealki ezkerretik bilatu 88 00:03:20,239 --> 00:03:22,780 eskuinera bilatu nahi baduzu erdiko edo beste edozein elementu. 89 00:03:22,780 --> 00:03:24,410 >> Ikusleak: seguruenik memoria gehiago hartzen du. 90 00:03:24,410 --> 00:03:25,040 >> DAVID MALAN: memoria gehiago hartzen du. 91 00:03:25,040 --> 00:03:27,464 Non osagarriak kostatuko memorian datozen? 92 00:03:27,464 --> 00:03:28,339 >> IKUSLEEN: [INAUDIBLE] 93 00:03:28,339 --> 00:03:32,566 94 00:03:32,566 --> 00:03:33,440 DAVID MALAN: Zehazki. 95 00:03:33,440 --> 00:03:35,679 Hemen kasu honetan, izan genuen lotutako zerrenda bat zenbaki osoen, 96 00:03:35,679 --> 00:03:37,470 eta oraindik bikoizten ari gara memoria kopurua 97 00:03:37,470 --> 00:03:39,680 halaber erakusleak horiek gordetzeko behar dugu. 98 00:03:39,680 --> 00:03:42,090 Orain akordio handi bat gutxiago bezala Zure structs handiagoa 99 00:03:42,090 --> 00:03:45,320 eta ez da zenbaki bat gordetzeko ari zaren baina agian, ikasle bat edo beste objektu batzuk. 100 00:03:45,320 --> 00:03:46,880 Baina puntua zalantzarik izaten jarraitzen du. 101 00:03:46,880 --> 00:03:49,421 Eta beraz, eragiketak zenbaki bat lotutako zerrendak deitu ziren 102 00:03:49,421 --> 00:03:50,570 n lineal O handiak izan ziren. 103 00:03:50,570 --> 00:03:54,730 Txertatzeko edo bilaketa bezalako gauzak edo elementu baten kasuan ezabatzeko 104 00:03:54,730 --> 00:03:57,720 gertatu bukaeran egon zerrendan horrela antolatu ala ez. 105 00:03:57,720 --> 00:04:01,167 >> Batzuetan zortea duzu agian, eta in eragiketa horiek on mugetatik beraz, txikiagoa 106 00:04:01,167 --> 00:04:04,250 baliteke ere, etengabeko denbora izan bazaude Beti lehen elementu begira, 107 00:04:04,250 --> 00:04:05,070 esate baterako. 108 00:04:05,070 --> 00:04:09,360 Baina, azken finean, agindu dugu Santo Grial lortzea 109 00:04:09,360 --> 00:04:12,630 Datu-egiturak, edo hurbilketa horren berri batzuk, 110 00:04:12,630 --> 00:04:14,290 etengabeko denbora modu. 111 00:04:14,290 --> 00:04:17,579 Ezin elementu aurkituko dugu edo elementu gehitu edo kendu Zerrenda bateko elementuak? 112 00:04:17,579 --> 00:04:19,059 Nahiko laster ikusiko dugu. 113 00:04:19,059 --> 00:04:21,100 Eta bihurtzen da bat, mekanismoak ari gara 114 00:04:21,100 --> 00:04:23,464 gaur erabiltzeko hasteko, Urteko p erabiltzeko ezarri bost, 115 00:04:23,464 --> 00:04:24,630 benetan polita ezagutzen. 116 00:04:24,630 --> 00:04:27,430 Esate baterako, hori mordo bat bada azterketa-liburuak, eta horietako bakoitzak 117 00:04:27,430 --> 00:04:29,660 dauka ikasleak lehen name and last name gainean, 118 00:04:29,660 --> 00:04:31,820 eta nik jasotzen ditut batetik Azterketa bat amaieran, 119 00:04:31,820 --> 00:04:33,746 eta guztiak nahiko ari dira ausazko ordena batean askoz, 120 00:04:33,746 --> 00:04:36,370 eta ordenatzeko buruz joan nahi dugu Azterketak horietako beraz, berriro kalifikatzen 121 00:04:36,370 --> 00:04:38,661 da askoz errazagoa eta Azkarrago horiek entregatu back out 122 00:04:38,661 --> 00:04:40,030 ikasleek alfabetikoki egiteko. 123 00:04:40,030 --> 00:04:42,770 Zer egingo zenuke zure sena izan Honen antzeko azterketak pila bat? 124 00:04:42,770 --> 00:04:45,019 >> Beno, ni bezalako izanez gero, ikusi ahal izango da, hori da, m, 125 00:04:45,019 --> 00:04:48,505 beraz, naiz ordenatzeko jarri honetan sartu nintzen, hau nire mahai edo nire solairuan bertan badago 126 00:04:48,505 --> 00:04:50,650 Gauzak zabaltzeko naiz out-- edo nire array really-- 127 00:04:50,650 --> 00:04:52,210 Ms guztia jarri dut agian hor. 128 00:04:52,210 --> 00:04:52,710 Oh. 129 00:04:52,710 --> 00:04:55,020 Hona hemen A. bat da Beraz, I might As jarri hemen baino gehiago. 130 00:04:55,020 --> 00:04:55,520 Oh. 131 00:04:55,520 --> 00:04:57,980 Hona hemen beste A. noa jarri hemen baino gehiago. 132 00:04:57,980 --> 00:05:02,490 Hemen Z. bat da Hona hemen beste M. Eta horrela da Baliteke hau bezalako pila egiten hasi nintzen. 133 00:05:02,490 --> 00:05:06,620 Eta gero, agian ez nuen geroago joan eta sort oso nitpicky-tzen ordenatu 134 00:05:06,620 --> 00:05:07,710 banakako pila. 135 00:05:07,710 --> 00:05:11,300 Baina puntua da begiratu nuke sarrera hori handed naiz 136 00:05:11,300 --> 00:05:14,016 eta batzuk kalkulatu egin nahi dut Erabaki sarrera horretan oinarritzen. 137 00:05:14,016 --> 00:05:15,640 A rekin hasten bada, jarri han. 138 00:05:15,640 --> 00:05:18,980 Z rekin hasten bada, jarri baino gehiago han, eta arteko guztia. 139 00:05:18,980 --> 00:05:22,730 >> Beraz, hau teknika bat da hori da oro har hashing-- H-A-S-H-- bezala ezagutzen 140 00:05:22,730 --> 00:05:26,550 oro har, esan bezala hartuta sarrera eta to konputatu sarrera hori erabiliz 141 00:05:26,550 --> 00:05:30,940 balio bat, oro har, zenbaki bat, eta hori zenbakia biltegiratze batean indizea 142 00:05:30,940 --> 00:05:32,260 edukiontzi, array bat bezalakoa. 143 00:05:32,260 --> 00:05:35,490 Beraz, beste era batera esanda, nahi bat dut Hash funtzioa, baita nire buruan nuen, 144 00:05:35,490 --> 00:05:37,940 ikusten dut norbait da bada nor A batekin hasten da izena, 145 00:05:37,940 --> 00:05:40,190 Mapa noa nire burua zero. 146 00:05:40,190 --> 00:05:44,160 Eta norbaitek ikusten dut Z bada, naiz Mapa eta 25 nire buruan joan 147 00:05:44,160 --> 00:05:46,220 eta gero jarri dela sartu azken pila gehien. 148 00:05:46,220 --> 00:05:50,990 >> Orain, ez nire burmuina uste baduzu baina C programa bat, zer zenbakiak Could 149 00:05:50,990 --> 00:05:53,170 fidatu duzu emaitza hori bera lortzeko? 150 00:05:53,170 --> 00:05:55,594 Beste era batera esanda, baduzu ASCII karaktere bat izan, 151 00:05:55,594 --> 00:05:57,510 nola ez duzu zehaztu zer ontzi jarri ahal izateko? 152 00:05:57,510 --> 00:05:59,801 Ziurrenik ez dute nahi jarri ontzian 65, sartu bertan 153 00:05:59,801 --> 00:06:01,840 han bezala izango litzateke no arrazoi ona. 154 00:06:01,840 --> 00:06:04,320 Nora egin bat jarri nahi duzun bere ASCII balioa dagokionez? 155 00:06:04,320 --> 00:06:05,600 156 00:06:05,600 --> 00:06:08,920 Nora egin bere ASCII egin nahi duzu balio etorri bat ontzi smarter batekin 157 00:06:08,920 --> 00:06:09,480 jarri ahal izateko? 158 00:06:09,480 --> 00:06:10,206 >> Ikusleak: Minus A. 159 00:06:10,206 --> 00:06:10,956 >> DAVID MALAN: Bai. 160 00:06:10,956 --> 00:06:13,190 Beraz ken edo ken zehazki, 65 da, bada 161 00:06:13,190 --> 00:06:18,240 capital A. Or 98 bada minuskulaz bat da. 162 00:06:18,240 --> 00:06:21,300 Eta, beraz, ahal izateko, oso besterik gabe, eta oso arithmetically, 163 00:06:21,300 --> 00:06:23,260 zerbait jarri horrelako kutxan. 164 00:06:23,260 --> 00:06:26,010 Eta gertatu da, benetan egiten dugu hau baita ariketak egiten dituzten arren. 165 00:06:26,010 --> 00:06:29,051 >> Beraz biribila duzu gogoratzen baliteke zure irakaskuntza fellow en azalean izena. 166 00:06:29,051 --> 00:06:32,270 Eta TF-izenak antolatu ziren zutabe horietako alfabetikoki sartu, 167 00:06:32,270 --> 00:06:34,400 bai, sinetsi edo ez, denek 80 gutako plus 168 00:06:34,400 --> 00:06:37,800 Beste gau lortu elkarrekin kalifikazioa, gure kalifikazio-prozesuaren azken urratsa 169 00:06:37,800 --> 00:06:41,830 da ariketak egiten hash handi batean sartu azalera, [INAUDIBLE] at 170 00:06:41,830 --> 00:06:45,110 eta guztion galdetegiak finkatzeko out zehazki bere TF ordena 171 00:06:45,110 --> 00:06:47,700 azalean izenak, zeren orduan asko guretzat errazagoa 172 00:06:47,700 --> 00:06:51,290 lineala erabiliz bilatzeko bilatu edo Nazka-mota batzuk 173 00:06:51,290 --> 00:06:54,050 for TF bat aurkitzeko bere edo berak bere ikasleen galdetegiek. 174 00:06:54,050 --> 00:06:56,060 >> Beraz Egiaztapena ideia hori dela ikusiko duzu 175 00:06:56,060 --> 00:07:00,520 oso indartsua da, benetan polita ohikoa eta oso intuitiboa, 176 00:07:00,520 --> 00:07:03,000 askoz agian zatitzen bezala eta konkistatzeko aste zero izan zen. 177 00:07:03,000 --> 00:07:05,250 Hackathon azkarra dut aurrera urte pare bat ago. 178 00:07:05,250 --> 00:07:08,040 Hau izan zen Zamyla eta pare bat beste langile agurra ikasleak 179 00:07:08,040 --> 00:07:09,030 sartu ziren eta. 180 00:07:09,030 --> 00:07:12,680 Eta tolesgarri sorta osoa izan genuen mahaiak han name tags. 181 00:07:12,680 --> 00:07:15,380 Eta zuen name tags antolatu genuen batera han bezala bezalako 182 00:07:15,380 --> 00:07:16,690 eta han Zs du. 183 00:07:16,690 --> 00:07:20,350 Eta beraz TFS bat oso cleverly idatzi hau argibide bezala 184 00:07:20,350 --> 00:07:21,030 eguneko. 185 00:07:21,030 --> 00:07:24,480 Eta aste 12 seihileko honetan de guztiak egin perfektua zentzua eta guztion 186 00:07:24,480 --> 00:07:25,310 zekien zer egin. 187 00:07:25,310 --> 00:07:27,900 Baina edonoiz duzun modu berean ilaran, 188 00:07:27,900 --> 00:07:30,272 gauzatzeko zu hash baten ideia bera. 189 00:07:30,272 --> 00:07:31,730 Hargatik formalizatzeko pixka bat. 190 00:07:31,730 --> 00:07:32,890 Hemen array bat da. 191 00:07:32,890 --> 00:07:36,820 Honez marrazten apur bat izan nahi du zabal besterik, irudikatzeko ikusmen, 192 00:07:36,820 --> 00:07:38,920 kateak jarri dugu agian honen antzeko zerbait da. 193 00:07:38,920 --> 00:07:41,970 Eta array hau da Guztira, tamaina 26koa, argi eta garbi. 194 00:07:41,970 --> 00:07:43,935 Eta zera esaten zaio taula arbitrarioki. 195 00:07:43,935 --> 00:07:48,930 Baina hori artista bat bere interpretazio da zer hash taula bat izan liteke. 196 00:07:48,930 --> 00:07:52,799 >> Beraz, hash taula bat da joan maila altuagoa datu-egitura bat izango da. 197 00:07:52,799 --> 00:07:54,840 Egunaren amaieran nahi duzun ikusi buruz ari gara 198 00:07:54,840 --> 00:07:58,700 hash taula bat, ezartzeko dezakezu bertan askoz fakturazio-line bezalakoa da 199 00:07:58,700 --> 00:08:02,059 Askoz ere hau bezalako hackathon batean ordenatzeko azterketa-liburuak erabiltzen zuten mahaia. 200 00:08:02,059 --> 00:08:03,850 Baina hash taula bat da maila altua honen moduko 201 00:08:03,850 --> 00:08:08,250 array bat erabil daiteke kontzeptua kanpaia jartzera azpian, 202 00:08:08,250 --> 00:08:11,890 edo luzera zerrenda erabil zitekeen, edo are agian, beste datu-egitura batzuk. 203 00:08:11,890 --> 00:08:15,590 Eta orain dela Gaia hartzea da funtsezko osagai horietako batzuk 204 00:08:15,590 --> 00:08:18,310 Array bat eta eraikin honen antzeko blokeatu orain luzera zerrenda baten 205 00:08:18,310 --> 00:08:21,740 eta zer gehiago eraiki ahal izango dugu ikusten horien gainean, osagai bezala 206 00:08:21,740 --> 00:08:26,550 errezeta bat sartu, gero eta gehiago egiten azken emaitza interesgarria eta erabilgarria. 207 00:08:26,550 --> 00:08:28,680 >> Beraz, hash taula agian ezartzeko dugu 208 00:08:28,680 --> 00:08:32,540 oroimenez pictorially honetan bezala, baina nola liteke benetan kodetua sortu? 209 00:08:32,540 --> 00:08:33,789 Beno, agian, besterik gabe, hau da. 210 00:08:33,789 --> 00:08:38,270 Bada txanoak guztiak EDUKIERA, besterik ez da Esate 26 constant-- batzuk, 211 00:08:38,270 --> 00:08:42,030 26 alphabet-- hizkiak egiteko Baliteke nire taula aldagai deitzen diot nik, 212 00:08:42,030 --> 00:08:45,630 eta agian naiz joan aldarrikatzen dut char izarrak jartzen badira, edo kate batean. 213 00:08:45,630 --> 00:08:49,880 Beraz bezain erraza da, ez horixe baduzu hash taula bat ezartzea nahi. 214 00:08:49,880 --> 00:08:51,490 Eta, hala ere, hau da, benetan array bat besterik ez. 215 00:08:51,490 --> 00:08:53,198 Baina, berriro ere, egiaztapen bat taulan dago orain zer zaitugu 216 00:08:53,198 --> 00:08:57,470 datu mota abstraktu bat hori da besterik ez deitu layering kontzeptuala gainean moduko 217 00:08:57,470 --> 00:09:00,780 zerbait gehiago eguneroko of orain array bat bezalakoa. 218 00:09:00,780 --> 00:09:02,960 >> Orain, nola joaten gara arazoei aurre buruz? 219 00:09:02,960 --> 00:09:06,980 Beno, lehenago luxua izan nuen nahikoa taula espazio beharrik hemen 220 00:09:06,980 --> 00:09:09,460 beraz, ezin izan dut jarri galdetegiak edonon nahi nuen. 221 00:09:09,460 --> 00:09:10,620 Beraz bezala hemen joan liteke. 222 00:09:10,620 --> 00:09:12,100 Zs hemen joan liteke. 223 00:09:12,100 --> 00:09:13,230 Ms hemen joan liteke. 224 00:09:13,230 --> 00:09:14,740 Eta gero, beste tarte batzuk izan nuen. 225 00:09:14,740 --> 00:09:18,740 Baina hau Cheat eskubide bat pixka bat da Benetan orain mahai horregatik, badut 226 00:09:18,740 --> 00:09:22,720 pentsatu array gisa, aski da to tamaina finko batzuk izango da. 227 00:09:22,720 --> 00:09:25,380 >> Beraz, teknikoki, tira bada Adiskide batek en galdetegi sortu 228 00:09:25,380 --> 00:09:28,490 eta ikusi, oh, pertsona hau Izen bat batekin hasten da gehiegi, 229 00:09:28,490 --> 00:09:30,980 Motatako han jarri nahi dut. 230 00:09:30,980 --> 00:09:34,740 Baina laster han jarri dudan bezala, bada Taula honetan, hain zuzen ere matrize bat adierazten du, 231 00:09:34,740 --> 00:09:37,840 Noa gainidazteko edo clobbering duenak ikaslea honen quiz da. 232 00:09:37,840 --> 00:09:38,340 Eskuin? 233 00:09:38,340 --> 00:09:41,972 Array bat da, bada, gauza bat bakarrik egin ahal izango zelula edo elementu horietako bakoitzean joan. 234 00:09:41,972 --> 00:09:43,680 Eta beraz, mota horretako I eta hautatzeko aukera. 235 00:09:43,680 --> 00:09:45,735 >> Orain lehenago mota I engainatu eta hau edo egin nuen 236 00:09:45,735 --> 00:09:47,526 Mota besterik pilatuta bata bestearen gainetik horiek. 237 00:09:47,526 --> 00:09:49,170 Baina hori ez dela inoiz kodea hegan joan. 238 00:09:49,170 --> 00:09:52,260 Beraz, non ezin jarri dut Bigarren ikaslea horren izena 239 00:09:52,260 --> 00:09:54,964 A nuen guztia bada hau eskuragarri taula espazioa? 240 00:09:54,964 --> 00:09:57,880 Eta hiru slots du, eta erabili dut Itxura beste batzuk gutxi batzuk besterik ez da, bezala. 241 00:09:57,880 --> 00:09:58,959 Zer izan nahi duzu? 242 00:09:58,959 --> 00:09:59,834 IKUSLEEN: [INAUDIBLE] 243 00:09:59,834 --> 00:10:00,565 244 00:10:00,565 --> 00:10:01,315 DAVID MALAN: Bai. 245 00:10:01,315 --> 00:10:02,370 Agian dezagun mantentzeko erraza besterik ez. 246 00:10:02,370 --> 00:10:02,660 Eskuin? 247 00:10:02,660 --> 00:10:04,243 Ez du egokitzeko non jarri nahi dut. 248 00:10:04,243 --> 00:10:07,450 Beraz, ez dut jarri joan teknikoki non B joango litzateke. 249 00:10:07,450 --> 00:10:09,932 Orain, noski, hasten naiz neure burua margotzen izkinan. 250 00:10:09,932 --> 00:10:11,890 Lortu dut ikasle bat bada eta izen hori benetan B, 251 00:10:11,890 --> 00:10:14,840 orain B da pixka bat mugitu egingo da Aurrera, eta gerta liteke, bai, 252 00:10:14,840 --> 00:10:17,530 hau B bat bada, gaur egun, hemen joan behar du. 253 00:10:17,530 --> 00:10:20,180 >> Eta, beraz, hau oso azkar problematikoa izan daiteke, 254 00:10:20,180 --> 00:10:23,850 baina teknika bat da hori benetan da lineal artesiak gisa aipatzen, 255 00:10:23,850 --> 00:10:26,650 Horren bidez, kontuan hartu besterik ez duzu zure array lerro zehar izango da. 256 00:10:26,650 --> 00:10:29,680 Eta mota probarik duzu, edo eskuragarri elementu bakoitza ikuskatu 257 00:10:29,680 --> 00:10:31,360 lekurik balego bila. 258 00:10:31,360 --> 00:10:34,010 Eta jakin bezain laster banan, askatu dituzu hor. 259 00:10:34,010 --> 00:10:38,390 >> Orain, prezioa orain ordaintzen ari Irtenbide hau da, zer? 260 00:10:38,390 --> 00:10:41,300 Tamaina finkoa array bat daukagu, eta noiz izenak sartu ditut 261 00:10:41,300 --> 00:10:44,059 sartu, gutxienez, hasieran, zer da exekutatzen txertatzeko garai 262 00:10:44,059 --> 00:10:46,350 ikasleek 'jarriz Eskuineko kuboak galdetegiak? 263 00:10:46,350 --> 00:10:48,710 264 00:10:48,710 --> 00:10:50,002 Big O zer? 265 00:10:50,002 --> 00:10:51,147 >> IKUSLEEN: n. 266 00:10:51,147 --> 00:10:52,480 DAVID MALAN: big n O entzun nuen. 267 00:10:52,480 --> 00:10:53,530 268 00:10:53,530 --> 00:10:54,300 Ez da egia. 269 00:10:54,300 --> 00:10:56,490 Baina gain tease dugu une bat besterik ez zergatik. 270 00:10:56,490 --> 00:10:57,702 Zer gehiago egin dezake? 271 00:10:57,702 --> 00:10:58,755 >> IKUSLEEN: [INAUDIBLE] 272 00:10:58,755 --> 00:11:00,380 DAVID MALAN: Eta utzi egiten me ikusmen. 273 00:11:00,380 --> 00:11:04,720 Beraz, demagun hau hizkia S. da 274 00:11:04,720 --> 00:11:05,604 >> AUDIENCE: Da bat. 275 00:11:05,604 --> 00:11:06,520 DAVID MALAN: Ez da bat. 276 00:11:06,520 --> 00:11:06,710 Eskuin? 277 00:11:06,710 --> 00:11:08,950 Array bat da, eta horrek esan nahi du, ausazko sarbidea dugu. 278 00:11:08,950 --> 00:11:11,790 Eta hori pentsatuz gero zero eta 25 honetan bezala, 279 00:11:11,790 --> 00:11:13,800 eta hori konturatzen gara, Oh, hemen nire sarrera S, 280 00:11:13,800 --> 00:11:16,350 Zalantzarik gabe I bihurtu daiteke S, karakterea 281 00:11:16,350 --> 00:11:18,540 dagokion zenbaki batera zero eta 25 bitartean 282 00:11:18,540 --> 00:11:20,910 eta ondoren, berehala esandako tokian dagokio. 283 00:11:20,910 --> 00:11:26,120 >> Baina, jakina, ahalik eta azkarren lortu behar dut bigarren pertsona nor den abizena edo B edo C 284 00:11:26,120 --> 00:11:29,300 Azkenean, erabili dut, bada Nire irtenbide gisa artesiak lineala, 285 00:11:29,300 --> 00:11:31,360 exekutatzen denbora kasurik okerrenean ere txertatzeko 286 00:11:31,360 --> 00:11:33,120 benetan zer devolve joan? 287 00:11:33,120 --> 00:11:34,270 288 00:11:34,270 --> 00:11:36,045 Eta ez da hemen entzuten dut Behar bezala goiz. 289 00:11:36,045 --> 00:11:36,920 IKUSLEEN: [INAUDIBLE] 290 00:11:36,920 --> 00:11:41,620 DAVID MALAN: Beraz, n da, hain zuzen ere behin Datu multzo nahiko handi bat behar duzu. 291 00:11:41,620 --> 00:11:44,410 Beraz, alde batetik, bada Zure array nahikoa handi 292 00:11:44,410 --> 00:11:48,287 eta zure datuak sakabanatuak da nahikoa, zuk eder etengabeko denbora hau lortzeko. 293 00:11:48,287 --> 00:11:50,620 Baina hasteko bezain laster Gero eta gehiago, elementu lortzean, 294 00:11:50,620 --> 00:11:53,200 eta besterik ez estatistikoki lortuko duzu hizki horrekin jende gehiago 295 00:11:53,200 --> 00:11:56,030 A beren izen gisa edo gutunaren B, potentzialki ahal izango luke 296 00:11:56,030 --> 00:11:57,900 zerbait gehiago lineal devolve. 297 00:11:57,900 --> 00:11:59,640 Beraz, ez da perfektua. 298 00:11:59,640 --> 00:12:00,690 Beraz, hobeto egin genezake? 299 00:12:00,690 --> 00:12:03,210 >> Beno, zer izan zen gure Irtenbide dugunean aurretik 300 00:12:03,210 --> 00:12:06,820 baino dinamismo gehiago eduki nahi onartzen array bat antzeko zerbait? 301 00:12:06,820 --> 00:12:08,085 302 00:12:08,085 --> 00:12:08,960 IKUSLEEN: [INAUDIBLE] 303 00:12:08,960 --> 00:12:10,030 DAVID MALAN: Zer aurkeztuko dugu? 304 00:12:10,030 --> 00:12:10,530 Bai. 305 00:12:10,530 --> 00:12:11,430 Beraz lotutako zerrenda bat. 306 00:12:11,430 --> 00:12:14,430 Beno, utzi zer bat lotuta ikusten Zerrenda Gurekin egin daiteke ordez. 307 00:12:14,430 --> 00:12:17,630 Beno, utzi dugun proposatu zidan Irudian honela marraztu. 308 00:12:17,630 --> 00:12:19,620 Azken hau da, desberdin bat Adibide bateko argazki 309 00:12:19,620 --> 00:12:24,750 ezberdinei buruzko testu batean, egia esan, hori da, benetan tamaina 31 array bat erabiliz. 310 00:12:24,750 --> 00:12:28,220 Eta egile hau, besterik gabe kateak hash erabaki 311 00:12:28,220 --> 00:12:32,430 ez pertsonaren izen oinarritzen da, baina betiere norberaren jaiotze datak gainean. 312 00:12:32,430 --> 00:12:35,680 Hileko alde batera utzita, figured dute hilabete bateko lehena jaio bazabiltza 313 00:12:35,680 --> 00:12:39,580 edo hilabete bat 31, egileak oinarritutako balio duten hash egingo, 314 00:12:39,580 --> 00:12:44,154 beraz, izenak zabaldu pixka bat atera justuago 26 lekuak baimendu baino ditzake. 315 00:12:44,154 --> 00:12:47,320 Eta, agian, apur bat gehiago uniformea ​​da Letra batera joan baino, 316 00:12:47,320 --> 00:12:50,236 jakina delako ez da, seguruenik izenak dituzten munduko pertsona gehiago 317 00:12:50,236 --> 00:12:54,020 A zalantzarik baino hasiera beste alfabetoaren letra batzuk. 318 00:12:54,020 --> 00:12:56,380 Beraz, agian, hau da, pixka bat uniformea, suposatuz 319 00:12:56,380 --> 00:12:58,640 banaketa uniformea Hilean zehar haurtxo. 320 00:12:58,640 --> 00:12:59,990 >> Baina, noski, hau Inperfektua da oraindik. 321 00:12:59,990 --> 00:13:00,370 Eskuin? 322 00:13:00,370 --> 00:13:01,370 Oraindik talka izatea dugu. 323 00:13:01,370 --> 00:13:04,680 Honetan jende anitza Datuen egitura badaude oraindik 324 00:13:04,680 --> 00:13:08,432 gutxienez, jaiotza-eguna bera izatea Oraindik hilabetea kontuan hartu gabe. 325 00:13:08,432 --> 00:13:09,640 Baina zer egin du egileak? 326 00:13:09,640 --> 00:13:13,427 Beno, dirudienez array bat dugu ezkerraldean bertikalean marraztuta on, 327 00:13:13,427 --> 00:13:15,010 baina artista baten interpretazio besterik ez da. 328 00:13:15,010 --> 00:13:18,009 Ez du axola zer norabide duzu array bat marrazteko, oraindik ez da array bat. 329 00:13:18,009 --> 00:13:20,225 Zer da hau itxuraz array bat? 330 00:13:20,225 --> 00:13:21,500 >> Ikusleak: Linked zerrenda. 331 00:13:21,500 --> 00:13:21,650 >> DAVID MALAN: Bai. 332 00:13:21,650 --> 00:13:23,490 Badirudi bat bezala lotutako zerrenda sorta. 333 00:13:23,490 --> 00:13:26,490 Beraz, berriro ere, sort puntu honetara orain datu-egitura horiek erabiliz 334 00:13:26,490 --> 00:13:28,550 gehiago osagai gisa soluzio interesgarria, 335 00:13:28,550 --> 00:13:30,862 erabat dezakezu hartu funtsezkoa, array bat bezala, 336 00:13:30,862 --> 00:13:33,320 eta, ondoren, zerbait gehiago hartu lotuta zerrenda bezala interesgarria 337 00:13:33,320 --> 00:13:36,660 eta, nahiz eta horiek konbinatu bat ere sartu Datuen egitura interesgarria. 338 00:13:36,660 --> 00:13:39,630 Eta hain zuzen ere, hori ere ez litzateke hash taula bat izeneko, 339 00:13:39,630 --> 00:13:42,610 Horren bidez, array da Benetan hash taula, 340 00:13:42,610 --> 00:13:45,600 baina hash taula duela kateak, nolabait esateko, 341 00:13:45,600 --> 00:13:50,220 duten edo hazten txikitu oinarritzen elementu kopurua sartu nahi duzun. 342 00:13:50,220 --> 00:13:52,990 >> Orain, hortaz, zer da exekutatzen denbora orain? 343 00:13:52,990 --> 00:13:58,030 Norbaitek sartu nahi badut zeinen urtebetetzea urriaren 31a da 344 00:13:58,030 --> 00:13:59,040 non ez zuen? 345 00:13:59,040 --> 00:14:00,530 346 00:14:00,530 --> 00:14:01,030 Guztiak eskubidea. 347 00:14:01,030 --> 00:14:02,819 Oso behean non 31 dio At. 348 00:14:02,819 --> 00:14:03,610 Eta hori ezin hobea da. 349 00:14:03,610 --> 00:14:05,060 Hori konstante aldia. 350 00:14:05,060 --> 00:14:08,760 Baina, zer beste norbaitek topatuko badugu zeinen urtebetetzea da, ikus dezagun, 351 00:14:08,760 --> 00:14:10,950 Urria, Azaroa, Abendua 31? 352 00:14:10,950 --> 00:14:12,790 Non da zuen joan? 353 00:14:12,790 --> 00:14:13,290 Gauza bera. 354 00:14:13,290 --> 00:14:13,970 Bi urrats arren. 355 00:14:13,970 --> 00:14:15,303 Hori da etengabeko arren, ez da? 356 00:14:15,303 --> 00:14:16,360 357 00:14:16,360 --> 00:14:16,860 Guztiak eskubidea. 358 00:14:16,860 --> 00:14:17,840 Momentuz hau da. 359 00:14:17,840 --> 00:14:20,570 Baina kasu orokorra, jende gehiago esan genezake, 360 00:14:20,570 --> 00:14:23,790 probabilistically, goazen Gero eta gehiago, talkak lortzeko. 361 00:14:23,790 --> 00:14:26,820 >> Orain hau da, pixka bat teknikoki delako hobeto 362 00:14:26,820 --> 00:14:34,580 orain nire kateak ezin izango Kasu txarrena zenbat denbora? 363 00:14:34,580 --> 00:14:38,890 Txertatu dut n jende gero hau gehiago sartu datu-egitura sofistikatuagoa, n pertsona, 364 00:14:38,890 --> 00:14:41,080 txarrena kasuan nik n izango da. 365 00:14:41,080 --> 00:14:41,815 Zergatik? 366 00:14:41,815 --> 00:14:43,332 >> IKUSLEEN: Zergatik denek urtebetetzea bera dauka, 367 00:14:43,332 --> 00:14:44,545 lerro bat izaten ari dira. 368 00:14:44,545 --> 00:14:45,420 DAVID MALAN: Perfect. 369 00:14:45,420 --> 00:14:47,480 Apur bat contrived egotea; baina benetan txarrena kasuan, 370 00:14:47,480 --> 00:14:50,117 denek bera urtebetetzea badu, Emandako Sarrerek duzu, 371 00:14:50,117 --> 00:14:51,950 bat dute joan zaren kate masiboki luzea. 372 00:14:51,950 --> 00:14:54,241 Eta beraz, zuk deitu ahal izan hash taula bat, baina benetan da 373 00:14:54,241 --> 00:14:56,810 besterik masiboa lotuta duen zerrenda alferrik galtzen espazio asko oso bat. 374 00:14:56,810 --> 00:15:00,460 Baina, oro har, bere gain hartzen dugu, bada gutxienez urtebetetzeak uniform-- dira 375 00:15:00,460 --> 00:15:01,750 eta, seguruenik, ez da. 376 00:15:01,750 --> 00:15:02,587 Dut hori egiteko sortu naiz. 377 00:15:02,587 --> 00:15:04,420 Baina bere gain hartzen dugu, zeren eztabaidak eztabaida 378 00:15:04,420 --> 00:15:07,717 direla, ondoren, teorian, bada honen ordezkaritza bertikala 379 00:15:07,717 --> 00:15:11,050 Array, ondo ondoren, zorionez Oraindik dira, badakizu kateak iritsi da, 380 00:15:11,050 --> 00:15:15,880 gutxi gorabehera luzera non bakoitzak bera horiek hileko egun bat adierazten du. 381 00:15:15,880 --> 00:15:19,930 >> Orain 31 egun, ez bada hilean, nire denborak benetan esan nahi du 382 00:15:19,930 --> 00:15:25,230 big n O 31 baino gehiago da, eta horrek lineala baino hobea sentitzen. 383 00:15:25,230 --> 00:15:27,950 Baina zer zen bat gure konpromisoak aste pare bat 384 00:15:27,950 --> 00:15:31,145 Duela direnean adierazteko etorri da exekutatzen algoritmo bat denbora da? 385 00:15:31,145 --> 00:15:33,450 386 00:15:33,450 --> 00:15:35,190 Just bakarrik goi ordena epe begiratu. 387 00:15:35,190 --> 00:15:35,690 Eskuin? 388 00:15:35,690 --> 00:15:37,400 31 behin betiko lagungarria da. 389 00:15:37,400 --> 00:15:39,610 Baina hau big n O da oraindik. 390 00:15:39,610 --> 00:15:41,730 Baina gai bat arazoa ezarri bost 391 00:15:41,730 --> 00:15:43,950 da izango da aitortu erabat, 392 00:15:43,950 --> 00:15:47,320 asymptotically, teorikoki Datu egitura 393 00:15:47,320 --> 00:15:50,470 ez da besterik ez baino hobea lotutako zerrenda masiboa bat. 394 00:15:50,470 --> 00:15:53,550 Eta hain zuzen ere, kasu txarrenean, honetan Hash taula ledinçát devolve. 395 00:15:53,550 --> 00:15:57,620 >> Baina mundu errealean, gurekin gizakiak Zeure Mac edo PC edo dena dela 396 00:15:57,620 --> 00:16:01,240 eta mundu errealean exekutatzen ari software mundu errealeko datuak, 397 00:16:01,240 --> 00:16:03,260 zein algoritmo zaizu nahiago joan? 398 00:16:03,260 --> 00:16:09,180 Bat end urrats edo hartzen duten Bat hartzen N 31 urrats arabera banatzen 399 00:16:09,180 --> 00:16:12,900 datu-pieza batzuk aurkitu edo Informazio bat bilatzeko? 400 00:16:12,900 --> 00:16:16,580 Esan nahi dut, guztiz 31 marka mundu errealean diferentzia. 401 00:16:16,580 --> 00:16:18,540 Da 31 aldiz azkarrago. 402 00:16:18,540 --> 00:16:20,880 Eta guk, gizaki dira, zalantzarik eskertzen da joan. 403 00:16:20,880 --> 00:16:23,004 >> Beraz, konturatu dikotomia benetan artekoak 404 00:16:23,004 --> 00:16:25,920 teorian gauzak buruz hitz egiten eta asymptotically behin betiko 405 00:16:25,920 --> 00:16:28,760 baliorik Nik ikusi dugun bezala, baina benetako munduan, 406 00:16:28,760 --> 00:16:32,930 besterik egiten buruz zaintzen bada Sarrerek orokorrerako giza pozik, 407 00:16:32,930 --> 00:16:36,010 oso baita dezakezu onartu nahi Izan ere, hori bai, hau lineala, 408 00:16:36,010 --> 00:16:38,360 baina 31 aldiz azkarrago baino lineala izan liteke. 409 00:16:38,360 --> 00:16:41,610 Eta hobeto oraindik, ez besterik ez dugu egin zerbait arbitrarioa egin jaioteguna bat bezala, 410 00:16:41,610 --> 00:16:44,030 pixka bat igaro dugu denbora eta zuhurtzia gehiago 411 00:16:44,030 --> 00:16:47,140 eta zer egiten dugun pentsatzeko, ematen pertsona baten izena eta, agian, 412 00:16:47,140 --> 00:16:50,130 beren jaioteguna horiek konbinatu Osagai irudikatu zerbait 413 00:16:50,130 --> 00:16:52,720 benetan gehiago uniforme eta gutxiago jaggy 414 00:16:52,720 --> 00:16:56,250 beraz, irudi hori baino hitz Une iradokitzen badu ere. 415 00:16:56,250 --> 00:16:57,750 Nola liteke hau ezartzeko genuke kodean? 416 00:16:57,750 --> 00:17:00,280 Beno, utzi dugun proposatu zidan besterik maileguan sintaxia batzuk dugu 417 00:17:00,280 --> 00:17:01,799 pare bat aldiz erabili orain arte. 418 00:17:01,799 --> 00:17:03,590 Eta ez dut definitzen joan nodo bat, eta horrek berriro 419 00:17:03,590 --> 00:17:06,812 besterik batzuk epe generikoa da datu-egitura batzuk edukiontzi. 420 00:17:06,812 --> 00:17:09,020 Proposatzen noa kate bat da ez joan. 421 00:17:09,020 --> 00:17:11,369 Baina ari gara hartzen hasteko joan horiek gurpil entrenatzen orain off. 422 00:17:11,369 --> 00:17:13,230 >> No more CS50 liburutegia Benetan, nahi baduzu behintzat 423 00:17:13,230 --> 00:17:15,230 erabili zure finalerako proiektua, eta gauza ederra da, 424 00:17:15,230 --> 00:17:18,569 baina orain ari gara atzera tira joan gortina eta esatea besterik ez char izar bat da. 425 00:17:18,569 --> 00:17:22,069 Beraz, hitza ez da izango pertsonaren Zein izen. 426 00:17:22,069 --> 00:17:25,079 Eta orain, lotura bat dut Hemen hurrengo nodo 427 00:17:25,079 --> 00:17:28,170 horietan adierazten da, beraz, nodo bakoitzari 428 00:17:28,170 --> 00:17:30,950 katean, potentzialki, lotuta zerrenda. 429 00:17:30,950 --> 00:17:34,090 >> Eta orain nola egin nuen deklaratzeko Hash taula bera? 430 00:17:34,090 --> 00:17:36,660 Nola deklaratzen dut egitura hau guztia? 431 00:17:36,660 --> 00:17:40,960 Beno, benetan, askoz ere atsegin erakuslea erabiltzen dut zerrenda baten lehen elementu besterik 432 00:17:40,960 --> 00:17:44,510 aurretik, era berean, esan nahi dut besterik Besterik erakusleak mordo bat behar dut 433 00:17:44,510 --> 00:17:46,270 Hash taula honetan guztian ezartzeko. 434 00:17:46,270 --> 00:17:49,484 Array bat izan nahi dut taula izeneko hash taula da. 435 00:17:49,484 --> 00:17:50,900 Honez tamaina ahalmena izango da. 436 00:17:50,900 --> 00:17:52,525 Hori zenbat elementu daiteke egokitzeko. 437 00:17:52,525 --> 00:17:56,180 Eta honetan elementu horietako bakoitzak array nodo izar bat izango da. 438 00:17:56,180 --> 00:17:56,810 Zergatik? 439 00:17:56,810 --> 00:18:00,160 Beno, argazki hau per, zer naiz Hash taula gisa gauzatzeko 440 00:18:00,160 --> 00:18:04,330 eraginkortasunez soilik hasiera da array hori bertikalki marraztuko dugu, 441 00:18:04,330 --> 00:18:06,820 zeinen lauki bakoitzeko erakuslea adierazten du. 442 00:18:06,820 --> 00:18:09,170 Hori direnak barrak dute Horien bitartez besterik null daude. 443 00:18:09,170 --> 00:18:11,410 Eta bai duten geziak eskuinera joan 444 00:18:11,410 --> 00:18:16,140 dira benetako benetako erakusle, nodo lotutako zerrenda baten hasiera ergo. 445 00:18:16,140 --> 00:18:19,050 >> Beraz, hemen, gero, nola eginen lukeen hash taula bat erabiltzen duten 446 00:18:19,050 --> 00:18:21,580 aparteko kateatzea burutuko du. 447 00:18:21,580 --> 00:18:22,840 Orain hobeto egin ahal izango dugu? 448 00:18:22,840 --> 00:18:25,632 Ondo da azken aldia agindu dut etengabeko denbora lortu genezake. 449 00:18:25,632 --> 00:18:27,381 Eta mota eman zenuen dut Etengabeko denbora da hemen, 450 00:18:27,381 --> 00:18:29,850 baina orduan ez esan benetan etengabeko denbora da oraindik delako 451 00:18:29,850 --> 00:18:31,890 guztira menpe elementu kopurua 452 00:18:31,890 --> 00:18:34,500 sartu ari zaren inputting Datuen egitura. 453 00:18:34,500 --> 00:18:35,980 Baina demagun hau egin dugu. 454 00:18:35,980 --> 00:18:39,550 Dezagun atzera me pantaila hemen. 455 00:18:39,550 --> 00:18:44,520 Demagun, halaber, hau proiektatzeko me hemen, argi eta garbi pantaila eta suposatzen dut hori egin. 456 00:18:44,520 --> 00:18:49,300 Demagun izena txertatzeko nahi nuen Daven nire datuak egitura sartu. 457 00:18:49,300 --> 00:18:52,100 >> Beraz, kate bat sartu nahi dut Daven datuak egitura sartu. 458 00:18:52,100 --> 00:18:54,370 Zer ez badut erabiltzea hash taula, baina ez dut erabili 459 00:18:54,370 --> 00:18:56,980 zerbait gehiago da zuhaitz-itxurako familia zuhaitz bat, non like 460 00:18:56,980 --> 00:18:59,670 at erro batzuk duzu gora eta, gero nodo eta hostoak 461 00:18:59,670 --> 00:19:01,440 joan behera eta kanpora. 462 00:19:01,440 --> 00:19:04,450 Demagun, orduan, nik txertatzeko Daven en nahi 463 00:19:04,450 --> 00:19:06,430 zer da gaur egun zerrenda hutsik batean. 464 00:19:06,430 --> 00:19:09,780 Honako hau egin nahi dut: ez naiz nodo bat sortzea familia honetan joan 465 00:19:09,780 --> 00:19:15,170 zuhaitzez bezala egitura itxura apur bat honen antzeko, eta horietako bakoitzak 466 00:19:15,170 --> 00:19:19,640 laukizuzenak egin da, demagun, orain 26 elementu da. 467 00:19:19,640 --> 00:19:21,650 Eta zelulak bakoitzean array honetan va 468 00:19:21,650 --> 00:19:23,470 alfabetoa gutunean adierazten du. 469 00:19:23,470 --> 00:19:28,190 >> Hain zuzen ere, nik nahi tratatzen dut Hau da, A, B, C eta gero, ondoren, D, 470 00:19:28,190 --> 00:19:29,310 hau hemen. 471 00:19:29,310 --> 00:19:32,940 Beraz, hau da, joan eraginkortasunez hizkia D. adierazten 472 00:19:32,940 --> 00:19:36,040 Baina Daven horrek guztiak sartu izendatzeko pixka bat gehiago egin behar dut. 473 00:19:36,040 --> 00:19:37,840 Beraz, ez dut lehen hash joan, nolabait esateko. 474 00:19:37,840 --> 00:19:41,049 Den lehenengo letra begiratu noa in Daven en da, jakina, D, 475 00:19:41,049 --> 00:19:42,840 eta naiz esleitu noa itxura nodo bat 476 00:19:42,840 --> 00:19:45,570 atsegin laukizuzen handi bat big this-- nahikoa alfabeto osoa egokitzeko. 477 00:19:45,570 --> 00:19:47,140 >> Orain D egiten da. 478 00:19:47,140 --> 00:19:49,720 Orain A. D-A-V-E-N helburua da. 479 00:19:49,720 --> 00:19:51,220 Beraz, orain zer naiz egin egingo da hau. 480 00:19:51,220 --> 00:19:54,027 D oharra hasi nintzen bezain laster ez dago erakuslea ez da. 481 00:19:54,027 --> 00:19:56,860 Zabor balio bat da une honetan, edo agian hasieratu dut null. 482 00:19:56,860 --> 00:19:59,630 Baina utzi duten jarraitzea niretzat zuhaitz bat eraikitzeko ideia. 483 00:19:59,630 --> 00:20:04,260 Dezagun beste horietako bat esleitu me duela 26 elementu ditu nodoak. 484 00:20:04,260 --> 00:20:05,150 >> Eta zer ezagutzen duzu? 485 00:20:05,150 --> 00:20:09,130 Hau besterik ez memoria nodo bat bada dagoela Sortu malloc dut, eta egitura bat erabiliz 486 00:20:09,130 --> 00:20:11,240 ikusiko dugu laster ikusiko, This-- egin nahi dut 487 00:20:11,240 --> 00:20:14,450 Gezi bat marraztu Noa gauza behera irudikatzen D 488 00:20:14,450 --> 00:20:15,860 nodo berri honetara. 489 00:20:15,860 --> 00:20:19,240 Eta orain, lehen hurrengoa Daven izenean gutuna, 490 00:20:19,240 --> 00:20:24,150 V-- D-A-V-- aurrera noa joan eta hau bezalako beste nodo bat marraztu, 491 00:20:24,150 --> 00:20:30,150 Horren bidez, V elementu hemen, Adibidez, whoops bisitatuko dugu marraztu. 492 00:20:30,150 --> 00:20:31,020 Ez dugu marraztu ez. 493 00:20:31,020 --> 00:20:31,936 Honez hemen joan behar da. 494 00:20:31,936 --> 00:20:32,890 495 00:20:32,890 --> 00:20:35,712 >> Ondoren goaz kontuan hartu hau V. izateko 496 00:20:35,712 --> 00:20:44,920 Eta gero behera hemen goaz indizea joan V zer kontuan hartu dugu E. behera 497 00:20:44,920 --> 00:20:50,100 Eta gero hemendik ari gara joan joan behar nodo horiek hemen. 498 00:20:50,100 --> 00:20:52,930 Eta orain galdera bati erantzun behar dugu. 499 00:20:52,930 --> 00:20:57,840 Behar dut nolabait adierazi Oraindik katea Daven amaieran dugu. 500 00:20:57,840 --> 00:20:59,490 Beraz, besterik gabe, ezin izan dut utzi da nulua. 501 00:20:59,490 --> 00:21:02,670 >> Baina zer dugu bada Daven en Izen halaber, zein 502 00:21:02,670 --> 00:21:04,280 da, esan dugu, Davenport gisa? 503 00:21:04,280 --> 00:21:06,970 Beraz, zer bada Daven da benetan azpikate bat, 504 00:21:06,970 --> 00:21:08,960 katea askoz luzeagoa aurrizki bat? 505 00:21:08,960 --> 00:21:11,450 Ezin dugu besterik gabe, behin betiko esan ezer joan 506 00:21:11,450 --> 00:21:14,410 bertara joan, ezin izan dugulako inoiz Davenport bezalako hitz bat txertatu 507 00:21:14,410 --> 00:21:15,840 datu egitura honetan sartu 508 00:21:15,840 --> 00:21:19,560 >> Beraz, zer egin genezake ordez elementu horiek bakoitzaren tratatzeko 509 00:21:19,560 --> 00:21:22,170 gisa agian bi izatea horien barruan elementu. 510 00:21:22,170 --> 00:21:24,810 One erakuslea da, hain zuzen ere, gisa izan dut egiten dut. 511 00:21:24,810 --> 00:21:27,100 Beraz Kutxa horietako bakoitzak ez da zelula bakar bat. 512 00:21:27,100 --> 00:21:29,855 Baina, zer da goian one-- beheko norberaren 513 00:21:29,855 --> 00:21:32,230 nulua izango, izan ere, Ba besterik gabe dago Davenport. 514 00:21:32,230 --> 00:21:34,197 Zer bada ere goiko balio berezi batzuk? 515 00:21:34,197 --> 00:21:36,530 Eta hori apur bat izango da gogorra da tamaina horretako marrazteko. 516 00:21:36,530 --> 00:21:38,130 Baina demagun da bakarrik marka bat. 517 00:21:38,130 --> 00:21:38,920 Egiaztatu. 518 00:21:38,920 --> 00:21:44,230 D-A-V-E-N katea da datu egitura honetan. 519 00:21:44,230 --> 00:21:48,350 >> Bien bitartean, leku gehiago banu Hemen, egin nezakeen P-O-R-T, 520 00:21:48,350 --> 00:21:52,650 eta kontrol jarri izan dut nodo letra T oso amaieran dauka. 521 00:21:52,650 --> 00:21:55,460 Beraz, hau da masiboki bat konplexua begira datuak egitura. 522 00:21:55,460 --> 00:21:57,210 Eta nire idazkera zalantzarik ez laguntzeko. 523 00:21:57,210 --> 00:22:00,043 Baina zerbait sartu nahi izan banu Bestela, kontuan hartu zer ez genuke. 524 00:22:00,043 --> 00:22:03,370 David jarri nahi badugu, logika bera, D-A-V jarraitu genuen, 525 00:22:03,370 --> 00:22:08,802 baina orain hurrengoan nuke seinalatu elementua ez E-tik, baina ni bertatik D. to 526 00:22:08,802 --> 00:22:10,760 Beraz, ez da joan Zuhaitz hau nodo gehiago. 527 00:22:10,760 --> 00:22:12,325 Dei malloc gehiago izan dugu. 528 00:22:12,325 --> 00:22:14,700 Baina ez dut nahi bat egin irudi hau gaizki osoa. 529 00:22:14,700 --> 00:22:17,710 Hargatik bat begiratu ordez hori izan da aurrez formulatu 530 00:22:17,710 --> 00:22:21,810 hau ez dot bezala, dot, puntuak, baina besterik laburtua array. 531 00:22:21,810 --> 00:22:23,950 Baina nodo bakoitzari zuhaitz ireki honetan hemen 532 00:22:23,950 --> 00:22:26,700 du gauza bera adierazten baitu array baten tamaina 26ko Ray. 533 00:22:26,700 --> 00:22:28,860 >> Edo izan nahi badugu orain benetan egokia, zer 534 00:22:28,860 --> 00:22:30,790 norbaiten izena balitz bezala Komatxo bat, dezagun 535 00:22:30,790 --> 00:22:35,560 suposatuko nodo bakoitza benetan ditu 27 indizeak dela, eta ez bakarrik 26 bezala. 536 00:22:35,560 --> 00:22:42,020 Beraz, orain da datu bat izango da a trie-- T-R-I-E izeneko egitura. 537 00:22:42,020 --> 00:22:46,120 Trie bat, hau da, ustez historikoki clever zuhaitz bat izen bat 538 00:22:46,120 --> 00:22:49,040 hori optimizatu berreskuratze, eta horrek, jakina, 539 00:22:49,040 --> 00:22:50,870 da I-E batekin idatzita beraz trie da. 540 00:22:50,870 --> 00:22:52,710 Baina hori trie historia da. 541 00:22:52,710 --> 00:22:55,860 >> Beraz, trie zuhaitz-itxurako datu hau da familia zuhaitz bat bezala egitura 542 00:22:55,860 --> 00:22:57,510 azken finean duten bezala jokatzen. 543 00:22:57,510 --> 00:23:00,890 Eta hemen, besterik gabe, bat beste adibide bat da besteen izenak sorta osoa. 544 00:23:00,890 --> 00:23:03,540 Baina galdera orain esku dago zer dute 545 00:23:03,540 --> 00:23:08,070 dudarik gabe, gehiago sartuz irabazi dugu konplikatua datu-egitura, eta bat, 546 00:23:08,070 --> 00:23:09,870 Egia, memoria asko erabiltzen du. 547 00:23:09,870 --> 00:23:11,703 >> Ere, nahiz une honetan, naiz bakarrik 548 00:23:11,703 --> 00:23:15,050 D's erakuslea erabiliz, eta A eta V eta Es eta Ns, 549 00:23:15,050 --> 00:23:16,700 Memoria asko heck bat alferrik galtzen ari naiz. 550 00:23:16,700 --> 00:23:18,030 551 00:23:18,030 --> 00:23:22,660 Baina non baliabide bat ematen dut, Ez irabazteko atzera beste joera dut. 552 00:23:22,660 --> 00:23:26,020 Beraz, bada, leku gehiago gastatu dut, zer da ziurrenik itxaropena? 553 00:23:26,020 --> 00:23:27,407 That gutxiago gastatu dut? 554 00:23:27,407 --> 00:23:28,240 IKUSLEEN: denbora gutxiago. 555 00:23:28,240 --> 00:23:28,990 DAVID MALAN: Time. 556 00:23:28,990 --> 00:23:30,320 Orain zergatik izan liteke? 557 00:23:30,320 --> 00:23:33,880 Beno, zer txertatzeko da denbora, orain O handien arabera, 558 00:23:33,880 --> 00:23:37,660 Daven bezalako izen baten edo Davenport edo David? 559 00:23:37,660 --> 00:23:39,340 Beno, Daven bost urrats zen. 560 00:23:39,340 --> 00:23:42,350 Davenport bederatzi urrats izango litzateke, beraz, hainbat urrats bat gehiago izango litzateke. 561 00:23:42,350 --> 00:23:44,250 David bost urrats izango litzateke, baita. 562 00:23:44,250 --> 00:23:47,230 Beraz, horiek hormigoizko dira zenbakiak, baina ziur aski ez dago 563 00:23:47,230 --> 00:23:49,550 buruzko goi-muga norbaiten izena luzera. 564 00:23:49,550 --> 00:23:52,240 Eta hain zuzen ere, arazoa bost zehaztapen multzo, 565 00:23:52,240 --> 00:23:54,050 proposatzen goaz zerbait dagoela 566 00:23:54,050 --> 00:23:55,470 karaktere 40-zenbait-bitxia da. 567 00:23:55,470 --> 00:23:58,180 >> Errealistak izanda, inork ez du Izen infinituki luzea da, 568 00:23:58,180 --> 00:24:01,542 hots dagoela baten luzera izendatzeko edo kate baten luzera eginen lukeen 569 00:24:01,542 --> 00:24:03,750 dute zenbait estatuan egitura da, dudarik gabe, zer? 570 00:24:03,750 --> 00:24:05,550 571 00:24:05,550 --> 00:24:06,250 It konstante da. 572 00:24:06,250 --> 00:24:06,430 Eskuin? 573 00:24:06,430 --> 00:24:09,310 Baliteke bezalako etengabeko handi bat izango da 40-zerbait, baina etengabea da. 574 00:24:09,310 --> 00:24:13,752 Eta zenbat mendekotasuna ez du Beste izen datu egitura honetan daude. 575 00:24:13,752 --> 00:24:15,460 Bestela esanda, badut Orain txertatu nahi 576 00:24:15,460 --> 00:24:20,540 Colton edo Gabriel edo Rob edo Zamyla edo Alison edo Belinda edo beste edozein izen 577 00:24:20,540 --> 00:24:23,940 Datu horiek sartu langileen egitura, denborak da 578 00:24:23,940 --> 00:24:26,750 beste izen txertatzeak den guztiak eragin izango doa 579 00:24:26,750 --> 00:24:30,220 beste elementu zenbat dira Datuen egitura dagoeneko? 580 00:24:30,220 --> 00:24:31,040 Ez da. 581 00:24:31,040 --> 00:24:31,540 Eskuin? 582 00:24:31,540 --> 00:24:36,150 Eraginkorrean ari gara erabiliz geruza anitzeko hash taula honetan. 583 00:24:36,150 --> 00:24:38,280 Eta korrika garai eragiketa horiek edozein 584 00:24:38,280 --> 00:24:41,510 ez da menpeko kopuruaren duten datu-egitura daude elementu 585 00:24:41,510 --> 00:24:43,090 edo dira azkenean joan datu-egitura izango da, 586 00:24:43,090 --> 00:24:44,714 baina zer zehazki luzera? 587 00:24:44,714 --> 00:24:46,500 588 00:24:46,500 --> 00:24:49,200 >> Katea izateaz txertatuko da, eta horrek ez du egin 589 00:24:49,200 --> 00:24:52,580 hau asymptotically konstante time-- bat O big. 590 00:24:52,580 --> 00:24:54,720 Eta Egia, besterik ez Mundu errealean, hau 591 00:24:54,720 --> 00:24:58,380 esan txertatzeak Daven izena hartzen bost urrats edo Davenport bederatzi bezalako 592 00:24:58,380 --> 00:25:00,100 urratsak, edo David bost urrats. 593 00:25:00,100 --> 00:25:03,071 Hori nahiko darn lasterka aldiz txikiak. 594 00:25:03,071 --> 00:25:05,320 Eta, hain zuzen ere, hori oso bat Gauza ona, batez ere, 595 00:25:05,320 --> 00:25:08,126 Ez da guztira menpe ez elementu kopurua. 596 00:25:08,126 --> 00:25:10,500 Beraz, nola liteke hau ezartzeko genuke kodean egitura mota? 597 00:25:10,500 --> 00:25:12,900 Da pixka bat gehiago konplexua, baina oraindik da 598 00:25:12,900 --> 00:25:15,050 besterik aplikazio bat eraikinaren oinarrizko blokeak. 599 00:25:15,050 --> 00:25:17,830 To birdefinitu noa Gurekin honela node: 600 00:25:17,830 --> 00:25:21,100 bool word-- deitu eta honek Deitu behar izan ezer. 601 00:25:21,100 --> 00:25:23,970 Baina bool irudikatzen zer marka bat bezala marraztu dut. 602 00:25:23,970 --> 00:25:24,490 Bai. 603 00:25:24,490 --> 00:25:26,720 Hau kate baten amaiera izango da datu egitura honetan. 604 00:25:26,720 --> 00:25:30,702 >> Eta, jakina, nodo izar ez da haur aipatuz. 605 00:25:30,702 --> 00:25:32,410 Eta, hain zuzen ere, besterik ez gustatzen familia zuhaitz bat, duzu 606 00:25:32,410 --> 00:25:34,370 nodo kontuan hartu litzateke direla off zintzilik 607 00:25:34,370 --> 00:25:36,920 guraso batzuk behean elementu haurrak izan. 608 00:25:36,920 --> 00:25:40,510 Eta, beraz, seme-alabak izan da joan 27 array bat, bat 27an izan 609 00:25:40,510 --> 00:25:41,680 besterik apostrophe izateagatik. 610 00:25:41,680 --> 00:25:43,390 Ordenatzeko goaz kasu berezi hori. 611 00:25:43,390 --> 00:25:45,400 Beraz, jakin izan dezakezu Apostrofeak dituzten izenak. 612 00:25:45,400 --> 00:25:47,399 Agian, nahiz gidoi beharko lukete ez joan, baina ikusiko duzu 613 00:25:47,399 --> 00:25:50,330 p set 5-laguntza baino ez dugu ikusten letrak eta apostrophes buruz. 614 00:25:50,330 --> 00:25:52,990 >> Eta gero, nola ez ordezkatzen duzun Datuen egitura bera? 615 00:25:52,990 --> 00:25:56,454 Nola root adierazten duzu trie honetan, nolabait esateko? 616 00:25:56,454 --> 00:25:59,620 Beno, besterik ez lotuta zerrenda batekin gustatzen, zuk lehen elementu erakuslea behar. 617 00:25:59,620 --> 00:26:04,270 Trie batekin bat behar besterik ez duzu trie hau erro erakuslea. 618 00:26:04,270 --> 00:26:07,290 Eta hortik aurrera hash dezakezu Zure bidean behera sakonago eta sakonago 619 00:26:07,290 --> 00:26:10,460 beste egitura nodo guztietan. 620 00:26:10,460 --> 00:26:13,440 Beraz can honekin besterik gabe struct ordezkatzen dugun. 621 00:26:13,440 --> 00:26:15,877 >> Orain Meanwhile-- Oh, galdera. 622 00:26:15,877 --> 00:26:17,220 >> AUDIENCE: Zer da bool hitza? 623 00:26:17,220 --> 00:26:20,490 >> DAVID MALAN: Boolearra hitza da besterik C Enkarnazio honetan 624 00:26:20,490 --> 00:26:22,920 dudana deskribatu Kutxa hau hemen, noiz hasi 625 00:26:22,920 --> 00:26:26,000 Bakoitzaren splitting hasi nintzen array elementu bi zatitan. 626 00:26:26,000 --> 00:26:27,600 One hurrengo nodo erakuslea da. 627 00:26:27,600 --> 00:26:30,280 Bestea ez du izan Kontrol-lauki baten antzeko zerbait 628 00:26:30,280 --> 00:26:33,770 baietz esateko, ez dago bat Hitz Daven ondorioz hemen, 629 00:26:33,770 --> 00:26:35,610 ez dugu nahi duelako, Oraingoz, Dave at. 630 00:26:35,610 --> 00:26:39,320 >> Nahiz eta Dave dago bat izango da legezko hitza, ez zuen trie batean 631 00:26:39,320 --> 00:26:39,830 oraindik. 632 00:26:39,830 --> 00:26:40,950 Eta D ez da hitz bat. 633 00:26:40,950 --> 00:26:42,770 Eta D-A ez da hitz bat edo izen bat. 634 00:26:42,770 --> 00:26:45,020 Beraz, marka behin bakarrik, adierazten 635 00:26:45,020 --> 00:26:48,190 hit nodo hau da aurreko pertsonaien bidea 636 00:26:48,190 --> 00:26:50,700 horretan sartuta duzun benetan kate bat. 637 00:26:50,700 --> 00:26:53,660 Beraz, bool guztia ez da guretzat egiten. 638 00:26:53,660 --> 00:26:55,500 >> Saiatzen beste edozein galdera? 639 00:26:55,500 --> 00:26:56,215 Bai. 640 00:26:56,215 --> 00:26:58,035 >> Ikusleak: Zer da gainjartzea? 641 00:26:58,035 --> 00:26:59,945 Zer Dave eta Daven bat baduzu? 642 00:26:59,945 --> 00:27:00,820 DAVID MALAN: Perfect. 643 00:27:00,820 --> 00:27:02,580 Zer Dave eta Daven bat baduzu? 644 00:27:02,580 --> 00:27:06,240 Beraz txertatzen badugu, esan goitizena, for David-- Dave-- D-A-V-E? 645 00:27:06,240 --> 00:27:07,370 646 00:27:07,370 --> 00:27:08,700 Hau da, benetan super simple. 647 00:27:08,700 --> 00:27:10,325 Beraz, ari gara bakarrik lau urrats hartu du. 648 00:27:10,325 --> 00:27:11,042 649 00:27:11,042 --> 00:27:15,847 D-A-V-E. Eta zer izan nahi dut egin ostean laugarren node hit I? 650 00:27:15,847 --> 00:27:16,680 Just egiaztatu du. 651 00:27:16,680 --> 00:27:18,000 Dagoeneko onak joan gara. 652 00:27:18,000 --> 00:27:18,840 Eginda. 653 00:27:18,840 --> 00:27:19,750 Lau urrats. 654 00:27:19,750 --> 00:27:21,590 Denbora Constant asymptotically. 655 00:27:21,590 --> 00:27:26,300 Eta orain bai Dave adierazitako Nik eta Daven egituran kateak dira. 656 00:27:26,300 --> 00:27:27,710 Beraz, ez da arazo bat. 657 00:27:27,710 --> 00:27:30,200 Eta konturatu nola presentzia Daven ez zuten aurrera egin 658 00:27:30,200 --> 00:27:34,750 edozein denbora gehiago edo gutxiago hartu Dave eta alderantziz denbora. 659 00:27:34,750 --> 00:27:36,000 >> Beraz, zer gehiago egin dezakegu orain? 660 00:27:36,000 --> 00:27:40,680 Metafora hau erabili dugu lehenago erretiluak zerbait ordezkari. 661 00:27:40,680 --> 00:27:43,380 Baina bihurtzen da bat erretiluak pila da benetan 662 00:27:43,380 --> 00:27:47,187 beste datu abstraktu erakusleak maila altuagoa datu-egitura bat inportatu 663 00:27:47,187 --> 00:27:49,770 amaierako egun besterik ez da array bat edo lotuta zerrenda bezala 664 00:27:49,770 --> 00:27:50,970 edo zerbait gehiago eguneroko. 665 00:27:50,970 --> 00:27:53,270 Baina interesgarria da Kontzeptu kontzeptuala. 666 00:27:53,270 --> 00:27:56,440 Pila bat, horrelako erretiluak hemen Mather, 667 00:27:56,440 --> 00:27:58,750 oro har deitzen dira besterik pila bat horrelako. 668 00:27:58,750 --> 00:28:02,540 >> Eta datu-egitura mota honetan bi eragiketa egin behar duzu 669 00:28:02,540 --> 00:28:05,880 push izeneko bat behar duzu Zerbait gehituz pila, 670 00:28:05,880 --> 00:28:08,320 erretilu beste ipintzeko bezalakoa pilaren goialdean dauden kopiak. 671 00:28:08,320 --> 00:28:11,350 Eta gero aterako da, eta horrek esan nahi du erretilu off goreneko hartu. 672 00:28:11,350 --> 00:28:16,210 Baina, zer da garrantzitsua buruz pila bat dela lortu ezaugarria bitxi hau. 673 00:28:16,210 --> 00:28:19,560 Dira jantokia langileek bezala erretiluak lekuz hurrengo bazkari, 674 00:28:19,560 --> 00:28:21,380 zer izan da joan nola ikasle buruzko egia 675 00:28:21,380 --> 00:28:22,856 Datu egitura elkarreragin? 676 00:28:22,856 --> 00:28:24,480 IKUSLEEN: ari dira off bat aterako da joan. 677 00:28:24,480 --> 00:28:26,550 DAVID MALAN: Ari joan pop off bat, zorionez goian. 678 00:28:26,550 --> 00:28:28,910 Bestela mota besterik ez da ergela modu guztiak joan beheraino. 679 00:28:28,910 --> 00:28:29,070 Eskuin? 680 00:28:29,070 --> 00:28:31,620 Datuen egitura ez du benetan baimendu Beheko erretiluan gutxienez har daitekeena 681 00:28:31,620 --> 00:28:32,520 erraz. 682 00:28:32,520 --> 00:28:35,040 Beraz, ez da bitxia da hau pila bat jabetza 683 00:28:35,040 --> 00:28:39,730 azken elementua da Lehenengo out bat izango da. 684 00:28:39,730 --> 00:28:43,400 Eta informatikariak deitu LIFO-- honetan iraungo, lehena inprimatu. 685 00:28:43,400 --> 00:28:45,540 Eta, egia esan, ez dute aplikazio interesgarriak. 686 00:28:45,540 --> 00:28:50,090 Ez da zertan batzuk bistako beste batzuk, baina ezin, hain zuzen ere, izango da baliagarria, 687 00:28:50,090 --> 00:28:54,040 eta ezin, hain zuzen ere, ezarri behar da modu ezberdinetan pare batean. 688 00:28:54,040 --> 00:28:58,550 >> Bat, beraz, eta benetan, dezagun me ez dela murgiltzea. 689 00:28:58,550 --> 00:28:59,860 Egin dezagun ordez dezagun. 690 00:28:59,860 --> 00:29:03,700 Dezagun batean hori da, ia Ideia bera, baina bidezkoago pixka bat da. 691 00:29:03,700 --> 00:29:04,200 Eskuin? 692 00:29:04,200 --> 00:29:07,560 Oraindik fan boys hauetako bat bada edo neska benetan atsegin Apple produktuak 693 00:29:07,560 --> 00:29:10,130 eta esnatu at 3:00 AM lerro denda batzuk 694 00:29:10,130 --> 00:29:14,150 oso azken iPhone lortzeko, ilaran izan liteke atsegin dute hau. 695 00:29:14,150 --> 00:29:15,800 >> Orain ilara bat oso nahita izendatzen dira. 696 00:29:15,800 --> 00:29:18,190 Lerro bat da, ez delako haren zuzentasuna batzuk. 697 00:29:18,190 --> 00:29:18,690 Eskuin? 698 00:29:18,690 --> 00:29:21,690 Mota da sucked litzateke dut baduzu Hara heldu lehen Apple Store 699 00:29:21,690 --> 00:29:25,700 baina zaude eraginkortasunez beheragoen Erretilu delako Apple langile ondoren 700 00:29:25,700 --> 00:29:28,189 pop azken pertsona benetan linea lortu. 701 00:29:28,189 --> 00:29:31,230 Beraz, pilak eta ilarak, nahiz funtzionalki gauza bera mota daudela 702 00:29:31,230 --> 00:29:33,105 Bilduma hau besterik ez da Baliabide hori 703 00:29:33,105 --> 00:29:36,210 hazten eta han joan shrink-- da zuzentasuna da alderdi hori, 704 00:29:36,210 --> 00:29:39,634 mundu errealean, gutxienez, non eragiketak egikaritu 705 00:29:39,634 --> 00:29:40,800 funtsean ezberdinak dira. 706 00:29:40,800 --> 00:29:43,360 Stack-- A ilara batean baizik da esan behar 707 00:29:43,360 --> 00:29:45,320 bi eragiketa: n ilara eta d ilaran. 708 00:29:45,320 --> 00:29:46,341 709 00:29:46,341 --> 00:29:48,090 Edo deitu dezakezu Edozein gauza kopurua. 710 00:29:48,090 --> 00:29:50,770 Baina besterik atera nahi duzun nozioa, bat gehituz 711 00:29:50,770 --> 00:29:53,230 eta beste bat da, azken finean, kenduz. 712 00:29:53,230 --> 00:29:58,840 >> Orain kanpaia azpian, bi pila eta ilara bat ezarri ahal izango da, nola? 713 00:29:58,840 --> 00:30:01,390 Ez dugu-kodea sartu dituelako maila handiagoa 714 00:30:01,390 --> 00:30:03,387 Ideia Ordena nabarmenagoa da. 715 00:30:03,387 --> 00:30:04,470 Esan nahi dut, zer egin gizakietan? 716 00:30:04,470 --> 00:30:07,030 Apple lehen pertsonaren banago Gordetzeko eta honek ate aurrean dago, 717 00:30:07,030 --> 00:30:08,130 , badakizu hemen nabarmendu nahi dut. 718 00:30:08,130 --> 00:30:09,750 Eta hurrengo pertsona hemen itxaron behar. 719 00:30:09,750 --> 00:30:11,500 Eta hurrengo pertsona hemen itxaron behar. 720 00:30:11,500 --> 00:30:13,792 Beraz, zein datu-egitura erabaki bera ilara bat? 721 00:30:13,792 --> 00:30:14,542 >> Ikusleak: ilara bat. 722 00:30:14,542 --> 00:30:15,667 DAVID MALAN: Ongi, ilara batean. 723 00:30:15,667 --> 00:30:16,390 Sure. 724 00:30:16,390 --> 00:30:16,920 Zer gehiago? 725 00:30:16,920 --> 00:30:17,600 >> Ikusleak: Lotuta zerrenda bat. 726 00:30:17,600 --> 00:30:18,990 >> DAVID MALAN: A lotuta Zerrenda ezartzeko asmoz. 727 00:30:18,990 --> 00:30:22,500 Eta lotuta zerrenda polita gero dagoelako luze arbitrarioki hazten daiteke aurka 728 00:30:22,500 --> 00:30:24,880 kopuru finko batzuk izatea Dendan pertsona. 729 00:30:24,880 --> 00:30:27,030 Baina agian kopuru finko Binakako legitimoa. 730 00:30:27,030 --> 00:30:30,350 Badute bakarrik 20 bezalakoa izan delako lehenengo egunean iPhones, agian 731 00:30:30,350 --> 00:30:33,930 soilik tamaina array bat behar dute 20 ilara, hori ordezkatzen zein 732 00:30:33,930 --> 00:30:37,070 bakarrik orain esaten da behin hitz egiten hasten gara goi mailako arazo horiei buruz, 733 00:30:37,070 --> 00:30:38,890 inplementa dezakezu edozein modutan kopurua ere. 734 00:30:38,890 --> 00:30:42,030 Eta ez da, seguruenik, besterik joan merkataritza izan off espazioan eta denboran 735 00:30:42,030 --> 00:30:43,950 edo besterik gabe, zure kodea konplexutasuna. 736 00:30:43,950 --> 00:30:45,380 >> Pila bati buruz? 737 00:30:45,380 --> 00:30:48,190 Beno, pila bat ere ikusi dugu, Besterik ezin erretiluak horiek izan. 738 00:30:48,190 --> 00:30:50,007 Eta hau sorta bat ezartzeko asmoz. 739 00:30:50,007 --> 00:30:53,090 Baina uneren batean array bat erabiltzen baduzu, zer erretiluak gertatuko 740 00:30:53,090 --> 00:30:54,173 behera jarri saiatzen ari zaren? 741 00:30:54,173 --> 00:30:55,170 742 00:30:55,170 --> 00:30:55,670 Guztiak eskubidea. 743 00:30:55,670 --> 00:30:57,490 Ari zara bakarrik joan hain garaia izango joan ezin izatea. 744 00:30:57,490 --> 00:31:00,156 Eta uste Mather dut ari dira benetan inaugurazio horretan recessed. 745 00:31:00,156 --> 00:31:01,950 Beraz, hain zuzen ere, ia da atsegin Mather erabiliz 746 00:31:01,950 --> 00:31:03,783 tamaina finkoa array, ezin duzu besterik ez delako 747 00:31:03,783 --> 00:31:08,302 moldatzen erretiluak hainbeste inaugurazio horretan Pertsonen belaunak azpitik behera horman. 748 00:31:08,302 --> 00:31:10,010 Eta beraz, izan liteke esan zuen array bat izango da, 749 00:31:10,010 --> 00:31:14,300 baina, zalantzarik gabe izan dugu martxan jarri duten orokorrago lotuta zerrenda batekin. 750 00:31:14,300 --> 00:31:16,390 >> Beno, zer datu-egitura bat buruz? 751 00:31:16,390 --> 00:31:18,760 Tira me bestea bisuala hemen. 752 00:31:18,760 --> 00:31:24,710 Atsegin hau hemen nola zerbait? 753 00:31:24,710 --> 00:31:28,920 Zergatik izan liteke erabilgarria izango da, ez dute zerbait bezala trie bat, eta fancy bertan 754 00:31:28,920 --> 00:31:32,370 ikusi izan dugu, nodo oso zabal horiek, eta bakoitzak array bat da? 755 00:31:32,370 --> 00:31:35,740 Baina zer gertatzen da zerbait gehiago egiten badugu Besterik gabe, eskola zaharra familia zuhaitz bat bezala, 756 00:31:35,740 --> 00:31:38,110 bakoitza zeinen hemen nodo besterik ez da zenbaki bat gordetzeko. 757 00:31:38,110 --> 00:31:42,180 Horren ordez izen edo ondorengo baten besterik ez da hau atsegin batean gordetzeko. 758 00:31:42,180 --> 00:31:45,250 >> Beno, jargon erabili dugu Datu-egitura bai saiatzen da 759 00:31:45,250 --> 00:31:49,510 eta zuhaitzak, non trie bat, berriz, besterik horren nodo array dira bata, 760 00:31:49,510 --> 00:31:51,680 dago oraindik zer egin nahi lukeen kalifikazioa eskolatik erabili 761 00:31:51,680 --> 00:31:53,860 familia bat egin duzu hosto zuhaitz eta erroa 762 00:31:53,860 --> 00:31:57,250 zuhaitz eta seme-alabak guraso eta anai-arrebak kontratuan. 763 00:31:57,250 --> 00:32:03,670 Eta agian, zuhaitz bat ezarri dugu, esate baterako, besterik gabe gisa horixe. 764 00:32:03,670 --> 00:32:07,420 Zuhaitz bat, nodo bat, bat bezala bada zirkulu horiek zenbaki bat du, 765 00:32:07,420 --> 00:32:09,947 ez da izan joan erakuslea bat, baina bi. 766 00:32:09,947 --> 00:32:11,780 Eta zuk gehitu bezain laster bigarren erakuslea, zuk 767 00:32:11,780 --> 00:32:13,905 benetan, orain egin ahal izango ordenatu bi dimentsioko datuen 768 00:32:13,905 --> 00:32:14,780 memoria egiturak. 769 00:32:14,780 --> 00:32:16,660 Bi dimentsioko bezala array, ezin duzu 770 00:32:16,660 --> 00:32:18,904 motatako bi dimentsioko zerrendak lotuta baina direnak 771 00:32:18,904 --> 00:32:20,820 duen eredu bat jarraitzen non ez zikloak ez da. 772 00:32:20,820 --> 00:32:24,487 Benetan bat zuhaitz bat da aiton bidea hemen eta gero 773 00:32:24,487 --> 00:32:27,320 guraso eta seme-alaben batzuk eta bilobak eta Biznietos. 774 00:32:27,320 --> 00:32:28,370 eta abar. 775 00:32:28,370 --> 00:32:32,390 >> Baina, zer da benetan honi buruz neat gehiegi, besterik ez duzu tease kodea pixka batekin, 776 00:32:32,390 --> 00:32:35,370 abisuaren errekurtsio awhile atzera, zeinaren 777 00:32:35,370 --> 00:32:38,220 deiak bera funtzio bat idazten duzun. 778 00:32:38,220 --> 00:32:41,140 Hau aukera ederra da zerbait ezartzeko 779 00:32:41,140 --> 00:32:42,920 errekurtsio bezala, kontuan hartu delako. 780 00:32:42,920 --> 00:32:43,860 >> Zuhaitz bat da. 781 00:32:43,860 --> 00:32:48,040 Eta nola ekin anal apur bat izan dut Osokoak jarri dut kalera. 782 00:32:48,040 --> 00:32:51,020 Hainbeste berezia du izen bilaketa zuhaitz bitar bat. 783 00:32:51,020 --> 00:32:53,460 Orain binary entzun dugu bilatu, baina ezin duzu 784 00:32:53,460 --> 00:32:55,180 lan atzeraka gauza honen izena from? 785 00:32:55,180 --> 00:32:59,280 Zer nola I eredua da txertatuko osokoak Zuhaitz hau sartu? 786 00:32:59,280 --> 00:33:00,696 Ez da arbitrarioa. 787 00:33:00,696 --> 00:33:01,570 Ez dago eredu batzuk. 788 00:33:01,570 --> 00:33:02,090 Bai. 789 00:33:02,090 --> 00:33:03,370 >> AUDIENCE: ezker Smaller direnak. 790 00:33:03,370 --> 00:33:03,690 >> DAVID MALAN: Bai. 791 00:33:03,690 --> 00:33:05,062 Txikietan ezkerraldean daude. 792 00:33:05,062 --> 00:33:06,270 Handiagoak dira eskuin aldean daude. 793 00:33:06,270 --> 00:33:12,940 Horrelako baieztapen egiazkoa dela haren ezkerreko seme baino handiagoa da guraso, 794 00:33:12,940 --> 00:33:14,850 baina bere eskubidea seme-alaba baino gutxiago. 795 00:33:14,850 --> 00:33:17,750 Eta hori bakarrik, are gehiago da errekurtsiboa hitzezko definizioa 796 00:33:17,750 --> 00:33:20,500 zuk aplikatu daitekeelako nodo bakoitza logika bera 797 00:33:20,500 --> 00:33:23,080 eta barrenak bakarra da out, oinarri kasu bat baduzu 798 00:33:23,080 --> 00:33:25,740 borondatea, denean bat hit duzu hostoak, nolabait esateko, 799 00:33:25,740 --> 00:33:28,580 non baja bat du haur gehiago ez. 800 00:33:28,580 --> 00:33:30,614 >> Orain nola liteke, 44 zenbakia aurkituko duzu? 801 00:33:30,614 --> 00:33:32,280 Erro hasi zara eta esango zion: hm. 802 00:33:32,280 --> 00:33:35,690 55 ez da 44 Beraz, joan nahi dut eskuinera edo ezkerrera joan egin nahi dut? 803 00:33:35,690 --> 00:33:37,190 Beno, jakina, ezker joan nahi duzun. 804 00:33:37,190 --> 00:33:40,060 Eta, beraz, besterik gabe, telefono bezala liburu bilaketa bitarra adibidez 805 00:33:40,060 --> 00:33:41,099 oro har. 806 00:33:41,099 --> 00:33:43,390 Baina ari, aurrera eramaten ditugu orain pixka bat gehiago dinamikoki 807 00:33:43,390 --> 00:33:45,339 array bat onartzea baino. 808 00:33:45,339 --> 00:33:48,130 Eta hain zuzen ere, begiratu nahi baduzu kodea at, hasiera batean, ziur. 809 00:33:48,130 --> 00:33:49,671 Itxura lerro sorta oso bat bezalakoa da. 810 00:33:49,671 --> 00:33:51,220 Baina ederki erraza da. 811 00:33:51,220 --> 00:33:54,490 Funtzio bat ezarri nahi baduzu bilaketa horren helburua bizitzan izeneko 812 00:33:54,490 --> 00:33:57,290 bilaketa da, balio bat atsegin n, zenbaki oso bat, 813 00:33:57,290 --> 00:34:01,756 eta bat erakuslea bat zu pasa sustraiak nodo erakuslea, 814 00:34:01,756 --> 00:34:04,380 hobeto esanda, zuhaitz horren bertatik guztia sartu ahal izango duzu, bestela, 815 00:34:04,380 --> 00:34:08,850 nabarituko nola straightforwardly logika ezartzeko dezakezu. 816 00:34:08,850 --> 00:34:10,880 Zuhaitz null bada, jakina, ez da han. 817 00:34:10,880 --> 00:34:11,880 Dezagun itzuli besterik ez faltsua. 818 00:34:11,880 --> 00:34:12,000 Eskuin? 819 00:34:12,000 --> 00:34:14,040 Eskuz duzu ezer bada, ez dago ezer han. 820 00:34:14,040 --> 00:34:17,900 >> Bestela, n baino txikiagoa bada Zuhaitz gezi n orain gezi n, 821 00:34:17,900 --> 00:34:20,670 Gogoratzen super sartu dugu beste egunean, labur-labur, 822 00:34:20,670 --> 00:34:25,100 eta hori de-erreferentzia esan nahi du erakuslea eta n izeneko eremuan begiratu. 823 00:34:25,100 --> 00:34:27,690 Beraz, joan eta esan nahi du n izeneko eremuan begiratu. 824 00:34:27,690 --> 00:34:33,810 Beraz, bada n, zu emandako balioa, ez da hain zuhaitzak osokoa balioa baino, 825 00:34:33,810 --> 00:34:35,449 Nora joan nahi duzu? 826 00:34:35,449 --> 00:34:36,389 Ezkerrera. 827 00:34:36,389 --> 00:34:37,780 >> Beraz, nabarituko errekurtsibitateko. 828 00:34:37,780 --> 00:34:39,860 Returning-- naiz, ez da egia. 829 00:34:39,860 --> 00:34:40,989 Ez da gezurra. 830 00:34:40,989 --> 00:34:45,670 Edozein dela ere erantzuna itzuli naiz neure buruari dei batetik da pasatzen 831 00:34:45,670 --> 00:34:50,100 n berriro, hau da, erredundantea, baina zer da apur bat ezberdina da orain? 832 00:34:50,100 --> 00:34:51,989 Nola naiz arazo txikiago eginez? 833 00:34:51,989 --> 00:34:54,920 I pasatzen naiz bigarrena gisa Argumentu, ez zuhaitzaren erroa 834 00:34:54,920 --> 00:34:59,616 baina kasu honetan ezker umea. 835 00:34:59,616 --> 00:35:00,990 Beraz, ezkerreko haur pasatzen ari naiz. 836 00:35:00,990 --> 00:35:04,720 >> Bien bitartean, N baino handiagoa baldin bada nodo gaur egun naiz begira, 837 00:35:04,720 --> 00:35:06,690 Eskuinaldean bilatu dut. 838 00:35:06,690 --> 00:35:10,880 Bestela, zuhaitza ez bada nulua, eta elementua ez bada ezkerrera 839 00:35:10,880 --> 00:35:13,240 eta ez da eskubidea, zer da wonderfully kasuan? 840 00:35:13,240 --> 00:35:14,630 841 00:35:14,630 --> 00:35:18,440 Nik benetan nodo aurkitu dugu in Galdera, eta, beraz, egia itzuliko gara. 842 00:35:18,440 --> 00:35:21,490 >> Beraz, besterik ez azalera urratzen dugu orain datuen egitura horietako batzuk. 843 00:35:21,490 --> 00:35:24,370 In arazo multzo bost dituzu horiek oraindik gehiago arakatzeko, 844 00:35:24,370 --> 00:35:27,250 eta eman egingo zure diseinua nola honi buruz joan aukera. 845 00:35:27,250 --> 00:35:30,250 Zer amaituko nahiko nuke 30 segundo teaser besterik ez da 846 00:35:30,250 --> 00:35:32,080 zer edukiko datorren astean eta haratago. 847 00:35:32,080 --> 00:35:35,390 >> Zorionez begin-- genuen bezala gerta astiro esatea gure trantsizio 848 00:35:35,390 --> 00:35:38,680 C eta beheko mundutik Maila ezartzeko xehetasunak, 849 00:35:38,680 --> 00:35:42,090 mundu bat bertan dugu hartu ahal emandako beste norbaitek duela azkenik 850 00:35:42,090 --> 00:35:44,010 Datu horiek inplementatu Gurekin egiturak, 851 00:35:44,010 --> 00:35:47,570 eta ulertzeko hasiko dugu Mundu errealeko ezartzearen esan nahi du 852 00:35:47,570 --> 00:35:50,560 Web-ean oinarritutako programak eta webgune orokorrago 853 00:35:50,560 --> 00:35:52,910 eta, gainera, oso segurtasuna hori bakarrik dugu inplikazio 854 00:35:52,910 --> 00:35:54,850 hasitako azalera urratu. 855 00:35:54,850 --> 00:35:57,320 Hona hemen zer edukiko gaitu egunetan etorri. 856 00:35:57,320 --> 00:36:00,480 >> [Bideo-erreprodukzioa] 857 00:36:00,480 --> 00:36:03,432 858 00:36:03,432 --> 00:36:12,780 >> Mezu bat zetorren amorratua, Protokolo bat bere guztiekin. 859 00:36:12,780 --> 00:36:26,110 860 00:36:26,110 --> 00:36:30,894 Dugunik cruel mundu bat zen suebakien, routers uncaring 861 00:36:30,894 --> 00:36:33,368 eta arriskuak urrun heriotza baino okerragoa. 862 00:36:33,368 --> 00:36:35,280 863 00:36:35,280 --> 00:36:36,236 Azkarra da. 864 00:36:36,236 --> 00:36:37,980 Indartsua da. 865 00:36:37,980 --> 00:36:42,830 TCP / IP zuen, eta berak zure helbidea lortu. 866 00:36:42,830 --> 00:36:45,290 867 00:36:45,290 --> 00:36:48,074 "Sare Warriors". 868 00:36:48,074 --> 00:36:49,660 [END bideo-erreprodukzioa] 869 00:36:49,660 --> 00:36:50,910 DAVID MALAN: datozenak datorren astean. 870 00:36:50,910 --> 00:36:51,880 Gero ikusiko dugu. 871 00:36:51,880 --> 00:36:54,615 872 00:36:54,615 --> 00:36:56,060 [Bideo-erreprodukzioa] 873 00:36:56,060 --> 00:36:59,240 -Eta Orain, "Deep Thoughts" Daven Farnham arabera. 874 00:36:59,240 --> 00:37:02,030 875 00:37:02,030 --> 00:37:05,820 -David Beti hasten , hitzaldietan "Ondo da." 876 00:37:05,820 --> 00:37:08,750 Zergatik ez, "Hemen irtenbidea da aste honetan arazo set " 877 00:37:08,750 --> 00:37:12,180 edo "A duzun guztia emanez ari gara?" 878 00:37:12,180 --> 00:37:13,380 [Barre] 879 00:37:13,380 --> 00:37:15,530 [END bideo-erreprodukzioa]