1 00:00:00,000 --> 00:00:10,982 2 00:00:10,982 --> 00:00:11,940 DAVID Malan: Molt bé. 3 00:00:11,940 --> 00:00:16,470 Així que aquest és CS50, i això és ara l'inici de la setmana tres. 4 00:00:16,470 --> 00:00:19,960 >> Així que, fins ara, no tenim estat escrivint programes en C 5 00:00:19,960 --> 00:00:23,210 aquesta mirada una mica alguna cosa com això aquí. 6 00:00:23,210 --> 00:00:25,470 Així que tenim un parell de agut inclou a la part superior. 7 00:00:25,470 --> 00:00:28,490 Tenim int, principal, nul, i llavors hi ha alguna cosa que fer en el centre, 8 00:00:28,490 --> 00:00:30,590 algun fragment de codi dins d'aquesta funció. 9 00:00:30,590 --> 00:00:34,170 Però clau ha estat el fet que que hem estat dient buit aquí. 10 00:00:34,170 --> 00:00:39,320 Així buit, tot aquest temps, especifica que aquest programa, quan s'executa, 11 00:00:39,320 --> 00:00:41,300 només es pot executar a través del seu nom. 12 00:00:41,300 --> 00:00:46,330 No es pot escriure qualsevol altra paraula o números després del nom del programa quan 13 00:00:46,330 --> 00:00:46,830 executar-lo. 14 00:00:46,830 --> 00:00:51,200 Així, per exemple, si el programa eren compilat en un arxiu anomenat hola, 15 00:00:51,200 --> 00:00:53,480 vostè podria fer ./hola, però això és tot. 16 00:00:53,480 --> 00:00:56,750 >> L'única manera que vostè podria aportacions a aquest programa 17 00:00:56,750 --> 00:00:57,960 és cridant a una funció. 18 00:00:57,960 --> 00:00:59,790 Per exemple, ¿quina funció hem estat utilitzant fins ara 19 00:00:59,790 --> 00:01:00,950 per obtenir la entrada de l'usuari? 20 00:01:00,950 --> 00:01:02,117 >> AUDIÈNCIA: Obtenir cadena. 21 00:01:02,117 --> 00:01:04,700 DAVID Malan: Per obtenir la seqüència, o aconseguir int, o has vist a altres, 22 00:01:04,700 --> 00:01:07,630 encara que no els ha utilitzat encara, com aconseguir molt, molt i similars. 23 00:01:07,630 --> 00:01:09,380 Però suposem que realment vulgui començar 24 00:01:09,380 --> 00:01:12,760 escriure programes que són poc més versàtil, i, francament, una mica més 25 00:01:12,760 --> 00:01:15,090 igual que els comandaments que vostè ha estat rebent, amb sort, 26 00:01:15,090 --> 00:01:16,550 una mica acostumat. 27 00:01:16,550 --> 00:01:18,560 Com cd espai Dropbox. 28 00:01:18,560 --> 00:01:20,800 Això, per descomptat, els canvis seu directori, assumint 29 00:01:20,800 --> 00:01:23,590 ets a la casa de John Harvard directori, a la seva carpeta de Dropbox. 30 00:01:23,590 --> 00:01:27,380 Mentrestant, una ordre com aquest crea un nou directori anomenat PSet2, 31 00:01:27,380 --> 00:01:30,290 ja que és possible que tingui o aviat per fixar un problema de dos. 32 00:01:30,290 --> 00:01:33,970 Fer Hola, per descomptat, és una ordre que construeix un programa que es diu hola 33 00:01:33,970 --> 00:01:35,770 des d'un fitxer anomenat hola punt c. 34 00:01:35,770 --> 00:01:39,140 I en cada un d'aquests casos, ara, hem tingut 35 00:01:39,140 --> 00:01:43,620 proporcionar un argument en l'anomenada línia d'ordres, el símbol parpelleja, 36 00:01:43,620 --> 00:01:48,540 perquè faci el que sap construir, i així que mkdir sap quina carpeta per crear, 37 00:01:48,540 --> 00:01:51,110 i pel que sap cd on vol anar. 38 00:01:51,110 --> 00:01:54,720 Però fins ara, seguim dient que la principal, la seva funció per defecte, 39 00:01:54,720 --> 00:01:58,500 té una expressió nul dins d'aquests parèntesis, 40 00:01:58,500 --> 00:02:01,250 el que significa que no pot tenir cap argument. 41 00:02:01,250 --> 00:02:03,240 >> Així que a partir d'avui, el que farem 42 00:02:03,240 --> 00:02:06,270 És a dir, anem a començar suport a aquest tipus de coses, fins i tot. 43 00:02:06,270 --> 00:02:08,990 De fet, en aquest cas, que es no solen escriure manualment, 44 00:02:08,990 --> 00:02:11,130 Fer que ha estat fent això per a nosaltres, no hi ha 45 00:02:11,130 --> 00:02:15,840 un, sinó un, dos, tres addicionals cordes després del programa de trucada 46 00:02:15,840 --> 00:02:16,850 so metàl · lic. 47 00:02:16,850 --> 00:02:18,240 Llavors, com ho aconseguim? 48 00:02:18,240 --> 00:02:20,260 >> Bé, a partir d'avui, en els casos en què volem 49 00:02:20,260 --> 00:02:22,855 per proporcionar entrada a través de la l'anomenada línia d'ordres, 50 00:02:22,855 --> 00:02:24,980 anem a començar a afegir aquí el que està en Yellow-- 51 00:02:24,980 --> 00:02:30,520 substitució de buit amb comes int argc cadena argv claudàtor obert claudàtor de tancament. 52 00:02:30,520 --> 00:02:32,520 Ara això és interessant per un parell de raons. 53 00:02:32,520 --> 00:02:35,690 Un, que deixarà que ens escrivim programes que són una mica més dinàmic. 54 00:02:35,690 --> 00:02:37,570 Però, més convincent, que va a obrir 55 00:02:37,570 --> 00:02:40,340 ara una conversa sobre què arranjaments pot realment 56 00:02:40,340 --> 00:02:43,300 ser utilitzat, de manera que una cadena realment està sota el capó, 57 00:02:43,300 --> 00:02:47,320 fins a la setmana que quan vam començar el busseig encara més profund que fa a com la màquina està 58 00:02:47,320 --> 00:02:48,590 fent tota aquesta feina coses. 59 00:02:48,590 --> 00:02:51,920 Però per ara, anem a dibuixar, potser, una imatge. 60 00:02:51,920 --> 00:02:54,950 >> Quan s'escriu un programa amb principal declarada 61 00:02:54,950 --> 00:02:58,810 d'aquesta manera, tal que la principal pren dos arguments, 1 int 62 00:02:58,810 --> 00:03:03,233 y-- quin tipus de dades és el segon argument? 63 00:03:03,233 --> 00:03:04,529 >> AUDIÈNCIA: Array. 64 00:03:04,529 --> 00:03:05,320 DAVID Malan: Array. 65 00:03:05,320 --> 00:03:09,170 Així que sembla a primera vista com si fos un cadena, però observi els claudàtors. 66 00:03:09,170 --> 00:03:12,760 Recordeu l'última vegada que vam introduir la noció d'una matriu. 67 00:03:12,760 --> 00:03:16,210 I matrius utilitzen claudàtors en un parell de contextos. 68 00:03:16,210 --> 00:03:19,160 És possible utilitzar la plaça suports per a anar en una matriu 69 00:03:19,160 --> 00:03:22,710 i obtenir un element en particular, com Suport de 0 o 1 o suport de muntatge 2. 70 00:03:22,710 --> 00:03:25,500 Però vam veure, encara que breument, la setmana passada que també 71 00:03:25,500 --> 00:03:28,790 utilitzar aquests claudàtors a declarar la mida d'una matriu, 72 00:03:28,790 --> 00:03:31,790 si vostè sap per endavant quants sencers o quantes cordes o el que vostè 73 00:03:31,790 --> 00:03:32,630 realment volen. 74 00:03:32,630 --> 00:03:34,790 Així que resulta que hi ha tercera context aquí 75 00:03:34,790 --> 00:03:37,890 que no té els números de l'interior dels claudàtors. 76 00:03:37,890 --> 00:03:41,920 Quan s'especifiqui, com ho he fet aquí, el nom d'una cosa així com argv, 77 00:03:41,920 --> 00:03:44,550 que és només una forma elegant de dient argument vector, que 78 00:03:44,550 --> 00:03:47,750 és una altra forma elegant de dient una sèrie d'arguments, 79 00:03:47,750 --> 00:03:50,870 claudàtor obert claudàtor de tancament només vol dir que no ho fa necessàriament 80 00:03:50,870 --> 00:03:52,960 saber per endavant el gran la matriu serà, 81 00:03:52,960 --> 00:03:55,070 però vostè sap que serà una matriu. 82 00:03:55,070 --> 00:03:57,320 Així que si vostè no sap la nombre no ho posis aquí, 83 00:03:57,320 --> 00:04:01,160 per obrir el parèntesi claudàtor de tancament vol dir que argv no és una cadena, 84 00:04:01,160 --> 00:04:03,124 però una matriu de cadenes. 85 00:04:03,124 --> 00:04:05,040 Així sintàcticament, si pensar de nou la setmana passada, 86 00:04:05,040 --> 00:04:09,460 és molt similar a dir una mena int edats suport obert, 87 00:04:09,460 --> 00:04:10,984 i després alguna cosa després. 88 00:04:10,984 --> 00:04:12,150 Llavors, què s'assembla això? 89 00:04:12,150 --> 00:04:13,399 Anem a realment fer un dibuix. 90 00:04:13,399 --> 00:04:18,756 Així que quan s'executa aquest programa amb Principal havent dos arguments definida a l'interior 91 00:04:18,756 --> 00:04:21,339 d'aquests parèntesi, es essencialment tenir almenys dos trossos 92 00:04:21,339 --> 00:04:23,560 de la memòria lliurada a vostè sota de la caputxa. 93 00:04:23,560 --> 00:04:26,550 Un, com vaig dibuixa com aquest rectangle, es va a cridar argc. 94 00:04:26,550 --> 00:04:30,645 I així com un resum ràpid, Quin és el tipus de dades de argc? 95 00:04:30,645 --> 00:04:31,270 Així que és un int. 96 00:04:31,270 --> 00:04:33,480 Així que un nombre es va anar per torns argc-- 97 00:04:33,480 --> 00:04:35,660 que representa el recompte argument. 98 00:04:35,660 --> 00:04:38,887 Mentrestant, he dibuixat argv com una matriu. 99 00:04:38,887 --> 00:04:40,970 I jo no ho sé quant de temps serà, 100 00:04:40,970 --> 00:04:42,470 així que per als propòsits d'avui dot dot dot. 101 00:04:42,470 --> 00:04:43,636 Pot ser que aconsegueixi d'una certa extensió. 102 00:04:43,636 --> 00:04:45,640 Però m'he imaginat aquí almenys quatre rectangles. 103 00:04:45,640 --> 00:04:50,970 Així argv un tros de memòria que emmagatzema cadena cadena cadena dot dot dot, 104 00:04:50,970 --> 00:04:53,950 i argc és només un tros de memòria per a un sencer. 105 00:04:53,950 --> 00:04:55,710 >> Així que ara, serem una mica més precisos. 106 00:04:55,710 --> 00:04:59,200 Si, quan tinc cordes en aquesta matriu, anomenat 107 00:04:59,200 --> 00:05:03,290 argv, vull arribar-hi de manera individual, igual que la setmana passada, 108 00:05:03,290 --> 00:05:05,670 utilitzarem la notació com argv suport 0 109 00:05:05,670 --> 00:05:07,650 per aconseguir el primer una matriu. 110 00:05:07,650 --> 00:05:10,440 Argv suport 1 per obtenir el El segon, i així successivament. 111 00:05:10,440 --> 00:05:14,597 La clau aquí és que estem encara 0 indexed-- encara estem explicant des de 0. 112 00:05:14,597 --> 00:05:16,430 Així que ara anem a realitat posar alguna cosa en això. 113 00:05:16,430 --> 00:05:21,670 Si hagués de compilar un programa anomenat hola des d'un fitxer anomenat hola punt c, 114 00:05:21,670 --> 00:05:24,340 i després executo aquest programa amb el punt slash hola, 115 00:05:24,340 --> 00:05:28,380 el que fa el meu equip, el meu portàtil, veure com sota de la caputxa 116 00:05:28,380 --> 00:05:31,300 el moment em trobo dot slash hola i prem intro? 117 00:05:31,300 --> 00:05:33,500 Bé, aquest és potser el que podríem descriure 118 00:05:33,500 --> 00:05:37,010 com el contingut de l'ordinador de memòria, o memòria d'accés aleatori RAM--. 119 00:05:37,010 --> 00:05:40,330 En altres paraules, l'ordinador, d'alguna manera perquè per art de màgia, 120 00:05:40,330 --> 00:05:45,360 posa el número 1 en argc, AKA argcount, i posa literalment la cadena 121 00:05:45,360 --> 00:05:48,200 ./hola en argv suport 0. 122 00:05:48,200 --> 00:05:51,750 No tinc ni idea, la veritat, el que és en el suport argv 1 o 2 o 3, 123 00:05:51,750 --> 00:05:55,550 ja que si l'usuari no té escrit res, a més ./hola, 124 00:05:55,550 --> 00:05:58,550 anem a suposar que aquests són valors més probables d'escombraries, 125 00:05:58,550 --> 00:05:59,700 per així dir-ho. 126 00:05:59,700 --> 00:06:02,650 Aquests fragments de memòria existeix, però no depèn de nosaltres 127 00:06:02,650 --> 00:06:05,710 mirar-los, perquè la argcount és únic. 128 00:06:05,710 --> 00:06:07,870 >> Ara, per la seva banda, si escriure executar un altre programa, 129 00:06:07,870 --> 00:06:12,250 cd, que és més adequadament una ordre, en el seu parpellejar espai cd prompt-- 130 00:06:12,250 --> 00:06:17,200 Dropbox-- quan corro que, efectivament, quan s'executa el programa de cd, argc, 131 00:06:17,200 --> 00:06:22,270 dins de la memòria del meu ordinador, és per el més breu segon el número 2. 132 00:06:22,270 --> 00:06:25,936 I després argv suport o té cd, suport argv 1 té Dropbox, 133 00:06:25,936 --> 00:06:28,560 i després, per descomptat, la comanda completa, de manera que tot això de memòria 134 00:06:28,560 --> 00:06:30,420 essencialment es va i s'utilitza per a una altra cosa. 135 00:06:30,420 --> 00:06:32,270 I és per això que dic només una fracció de segon. 136 00:06:32,270 --> 00:06:35,720 >> Mentrestant, si fem PSet2 mkdir, la imatge es veu gairebé el mateix, 137 00:06:35,720 --> 00:06:37,900 però amb diferents cordes dins argv. 138 00:06:37,900 --> 00:06:42,570 Si ho faig tauler Clang hola hola punt c, la mateixa idea. 139 00:06:42,570 --> 00:06:47,060 Més coses s'omple per argv i argc, per descomptat, és 4. 140 00:06:47,060 --> 00:06:49,150 Així, en altres paraules, tot i que aquesta matriu 141 00:06:49,150 --> 00:06:52,950 podria dot dot dot, d'alguna longitud variable, per així dir-ho, 142 00:06:52,950 --> 00:06:56,720 que sempre sap on és el final de la mateixa és, perquè argc dirà vostè 143 00:06:56,720 --> 00:07:00,120 en quin punt vostè ha de parar mirant als elements en argv. 144 00:07:00,120 --> 00:07:03,660 Vostè només pot mirar a les quatre En total en aquest cas. 145 00:07:03,660 --> 00:07:06,600 >> Així que ara anem a fer una ullada a, potser, un programa simple. 146 00:07:06,600 --> 00:07:09,070 Un que només diu hola per a algú com Zamyla. 147 00:07:09,070 --> 00:07:12,620 Així que jo reclam que vaig a escriure un programa en un moment a través de la qual jo podia fer 148 00:07:12,620 --> 00:07:16,670 ./hola espai Zamyla, i després vull el meu programa per imprimir alguna cosa 149 00:07:16,670 --> 00:07:18,520 super-simple com "hola, Zamyla." 150 00:07:18,520 --> 00:07:20,100 Ara bé, en el passat hem fet servir getString. 151 00:07:20,100 --> 00:07:22,850 Així que en el passat, fins i tot si vostè és nou en la programació, 152 00:07:22,850 --> 00:07:27,180 les probabilitats són que vostè podria preparar una programa que utilitza getString 153 00:07:27,180 --> 00:07:29,390 i després utilitza printf saludar Zamyla. 154 00:07:29,390 --> 00:07:31,290 Però no usem GetString aquest moment. 155 00:07:31,290 --> 00:07:37,510 Déjame en lloc d'entrar a la Appliant i no incloure estàndard I O dot h. 156 00:07:37,510 --> 00:07:41,160 Permetin-me també incloc CS50 punt h. 157 00:07:41,160 --> 00:07:44,730 Ara int main, i ara estic no farà buit en l'actualitat. 158 00:07:44,730 --> 00:07:51,200 En el seu lloc, faré int argc argv cadena claudàtor obert claudàtor de tancament, 159 00:07:51,200 --> 00:07:52,640 sense especificar un nombre. 160 00:07:52,640 --> 00:07:54,644 I ara aquí està la meva cridat a fer. 161 00:07:54,644 --> 00:07:57,560 Què faré ara és que estic farem una mica d'un salt de la fe, 162 00:07:57,560 --> 00:08:00,560 Vaig a assumir que l'usuari d' va a utilitzar aquest programa correctament, 163 00:08:00,560 --> 00:08:04,980 i simplement vaig a fer printf hola,% sn. 164 00:08:04,980 --> 00:08:06,630 Així que res de nou allà. 165 00:08:06,630 --> 00:08:11,470 Però vull ara posar qualsevol paraula del usuari escriu després del nom del programa. 166 00:08:11,470 --> 00:08:16,970 Així que si ho faig ./hola espai Zamyla, I vulgui alguna manera l'accés mitjançant programació 167 00:08:16,970 --> 00:08:20,870 cometes "Zamyla." així que pot entrar en el meu argument vector, 168 00:08:20,870 --> 00:08:25,980 la meva matriu de cadenes, i si la comanda, de nou, era ./hola espai Zamyla, 169 00:08:25,980 --> 00:08:29,340 quin nombre és el que vull per posar en argv aquí? 170 00:08:29,340 --> 00:08:29,840 AUDIÈNCIA: 1. 171 00:08:29,840 --> 00:08:32,355 DAVID Malan: 1, perquè Suport de 0 resulta 172 00:08:32,355 --> 00:08:34,230 serà la El nom del programa, com vam veure. 173 00:08:34,230 --> 00:08:37,789 Així suport 1 és la primera paraula que jo, l'usuari, ha escrit. 174 00:08:37,789 --> 00:08:39,559 Vaig a seguir endavant i salvar aquest. 175 00:08:39,559 --> 00:08:42,830 Vaig a anar a la carpeta on he posat aquest fitxer. 176 00:08:42,830 --> 00:08:44,920 Jo faré que hola març. 177 00:08:44,920 --> 00:08:46,230 OK Comp IO. 178 00:08:46,230 --> 00:08:51,380 ./hola Zamyla Intro. 179 00:08:51,380 --> 00:08:54,480 Què vaig fer malament? 180 00:08:54,480 --> 00:08:57,270 Estava atrapat per sorpresa a mi mateix per un moment allà. 181 00:08:57,270 --> 00:08:58,230 Què vaig fer malament? 182 00:08:58,230 --> 00:08:59,220 >> AUDIÈNCIA: Nom. 183 00:08:59,220 --> 00:09:01,767 >> DAVID Malan: L'arxiu de en realitat es diu hello3.c. 184 00:09:01,767 --> 00:09:03,850 I ho vaig fer només per consistència, perquè hem 185 00:09:03,850 --> 00:09:06,550 tingut de hola.c al passat en el codi en línia. 186 00:09:06,550 --> 00:09:11,550 Així que anem a resoldre aquest ./hola suport de tauler 3 Zamyla. 187 00:09:11,550 --> 00:09:12,370 Intro. 188 00:09:12,370 --> 00:09:14,030 I ara tenim hola, Zamyla. 189 00:09:14,030 --> 00:09:17,650 Mentrestant, puc canviar això a ser Rob, o en realitat qualsevol altra paraula. 190 00:09:17,650 --> 00:09:19,230 >> Però considerarem un cas cantonada. 191 00:09:19,230 --> 00:09:24,360 Què podria esperar que succeirà si Jo no escric el nom de ningú en absolut? 192 00:09:24,360 --> 00:09:25,270 >> AUDIÈNCIA: Error. 193 00:09:25,270 --> 00:09:27,300 >> DAVID Malan: un error d'algun tipus, potser. 194 00:09:27,300 --> 00:09:28,200 Anem a veure. 195 00:09:28,200 --> 00:09:29,440 Intro. 196 00:09:29,440 --> 00:09:30,210 Null. 197 00:09:30,210 --> 00:09:33,870 Així printf és ser realment una mica de protecció de nosaltres 198 00:09:33,870 --> 00:09:38,131 aquí, i literalment la impressió parin obertes null, però les coses encara pitjors poden succeir. 199 00:09:38,131 --> 00:09:40,130 I només per demostrar cosa que absolutament 200 00:09:40,130 --> 00:09:42,800 no ha de fer, anirem a aquí i començar a jugar. 201 00:09:42,800 --> 00:09:43,300 ¿Cert? 202 00:09:43,300 --> 00:09:46,410 Si jo sé que la imatge de memòria és essencialment això, 203 00:09:46,410 --> 00:09:52,660 argv suport 1 té Zamyla, argv suport té 0 ./hola, o ./hola-3. 204 00:09:52,660 --> 00:09:55,400 El que està en el suport 2? 205 00:09:55,400 --> 00:09:58,210 Així que puc respondre a aquesta qüestionar, oi? 206 00:09:58,210 --> 00:10:00,460 Jo només puc canviar l'1 a un 2. 207 00:10:00,460 --> 00:10:07,270 Ara puc tornar a compilar hola 3, ./hello3 Anem a apropar i prem enter. 208 00:10:07,270 --> 00:10:08,270 Vaja. 209 00:10:08,270 --> 00:10:10,660 Sense cometes. 210 00:10:10,660 --> 00:10:12,540 Interessant. 211 00:10:12,540 --> 00:10:15,530 Així que és una mena de fresc a veure què més hi ha per aquí. 212 00:10:15,530 --> 00:10:17,130 >> Llavors, què més hi ha a l'interior del meu portàtil? 213 00:10:17,130 --> 00:10:20,390 Salvem amb suport 3. 214 00:10:20,390 --> 00:10:25,190 Fer hello3, ./hola-3. 215 00:10:25,190 --> 00:10:26,500 Curiós. 216 00:10:26,500 --> 00:10:30,560 I ara anem a arribar realment bold-- 50. 217 00:10:30,560 --> 00:10:34,340 Així que això és realment busseig profund a la memòria del meu ordinador. 218 00:10:34,340 --> 00:10:35,930 50 índexs en. 219 00:10:35,930 --> 00:10:41,950 Així que hola març ./hola-3. 220 00:10:41,950 --> 00:10:42,680 Curiós. 221 00:10:42,680 --> 00:10:44,660 Molt bé, ara estic sol aconseguirà imprudent. 222 00:10:44,660 --> 00:10:47,331 Anem a 5000. 223 00:10:47,331 --> 00:10:47,830 Bé. 224 00:10:47,830 --> 00:10:49,520 Així que permetin-me recompilar. 225 00:10:49,520 --> 00:10:51,460 Fer hello3, ./hola-3. 226 00:10:51,460 --> 00:10:55,780 227 00:10:55,780 --> 00:10:56,460 Okay. 228 00:10:56,460 --> 00:10:59,250 Ara alguns de vostès, no podria ser una bombeta d'apagar. 229 00:10:59,250 --> 00:11:01,900 Quants de vostès tenen vist aquest missatge abans? 230 00:11:01,900 --> 00:11:03,440 Okay. 231 00:11:03,440 --> 00:11:04,420 Així que, per què? 232 00:11:04,420 --> 00:11:07,250 >> Probabilitats són-- i hi ha diferents coses que poden causar aquest, 233 00:11:07,250 --> 00:11:09,730 i és evident que està en bona company-- tenim clarament 234 00:11:09,730 --> 00:11:11,900 causat el que s'anomena un error de segmentació. 235 00:11:11,900 --> 00:11:15,890 I conte llarg per avui, han tocat un segment de memòria 236 00:11:15,890 --> 00:11:17,060 que no hauria de tenir. 237 00:11:17,060 --> 00:11:19,970 Quan un segment que només significa un tros de la memòria que no hauria de tenir. 238 00:11:19,970 --> 00:11:25,530 Ara, l'equip garanteix que si jo executar ./helloZamyla que puc tocar argv 239 00:11:25,530 --> 00:11:27,760 ser suport 0 i argv suport 1. 240 00:11:27,760 --> 00:11:32,730 Però argc és el valor 2, que vol dir que sóc només allowed-- és una espècie d'honor 241 00:11:32,730 --> 00:11:35,180 system-- a tocar suport 0 i el suport 1. 242 00:11:35,180 --> 00:11:37,990 Si vaig més lluny, hi ha absolutament serà la memòria allà. 243 00:11:37,990 --> 00:11:40,660 El meu RAM existeix físicament a l'ordinador. 244 00:11:40,660 --> 00:11:42,080 Però, ¿qui sap el que hi ha allà? 245 00:11:42,080 --> 00:11:44,450 De fet, m'estic quedant múltiple programes al mateix temps. 246 00:11:44,450 --> 00:11:46,910 Jo podria haver seen-- si jo no estigués fent això al Appliant 247 00:11:46,910 --> 00:11:49,937 però en el meu Mac o PC-- que podria tenir vist el contingut d'un correu electrònic. 248 00:11:49,937 --> 00:11:52,270 Jo podria haver vist un instant missatge que he enviat recentment. 249 00:11:52,270 --> 00:11:55,390 Qualsevol cosa que pugui ser persistent al voltant en la memòria 250 00:11:55,390 --> 00:11:59,180 podria haver estat visitada per mitjà de aquesta arbitrària notació de claudàtors. 251 00:11:59,180 --> 00:12:02,850 O, pitjor encara, és possible que tingui trobat un dels meus contrasenyes 252 00:12:02,850 --> 00:12:05,859 que jo vaig escriure fa poc en què un programa havia emmagatzemat en la memòria per tal de 253 00:12:05,859 --> 00:12:07,900 em autenticar i llavors només una mica deixat 254 00:12:07,900 --> 00:12:09,910 en la memòria RAM fins que vaig deixar d'aquest programa. 255 00:12:09,910 --> 00:12:12,860 >> I de fet, aquesta és una de el perill i un dels poders 256 00:12:12,860 --> 00:12:15,980 de la utilització d'un llenguatge com C. Vostè té accés sense restriccions 257 00:12:15,980 --> 00:12:18,860 a la totalitat dels continguts de la memòria d'un programa, 258 00:12:18,860 --> 00:12:21,340 i el que els nois dolents poden fins i tot fer en aquests casos-- 259 00:12:21,340 --> 00:12:23,807 sobretot quan ens arribar a la programació web 260 00:12:23,807 --> 00:12:26,890 cap al final del semestre, anem a revisar aquest topic-- es treu voltant, 261 00:12:26,890 --> 00:12:31,660 potencialment, a algú és l'ordinador de memòria i trobar coses tan curioses 262 00:12:31,660 --> 00:12:32,570 com vam veure allà. 263 00:12:32,570 --> 00:12:36,900 O el que és pitjor encara, les contrasenyes que es o ella pot llavors utilitzar per fer coses dolentes. 264 00:12:36,900 --> 00:12:40,240 >> Així que està clar que no hauria d'haver fet això, perquè les coses estranyes comencen a succeir. 265 00:12:40,240 --> 00:12:42,310 De fet, aquest és un programa d'estavellar. 266 00:12:42,310 --> 00:12:44,580 Això seria l'equivalent de Mac OS o Windows 267 00:12:44,580 --> 00:12:46,770 una finestra de programa simplement desaparèixer. 268 00:12:46,770 --> 00:12:48,300 S'ha produït un error inesperat. 269 00:12:48,300 --> 00:12:50,840 A l'entorn de línia d'ordres veiem alguna cosa com això. 270 00:12:50,840 --> 00:12:54,480 Però és per això, és que estic simplement tocant memòria que no em pertany. 271 00:12:54,480 --> 00:12:57,090 >> Així que anem a defensar en contra d'aquest 1 mica d'una manera diferent 272 00:12:57,090 --> 00:12:59,010 examinat aquest programa aquí. 273 00:12:59,010 --> 00:13:01,000 Així, de nou, l'esquelet que vam veure abans els vaig parlar 274 00:13:01,000 --> 00:13:02,480 i jo he destacat aquest cop int. 275 00:13:02,480 --> 00:13:05,900 I tot aquest temps principal té efectivament retornat un conjunt. 276 00:13:05,900 --> 00:13:09,120 Tot i que en la major part de la nostra conferència exemples que hem ni una sola vegada utilitzem 277 00:13:09,120 --> 00:13:10,990 tornar res en main. 278 00:13:10,990 --> 00:13:13,710 Només escrivim printf prop claudàtor i això és tot. 279 00:13:13,710 --> 00:13:16,500 Però de forma gratuïta, el que la compilador estat fent per tu, 280 00:13:16,500 --> 00:13:19,510 efectivament, torna 0 per a vostè. 281 00:13:19,510 --> 00:13:22,950 Activa sortir-- i que és una mica counterintuitive-- que 0 és bona. 282 00:13:22,950 --> 00:13:24,690 Això no vol dir falsa per se. 283 00:13:24,690 --> 00:13:29,080 0 és bo, i qualsevol que no sigui 0 valor, el món ha decidit, 284 00:13:29,080 --> 00:13:30,619 pot significar un error. 285 00:13:30,619 --> 00:13:32,910 Així que si alguna vegada ha embrutat alguna cosa en el seu equip, 286 00:13:32,910 --> 00:13:36,600 o un programa acaba de morir en vostè i vostè ha aconseguit alguna finestra errònia 287 00:13:36,600 --> 00:13:40,360 a la pantalla, error que diu negatiu 49 o error 23-- 288 00:13:40,360 --> 00:13:44,170 alguns value-- aparentment arbitrari que és pel fet que un programador ha modificable 289 00:13:44,170 --> 00:13:49,370 un valor negatiu com 49 o positiu 23 per representar qualsevol nombre, m'atreveixo a dir, 290 00:13:49,370 --> 00:13:53,340 de 4 mil milions d'coses possibles que podria anar malament en un programa. 291 00:13:53,340 --> 00:13:55,700 >> Llavors, ¿com podria jo prendre avantatge d'això jo mateix? 292 00:13:55,700 --> 00:13:58,970 Bé, deixa obro un programa que vaig escriure amb antelació, 293 00:13:58,970 --> 00:14:01,450 i furgar en línia anomenat hola 4. 294 00:14:01,450 --> 00:14:05,650 I és gairebé idèntic, llevat que La seva aconseguit una mica de comprovació d'errors. 295 00:14:05,650 --> 00:14:09,660 En aquest cas, he declarat de nou principal com prendre dos arguments, 296 00:14:09,660 --> 00:14:13,180 però aquesta vegada, en la línia 17, la notificació Estic fent una mica d'una comprovació de validesa. 297 00:14:13,180 --> 00:14:17,100 M'estic assegurant que argc és igual és igual a 2. 298 00:14:17,100 --> 00:14:18,960 Perquè si ho és, que significa que pot de manera segura 299 00:14:18,960 --> 00:14:21,420 tocar no només el suport 0, però el suport 1. 300 00:14:21,420 --> 00:14:24,330 I segueixo endavant i imprimir, en aquest cas, Zamyla o Rob 301 00:14:24,330 --> 00:14:26,020 o qualsevol paraula que he escrit fora. 302 00:14:26,020 --> 00:14:28,020 I ara acaba d'arribar una mica més adequada, 303 00:14:28,020 --> 00:14:31,910 Em vaig a tornar de forma explícita 0 per significar que tot està bé. 304 00:14:31,910 --> 00:14:33,300 Res dolent va succeir. 305 00:14:33,300 --> 00:14:38,590 >> Però per convenció, que vaig a retorna 1, o francament qualsevol valor que no sigui 0, 306 00:14:38,590 --> 00:14:40,160 si alguna cosa va sortir malament. 307 00:14:40,160 --> 00:14:43,270 Ara l'usuari no va a realment adonar del que està passant. 308 00:14:43,270 --> 00:14:50,410 De fet si entro en aquest directori, ens acostem i què fem hola 4, 309 00:14:50,410 --> 00:14:54,210 ./hola-4 Zamyla comporta com espero. 310 00:14:54,210 --> 00:14:58,570 Però si en canvi no ho escric res, res sembla succeir, 311 00:14:58,570 --> 00:14:59,680 però que no es desplomi. 312 00:14:59,680 --> 00:15:04,660 I si en lloc de fer alguna cosa com Rob és un supervisor 313 00:15:04,660 --> 00:15:07,550 en l'intercanvi d'Thayer-- informació arbitrària. 314 00:15:07,550 --> 00:15:13,680 Però avís, argv 1, 2, 3, 4, i 5 Ara ha d'existir en la memòria. 315 00:15:13,680 --> 00:15:16,540 Això, també, no ho és el meu programa d'espera, 316 00:15:16,540 --> 00:15:20,300 perquè jo he comprovat si argc és igual als iguals 2 o no. 317 00:15:20,300 --> 00:15:22,140 Així que ara estic defensant en contra d'aquest. 318 00:15:22,140 --> 00:15:25,290 >> Ara, en un apart, que la programmer-- o més aviat que la users-- 319 00:15:25,290 --> 00:15:29,670 Mai veiem que 0 o 1, però utilitzant un eina anomenada depurador, o altres eines, 320 00:15:29,670 --> 00:15:32,250 com veurem abans de llarg, que el programador 321 00:15:32,250 --> 00:15:36,590 en realitat pot veure el que podria ser va malament dins del seu programa. 322 00:15:36,590 --> 00:15:39,170 >> Així, qualsevol pregunta sobre argc? 323 00:15:39,170 --> 00:15:40,873 Sí. 324 00:15:40,873 --> 00:15:45,292 >> AUDIÈNCIA: He vist on no han tingut el caràcter, [inaudible] 325 00:15:45,292 --> 00:15:49,669 acaba de dir estrella cadena d, com caràcter coma asterisc. 326 00:15:49,669 --> 00:15:50,710 Són equivalents aquí? 327 00:15:50,710 --> 00:15:51,626 >> DAVID Malan: Són. 328 00:15:51,626 --> 00:15:55,080 Així que la pregunta és, vostè té programes de tant en tant es veuen 329 00:15:55,080 --> 00:15:57,270 com aquest que no ho fan dir suport argv cadena 330 00:15:57,270 --> 00:16:01,015 però en lloc de dir alguna cosa com a suport de carbó argv estrelles. 331 00:16:01,015 --> 00:16:03,140 I hi ha fins i tot una altra variants que es poden veure. 332 00:16:03,140 --> 00:16:04,264 De fet, són equivalents. 333 00:16:04,264 --> 00:16:06,240 Per ara, tenim aquests tipus de rodes d'entrenament 334 00:16:06,240 --> 00:16:09,737 en la forma de cadena al CS50 biblioteca, però en poc més d'una setmana 335 00:16:09,737 --> 00:16:12,570 o pel que anem a eliminar aquesta obstrucció per complet i, de fet 336 00:16:12,570 --> 00:16:16,820 mirar el que el carbó i l'estrella són, i com aquells es refereixen a la memòria 337 00:16:16,820 --> 00:16:18,140 representació més general. 338 00:16:18,140 --> 00:16:19,540 Així que anem a tornar a això. 339 00:16:19,540 --> 00:16:21,540 >> Altres preguntes sobre la nostra argv o argc? 340 00:16:21,540 --> 00:16:22,397 Sí. 341 00:16:22,397 --> 00:16:24,438 AUDIÈNCIA: Per què tornar un error [inaudible]? 342 00:16:24,438 --> 00:16:27,147 343 00:16:27,147 --> 00:16:29,230 DAVID Malan: Per què ho va fer retornarà un error only-- oh! 344 00:16:29,230 --> 00:16:31,813 En el cas anterior, quan van ser barallar una mica amb la memòria, 345 00:16:31,813 --> 00:16:35,110 ¿Per què només es retorna un error quan realment vaig escriure un gran nombre? 346 00:16:35,110 --> 00:16:36,620 Resposta curta és, vam tenir sort. 347 00:16:36,620 --> 00:16:39,240 En termes generals, un ordinador assigna memòria en trossos, 348 00:16:39,240 --> 00:16:42,900 i em va donar un tros bastant gran que Em vaig allunyar, sense ser notat, 349 00:16:42,900 --> 00:16:46,280 de tocar el suport 2, suport 3, suport de 50, però quan em vaig empènyer 350 00:16:46,280 --> 00:16:49,080 la meva sort, em va anar més enllà de la límits de la quantitat de memòria 351 00:16:49,080 --> 00:16:50,520 el sistema operatiu m'havia donat. 352 00:16:50,520 --> 00:16:52,720 I va ser llavors quan es pres mesures dràstiques i va dir no. 353 00:16:52,720 --> 00:16:54,580 Segmentació d'error. 354 00:16:54,580 --> 00:16:55,692 Sí. 355 00:16:55,692 --> 00:16:58,890 >> AUDIÈNCIA: Com funciona l'ordinador conèixer el valor de argc? 356 00:16:58,890 --> 00:17:02,390 >> DAVID Malan: Com funciona el equip sap el valor de argc? 357 00:17:02,390 --> 00:17:07,920 Quan s'executa un programa, aquest programa, per la naturalesa de la petició de parpellejar, 358 00:17:07,920 --> 00:17:11,359 se li passa el conjunt de paraules que van ser teclejades 359 00:17:11,359 --> 00:17:13,300 en l'indicador, que va ser teclejat a l'indicador. 360 00:17:13,300 --> 00:17:16,569 I el que és el seu funcionament sistema que essencialment 361 00:17:16,569 --> 00:17:20,329 omple els arguments dels principals per a vostè. 362 00:17:20,329 --> 00:17:22,829 Així que aquest és un dels serveis que vostè aconsegueix, més o menys en secret 363 00:17:22,829 --> 00:17:24,869 sota de la caputxa de un sistema operatiu. 364 00:17:24,869 --> 00:17:27,118 Altres preguntes? 365 00:17:27,118 --> 00:17:27,618 Sí. 366 00:17:27,618 --> 00:17:29,787 >> AUDIÈNCIA: Què significa bolcat de memòria? 367 00:17:29,787 --> 00:17:31,370 DAVID Malan: Què significa bolcat de memòria? 368 00:17:31,370 --> 00:17:32,950 Així que aquesta és una bona pregunta. 369 00:17:32,950 --> 00:17:35,312 I m'ho dius a mi tornar a aquest directori aquí. 370 00:17:35,312 --> 00:17:37,270 I t'adonaràs que Tinc un arxiu nou allà. 371 00:17:37,270 --> 00:17:41,670 Ha fet crida nucli, i és en realitat sol ser un arxiu de mida decent. 372 00:17:41,670 --> 00:17:45,300 Això és essencialment una instantània de el contingut de la memòria del meu programa 373 00:17:45,300 --> 00:17:46,902 o RAM quan es va estavellar. 374 00:17:46,902 --> 00:17:49,110 I això serà útil, potencialment, diagnòstica, 375 00:17:49,110 --> 00:17:52,850 una vegada que es parla en una conferència futura i la secció sobre la depuració, 376 00:17:52,850 --> 00:17:55,730 perquè en realitat es pot fer el equivalent a una autòpsia digitals 377 00:17:55,730 --> 00:18:00,300 en aquest arxiu per ajudar a determinar el que va fer malament en el seu programa. 378 00:18:00,300 --> 00:18:01,220 Sí. 379 00:18:01,220 --> 00:18:04,450 >> AUDIÈNCIA: És argc una ordre a en si, o podeu nomenar que res? 380 00:18:04,450 --> 00:18:05,575 >> DAVID Malan: Bona pregunta. 381 00:18:05,575 --> 00:18:08,040 És argc una ordre en si mateix, o pots cridar alguna cosa? 382 00:18:08,040 --> 00:18:09,290 Definitivament no és una ordre. 383 00:18:09,290 --> 00:18:13,500 Es tracta simplement d'una variable d' nom o el nom d'un argument, 384 00:18:13,500 --> 00:18:15,481 i tan absolutament que podria anomenar aquest foo, 385 00:18:15,481 --> 00:18:18,480 podríem anomenar a aquest bar, que tendeixen ser el go-a les paraules que un ordinador 386 00:18:18,480 --> 00:18:19,860 científic va. 387 00:18:19,860 --> 00:18:22,820 Però per convenció, utilitzem argc i argv. 388 00:18:22,820 --> 00:18:25,360 Però això és només un ésser humà convenció, res més. 389 00:18:25,360 --> 00:18:25,860 Bé. 390 00:18:25,860 --> 00:18:28,140 Així resulta, he estat comptant una mica d'un lie-- blanc 391 00:18:28,140 --> 00:18:31,264 i francament, en el futur, vostè veurà hem estat dient a altres mentides piadoses. 392 00:18:31,264 --> 00:18:33,510 Però per ara, anem per pelar un d'aquests. 393 00:18:33,510 --> 00:18:37,310 En aquest cas aquí quan prèviament córrer un programa com ./hola o ./hola-3 394 00:18:37,310 --> 00:18:42,780 Zamyla, vam tenir el contingut del meu la memòria de l'ordinador buscant més o menys igual 395 00:18:42,780 --> 00:18:43,280 això. 396 00:18:43,280 --> 00:18:45,070 Però recordem el que una cadena és. 397 00:18:45,070 --> 00:18:49,279 Què vam dir fa una setmana el que un cadena en realitat està sota el capó? 398 00:18:49,279 --> 00:18:50,320 AUDIÈNCIA: Arsenal de caràcters. 399 00:18:50,320 --> 00:18:52,111 DAVID Malan: És una matriu de caràcters, no? 400 00:18:52,111 --> 00:18:55,760 Així que pot ser que tinguem una sèrie de cadenes, però, al seu torn, una cadena 401 00:18:55,760 --> 00:18:57,150 és una sèrie de caràcters. 402 00:18:57,150 --> 00:19:00,010 Així que si jo realment vull ser anal quan dibuix aquesta imatge, 403 00:19:00,010 --> 00:19:03,290 Realment hauria d'estar dibuixant una mica de la mateixa família, 404 00:19:03,290 --> 00:19:08,000 pel que en cada un d'aquests índexs de la meva matriu argv, 405 00:19:08,000 --> 00:19:11,432 no és en si mateix una cadena completa que sí que està en una matriu. 406 00:19:11,432 --> 00:19:13,140 I ara la mentida blanca li estem dient avui 407 00:19:13,140 --> 00:19:15,181 és que la imatge no mirar com aquest. 408 00:19:15,181 --> 00:19:19,110 De fet, les petites places són normalment fora dels grans rectangles 409 00:19:19,110 --> 00:19:19,610 Ja està. 410 00:19:19,610 --> 00:19:21,280 Però anem a tornar a que en poc temps. 411 00:19:21,280 --> 00:19:25,440 Però això és ./hola barra invertida 0, que sent el caràcter especial que 412 00:19:25,440 --> 00:19:28,310 demarca el final d'una cadena, i tenim un altre després 413 00:19:28,310 --> 00:19:29,360 El nom de Zamyla. 414 00:19:29,360 --> 00:19:30,900 Així que què vol dir això? 415 00:19:30,900 --> 00:19:33,410 >> Bé, deixa anar endavant i obrir altres dos exemples 416 00:19:33,410 --> 00:19:35,220 que estan disponibles en línia. 417 00:19:35,220 --> 00:19:40,590 Un es diu argv1.c i l'altre és argv2. 418 00:19:40,590 --> 00:19:44,260 És un programa súper simple que és diferent dels programes anteriors 419 00:19:44,260 --> 00:19:47,260 que ara estic fent servir argc i argv aquí. 420 00:19:47,260 --> 00:19:54,300 I ara m'estic integrant amb un bucle for en la línia 18, des de i = 0 en un màxim de argc. 421 00:19:54,300 --> 00:19:56,850 I què faré amb aquesta línia de codi en aquesta llista? 422 00:19:56,850 --> 00:19:58,270 En Anglès. 423 00:19:58,270 --> 00:20:00,510 Això demostra òbviament ús de argc. 424 00:20:00,510 --> 00:20:03,670 Però en anglès, el que fa de fer si em quedo aquest programa? 425 00:20:03,670 --> 00:20:04,366 Sí? 426 00:20:04,366 --> 00:20:07,386 >> AUDIÈNCIA: Es va a imprimir el seu pantalla tantes vegades com vulguis. 427 00:20:07,386 --> 00:20:08,260 DAVID Malan: Exactament. 428 00:20:08,260 --> 00:20:10,480 Així que el que sigui que paraules escrigui en l'indicador, és 429 00:20:10,480 --> 00:20:13,120 anar a regurgitar ells em un per línia. 430 00:20:13,120 --> 00:20:14,370 Així que seguirem endavant i fer això. 431 00:20:14,370 --> 00:20:17,862 Deixa anar al meu directori fer i fan ./argv1 argv1. 432 00:20:17,862 --> 00:20:20,521 433 00:20:20,521 --> 00:20:21,770 I ara, anem a mantenir simple. 434 00:20:21,770 --> 00:20:23,834 Anem a fer res al principi. 435 00:20:23,834 --> 00:20:26,750 Ho va fer imprimir una cosa, i això és de fet el nom del programa, 436 00:20:26,750 --> 00:20:28,240 perquè això és en suport 0. 437 00:20:28,240 --> 00:20:33,290 Si ara dic foo, que farà els dos, i si dic foo bar, 438 00:20:33,290 --> 00:20:35,580 que dirà aquestes tres coses. 439 00:20:35,580 --> 00:20:37,740 Això sí que és una cosa interessant, potser. 440 00:20:37,740 --> 00:20:41,450 Però recordar que argv és una matriu de cadenes, 441 00:20:41,450 --> 00:20:45,960 però una cadena és una sèrie de caràcters, perquè puguem prendre les coses a un nivell superior 442 00:20:45,960 --> 00:20:48,560 i aplicar aquest bàsica lògica i fer que el codi que 443 00:20:48,560 --> 00:20:51,160 es veu una mica més críptic, cal reconèixer-ho. 444 00:20:51,160 --> 00:20:53,540 Però al tenir un imbricada bucle, una cosa semblant 445 00:20:53,540 --> 00:20:57,030 al que es pot recordar de Mario, per exemple, si ho va fer d'aquesta manera. 446 00:20:57,030 --> 00:21:00,380 >> Així que ara noto a la línia 19, que sóc de nou la iteració en els meus arguments, 447 00:21:00,380 --> 00:21:02,410 des de 0 fins a argc. 448 00:21:02,410 --> 00:21:05,510 I ara en línia 21-- estic demanar prestat un truc d'última setmana-- 449 00:21:05,510 --> 00:21:11,090 Estic comprovant el que és la longitud del suport argv i. 450 00:21:11,090 --> 00:21:12,920 Estic emmagatzemant la resposta en el núm. 451 00:21:12,920 --> 00:21:18,230 I llavors estic integrant des j en fins n, on j s'inicialitza a 0. 452 00:21:18,230 --> 00:21:19,460 Així, la convenció per al recompte. 453 00:21:19,460 --> 00:21:22,335 Una vegada que hagis utilitzat i, si vostè té un bucle niat, no es pot usar i de nou, 454 00:21:22,335 --> 00:21:25,770 en cas contrari et Clobber, potencialment, el valor fora del bucle intern. 455 00:21:25,770 --> 00:21:27,200 Així que estic fent servir j per convenció. 456 00:21:27,200 --> 00:21:28,020 Podríem utilitzar k. 457 00:21:28,020 --> 00:21:31,080 Si vostè té més de k, és probable que tenir massa d'implantació, en general. 458 00:21:31,080 --> 00:21:33,800 Però ara, notar la meva printf línia és lleugerament diferent. 459 00:21:33,800 --> 00:21:37,520 No estic imprimint% s, estic impressió% c, que, per descomptat, 460 00:21:37,520 --> 00:21:39,460 és un marcador de posició per a un char. 461 00:21:39,460 --> 00:21:40,770 >> I ara noti aquesta sintaxi. 462 00:21:40,770 --> 00:21:41,270 Nou. 463 00:21:41,270 --> 00:21:42,630 Nosaltres no hem vist abans. 464 00:21:42,630 --> 00:21:47,290 Però lògicament, això només significa obtenir la cadena i-èsim en argv 465 00:21:47,290 --> 00:21:50,067 i obtenir el jth què? 466 00:21:50,067 --> 00:21:50,900 AUDIÈNCIA: Caràcter. 467 00:21:50,900 --> 00:21:52,800 DAVID Malan: Personatge en aquesta cadena. 468 00:21:52,800 --> 00:21:57,100 Així mitjançant l'ús de claudàtors seguit de claudàtors, 469 00:21:57,100 --> 00:22:00,390 aquest és el busseig primer en cadenes de argv, 470 00:22:00,390 --> 00:22:02,225 i després el segon claudàtors amb j 471 00:22:02,225 --> 00:22:06,580 és submergir-se en els personatges de aquesta cadena en particular a argv. 472 00:22:06,580 --> 00:22:09,562 I llavors, només per si de cas, Estic imprimint una nova línia aquí. 473 00:22:09,562 --> 00:22:12,020 Així que ara em deixis anar endavant i obrir una finestra una mica més gran 474 00:22:12,020 --> 00:22:13,600 pel que podem veure això en acció. 475 00:22:13,600 --> 00:22:15,700 Déjame anar a aquesta carpeta. 476 00:22:15,700 --> 00:22:22,550 I ara el que argv 2-- whoops-- fer argv-2, ./argv 2. 477 00:22:22,550 --> 00:22:23,110 Intro. 478 00:22:23,110 --> 00:22:24,860 I és una mica difícil llegir verticalment, 479 00:22:24,860 --> 00:22:27,920 però això és de fet el nom de la programa, seguit per una línia en blanc. 480 00:22:27,920 --> 00:22:30,210 Ara vaig a seguir endavant i fer foo. 481 00:22:30,210 --> 00:22:33,210 De la mateixa manera difícil de llegir, però és de fet imprimir un caràcter per línia. 482 00:22:33,210 --> 00:22:36,780 I si ho faig bar, ara és impressió dels línia per línia. 483 00:22:36,780 --> 00:22:40,140 Així que el menjar per emportar aquí no és tant que, wow, mira aquest nou truc 484 00:22:40,140 --> 00:22:44,750 on es pot obtenir en els continguts de caràcters específics d'una matriu, 485 00:22:44,750 --> 00:22:48,380 sinó més aviat com ho estem tenint aquests bàsics idees com la indexació en una matriu, 486 00:22:48,380 --> 00:22:51,620 i després la indexació en un matriu que estava en aquesta matriu, 487 00:22:51,620 --> 00:22:56,180 i simplement aplicar les mateixes idees a exemples lleugerament més sofisticats. 488 00:22:56,180 --> 00:22:59,560 Però els fonaments realment no tenen canviat, fins i tot des de la setmana passada. 489 00:22:59,560 --> 00:23:02,350 >> Ara bé, això és una cosa puntual, que, recordem, en la setmana zero 490 00:23:02,350 --> 00:23:04,110 juguem amb un llibre telèfon com aquest. 491 00:23:04,110 --> 00:23:06,670 I encara que això és òbviament peces físiques de paper, 492 00:23:06,670 --> 00:23:09,150 vostè pot tipus de pensar un directori telefònic com una matriu. 493 00:23:09,150 --> 00:23:12,770 Certament, si anés a reimplementar aquestes peces aquestes peces de paper 494 00:23:12,770 --> 00:23:15,260 en un ordinador, probablement vostè utilitzaria alguna cosa 495 00:23:15,260 --> 00:23:20,270 com una matriu per emmagatzemar totes les noms i números de la A fins al final 496 00:23:20,270 --> 00:23:23,800 a la Z. Així que això és bo, perquè ens permet una oportunitat, 497 00:23:23,800 --> 00:23:28,310 potser, a considerar com podria realment posar en pràctica una cosa així. 498 00:23:28,310 --> 00:23:31,250 Igual que amb una sèrie de portes aquí. 499 00:23:31,250 --> 00:23:36,380 Així que si jo could-- en necessitem un voluntari per venir a endavant. 500 00:23:36,380 --> 00:23:36,980 Anem a veure. 501 00:23:36,980 --> 00:23:40,650 Un rostre desconegut potser, cara desconeguda, potser. 502 00:23:40,650 --> 00:23:42,090 Què tal en taronja? 503 00:23:42,090 --> 00:23:42,680 Aquí. 504 00:23:42,680 --> 00:23:45,870 Camisa taronja, anem a dalt. 505 00:23:45,870 --> 00:23:52,230 >> Seguirem endavant ara i moviment aquestes portes a un costat, 506 00:23:52,230 --> 00:23:54,020 moure'ls fora del camí per un moment. 507 00:23:54,020 --> 00:23:56,600 508 00:23:56,600 --> 00:23:57,760 Quin és el teu nom? 509 00:23:57,760 --> 00:23:58,580 >> AJAY: 510 00:23:58,580 --> 00:23:58,655 >> DAVID Malan: Ajay. 511 00:23:58,655 --> 00:23:58,680 David. 512 00:23:58,680 --> 00:23:59,451 Encantada de conèixer-te. 513 00:23:59,451 --> 00:23:59,950 Bé. 514 00:23:59,950 --> 00:24:04,500 Així que tenim darrere d'aquests sis portes digitalment a la screen-- 515 00:24:04,500 --> 00:24:07,810 o, millor dit, set portes al screen-- un munt de nombres. 516 00:24:07,810 --> 00:24:10,099 I jo li he dit res en advance-- acord? 517 00:24:10,099 --> 00:24:11,140 AJAY: Res per endavant. 518 00:24:11,140 --> 00:24:14,730 DAVID Malan: Tot el que vull que facis ara és trobar per a mi, i per a nosaltres, 519 00:24:14,730 --> 00:24:20,920 Realment, el número 50, un pas a la vegada. 520 00:24:20,920 --> 00:24:21,830 >> AJAY: Nombre 50? 521 00:24:21,830 --> 00:24:22,580 >> DAVID Malan: El número 50. 522 00:24:22,580 --> 00:24:24,746 I vostè pot revelar el que hi ha darrere de cadascuna d'aquestes portes 523 00:24:24,746 --> 00:24:27,930 simplement tocant amb un dit. 524 00:24:27,930 --> 00:24:31,364 Maleïda sigui. [Rialles] 525 00:24:31,364 --> 00:24:34,560 >> [Aplaudiments] 526 00:24:34,560 --> 00:24:39,540 >> Molt ben fet. 527 00:24:39,540 --> 00:24:40,400 Okay. 528 00:24:40,400 --> 00:24:44,090 Tenim un regal preciós premi per a vostè aquí. 529 00:24:44,090 --> 00:24:46,520 La seva selecció de pel · lícules que discutit la setmana passada. 530 00:24:46,520 --> 00:24:47,362 >> AJAY: Oh, home. 531 00:24:47,362 --> 00:24:49,050 Oh, mai he vist Spaceballs. 532 00:24:49,050 --> 00:24:49,520 >> DAVID Malan: Spaceballs. 533 00:24:49,520 --> 00:24:50,140 Bé. 534 00:24:50,140 --> 00:24:53,790 Així que aguanta només un moment. 535 00:24:53,790 --> 00:24:57,430 Com-- fem que això 1 moment-- ensenyable 536 00:24:57,430 --> 00:25:00,412 com va ser el procés de trobar el número 50? 537 00:25:00,412 --> 00:25:01,370 AJAY: Vaig triar a l'atzar. 538 00:25:01,370 --> 00:25:03,420 DAVID Malan: Així que vostè va triar atzar i vam tenir sort. 539 00:25:03,420 --> 00:25:03,790 AJAY: Sí. 540 00:25:03,790 --> 00:25:04,456 DAVID Malan: OK. 541 00:25:04,456 --> 00:25:05,050 Excel · lent. 542 00:25:05,050 --> 00:25:08,470 Així que ara, no tenia tingut sort, què més 543 00:25:08,470 --> 00:25:10,210 podria haver passat darrere d'aquestes portes? 544 00:25:10,210 --> 00:25:12,930 Així que si segueixo endavant i revelar aquests nombres aquí, 545 00:25:12,930 --> 00:25:15,180 el que realment són en ordre aleatori. 546 00:25:15,180 --> 00:25:17,750 I el millor que podria tenir fet, francament, és per, en última instància, 547 00:25:17,750 --> 00:25:19,410 en el pitjor dels casos, la comprovació de tots ells. 548 00:25:19,410 --> 00:25:23,000 Així que tens súper afortunat, que no és el que diríem un algorisme. 549 00:25:23,000 --> 00:25:24,730 Sí, felicitats. 550 00:25:24,730 --> 00:25:27,010 Però ara let's-- humor jo, si pogués. 551 00:25:27,010 --> 00:25:28,310 Anem a anar a aquesta fitxa aquí. 552 00:25:28,310 --> 00:25:31,460 I aquí estan els números en clar el que sembla ser un ordre aleatori, 553 00:25:31,460 --> 00:25:32,280 i que eren. 554 00:25:32,280 --> 00:25:35,160 Però ara si en lloc reclamació que darrere d'aquestes portes 555 00:25:35,160 --> 00:25:39,070 són nombres que s'ordenen. 556 00:25:39,070 --> 00:25:41,780 L'objectiu ara és també nosaltres trobar el número 50. 557 00:25:41,780 --> 00:25:45,910 Però fer-ho algorítmicament, i dir-nos com va en això. 558 00:25:45,910 --> 00:25:48,020 I si ho troba, es manté la pel · lícula. 559 00:25:48,020 --> 00:25:49,520 No ho trobes, t'ho tornaré. 560 00:25:49,520 --> 00:25:52,720 561 00:25:52,720 --> 00:25:58,112 AJAY: Així que vaig a comprovar els extrems primer, per determinar si ha-- 562 00:25:58,112 --> 00:26:02,048 [Riures i aplaudiments] 563 00:26:02,048 --> 00:26:04,451 564 00:26:04,451 --> 00:26:05,492 DAVID Malan: Aquí tens. 565 00:26:05,492 --> 00:26:17,080 566 00:26:17,080 --> 00:26:21,700 Fem una ullada a un dels predecessors de Ajay, 567 00:26:21,700 --> 00:26:25,450 Siguin, que no va ser tan afortunat. 568 00:26:25,450 --> 00:26:28,670 Acceptar, pel que la seva tasca aquí, Siguin, és el següent. 569 00:26:28,670 --> 00:26:32,970 M'he amagat darrere d'aquests portes del número set, 570 00:26:32,970 --> 00:26:37,200 però amagat en alguna d'aquestes portes així són altres números no negatius. 571 00:26:37,200 --> 00:26:40,730 I el seu objectiu és pensar en aquest fila superior dels nombres com només una matriu. 572 00:26:40,730 --> 00:26:43,590 Estem a només una seqüència de peces de paper amb números darrere d'ells. 573 00:26:43,590 --> 00:26:47,640 I el seu objectiu és, només amb la part superior array aquí, em trobar el número set. 574 00:26:47,640 --> 00:26:51,200 I estem llavors anem a criticar com es van fent sobre ell. 575 00:26:51,200 --> 00:26:52,920 Trobi'ns el número set, si us plau. 576 00:26:52,920 --> 00:27:02,570 577 00:27:02,570 --> 00:27:03,070 No 578 00:27:03,070 --> 00:27:06,760 579 00:27:06,760 --> 00:27:08,179 5, 19, 13. 580 00:27:08,179 --> 00:27:16,752 581 00:27:16,752 --> 00:27:17,835 No és una pregunta capciosa. 582 00:27:17,835 --> 00:27:21,420 583 00:27:21,420 --> 00:27:21,920 1. 584 00:27:21,920 --> 00:27:26,715 585 00:27:26,715 --> 00:27:29,840 En aquest punt, la seva puntuació no és molt bo, perquè així pugui seguir endavant. 586 00:27:29,840 --> 00:27:32,870 587 00:27:32,870 --> 00:27:33,370 3. 588 00:27:33,370 --> 00:27:38,570 589 00:27:38,570 --> 00:27:39,802 Endavant. 590 00:27:39,802 --> 00:27:42,510 Francament, no puc evitar preguntar-me el que estàs tan sols pensar. 591 00:27:42,510 --> 00:27:44,990 >> SIGUIN: Puc prendre de només la fila superior. 592 00:27:44,990 --> 00:27:46,240 DAVID Malan: Només la fila superior. 593 00:27:46,240 --> 00:27:47,281 Així que tens tres esquerra. 594 00:27:47,281 --> 00:27:48,310 Així que trobar 7. 595 00:27:48,310 --> 00:27:54,758 596 00:27:54,758 --> 00:27:59,141 >> [EXCLAMACIONS SUGGERIMENTS] 597 00:27:59,141 --> 00:28:22,210 598 00:28:22,210 --> 00:28:26,130 Així doncs, tant dels que eren increïbles per raons molt diferents. 599 00:28:26,130 --> 00:28:29,150 Així que aquí és on ens deixem fa un moment, 600 00:28:29,150 --> 00:28:32,530 i la idea clau aquí Van ser aquestes portes tenien nombres 601 00:28:32,530 --> 00:28:37,390 darrere d'ells que es van ordenar, l'ideal menjar per emportar per el qual és que es pot fer 602 00:28:37,390 --> 00:28:39,670 fonamentalment millor en aquest segon exemple-- 603 00:28:39,670 --> 00:28:42,380 i, de fet, això era de Sean primer intent amb nombres aleatoris 604 00:28:42,380 --> 00:28:45,460 així com abans-- però tan aviat ja que aquests nombres estan ordenats, 605 00:28:45,460 --> 00:28:47,980 igual que la guia telefònica, ¿Què es pot òbviament fer? 606 00:28:47,980 --> 00:28:50,090 O com es pot aprofitar aquest coneixement? 607 00:28:50,090 --> 00:28:51,530 Sí. 608 00:28:51,530 --> 00:28:54,910 >> AUDIÈNCIA: Vostè va a mig camí [inaudible]. 609 00:28:54,910 --> 00:28:55,660 DAVID Malan: Si. 610 00:28:55,660 --> 00:28:56,160 Exactament. 611 00:28:56,160 --> 00:28:59,680 Així instint inicial d'Ajay era per comprovar els extrems, pel que recordo, 612 00:28:59,680 --> 00:29:02,320 i després ens tipus d'acabat l'exemple ràpidament. 613 00:29:02,320 --> 00:29:05,220 Però si comencem a fer això més metòdicament al llarg d'aquestes línies, 614 00:29:05,220 --> 00:29:07,860 però partint potser en el mitjà, ja que estan ordenats, 615 00:29:07,860 --> 00:29:10,900 tan aviat com ens revelem la número 16, per tant, sabes-- 616 00:29:10,900 --> 00:29:14,850 i farem exactament això-- ens per tant, saber que el 50, en el cas d'avui, 617 00:29:14,850 --> 00:29:16,080 ha de ser a la dreta. 618 00:29:16,080 --> 00:29:18,735 Així que igual que en la setmana zero quan vam trencar la guia telefònica a la meitat 619 00:29:18,735 --> 00:29:21,490 i va llançar la meitat de la problema de distància, la mateixa idea aquí. 620 00:29:21,490 --> 00:29:23,680 Podem llançar aquest mitjà que el problema desaparegui. 621 00:29:23,680 --> 00:29:25,730 I probablement el que podria fer algorítmicament, 622 00:29:25,730 --> 00:29:28,710 un cop heu escoltat que el 50 ha de ser a la dreta, si és en qualsevol lloc, 623 00:29:28,710 --> 00:29:31,390 és provar allà, al mig de les portes restants. 624 00:29:31,390 --> 00:29:33,450 Per descomptat, 50 és més gran el 42, pel que podem 625 00:29:33,450 --> 00:29:36,060 tirar això restant trimestre del problema de distància, 626 00:29:36,060 --> 00:29:38,510 i, finalment, identificar alguna cosa com 50. 627 00:29:38,510 --> 00:29:41,050 Però igual que amb la guia telefònica, aquests nombres 628 00:29:41,050 --> 00:29:44,560 se'ls va donar a nosaltres ja en forma ordenada, el que ens deixa 629 00:29:44,560 --> 00:29:47,450 amb la pregunta, com fer les coses en ordre ordenats? 630 00:29:47,450 --> 00:29:49,640 I, francament, ¿a quin cost? 631 00:29:49,640 --> 00:29:51,390 Una cosa és ser lliurar la guia telefònica 632 00:29:51,390 --> 00:29:54,810 i després impressionar als teus amics mitjançant la recerca de un nombre de telèfon molt ràpid, oi? 633 00:29:54,810 --> 00:29:58,520 Esquinçant 32 pàgines per trobar una persona de cada 4 mil milions de pàgines, 634 00:29:58,520 --> 00:30:00,470 vam dir era un exemple extrem. 635 00:30:00,470 --> 00:30:03,320 Però, quant de temps li va prendre a Verizon per ordenar que guia telefònica? 636 00:30:03,320 --> 00:30:06,170 Quant de temps ens va prendre per ordenar aquests set números? 637 00:30:06,170 --> 00:30:10,110 Aquesta és una pregunta que ens hem fins ara ignorat completament. 638 00:30:10,110 --> 00:30:12,330 >> Així que anem a respondre a aquesta pregunta ara. 639 00:30:12,330 --> 00:30:15,920 I tots estem de pel · lícules ara, però sí tenim algunes boles d'estrès. 640 00:30:15,920 --> 00:30:19,480 Si, per exemple, vuit voluntaris no li importaria acompanyar-nos fins aquí? 641 00:30:19,480 --> 00:30:24,100 Seguirem endavant i fer, què tal vostès quatre, tres de vostès aquí? 642 00:30:24,100 --> 00:30:25,290 Obtenir algunes cares noves. 643 00:30:25,290 --> 00:30:27,220 I els quatre de vostès allà? 644 00:30:27,220 --> 00:30:30,760 I ara-- deixar no de biaix aquí-- i número vuit d'aquí al final. 645 00:30:30,760 --> 00:30:32,060 Anem amunt. 646 00:30:32,060 --> 00:30:32,560 Bé. 647 00:30:32,560 --> 00:30:37,480 Així que el que tenim aquí per cada un de vosaltres és un nombre. 648 00:30:37,480 --> 00:30:40,055 Si vol anar Endavant, pren aquest número. 649 00:30:40,055 --> 00:30:40,763 Quin és el teu nom? 650 00:30:40,763 --> 00:30:41,950 >> Artie: Artie. 651 00:30:41,950 --> 00:30:43,100 >> DAVID Malan: Artie, està bé. 652 00:30:43,100 --> 00:30:44,297 Ets el número 1. 653 00:30:44,297 --> 00:30:45,310 >> AMIN: Amin. 654 00:30:45,310 --> 00:30:46,060 DAVID Malan: Amin. 655 00:30:46,060 --> 00:30:46,820 David. 656 00:30:46,820 --> 00:30:47,530 Ets el número 2. 657 00:30:47,530 --> 00:30:49,100 I seguir endavant, com em lliuro que els fulls de paper, 658 00:30:49,100 --> 00:30:52,130 alinear vosaltres mateixos davant de la música es troba en el mateix ordre com allà dalt. 659 00:30:52,130 --> 00:30:52,660 >> ANDY: Hola, Andy. 660 00:30:52,660 --> 00:30:53,970 >> DAVID Malan: Andy, és bo veure't. 661 00:30:53,970 --> 00:30:54,520 Número 3. 662 00:30:54,520 --> 00:30:55,310 >> JACOB: Jacob. 663 00:30:55,310 --> 00:30:56,760 >> DAVID Malan: Jacob, número 4. 664 00:30:56,760 --> 00:30:57,549 Benvingut a bord. 665 00:30:57,549 --> 00:30:58,090 GRANT: Grant. 666 00:30:58,090 --> 00:30:58,881 DAVID Malan: Grant. 667 00:30:58,881 --> 00:31:00,348 Número 5. 668 00:31:00,348 --> 00:31:01,200 >> ALANNA: Alanna. 669 00:31:01,200 --> 00:31:02,766 >> DAVID Malan: Alanna, número 6. 670 00:31:02,766 --> 00:31:03,589 >> FRANCES: Frances. 671 00:31:03,589 --> 00:31:04,880 DAVID Malan: Frances, número 7. 672 00:31:04,880 --> 00:31:05,200 I? 673 00:31:05,200 --> 00:31:05,830 >> RACHEL: Rachel. 674 00:31:05,830 --> 00:31:06,815 >> DAVID Malan: Rachel, número 8. 675 00:31:06,815 --> 00:31:07,100 Bé. 676 00:31:07,100 --> 00:31:08,766 Vagi per davant i s'aconsegueix en aquest ordre. 677 00:31:08,766 --> 00:31:11,440 Permetin-me posar un romanent faristol al seu lloc. 678 00:31:11,440 --> 00:31:13,670 On necessita un estand? 679 00:31:13,670 --> 00:31:14,170 Okay. 680 00:31:14,170 --> 00:31:18,710 Vagi per davant i només cal posar els números on el públic pot veure en, 681 00:31:18,710 --> 00:31:20,340 el faristol cap a fora. 682 00:31:20,340 --> 00:31:27,240 I és d'esperar, el nostre primer comprovació de validesa aquí-- 4, 2, 6. 683 00:31:27,240 --> 00:31:27,890 Oh-oh. 684 00:31:27,890 --> 00:31:29,070 Espera un minut. 685 00:31:29,070 --> 00:31:31,140 No tenim agost 1. 686 00:31:31,140 --> 00:31:35,180 Necessito desallotjar del l'exemple d'alguna manera. 687 00:31:35,180 --> 00:31:35,680 No 688 00:31:35,680 --> 00:31:36,940 No, això està bé. 689 00:31:36,940 --> 00:31:37,890 Anem a veure. 690 00:31:37,890 --> 00:31:38,880 Podem fer això. 691 00:31:38,880 --> 00:31:39,440 Col·locar. 692 00:31:39,440 --> 00:31:43,970 693 00:31:43,970 --> 00:31:45,740 Això és. 694 00:31:45,740 --> 00:31:46,800 Correcta. 695 00:31:46,800 --> 00:31:47,360 Bé. 696 00:31:47,360 --> 00:31:50,260 Així doncs, ara tenim 8, 1, 3 7, 5. 697 00:31:50,260 --> 00:31:50,760 Okay. 698 00:31:50,760 --> 00:31:51,360 Excel · lent. 699 00:31:51,360 --> 00:31:54,400 >> Així que la pregunta en qüestió és, en quin cost, i per mitjà de quin mètode, 700 00:31:54,400 --> 00:31:58,580 podem realment ordenar aquests números aquí perquè puguem tipus de treball cap enrere, 701 00:31:58,580 --> 00:32:02,759 en última instància, i decide-- és realment impressionant, és realment eficaç, 702 00:32:02,759 --> 00:32:04,550 que puc dividir i conquerir una guia telefònica? 703 00:32:04,550 --> 00:32:06,716 És realment eficient que Puc dividir i conquerir 704 00:32:06,716 --> 00:32:08,600 aquestes peces digitals de paper al tauler, 705 00:32:08,600 --> 00:32:14,500 si potser ens costarà un fortuna en el temps o els cicles d'energia o de CPU 706 00:32:14,500 --> 00:32:17,340 per aconseguir realment les nostres dades en certa manera ordenada? 707 00:32:17,340 --> 00:32:18,930 Així que anem a aquesta pregunta. 708 00:32:18,930 --> 00:32:22,077 >> Així que per començar, aquests nombres són en més o menys a l'atzar, 709 00:32:22,077 --> 00:32:24,160 i jo vaig a proposar un algorisme o procés 710 00:32:24,160 --> 00:32:25,970 pel qual podem classificar aquestes persones. 711 00:32:25,970 --> 00:32:28,100 Vaig a abordar aquesta força ingènuament. 712 00:32:28,100 --> 00:32:30,730 I vaig a reconèixer que és una espècie d'un munt per a mi 713 00:32:30,730 --> 00:32:32,890 per embolicar la meva ment al voltant de la dades sencers estableixen alhora. 714 00:32:32,890 --> 00:32:33,640 Però saps què? 715 00:32:33,640 --> 00:32:37,450 Vaig a fer una mica de correccions marginals molt simples. 716 00:32:37,450 --> 00:32:41,152 4 i 2 són fora de servei, si el objectiu és passar d'1 a un màxim de 8. 717 00:32:41,152 --> 00:32:41,860 Així que ja saps què? 718 00:32:41,860 --> 00:32:43,776 Vaig a haver de nois intercanvien, si canvia 719 00:32:43,776 --> 00:32:46,380 físicament i posicions seus trossos de paper. 720 00:32:46,380 --> 00:32:47,894 Ara 4 i 6, aquests són en ordre. 721 00:32:47,894 --> 00:32:49,060 Vaig a deixar als ser. 722 00:32:49,060 --> 00:32:50,227 6 i 8, els que estan en ordre. 723 00:32:50,227 --> 00:32:51,185 L'anar a deixar-los ser. 724 00:32:51,185 --> 00:32:52,170 8 and1, fora d'ordre. 725 00:32:52,170 --> 00:32:54,790 Si vostès dos no li importaria intercanvi. 726 00:32:54,790 --> 00:32:57,300 Ara 8 i 3, si vostès poguessin intercanviar. 727 00:32:57,300 --> 00:32:59,320 8 i 7, si vostès poguessin intercanviar. 728 00:32:59,320 --> 00:33:01,790 I 8 i 5, si vostès poguessin intercanviar. 729 00:33:01,790 --> 00:33:03,980 >> Ara, estic fet? 730 00:33:03,980 --> 00:33:05,200 No, òbviament no. 731 00:33:05,200 --> 00:33:07,880 Però he pres la situació millor, oi? 732 00:33:07,880 --> 00:33:09,430 Quin era el teu nom, número 8? 733 00:33:09,430 --> 00:33:10,055 >> RACHEL: Rachel. 734 00:33:10,055 --> 00:33:12,850 DAVID Malan: Així que Rachel té efectivament bombollejava bastant lluny, 735 00:33:12,850 --> 00:33:15,660 tot el camí fins al final de la meva sèrie de nombres aquí. 736 00:33:15,660 --> 00:33:17,310 I així, aquest problema és una espècie de resoldre. 737 00:33:17,310 --> 00:33:21,670 Ara, clarament, 2 encara ha de moure una mica, i 4 i 6 i 1. 738 00:33:21,670 --> 00:33:24,420 Però em sembla que han aconseguit una mica més a prop de la solució. 739 00:33:24,420 --> 00:33:26,790 Així que anem a aplicar aquest mateix heurística ingènua de nou. 740 00:33:26,790 --> 00:33:27,690 2 i 4, a D'acord. 741 00:33:27,690 --> 00:33:28,810 4 i 6, a D'acord. 742 00:33:28,810 --> 00:33:29,930 6 i 1, mm-mm. 743 00:33:29,930 --> 00:33:32,230 D'intercanvi Let. 744 00:33:32,230 --> 00:33:33,200 6 i 3, mm-mm. 745 00:33:33,200 --> 00:33:34,420 D'intercanvi Let. 746 00:33:34,420 --> 00:33:35,580 6 i 7 està bé. 747 00:33:35,580 --> 00:33:36,590 7 i 5, doncs no. 748 00:33:36,590 --> 00:33:37,790 D'intercanvi Let. 749 00:33:37,790 --> 00:33:38,470 I ara 7 i 8. 750 00:33:38,470 --> 00:33:39,862 I quin és el teu nom? 751 00:33:39,862 --> 00:33:40,570 FRANCES: Frances. 752 00:33:40,570 --> 00:33:41,445 DAVID Malan: Frances. 753 00:33:41,445 --> 00:33:44,230 Així que ara és Frances, fins i tot en una millor posició, perquè ara 7 i 8 754 00:33:44,230 --> 00:33:46,440 es bombollejava correctament fins al cim. 755 00:33:46,440 --> 00:33:47,510 Així que 2 i 4, a D'acord. 756 00:33:47,510 --> 00:33:48,720 4 i 1, d'intercanvi d'let. 757 00:33:48,720 --> 00:33:50,410 4 i 3, d'intercanvi d'let. 758 00:33:50,410 --> 00:33:51,550 4 i 6, que estàs bé. 759 00:33:51,550 --> 00:33:53,340 6 i 5, d'intercanvi d'let. 760 00:33:53,340 --> 00:33:54,590 I ara aquests tipus són bons. 761 00:33:54,590 --> 00:33:55,780 Ja gairebé arribem. 762 00:33:55,780 --> 00:33:57,706 2 i 1, fora de servei, de manera que canviar. 763 00:33:57,706 --> 00:33:59,080 I ara m'ho dius a mi fer una comprovació de validesa. 764 00:33:59,080 --> 00:34:03,080 2 i 3, 3 i 4, 4 i 5, 5 i 6, 6 i 7, 8. 765 00:34:03,080 --> 00:34:05,060 OK, així que hem acabat. 766 00:34:05,060 --> 00:34:09,310 >> Però a quin preu em va fer ordenar aquests números aquí? 767 00:34:09,310 --> 00:34:13,960 Bé, quants passos va fer que potencialment prendre en ordenar aquestes persones? 768 00:34:13,960 --> 00:34:15,710 Bé, anem a tornar a aquesta pregunta. 769 00:34:15,710 --> 00:34:18,030 Però, francament, si tens una mica avorrit, això és 770 00:34:18,030 --> 00:34:22,270 tipus de revelador en què això no era potser l'algorisme més eficient. 771 00:34:22,270 --> 00:34:25,230 I, de fet, francament, estic suant tant més anant i venint. 772 00:34:25,230 --> 00:34:26,639 Que no se sentia particularment eficient. 773 00:34:26,639 --> 00:34:27,805 Així que anem a intentar alguna cosa més. 774 00:34:27,805 --> 00:34:31,870 Si vostès poguessin restablir vosaltres mateixos a aquests vuit valors. 775 00:34:31,870 --> 00:34:32,969 Bon treball. 776 00:34:32,969 --> 00:34:36,570 >> Fem una ullada digitalment, per només un moment abans d'intentar una altra cosa, 777 00:34:36,570 --> 00:34:38,179 al que acaba de succeir. 778 00:34:38,179 --> 00:34:41,330 Fins aquí, estàs a punt de veure una visualització d'aquests vuit éssers humans 779 00:34:41,330 --> 00:34:44,719 pel qual blau i vermell barres representen els números. 780 00:34:44,719 --> 00:34:46,670 La més alta la barra, com més gran és el nombre. 781 00:34:46,670 --> 00:34:48,510 Com més curta sigui la barra, com menor sigui el nombre. 782 00:34:48,510 --> 00:34:51,560 I el que vas a veure és en ordre aleatori més de vuit d'ells. 783 00:34:51,560 --> 00:34:55,830 Vostè va a veure aquestes barres sent ordenat pel mateix algoritme, 784 00:34:55,830 --> 00:34:59,890 o conjunt d'instruccions, que que anomenarem d'ara endavant espècie de bombolla. 785 00:34:59,890 --> 00:35:04,000 Així que notar, cada segon més o menys, dues barres s'il·luminen en vermell, 786 00:35:04,000 --> 00:35:05,590 es comparen per l'ordinador. 787 00:35:05,590 --> 00:35:08,630 I llavors, si la gran barra i la petit bar estan fora d'ordre, 788 00:35:08,630 --> 00:35:11,220 que estan sent intercanviats per mi. 789 00:35:11,220 --> 00:35:15,120 >> Ara bé, això és increïblement tediós al veure això, sens dubte, 790 00:35:15,120 --> 00:35:18,630 per molt temps, però noti la takeaway-- grans barres en moviment a la dreta, 791 00:35:18,630 --> 00:35:20,460 petites barres en moviment a l'esquerra. 792 00:35:20,460 --> 00:35:23,380 Anem a avortar aquest procés i accelerar aquest procés 793 00:35:23,380 --> 00:35:27,330 ser molt més ràpid, pel que podem aconseguir un sentit d'alt nivell del que, 794 00:35:27,330 --> 00:35:29,970 de fet, una mena de bombolla que està fent. 795 00:35:29,970 --> 00:35:33,150 De fet, està bombollejant a la costat dret de la llista, 796 00:35:33,150 --> 00:35:35,260 o la matriu, els bars més grans. 797 00:35:35,260 --> 00:35:40,020 I per contra, els petits bars són bombollejar el seu camí cap a baix a l'esquerra, 798 00:35:40,020 --> 00:35:42,950 encara que a un ritme més ràpid que vam fer prèviament. 799 00:35:42,950 --> 00:35:45,850 Per tant, més difícils de veure amb els éssers humans, però visualment això és precisament el que 800 00:35:45,850 --> 00:35:46,540 que estava succeint. 801 00:35:46,540 --> 00:35:49,110 >> Però anem a tractar d'una manera fonamentalment enfocament diferent ara. 802 00:35:49,110 --> 00:35:52,387 Anem a provar un diferent algorisme mitjançant el qual hem de 803 00:35:52,387 --> 00:35:59,640 nois comencen a aquests originals posicions, que era aquest ordre aquí. 804 00:35:59,640 --> 00:36:00,827 I seguirem endavant ara. 805 00:36:00,827 --> 00:36:02,910 I jo vaig a fer alguna cosa encara més simple, oi? 806 00:36:02,910 --> 00:36:06,710 En retrospectiva, l'intercanvi de parells de nou i una altra, gairebé una mica intel · ligent. 807 00:36:06,710 --> 00:36:10,460 Anem a fer les coses encara més ingènuament, on si vull classificar aquestes persones, 808 00:36:10,460 --> 00:36:12,560 m'ho dius a mi seguir buscant per l'element més petit. 809 00:36:12,560 --> 00:36:14,570 Així que ara mateix, 4 és el nombre més petit que he vist. 810 00:36:14,570 --> 00:36:15,695 Recordaré això. 811 00:36:15,695 --> 00:36:17,750 No, 2 és millor, i record. 812 00:36:17,750 --> 00:36:20,730 1 és encara menor. 813 00:36:20,730 --> 00:36:21,970 3, 7, 5. 814 00:36:21,970 --> 00:36:22,470 Okay. 815 00:36:22,470 --> 00:36:23,750 Un-- quin és el teu nom? 816 00:36:23,750 --> 00:36:24,400 >> Artie: Artie. 817 00:36:24,400 --> 00:36:24,610 >> DAVID Malan: Artie. 818 00:36:24,610 --> 00:36:25,460 Així, Artie, endavant. 819 00:36:25,460 --> 00:36:27,043 Jo vaig a sortir de la línia. 820 00:36:27,043 --> 00:36:28,400 Si poguessis tornar aquí. 821 00:36:28,400 --> 00:36:30,790 I he de fer lloc per a ell. 822 00:36:30,790 --> 00:36:32,040 Tenim un punt de decisió aquí. 823 00:36:32,040 --> 00:36:36,000 Com podem fer espai per Artie aquí al començament, on el número 1 pertany? 824 00:36:36,000 --> 00:36:36,770 >> AUDIÈNCIA: Shift. 825 00:36:36,770 --> 00:36:38,950 >> DAVID Malan: OK, ens podria canviar tot el món. 826 00:36:38,950 --> 00:36:40,860 Però proposar una optimització. 827 00:36:40,860 --> 00:36:43,410 Això se sent una mica molest perquè li pregunti a quatre persones 828 00:36:43,410 --> 00:36:44,620 per moure tot el camí. 829 00:36:44,620 --> 00:36:45,520 Quina altra cosa podia fer? 830 00:36:45,520 --> 00:36:46,360 >> AUDIÈNCIA: Interruptor d'ells. 831 00:36:46,360 --> 00:36:46,850 >> DAVID Malan: Interruptor ells. 832 00:36:46,850 --> 00:36:47,900 I quin és el teu nom? 833 00:36:47,900 --> 00:36:48,441 >> JACOB: Jacob. 834 00:36:48,441 --> 00:36:50,330 DAVID Malan: Jacob, es va moure. 835 00:36:50,330 --> 00:36:54,440 Molt més eficient només per tenir Llocs d'intercanvi Jacob amb Artie, 836 00:36:54,440 --> 00:36:56,710 en lloc de forçar els quatre d'aquestes persones, 837 00:36:56,710 --> 00:36:58,734 moltes gràcies, a la seva posició correcta. 838 00:36:58,734 --> 00:37:01,150 El millor d'Artie ara, està en la seva posició correcta. 839 00:37:01,150 --> 00:37:02,060 Anem a fer això de nou. 840 00:37:02,060 --> 00:37:03,730 2, que és el nombre més petit que he vist. 841 00:37:03,730 --> 00:37:05,690 3, 7, 5. 842 00:37:05,690 --> 00:37:06,190 Okay. 843 00:37:06,190 --> 00:37:07,467 2 és sens dubte la més petita. 844 00:37:07,467 --> 00:37:08,550 No ha de fer cap treball. 845 00:37:08,550 --> 00:37:09,320 Anem a fer-ho de nou. 846 00:37:09,320 --> 00:37:10,070 6. 847 00:37:10,070 --> 00:37:10,640 Més petit? 848 00:37:10,640 --> 00:37:11,140 8. 849 00:37:11,140 --> 00:37:11,590 Nop. 850 00:37:11,590 --> 00:37:11,720 4? 851 00:37:11,720 --> 00:37:12,220 Ooh. 852 00:37:12,220 --> 00:37:13,420 Permetin-me recordar abril. 853 00:37:13,420 --> 00:37:13,950 3. 854 00:37:13,950 --> 00:37:15,110 Que recordi 3. 855 00:37:15,110 --> 00:37:16,080 7, 5. 856 00:37:16,080 --> 00:37:18,490 Menor nombre que he vist en aquest pas és 3. 857 00:37:18,490 --> 00:37:20,340 Si vens en endavant. 858 00:37:20,340 --> 00:37:21,986 On posarem vostè? 859 00:37:21,986 --> 00:37:22,860 I quin és el teu nom? 860 00:37:22,860 --> 00:37:23,530 >> ALANNA: Alanna. 861 00:37:23,530 --> 00:37:25,780 >> DAVID Malan: Alanna, estem haurà de desallotjar. 862 00:37:25,780 --> 00:37:28,670 Però això és més eficient, a només intercanviar dues persones, 863 00:37:28,670 --> 00:37:31,850 de tenir diverses persones en realitat eludir acabat. 864 00:37:31,850 --> 00:37:32,850 Ara anem a fer això de nou. 865 00:37:32,850 --> 00:37:34,980 Vaig a seleccionar 4, així que anem a terme. 866 00:37:34,980 --> 00:37:36,540 I qui va a moure? 867 00:37:36,540 --> 00:37:37,750 Número 8, és clar. 868 00:37:37,750 --> 00:37:40,260 Si ara em trobo amb el número 5, anem a terme. 869 00:37:40,260 --> 00:37:42,104 Número 8 quedarà desallotjat de nou. 870 00:37:42,104 --> 00:37:43,770 Ara em vaig a trobar el número 6 en el seu lloc. 871 00:37:43,770 --> 00:37:44,410 7 en el seu lloc. 872 00:37:44,410 --> 00:37:45,080 8 en el seu lloc. 873 00:37:45,080 --> 00:37:48,590 >> El que acabem de fer ara és cosa que es diu ordenament per selecció, 874 00:37:48,590 --> 00:37:52,560 i si visualitzem això, és va a sentir una mica diferent. 875 00:37:52,560 --> 00:37:56,800 Seguirem endavant i d'aquesta menú aquí, aquest visualization-- 876 00:37:56,800 --> 00:38:02,920 anem a canviar aquest A-- anem, Firefox. 877 00:38:02,920 --> 00:38:07,610 Anem a canviar això a la selecció de classificació. 878 00:38:07,610 --> 00:38:11,830 I anem a accelerar com abans, i començar la visualització ara. 879 00:38:11,830 --> 00:38:13,990 I aquest algorisme té una sensació diferent a ell. 880 00:38:13,990 --> 00:38:16,480 A cada iteració, francament, és encara més senzill. 881 00:38:16,480 --> 00:38:18,385 Només estic seleccionant l'element més petit. 882 00:38:18,385 --> 00:38:21,510 Ara, francament, tinc una mica de sort que temps, en què ho resolt súper ràpid. 883 00:38:21,510 --> 00:38:22,660 Els elements van ser a l'atzar. 884 00:38:22,660 --> 00:38:25,520 No és, com veurem, finalment, veure, fonamentalment més ràpid. 885 00:38:25,520 --> 00:38:29,400 Però anem a veure una tercera i última acostar aquí pel que fa al que està passant. 886 00:38:29,400 --> 00:38:36,230 Així que seguirem endavant i restablir nois una última vegada per estar en aquest ordre aquí. 887 00:38:36,230 --> 00:38:38,450 >> I ara, me'n vaig a ser una mica més intel · ligent, 888 00:38:38,450 --> 00:38:40,220 només per arrodonir els nostres algorismes. 889 00:38:40,220 --> 00:38:41,230 Vaig a fer això. 890 00:38:41,230 --> 00:38:43,140 Me'n vaig per no anar anada i tornada tant. 891 00:38:43,140 --> 00:38:44,900 Francament, estic cansat de tot això de desplaçament. 892 00:38:44,900 --> 00:38:47,691 Jo només vaig a prendre el que sóc donat al principi de la llista, 893 00:38:47,691 --> 00:38:49,460 i jo vaig a ordenar que llavors i allà. 894 00:38:49,460 --> 00:38:50,140 Així que aquí estem. 895 00:38:50,140 --> 00:38:51,030 Número 4. 896 00:38:51,030 --> 00:38:53,680 Vaig a citar el nombre 4 en una llista ordenada. 897 00:38:53,680 --> 00:38:54,180 Fet. 898 00:38:54,180 --> 00:38:58,300 Reclam ara, i només per fer això més clar, aquesta part de la cistella està ordenada. 899 00:38:58,300 --> 00:39:02,610 És una espècie d'un reclam estúpid, però de fet 4 s'ordena en una llista de mida d'un. 900 00:39:02,610 --> 00:39:04,210 Ara, jo vaig a prendre en el número 2. 901 00:39:04,210 --> 00:39:07,670 Número 2 Ara estic anant a inserir en el lloc correcte. 902 00:39:07,670 --> 00:39:08,680 Llavors, on 2 pertanyen? 903 00:39:08,680 --> 00:39:09,824 Òbviament, aquí. 904 00:39:09,824 --> 00:39:11,490 Així que endavant i tornar, si poguessis. 905 00:39:11,490 --> 00:39:14,406 ¿I per què no s'acaba de prendre la seva música està amb vosaltres en aquesta ocasió. 906 00:39:14,406 --> 00:39:17,020 I anem a la força que inseriu en el principi de la llista. 907 00:39:17,020 --> 00:39:17,936 Així que una mica més de treball. 908 00:39:17,936 --> 00:39:20,890 Vaig haver de moure al voltant de Jacob, i quin és el teu nom? 909 00:39:20,890 --> 00:39:21,420 >> AMIN: Amin. 910 00:39:21,420 --> 00:39:22,270 >> DAVID Malan: Amin. 911 00:39:22,270 --> 00:39:24,350 Però almenys no vaig ser cap enrere i endavant. 912 00:39:24,350 --> 00:39:25,739 Només estic prenent les coses a mesura que avanço. 913 00:39:25,739 --> 00:39:27,530 Només estic inserint en el lloc correcte. 914 00:39:27,530 --> 00:39:29,220 6, això és realment molt fàcil. 915 00:39:29,220 --> 00:39:31,510 Anem a inserir per allà, si només volia passar més lleugerament. 916 00:39:31,510 --> 00:39:32,870 Número 8, també és bastant fàcil. 917 00:39:32,870 --> 00:39:33,741 Just aquí. 918 00:39:33,741 --> 00:39:34,240 Maleïda sigui. 919 00:39:34,240 --> 00:39:37,590 Número 1 no podem simplement intercanviar amb Amin aquí, 920 00:39:37,590 --> 00:39:39,340 perquè això està passant fer malbé l'ordre. 921 00:39:39,340 --> 00:39:40,660 Així que hem de ser una mica més intel · ligent. 922 00:39:40,660 --> 00:39:42,770 Així, Artie, si pogués una còpia de seguretat per un moment. 923 00:39:42,770 --> 00:39:46,550 Seguirem endavant i canviï ara, a diferència dels algoritmes anteriors, 924 00:39:46,550 --> 00:39:50,910 per deixar espai a Artie aquí mateix, al principi. 925 00:39:50,910 --> 00:39:54,690 Així que al final del dia, jo sóc una mena de fent el que volia evitar abans. 926 00:39:54,690 --> 00:39:57,770 I pel que el meu algorisme és una espècie de revertir, intel · lectual, 927 00:39:57,770 --> 00:39:59,070 del que era originalment. 928 00:39:59,070 --> 00:40:01,240 Només estic fent el canvi en un punt diferent. 929 00:40:01,240 --> 00:40:02,291 Ara estic en el 3. 930 00:40:02,291 --> 00:40:02,790 Oh, maleïda sigui. 931 00:40:02,790 --> 00:40:04,039 Hem de fer més feina de nou. 932 00:40:04,039 --> 00:40:05,060 Així que anem a que empeny cap a fora. 933 00:40:05,060 --> 00:40:09,360 Anem a passar 8, 6, 4-- oh OH- i 3 va a anar a la dreta allà. 934 00:40:09,360 --> 00:40:11,490 Així que almenys els estalvis lleus aquest moment. 935 00:40:11,490 --> 00:40:13,100 7, no gaire feina per fer. 936 00:40:13,100 --> 00:40:15,370 Així que si vols fer esclatar volta, anem a inserir. 937 00:40:15,370 --> 00:40:17,440 I, finalment, 5, si vostè voler pop tornar, ens 938 00:40:17,440 --> 00:40:22,610 hagi de canviar tu, tu, que, fins a les cinc està en el seu lloc. 939 00:40:22,610 --> 00:40:25,670 >> Així que ara a veure això en un alt nivell gràficament, 940 00:40:25,670 --> 00:40:31,080 farem aquest algorisme visualització d'una vegada addicional. 941 00:40:31,080 --> 00:40:33,580 Així que això que anomenarem ordenació per inserció. 942 00:40:33,580 --> 00:40:37,700 Farem només com ràpid, i començar des d'aquí. 943 00:40:37,700 --> 00:40:39,580 I és, també, té una sensació diferent. 944 00:40:39,580 --> 00:40:42,180 És una espècie de millora i millor, però mai és perfecta 945 00:40:42,180 --> 00:40:44,630 fins que entro i suau en aquestes llacunes. 946 00:40:44,630 --> 00:40:47,860 Perquè, de nou, només estic prenent el Estic sent donat d'esquerra a dreta. 947 00:40:47,860 --> 00:40:50,350 Així que no he tingut tanta sort que tot era perfecte. 948 00:40:50,350 --> 00:40:54,190 És per això que vam tenir aquests petits mispositions que fixa el pas del temps. 949 00:40:54,190 --> 00:40:58,890 >> Així que tots aquests algoritmes semblen córrer a lleugerament diferents ritmes. 950 00:40:58,890 --> 00:41:02,030 De fet, quin diria que és el millor o el més ràpid fins a la data? 951 00:41:02,030 --> 00:41:03,450 Ordenament de bombolla, la primera? 952 00:41:03,450 --> 00:41:05,000 Selecció espècie, la segona? 953 00:41:05,000 --> 00:41:08,450 Tipus d'inserció, la tercera? 954 00:41:08,450 --> 00:41:10,710 He sentit algunes classes de selecció. 955 00:41:10,710 --> 00:41:13,280 Altres pensaments? 956 00:41:13,280 --> 00:41:16,880 >> Així que resulta que tots aquests algoritmes 957 00:41:16,880 --> 00:41:22,400 són fonamentalment igual d'eficient que cada altre-- o, per contra, igual que 958 00:41:22,400 --> 00:41:25,980 ineficaç com els altres, perquè podem fer fonamentalment 959 00:41:25,980 --> 00:41:28,120 millor que els tres d'aquests algoritmes. 960 00:41:28,120 --> 00:41:29,990 I això és una mica d'una mentida blanca, també. 961 00:41:29,990 --> 00:41:32,580 quan dic tan eficient o com ineficient, 962 00:41:32,580 --> 00:41:35,040 això és almenys per super-grans valors de n. 963 00:41:35,040 --> 00:41:38,450 Quan tenim només vuit persones aquí, o potser 50 o més barres a la pantalla, 964 00:41:38,450 --> 00:41:41,645 t'adonaràs absolutament diferències entre aquests tres algorismes. 965 00:41:41,645 --> 00:41:44,020 Però com n, el nombre de persones, o el nombre de nombres, 966 00:41:44,020 --> 00:41:46,350 o el nombre de persones al telèfon llibre, o el nombre de pàgines web 967 00:41:46,350 --> 00:41:48,230 base de dades de Google es fa més gran i més gran, 968 00:41:48,230 --> 00:41:51,650 veurem que els tres d'aquests algorismes són en realitat bastant pobre. 969 00:41:51,650 --> 00:41:54,060 I podem fer-ho fonamentalment millor que això. 970 00:41:54,060 --> 00:41:56,830 >> Anem a fer una ullada, finalment, el que aquests algorismes poden 971 00:41:56,830 --> 00:41:59,520 sonar com a la context d'alguns altres 972 00:41:59,520 --> 00:42:03,550 així com per mitjà d'aquest visualització aquí 973 00:42:03,550 --> 00:42:06,860 que ens introduirà en una sèrie d'algorismes. 974 00:42:06,860 --> 00:42:10,330 Seguirem endavant i felicitar nostres participants aquí, tots els quals 975 00:42:10,330 --> 00:42:11,690 ordenats de manera molt adequada. 976 00:42:11,690 --> 00:42:15,124 Si voleu donar un regal de comiat. 977 00:42:15,124 --> 00:42:16,540 Vostè pot mantenir els seus números també. 978 00:42:16,540 --> 00:42:19,460 979 00:42:19,460 --> 00:42:22,520 I el que veuràs, o més aviat sentir, ara, 980 00:42:22,520 --> 00:42:25,710 és que a mesura que posem sons a cadascuna d'aquestes barres 981 00:42:25,710 --> 00:42:28,660 i associar-lo amb el programari, diferents freqüències de so, 982 00:42:28,660 --> 00:42:33,970 vostè pot embolicar la seva ment més audioly al voltant del que cadascuna d'aquestes coses 983 00:42:33,970 --> 00:42:34,470 sembla. 984 00:42:34,470 --> 00:42:39,325 El primer d'ells és l'ordenació per inserció 985 00:42:39,325 --> 00:42:44,275 >> [TONS] 986 00:42:44,275 --> 00:42:47,245 987 00:42:47,245 --> 00:42:49,720 >> Aquesta és una espècie de bombolla. 988 00:42:49,720 --> 00:42:54,175 >> [TONS] 989 00:42:54,175 --> 00:43:17,250 990 00:43:17,250 --> 00:43:18,222 >> Selecció espècie. 991 00:43:18,222 --> 00:43:22,596 >> [TONS] 992 00:43:22,596 --> 00:43:33,570 993 00:43:33,570 --> 00:43:35,150 >> Una cosa anomenada merge sort. 994 00:43:35,150 --> 00:43:38,140 >> [TONS] 995 00:43:38,140 --> 00:43:49,510 996 00:43:49,510 --> 00:43:51,278 >> Tipus Gnome. 997 00:43:51,278 --> 00:43:56,390 >> [TONS] 998 00:43:56,390 --> 00:44:08,240 999 00:44:08,240 --> 00:44:09,430 >> Això és tot per CS50. 1000 00:44:09,430 --> 00:44:13,360 Ens veiem dimecres. 1001 00:44:13,360 --> 00:44:16,671 >> NARRADOR: I ara, "Deep Pensaments ", per Daven Farnham. 1002 00:44:16,671 --> 00:44:19,910 1003 00:44:19,910 --> 00:44:21,590 Per què és un bucle? 1004 00:44:21,590 --> 00:44:23,200 Per què no fer-ho millor? 1005 00:44:23,200 --> 00:44:25,970 M'agradaria fer un bucle de cinc. 1006 00:44:25,970 --> 00:44:28,720 >> [Rialles]