1 00:00:00,000 --> 00:00:11,100 2 00:00:11,100 --> 00:00:12,300 >> ALTAVOZ 1: Hola a todos! 3 00:00:12,300 --> 00:00:13,890 Bienvenido de nuevo a la sección. 4 00:00:13,890 --> 00:00:17,480 Así que me alegro de ver a muchos de ustedes, tanto aquí, y todo el mundo que está viendo en línea. 5 00:00:17,480 --> 00:00:18,760 6 00:00:18,760 --> 00:00:20,920 Así que, como de costumbre atrás bienvenida. 7 00:00:20,920 --> 00:00:24,360 Espero que todos hayan tenido un precioso fin de semana, lleno de descanso, la relajación. 8 00:00:24,360 --> 00:00:26,026 Era hermoso el día de ayer. 9 00:00:26,026 --> 00:00:27,525 Así que, espero que hayan disfrutado del aire libre. 10 00:00:27,525 --> 00:00:28,840 11 00:00:28,840 --> 00:00:30,610 >> Así que por primera vez un par de anuncios. 12 00:00:30,610 --> 00:00:31,920 13 00:00:31,920 --> 00:00:32,700 Clasificación. 14 00:00:32,700 --> 00:00:37,350 Así, la mayoría de ustedes deben haber recibido una un correo electrónico de mí acerca de su juego de parámetros Scratch, 15 00:00:37,350 --> 00:00:39,920 así como la clasificación de juego de parámetros 1. 16 00:00:39,920 --> 00:00:41,000 17 00:00:41,000 --> 00:00:42,220 Así, sólo un par de cosas. 18 00:00:42,220 --> 00:00:45,150 Asegúrese de utilizar check50 en style50. 19 00:00:45,150 --> 00:00:47,250 Estos están destinados a ser recursos para ustedes, 20 00:00:47,250 --> 00:00:50,660 para asegurarse de que usted está recibiendo tantos puntos como puedas 21 00:00:50,660 --> 00:00:52,390 sin innecesariamente perderlos. 22 00:00:52,390 --> 00:00:54,407 Por lo tanto, cosas como el estilo son muy importantes. 23 00:00:54,407 --> 00:00:55,740 Vamos a despegar para ello. 24 00:00:55,740 --> 00:00:58,115 Algunos de ustedes ya tienen notado que a partir de su juego de parámetros. 25 00:00:58,115 --> 00:00:58,920 26 00:00:58,920 --> 00:01:01,450 Y check50 es sólo un manera muy fácil de asegurarse 27 00:01:01,450 --> 00:01:05,050 que en realidad estamos volviendo lo tiene que ser devuelto al usuario, 28 00:01:05,050 --> 00:01:06,690 y que todo está funcionando correctamente. 29 00:01:06,690 --> 00:01:08,690 30 00:01:08,690 --> 00:01:12,040 >> En la segunda nota, asegúrese de que su subir cosas a la carpeta correcta. 31 00:01:12,040 --> 00:01:14,470 Se me hace la vida un poco más difícil 32 00:01:14,470 --> 00:01:18,836 si subes juego de parámetros 2 en juego de parámetros 1 porque al descargar cosas, 33 00:01:18,836 --> 00:01:20,085 no descarga correctamente. 34 00:01:20,085 --> 00:01:21,690 35 00:01:21,690 --> 00:01:24,560 Y sé que es un poco wonky en un sistema que acostumbrarse a, 36 00:01:24,560 --> 00:01:26,950 pero simplemente ser súper cuidado, aunque sólo sea para mí, 37 00:01:26,950 --> 00:01:30,080 de modo que cuando usted está recibiendo mensajes de correo electrónico al igual que 02 a.m. y estoy de calificaciones. 38 00:01:30,080 --> 00:01:33,710 Si no causar tengo que mirar todo para su juego de parámetros. 39 00:01:33,710 --> 00:01:34,440 Enfriar. 40 00:01:34,440 --> 00:01:37,270 >> Sé que es temprano, pero me totalmente fue tomado con la guardia baja 41 00:01:37,270 --> 00:01:40,800 por un ensayo que es debido este viernes, que mis profesores eran como, oh sí. 42 00:01:40,800 --> 00:01:42,550 Recuerde, usted tiene un ensayo debido el viernes. 43 00:01:42,550 --> 00:01:45,780 Por lo tanto, no conozco a nadie le gusta pensar en los exámenes parciales, 44 00:01:45,780 --> 00:01:50,620 pero su primer concurso es el 15 de octubre, que octubre está comenzando esta semana. 45 00:01:50,620 --> 00:01:53,290 Por lo tanto, puede ser que sea más pronto de lo que esperaba es todo. 46 00:01:53,290 --> 00:01:57,510 Así que usted no está tirado con la guardia baja cuando Menciono sección de la próxima semana que oh, 47 00:01:57,510 --> 00:02:00,560 su concurso la próxima semana, pensé Te daría un poco más 48 00:02:00,560 --> 00:02:01,500 de las cabezas para arriba ahora. 49 00:02:01,500 --> 00:02:02,970 50 00:02:02,970 --> 00:02:04,660 >> Así que, pon tu problema, número tres. 51 00:02:04,660 --> 00:02:07,070 ¿Cómo la gente ha leído la spec por curiosidad? 52 00:02:07,070 --> 00:02:08,560 53 00:02:08,560 --> 00:02:09,199 Okay. 54 00:02:09,199 --> 00:02:10,229 Nos dieron un par. 55 00:02:10,229 --> 00:02:12,320 Tipo de abajo de la última semana, pero eso está bien. 56 00:02:12,320 --> 00:02:13,650 Sé que era hermoso a cabo. 57 00:02:13,650 --> 00:02:15,120 58 00:02:15,120 --> 00:02:16,660 Así Break Out. 59 00:02:16,660 --> 00:02:21,010 Definitivamente después de que se hacen leer hoy su especificación por lo menos 60 00:02:21,010 --> 00:02:25,240 tratar como descargar código de distribución y el funcionamiento 61 00:02:25,240 --> 00:02:27,430 como la primera inicial Lo que te preguntan a. 62 00:02:27,430 --> 00:02:28,681 63 00:02:28,681 --> 00:02:32,590 Debido a que estamos utilizando código de distribución y una biblioteca 64 00:02:32,590 --> 00:02:36,790 que sólo hemos estado using-- --Es sólo la segunda vez que hemos hecho este juego de parámetros, 65 00:02:36,790 --> 00:02:38,650 cosas locas pueden suceder con su aparato, 66 00:02:38,650 --> 00:02:41,370 y usted quiere encontrar que cabo ahora frente más tarde. 67 00:02:41,370 --> 00:02:45,570 >> Porque si es la noche del jueves o es Miércoles por la noche y por alguna razón 68 00:02:45,570 --> 00:02:48,912 su aparato simplemente no que desee ejecutar con la biblioteca 69 00:02:48,912 --> 00:02:50,620 o con la distribución código, que los medios 70 00:02:50,620 --> 00:02:52,309 ni siquiera se puede empezar a hacer la codificación. 71 00:02:52,309 --> 00:02:54,100 Porque no se puede comprobar para ver si funciona. 72 00:02:54,100 --> 00:02:55,975 Tu no vas a poder para ver si se compila. 73 00:02:55,975 --> 00:03:00,500 Usted quiere cuidar de los principios de la semana, cuando todavía me puede enviar por correo electrónico 74 00:03:00,500 --> 00:03:03,100 o uno de los otros TFS, y que podamos conseguir los fijados. 75 00:03:03,100 --> 00:03:05,410 Porque esas son cuestiones que van a dejar de usted 76 00:03:05,410 --> 00:03:07,120 de hacer ningún progreso real. 77 00:03:07,120 --> 00:03:10,055 No es como un bicho, que usted puede tipo de saltar sobre. 78 00:03:10,055 --> 00:03:10,712 79 00:03:10,712 --> 00:03:13,420 Si usted está teniendo problemas con su aparato o código de distribución, 80 00:03:13,420 --> 00:03:16,211 usted realmente desea conseguir que toman cuidar de más temprano que tarde. 81 00:03:16,211 --> 00:03:20,410 Así que incluso si no vas a realidad empezar a programar, descargar la distribución 82 00:03:20,410 --> 00:03:24,040 código, lea la especificación, asegúrese todo lo que está trabajando allí. 83 00:03:24,040 --> 00:03:25,134 ¿De acuerdo? 84 00:03:25,134 --> 00:03:27,675 Si sólo se puede hacer eso, yo prometer su vida será más fácil. 85 00:03:27,675 --> 00:03:28,800 86 00:03:28,800 --> 00:03:31,410 Y así, usted está probablemente va para hacerlo ahora mismo ¿no? 87 00:03:31,410 --> 00:03:32,100 Okay. 88 00:03:32,100 --> 00:03:33,950 Por lo tanto, cualquier pregunta allí? 89 00:03:33,950 --> 00:03:35,850 Cualquier cosas de logística? 90 00:03:35,850 --> 00:03:36,910 Todo el mundo es bueno? 91 00:03:36,910 --> 00:03:38,270 Okay. 92 00:03:38,270 --> 00:03:41,700 >> Exención de responsabilidad para los de que en la habitación y en línea. 93 00:03:41,700 --> 00:03:45,437 Yo voy a estar tratando de cambiar entre PowerPoint en el aparato 94 00:03:45,437 --> 00:03:47,270 porque vamos estar haciendo algo de código 95 00:03:47,270 --> 00:03:53,630 hoy por la demanda popular del anónimo encuesta sugerencia que envió la semana pasada. 96 00:03:53,630 --> 00:03:55,480 Por lo tanto, vamos a hacer algo de código. 97 00:03:55,480 --> 00:03:57,800 Así que, si ustedes también quieren para encender sus aparatos, 98 00:03:57,800 --> 00:04:02,910 y que debería haber conseguido un correo electrónico de mí, con un archivo de ejemplo. 99 00:04:02,910 --> 00:04:04,310 Por favor, siéntase libre de hacerlo. 100 00:04:04,310 --> 00:04:07,340 >> Por lo tanto, vamos a hablar de BGF, que es un depurador. 101 00:04:07,340 --> 00:04:09,970 Esto va a ayudar a usted tipo de averiguar dónde 102 00:04:09,970 --> 00:04:11,860 las cosas van mal en el código. 103 00:04:11,860 --> 00:04:15,370 Es sólo una manera para que den un paso a través de su código como está sucediendo, 104 00:04:15,370 --> 00:04:19,100 y ser capaz de imprimir las variables o ver lo que está sucediendo realmente 105 00:04:19,100 --> 00:04:22,980 bajo el capó versos su programa sólo correr, es como las fallas, 106 00:04:22,980 --> 00:04:25,030 y usted es como, ni idea lo que acaba de suceder aquí. 107 00:04:25,030 --> 00:04:26,730 No sé cuál es la línea que falló en. 108 00:04:26,730 --> 00:04:29,040 Yo no sé de dónde salió mal. 109 00:04:29,040 --> 00:04:31,280 Así, el BGF le va a ayudar con eso. 110 00:04:31,280 --> 00:04:35,240 Además, si usted decide continuar, sí, y tomar 61, 111 00:04:35,240 --> 00:04:38,430 lo que realmente, realmente ser su mejor amigo, porque yo puedo decir 112 00:04:38,430 --> 00:04:40,840 porque yo estoy pasando por esa clase. 113 00:04:40,840 --> 00:04:43,620 >> Vamos a mirar a binario búsqueda, que si ustedes recuerden 114 00:04:43,620 --> 00:04:47,540 el gran ejemplo de libro de teléfono espectáculo de clase. 115 00:04:47,540 --> 00:04:50,620 Estaremos implementando eso, y caminando a través de que un poco más, 116 00:04:50,620 --> 00:04:54,650 y luego vamos a través de cuatro diferentes tipos, que son de la burbuja, 117 00:04:54,650 --> 00:04:56,285 La selección, inserción, y Merge. 118 00:04:56,285 --> 00:04:57,830 119 00:04:57,830 --> 00:04:58,330 Enfriar. 120 00:04:58,330 --> 00:05:00,390 Así, el BGF como he mencionado, es un depurador. 121 00:05:00,390 --> 00:05:01,400 122 00:05:01,400 --> 00:05:09,370 Y estos son una especie de la gran cosas, las grandes funciones o comandos 123 00:05:09,370 --> 00:05:13,240 que se utiliza dentro de BGF, y voy a caminar que a través de una demostración de que en un segundo. 124 00:05:13,240 --> 00:05:15,360 >> Por lo tanto, esto no es sólo va a quedar abstracto. 125 00:05:15,360 --> 00:05:18,000 Voy a tratar de hacerlo lo más concreto como sea posible para ustedes. 126 00:05:18,000 --> 00:05:19,870 Por lo tanto, romper. 127 00:05:19,870 --> 00:05:22,200 Será ya sea descanso como, algún número, el cual 128 00:05:22,200 --> 00:05:26,900 representa una línea en su programa, o puede nombrar a una función. 129 00:05:26,900 --> 00:05:30,150 Así que, si usted dice romper principal, se detendrá en principal, 130 00:05:30,150 --> 00:05:32,400 y le permiten caminar a través de esa función. 131 00:05:32,400 --> 00:05:36,350 >> Del mismo modo, si usted tiene algunos externos funcionar como Intercambiar o Cubo, 132 00:05:36,350 --> 00:05:38,450 que vimos la semana pasada. 133 00:05:38,450 --> 00:05:41,780 Si usted dice que quebrante uno de estos, cada vez que el programa que realiza, 134 00:05:41,780 --> 00:05:44,290 que va a esperar para que usted pueda decirle lo que debe hacer. 135 00:05:44,290 --> 00:05:47,860 Antes de que se acaba de ejecutar lo que en realidad podría intervenir dentro de la función 136 00:05:47,860 --> 00:05:49,020 y ver lo que está pasando. 137 00:05:49,020 --> 00:05:50,370 138 00:05:50,370 --> 00:05:53,515 Así, A continuación, simplemente salta sobre la siguiente línea, va más funciones. 139 00:05:53,515 --> 00:05:54,730 140 00:05:54,730 --> 00:05:55,560 Paso. 141 00:05:55,560 --> 00:05:56,810 Todos estos son poco abstracto. 142 00:05:56,810 --> 00:06:00,530 Así que, yo sólo voy a correr a través de ellos, pero los verás en uso en un segundo. 143 00:06:00,530 --> 00:06:01,810 >> Entra en una función. 144 00:06:01,810 --> 00:06:04,170 Así como iba diciendo, como con Swap, lo haría 145 00:06:04,170 --> 00:06:07,110 le permiten realmente como si estuvieras como entrar físicamente en el interior, 146 00:06:07,110 --> 00:06:10,990 usted puede meterse con esas variables, impresión lo que son, ver lo que está pasando. 147 00:06:10,990 --> 00:06:12,140 148 00:06:12,140 --> 00:06:14,830 Lista literalmente sólo imprimir el código circundante. 149 00:06:14,830 --> 00:06:17,570 Así que, si usted se olvida de tipo dónde usted está en su programa, 150 00:06:17,570 --> 00:06:19,880 o usted se está preguntando lo que está pasando a su alrededor, 151 00:06:19,880 --> 00:06:23,790 esto sólo se imprimirá un segmento de como cinco o seis líneas a su alrededor. 152 00:06:23,790 --> 00:06:26,080 Por lo tanto, usted puede conseguir orientado acerca de dónde se encuentre. 153 00:06:26,080 --> 00:06:27,230 154 00:06:27,230 --> 00:06:28,650 >> Imprimir alguna variable. 155 00:06:28,650 --> 00:06:34,590 Por lo tanto, si usted tiene la llave como en César, que vamos a ver. 156 00:06:34,590 --> 00:06:36,220 Se puede decir Clave Imprimir en cualquier punto. 157 00:06:36,220 --> 00:06:40,070 Se te dirá lo que el valor es tan que, tal vez en algún lugar a lo largo del camino, 158 00:06:40,070 --> 00:06:42,070 ha sobrescrito su clave. 159 00:06:42,070 --> 00:06:45,495 En realidad se puede decir que debido a que en realidad se puede observar que el valor. 160 00:06:45,495 --> 00:06:46,500 161 00:06:46,500 --> 00:06:48,780 >> En los locales, sólo impresiones cabo sus variables locales. 162 00:06:48,780 --> 00:06:53,120 Así, en cualquier momento que estás dentro de un bucle, y lo que desea es ver como, oh. 163 00:06:53,120 --> 00:06:54,270 ¿Qué es mi yo? 164 00:06:54,270 --> 00:06:57,020 ¿Qué es este valor de clave que inicializar aquí? 165 00:06:57,020 --> 00:06:58,537 ¿Cuál es el mensaje en este momento? 166 00:06:58,537 --> 00:07:00,370 Se acaba de imprimir todos de ellos, de modo que usted 167 00:07:00,370 --> 00:07:04,330 no tienen que individualmente decir, I. Imprimir Imprimir Mensaje. 168 00:07:04,330 --> 00:07:04,970 Clave de impresión. 169 00:07:04,970 --> 00:07:06,190 170 00:07:06,190 --> 00:07:07,700 Y luego mostrar. 171 00:07:07,700 --> 00:07:10,370 Lo que hace es como usted paso a través del programa, 172 00:07:10,370 --> 00:07:13,980 que va sólo asegúrese de que es mostrar alguna variable determinada 173 00:07:13,980 --> 00:07:14,780 en cada punto. 174 00:07:14,780 --> 00:07:17,160 Así que usted También-- --es una especie de atajo donde 175 00:07:17,160 --> 00:07:19,530 usted no tiene que seguir así, oh. 176 00:07:19,530 --> 00:07:23,150 Clave Imprimir o I. Sólo automáticamente lo hará por usted. 177 00:07:23,150 --> 00:07:25,959 >> Así que, con eso, vamos para ver cómo va esto. 178 00:07:25,959 --> 00:07:28,000 Voy a tratar de interruptor a mi aparato. 179 00:07:28,000 --> 00:07:30,200 180 00:07:30,200 --> 00:07:31,271 A ver si puedo hacer esto. 181 00:07:31,271 --> 00:07:31,770 Todos. 182 00:07:31,770 --> 00:07:40,970 183 00:07:40,970 --> 00:07:42,370 Sólo vamos a reflejarla. 184 00:07:42,370 --> 00:07:44,530 No hay nada loco en mi computadora portátil de todos modos. 185 00:07:44,530 --> 00:07:49,600 186 00:07:49,600 --> 00:07:50,100 Okay. 187 00:07:50,100 --> 00:07:57,030 188 00:07:57,030 --> 00:08:01,054 Esto tiene que ser éste. 189 00:08:01,054 --> 00:08:01,795 Es tan pequeña. 190 00:08:01,795 --> 00:08:03,730 191 00:08:03,730 --> 00:08:05,120 Vamos a ver si podemos hacer esto. 192 00:08:05,120 --> 00:08:09,970 193 00:08:09,970 --> 00:08:10,940 >> Okay. 194 00:08:10,940 --> 00:08:15,305 Alice está obviamente luchando aquí sólo un poco, 195 00:08:15,305 --> 00:08:17,995 pero vamos a llegar en un recuerdo. 196 00:08:17,995 --> 00:08:20,810 197 00:08:20,810 --> 00:08:22,020 Okay. 198 00:08:22,020 --> 00:08:25,900 Nosotros sólo vamos a aumentar este. 199 00:08:25,900 --> 00:08:28,770 200 00:08:28,770 --> 00:08:29,380 Okay. 201 00:08:29,380 --> 00:08:31,679 ¿Todo mundo puede ver que tipo de? 202 00:08:31,679 --> 00:08:32,470 Tal vez un poco? 203 00:08:32,470 --> 00:08:33,594 Sé que es un poco pequeña. 204 00:08:33,594 --> 00:08:34,570 205 00:08:34,570 --> 00:08:37,530 No se puede averiguar por cómo hacer esto más grande. 206 00:08:37,530 --> 00:08:38,350 Si alguien sabe. 207 00:08:38,350 --> 00:08:40,309 ¿Alguien sabe cómo hacer que sea más grande? 208 00:08:40,309 --> 00:08:40,932 Okay. 209 00:08:40,932 --> 00:08:42,140 Vamos a rodar con él. 210 00:08:42,140 --> 00:08:45,801 No importa de todos modos porque es sólo ese es el código que ustedes deberían 211 00:08:45,801 --> 00:08:46,300 tener. 212 00:08:46,300 --> 00:08:48,310 >> Lo que es más importante es el terminal de aquí. 213 00:08:48,310 --> 00:08:52,840 214 00:08:52,840 --> 00:08:58,690 Y tenemos aquí ¿Por qué es tan pequeño? 215 00:08:58,690 --> 00:09:02,325 216 00:09:02,325 --> 00:09:02,825 Ajustes. 217 00:09:02,825 --> 00:09:07,920 218 00:09:07,920 --> 00:09:08,420 Oh. 219 00:09:08,420 --> 00:09:09,500 Verdadero Ike. 220 00:09:09,500 --> 00:09:10,880 ¿Cómo es esto? 221 00:09:10,880 --> 00:09:11,770 Fuera de allí. 222 00:09:11,770 --> 00:09:19,370 223 00:09:19,370 --> 00:09:21,810 ¿Eso es mejor para todo el mundo? 224 00:09:21,810 --> 00:09:22,525 Okay ,. 225 00:09:22,525 --> 00:09:23,025 Enfriar. 226 00:09:23,025 --> 00:09:25,830 227 00:09:25,830 --> 00:09:28,220 >> Ya sabes, cuando estás en un CS dificultades técnicas de clase 228 00:09:28,220 --> 00:09:32,971 son una especie de parte de el-- Por lo tanto, vamos a aclarar esto. 229 00:09:32,971 --> 00:09:33,470 Okay. 230 00:09:33,470 --> 00:09:38,060 Así que, aquí en la sección, que hemos tenido aquí. 231 00:09:38,060 --> 00:09:40,830 César es un archivo ejecutable. 232 00:09:40,830 --> 00:09:41,800 Así que lo hice. 233 00:09:41,800 --> 00:09:46,370 Así, una cosa es darse cuenta con GDB es que sólo funciona en archivos ejecutables. 234 00:09:46,370 --> 00:09:48,040 Por lo tanto, no se puede ejecutar en un dotsy. 235 00:09:48,040 --> 00:09:50,532 Usted tiene que hacer realidad Asegúrese de que su código se compila, 236 00:09:50,532 --> 00:09:51,865 y que lo que realmente se puede ejecutar. 237 00:09:51,865 --> 00:09:52,970 238 00:09:52,970 --> 00:09:56,186 >> Por lo tanto, asegúrese de que si no lo hace compilar, que se compile, 239 00:09:56,186 --> 00:09:57,810 para que pueda especie de ejecutar a través de él. 240 00:09:57,810 --> 00:10:04,590 Así que, para empezar a GDB, todo lo que hacen, Gloria tipo BGF, y luego simplemente la 241 00:10:04,590 --> 00:10:06,250 archivo que desea. 242 00:10:06,250 --> 00:10:08,240 Yo siempre escribir mal César. 243 00:10:08,240 --> 00:10:11,730 Pero usted quiere asegurarse de que ya que es un archivo ejecutable, 244 00:10:11,730 --> 00:10:14,210 flash de punto de ti de manera que significa que vas 245 00:10:14,210 --> 00:10:19,240 para ejecutar CSI vas a ejecutar este presenta, ya sea con el depurador. 246 00:10:19,240 --> 00:10:19,910 Okay. 247 00:10:19,910 --> 00:10:22,885 Así que, de hacerlo, se obtiene este tipo de galimatías. 248 00:10:22,885 --> 00:10:24,250 249 00:10:24,250 --> 00:10:25,750 Es sólo todas las cosas acerca de depurador. 250 00:10:25,750 --> 00:10:28,200 Usted realmente no tiene que preocuparse de eso ahora. 251 00:10:28,200 --> 00:10:31,460 Y como puedes ver, tenemos este parens abiertas, PIB, cerca parens, 252 00:10:31,460 --> 00:10:34,690 y sólo un poco se parece a nuestra línea de comandos, ¿verdad? 253 00:10:34,690 --> 00:10:37,010 >> Por lo tanto, lo que queremos hacer-- --así, La primera cosa 254 00:10:37,010 --> 00:10:39,570 es que queremos elegir un lugar para romperlo. 255 00:10:39,570 --> 00:10:42,332 Por lo tanto, hay un bug en este programa de César 256 00:10:42,332 --> 00:10:44,290 que presento, que vamos a averiguar. 257 00:10:44,290 --> 00:10:45,330 258 00:10:45,330 --> 00:10:56,350 Es lo que hace es que se necesita la entrada Barfoo en todas las tapas, y por alguna razón 259 00:10:56,350 --> 00:11:01,950 no cambia A. Simplemente deja solo, es todo lo demás correcto, 260 00:11:01,950 --> 00:11:03,980 pero la segunda letra A permanece sin cambios. 261 00:11:03,980 --> 00:11:07,120 Por lo tanto, vamos a tratar de averiguar por qué es así. 262 00:11:07,120 --> 00:11:10,440 Por lo tanto, lo primero que suelen querer hacer cada vez que inicie el BGF 263 00:11:10,440 --> 00:11:12,010 es averiguar dónde romperlo. 264 00:11:12,010 --> 00:11:14,956 >> Así que César es un programa bastante corto. 265 00:11:14,956 --> 00:11:16,330 Sólo tenemos una función, ¿no? 266 00:11:16,330 --> 00:11:18,520 ¿Cuál era nuestra función en César? 267 00:11:18,520 --> 00:11:19,590 268 00:11:19,590 --> 00:11:24,350 Sólo hay una función, derecho principal? 269 00:11:24,350 --> 00:11:26,490 Principal es una función para todos sus programas. 270 00:11:26,490 --> 00:11:29,230 Si usted no tuvo Principal, podría ser un poco preocupado en este momento, 271 00:11:29,230 --> 00:11:31,000 pero espero que todos hayan tenido Principal allí. 272 00:11:31,000 --> 00:11:34,150 Por lo tanto, lo que podemos hacer es que puede simplemente romper principal, así como así. 273 00:11:34,150 --> 00:11:35,190 Así que, se dice, en Aceptar. 274 00:11:35,190 --> 00:11:37,430 Fijamos nuestro único punto de interrupción allí. 275 00:11:37,430 --> 00:11:42,870 >> Así pues, ahora lo que hay que recordar que es del César toma un argumento de línea de comando de la derecha 276 00:11:42,870 --> 00:11:45,150 y nosotros no hemos hecho eso en cualquier lugar aún. 277 00:11:45,150 --> 00:11:47,560 Por lo tanto, lo que haces es cuando en realidad se va a ejecutar 278 00:11:47,560 --> 00:11:51,540 el programa, cualquier programa que usted está que se ejecuta en el BGF que necesita la línea de comandos 279 00:11:51,540 --> 00:11:55,010 argumentos, que van a la entrada cuando empiece a ejecutarlo. 280 00:11:55,010 --> 00:11:59,280 Así que, en este caso, lo hacemos Ejecutar con una llave de tres. 281 00:11:59,280 --> 00:12:00,770 282 00:12:00,770 --> 00:12:02,040 Y será realmente empezar. 283 00:12:02,040 --> 00:12:08,480 >> Por lo tanto, si usted ve aquí, tenemos Si RC no es igual a 2. 284 00:12:08,480 --> 00:12:12,210 Así que si ustedes todos tenemos ese archivo que envié hasta 285 00:12:12,210 --> 00:12:15,100 verás que eso es como la primera línea de nuestra función principal, ¿no? 286 00:12:15,100 --> 00:12:17,890 Es la comprobación para ver si tenemos el número correcto de argumentos. 287 00:12:17,890 --> 00:12:20,620 Así que, si usted se está preguntando RC si es correcta, 288 00:12:20,620 --> 00:12:23,250 usted puede hacer algo al igual Imprimir RC. 289 00:12:23,250 --> 00:12:24,380 290 00:12:24,380 --> 00:12:28,640 RC es de dos, que es lo que esperábamos, ¿verdad? 291 00:12:28,640 --> 00:12:32,010 >> Por lo tanto, podemos ir a continuación, y continuar a través de. 292 00:12:32,010 --> 00:12:33,200 Por lo tanto, tenemos alguna clave allí. 293 00:12:33,200 --> 00:12:34,260 294 00:12:34,260 --> 00:12:37,090 Y podemos imprimir nuestra clave para asegurarse de que es correcto. 295 00:12:37,090 --> 00:12:38,380 296 00:12:38,380 --> 00:12:39,500 Interesante. 297 00:12:39,500 --> 00:12:41,210 No es exactamente lo que esperábamos. 298 00:12:41,210 --> 00:12:44,810 Así, una cosa es darse cuenta con el BGF también, es 299 00:12:44,810 --> 00:12:49,000 que no es hasta que realmente golpea A continuación, que la línea que acaba de ver 300 00:12:49,000 --> 00:12:50,720 es en realidad ejecuta. 301 00:12:50,720 --> 00:12:53,870 Así que, en este caso clave no ha sido asignado todavía. 302 00:12:53,870 --> 00:12:57,050 Por lo tanto, es un valor clave de basura que se ve en la parte inferior hay. 303 00:12:57,050 --> 00:13:03,680 Negativo $ 120-- --Es de mil millones y algo que cosas extrañas ¿verdad? 304 00:13:03,680 --> 00:13:05,340 No es la llave que nos esperábamos. 305 00:13:05,340 --> 00:13:10,720 Pero si llegamos a continuación, y luego tratar de tecla Print, es tres. 306 00:13:10,720 --> 00:13:11,710 >> Todo el mundo ve eso? 307 00:13:11,710 --> 00:13:13,780 Así que, si te dan algo que usted es como, espera. 308 00:13:13,780 --> 00:13:15,540 Esto es completamente mal, y yo no lo sé 309 00:13:15,540 --> 00:13:20,150 cómo esto iba a pasar, porque todo lo que quiero que hacer es asignar un número, una variable, 310 00:13:20,150 --> 00:13:22,900 intentar golpear A continuación, intente imprimir de nuevo, y ver si funciona. 311 00:13:22,900 --> 00:13:27,830 Debido a que sólo se va a ejecutar y en realidad asignar algo después 312 00:13:27,830 --> 00:13:29,340 golpear en Siguiente. 313 00:13:29,340 --> 00:13:30,336 Tener sentido para todo el mundo? 314 00:13:30,336 --> 00:13:30,836 Uh huh? 315 00:13:30,836 --> 00:13:33,220 >> ALTAVOZ 2: Al azar números ¿qué significa eso? 316 00:13:33,220 --> 00:13:34,790 >> ALTAVOZ 1: Es sólo al azar. 317 00:13:34,790 --> 00:13:35,710 Es sólo basura. 318 00:13:35,710 --> 00:13:38,320 Es sólo algo que su computadora le asignará al azar. 319 00:13:38,320 --> 00:13:39,721 320 00:13:39,721 --> 00:13:40,220 Enfriar. 321 00:13:40,220 --> 00:13:45,760 Así, ahora podemos pasar a través, y así ahora tenemos esta llanura GetString texto. 322 00:13:45,760 --> 00:13:48,600 Por lo tanto, permítanme presentarles lo que va a pasar cuando golpeamos Siguiente aquí. 323 00:13:48,600 --> 00:13:51,320 Nuestra BGF tipo de desaparece, ¿no? 324 00:13:51,320 --> 00:13:55,720 Esto se debe a GetString ahora está ejecutando, ¿verdad? 325 00:13:55,720 --> 00:14:01,460 Así que, cuando vimos texto plano es igual a GetString, parens abiertos y parens, 326 00:14:01,460 --> 00:14:04,380 y llegamos a continuación, que tiene realmente ejecutada ahora. 327 00:14:04,380 --> 00:14:06,580 Por lo tanto, está esperando nosotros a la entrada de algo. 328 00:14:06,580 --> 00:14:13,560 >> Por lo tanto, vamos a la entrada de nuestra comida que es lo que está fallando como te dije 329 00:14:13,560 --> 00:14:18,020 y que sólo dice que es terminado de ejecutarse, que la cierra 330 00:14:18,020 --> 00:14:19,980 significa soporte es salir de ese bucle. 331 00:14:19,980 --> 00:14:21,170 332 00:14:21,170 --> 00:14:25,420 Así, podemos golpear Siguiente, y ahora, como estoy Seguro que todos conocemos de César, 333 00:14:25,420 --> 00:14:27,260 esto es, ¿cuál es esta línea va a hacer. 334 00:14:27,260 --> 00:14:32,030 Es para Int I es igual a 0, N es igual Strlen, texto plano, y luego 335 00:14:32,030 --> 00:14:33,960 I es menor que n, que, además, más. 336 00:14:33,960 --> 00:14:35,210 ¿Qué es este lazo va a hacer? 337 00:14:35,210 --> 00:14:37,900 338 00:14:37,900 --> 00:14:39,160 Abra su mensaje. 339 00:14:39,160 --> 00:14:39,770 Enfriar. 340 00:14:39,770 --> 00:14:41,330 Por lo tanto, vamos a empezar a hacer eso. 341 00:14:41,330 --> 00:14:47,210 >> Así que, si esta condición coincidir, para nuestra primera? 342 00:14:47,210 --> 00:14:52,250 Si se trata de un B, que es texto plano I. puede obtener información acerca de nuestros locales. 343 00:14:52,250 --> 00:14:53,610 344 00:14:53,610 --> 00:14:57,970 Por lo tanto, I es cero, y si seis, que esperamos, y nuestra clave es tres. 345 00:14:57,970 --> 00:14:59,227 Todo lo que tiene sentido, ¿verdad? 346 00:14:59,227 --> 00:15:01,310 Esos números son todos exactamente lo que deberían ser. 347 00:15:01,310 --> 00:15:02,590 348 00:15:02,590 --> 00:15:03,870 Así, tararear? 349 00:15:03,870 --> 00:15:05,620 ALTAVOZ 3: Tengo números aleatorios para la mía. 350 00:15:05,620 --> 00:15:09,156 351 00:15:09,156 --> 00:15:12,030 ALTAVOZ 1: Bueno, podemos check-- --nos puede charlar sobre eso en un segundo. 352 00:15:12,030 --> 00:15:14,110 353 00:15:14,110 --> 00:15:15,750 Pero usted debe ser conseguir esto. 354 00:15:15,750 --> 00:15:17,700 355 00:15:17,700 --> 00:15:20,130 Por lo tanto, si tenemos un capital de B para nuestra primera, 356 00:15:20,130 --> 00:15:22,080 esta condición debe cogerlo, ¿verdad? 357 00:15:22,080 --> 00:15:27,120 Así que, si llegamos a continuación, vemos que este caso en realidad ejecuta. 358 00:15:27,120 --> 00:15:29,220 Porque si usted está siguiendo a lo largo de su código, 359 00:15:29,220 --> 00:15:33,460 esta línea aquí, donde el texto sin formato que se sustituye con esta aritmética, 360 00:15:33,460 --> 00:15:35,720 sólo se ejecuta si el Si condición es correcta ¿verdad? 361 00:15:35,720 --> 00:15:36,905 362 00:15:36,905 --> 00:15:40,240 >> BGF sólo se va a mostrar las cosas que son realmente de ejecución. 363 00:15:40,240 --> 00:15:45,140 Así que si no se cumple esta condición si, es sólo va a pasar a la siguiente línea. 364 00:15:45,140 --> 00:15:46,540 ¿De acuerdo? 365 00:15:46,540 --> 00:15:48,510 Por lo tanto, tenemos que. 366 00:15:48,510 --> 00:15:51,171 Este soporte significa que es cerrado fuera de ese bucle ahora. 367 00:15:51,171 --> 00:15:52,420 Por lo tanto, va a empezar de nuevo. 368 00:15:52,420 --> 00:15:54,760 369 00:15:54,760 --> 00:15:56,280 Al igual que. 370 00:15:56,280 --> 00:15:59,120 Así, que podemos obtener información sobre nuestros lugareños aquí, 371 00:15:59,120 --> 00:16:02,575 y vemos que nuestra primera carta ha cambiado, ¿verdad? 372 00:16:02,575 --> 00:16:05,150 Ahora es una E, como debe ser. 373 00:16:05,150 --> 00:16:07,360 Así, podemos continuar. 374 00:16:07,360 --> 00:16:08,500 >> Y tenemos esta comprobación. 375 00:16:08,500 --> 00:16:09,916 Y este control debería funcionar, ¿no? 376 00:16:09,916 --> 00:16:12,570 Es A. Se debe cambiarse tres cartas hacia adelante. 377 00:16:12,570 --> 00:16:14,320 378 00:16:14,320 --> 00:16:16,530 Pero si te fijas, nos conseguir algo diferente. 379 00:16:16,530 --> 00:16:17,580 380 00:16:17,580 --> 00:16:22,860 Así que en este caso hasta aquí, me llamó que, por lo que esta línea ejecutado, 381 00:16:22,860 --> 00:16:28,620 que modificó nuestra B. Pero, en este caso aquí, 382 00:16:28,620 --> 00:16:32,860 tenemos que acaba de saltar que, y se fue a la [? L Siff. ?] 383 00:16:32,860 --> 00:16:34,660 Así que algo está pasando allí. 384 00:16:34,660 --> 00:16:37,780 Lo que usted está diciendo es que, sabemos que se debe coger aquí, 385 00:16:37,780 --> 00:16:39,200 pero no lo es. 386 00:16:39,200 --> 00:16:42,210 ¿Alguien puede ver lo que nuestro problema está en esa línea? 387 00:16:42,210 --> 00:16:45,380 388 00:16:45,380 --> 00:16:46,969 Es una cosa muy minuto. 389 00:16:46,969 --> 00:16:48,510 Y también se puede mirar el código. 390 00:16:48,510 --> 00:16:49,980 391 00:16:49,980 --> 00:16:54,940 También se line-- olvidar qué línea es en allí-- pero es en el [inaudible]. 392 00:16:54,940 --> 00:16:55,480 ¿Sí? 393 00:16:55,480 --> 00:16:58,639 >> ALTAVOZ 4: Está en la mayor de página si lo lee en el libro. 394 00:16:58,639 --> 00:16:59,430 ALTAVOZ 1: Exactamente. 395 00:16:59,430 --> 00:17:02,620 Por lo tanto, el depurador no podía decir que eso, pero el depurador 396 00:17:02,620 --> 00:17:05,880 podría conseguirle a una línea que sabe que no está funcionando. 397 00:17:05,880 --> 00:17:09,319 Y a veces, cuando todo más adelante en el semestre, cuando 398 00:17:09,319 --> 00:17:12,910 usted está tratando con un centenar, un cien pocas líneas de código, y que 399 00:17:12,910 --> 00:17:16,190 no sé donde está fallando, esta es una gran manera de hacerlo. 400 00:17:16,190 --> 00:17:17,900 401 00:17:17,900 --> 00:17:18,989 Así, encontramos nuestro error. 402 00:17:18,989 --> 00:17:21,530 Usted puede fijarlo en su archivo, y entonces usted podría correr de nuevo, 403 00:17:21,530 --> 00:17:23,029 y todo funcionaría perfectamente. 404 00:17:23,029 --> 00:17:24,970 405 00:17:24,970 --> 00:17:30,590 Y lo más importante es esto puede parecer, en Aceptar. 406 00:17:30,590 --> 00:17:31,090 Sí. 407 00:17:31,090 --> 00:17:31,370 Enfriar. 408 00:17:31,370 --> 00:17:32,744 Tú sabías lo que estás buscando. 409 00:17:32,744 --> 00:17:34,910 Por lo tanto, usted sabía qué hacer. 410 00:17:34,910 --> 00:17:39,021 >> GDB puede ser super útil porque usted puede imprimir todas estas cosas que usted 411 00:17:39,021 --> 00:17:39,520 no lo haría. 412 00:17:39,520 --> 00:17:41,160 Es mucho más útil que printf. 413 00:17:41,160 --> 00:17:43,440 ¿Cuántos de ustedes utiliza como declaraciones printf 414 00:17:43,440 --> 00:17:46,200 averiguar dónde era un error, ¿no? 415 00:17:46,200 --> 00:17:48,450 Así que, con esto, no lo hace tienen que seguir yendo, 416 00:17:48,450 --> 00:17:51,139 y les gusta comentar en Printf, o comentando, 417 00:17:51,139 --> 00:17:52,930 y averiguar lo que usted debe estar imprimiendo. 418 00:17:52,930 --> 00:17:55,670 En realidad, esto sólo le permite paso a paso, imprimir cosas 419 00:17:55,670 --> 00:18:00,000 como que estás pasando, así, usted puede observar cómo cambian en tiempo real, 420 00:18:00,000 --> 00:18:02,190 como su programa se está ejecutando. 421 00:18:02,190 --> 00:18:04,390 >> Y lo hace tomar un poco poco de tiempo para acostumbrarse. 422 00:18:04,390 --> 00:18:07,850 Yo recomendaría sólo tipo de ser un poco frustrado con él 423 00:18:07,850 --> 00:18:08,930 por ahora. 424 00:18:08,930 --> 00:18:13,450 Si usted pasa una hora sobre la la próxima semana para aprender a utilizar el BGF, 425 00:18:13,450 --> 00:18:16,140 usted se ahorrará tanto tiempo más adelante. 426 00:18:16,140 --> 00:18:18,750 Y literalmente. le decimos esto a la gente todos los años, 427 00:18:18,750 --> 00:18:23,890 y recuerdo cuando tomé la clase, yo estaba como, voy a estar bien. 428 00:18:23,890 --> 00:18:24,700 No. 429 00:18:24,700 --> 00:18:27,030 Juego de parámetros 6 se ha encendido y que era como, yo voy a aprender 430 00:18:27,030 --> 00:18:29,500 cómo utilizar GDB porque yo no lo hago saber lo que está pasando aquí. 431 00:18:29,500 --> 00:18:32,940 >> Así que si se toma el tiempo para usarlo en programas más pequeños 432 00:18:32,940 --> 00:18:35,697 que usted va a ser trabajando, como trabajar 433 00:18:35,697 --> 00:18:37,530 por algo así Visionäre, como este. 434 00:18:37,530 --> 00:18:38,800 435 00:18:38,800 --> 00:18:42,850 O si quieres practicar más, estoy seguro Yo podría llegar a los programas con errores, 436 00:18:42,850 --> 00:18:45,300 para depurar si desea. 437 00:18:45,300 --> 00:18:49,300 >> Pero si usted acaba de tomar un poco de tiempo para llegar acostumbrarse a él, simplemente jugar un rato con él, 438 00:18:49,300 --> 00:18:50,550 lo que realmente le servirá bien. 439 00:18:50,550 --> 00:18:52,591 Y es realmente una de esas cosas que usted acaba de 440 00:18:52,591 --> 00:18:57,340 que tenga que probar, y ensuciarse las manos con, antes de que realmente lo entiende. 441 00:18:57,340 --> 00:19:02,090 Realmente sólo entendí una vez Tuve que depurar las cosas con ella, 442 00:19:02,090 --> 00:19:08,170 y es mucho más agradable para tener una idea de cómo depurar más temprano que tarde. 443 00:19:08,170 --> 00:19:08,850 Okay. 444 00:19:08,850 --> 00:19:09,625 Enfriar. 445 00:19:09,625 --> 00:19:12,960 Sé que es algo así como un curso intensivo en el BGF, 446 00:19:12,960 --> 00:19:16,400 y sin duda trabajar en conseguir éstos se vean más grandes para la próxima vez. 447 00:19:16,400 --> 00:19:17,590 448 00:19:17,590 --> 00:19:18,280 Enfriar. 449 00:19:18,280 --> 00:19:20,390 >> Así que, si nos remontamos a nuestra PowerPoint. 450 00:19:20,390 --> 00:19:27,194 451 00:19:27,194 --> 00:19:28,110 ¿Esto va a trabajar? 452 00:19:28,110 --> 00:19:29,711 453 00:19:29,711 --> 00:19:30,210 Awh. 454 00:19:30,210 --> 00:19:31,101 Sí. 455 00:19:31,101 --> 00:19:31,600 Okay. 456 00:19:31,600 --> 00:19:35,480 Así que, si alguna vez necesitas cualquiera de los que una vez más, está la lista. 457 00:19:35,480 --> 00:19:37,160 458 00:19:37,160 --> 00:19:40,830 Buscar Así binario, que todo el mundo recuerda el gran espectáculo de David 459 00:19:40,830 --> 00:19:42,259 rasga los libros de teléfono a la mitad. 460 00:19:42,259 --> 00:19:44,050 Yo realmente no entiendo la guías telefónicas más, 461 00:19:44,050 --> 00:19:46,530 porque al igual que ¿por dónde conseguir los libros de teléfono en estos días? 462 00:19:46,530 --> 00:19:48,220 Realmente no lo sé. 463 00:19:48,220 --> 00:19:49,840 464 00:19:49,840 --> 00:19:50,590 La búsqueda binaria. 465 00:19:50,590 --> 00:19:52,464 ¿Alguien recuerda cómo binario trabajos de búsqueda? 466 00:19:52,464 --> 00:19:54,380 467 00:19:54,380 --> 00:19:55,220 Cualquier persona en absoluto? 468 00:19:55,220 --> 00:19:56,325 ¿Sí? 469 00:19:56,325 --> 00:19:58,283 ALTAVOZ 5: ¿Sabes cuando nos fijamos en los cuales la mitad 470 00:19:58,283 --> 00:20:01,146 sería en, Sobre la base de que, y deshacerse de la otra mitad. 471 00:20:01,146 --> 00:20:01,896 >> ALTAVOZ 1 Exactamente. 472 00:20:01,896 --> 00:20:06,290 Así, búsqueda binaria, es una especie de A-- --nos gusta llamarlo dividir y conquistar. 473 00:20:06,290 --> 00:20:09,170 Por lo tanto, lo que harás es usted se verá en el medio, 474 00:20:09,170 --> 00:20:11,990 y verás si coincide lo que estás buscando. 475 00:20:11,990 --> 00:20:15,420 Y si no lo hace, a continuación, intenta averiguar, es que va a quedar 476 00:20:15,420 --> 00:20:16,450 la mitad o la mitad derecha. 477 00:20:16,450 --> 00:20:19,325 Por lo tanto, esto podría ser si usted está buscando en algo que está en orden alfabético, 478 00:20:19,325 --> 00:20:20,720 ves, oh. 479 00:20:20,720 --> 00:20:22,750 ¿Viene Allison antes de M? 480 00:20:22,750 --> 00:20:23,250 Sí. 481 00:20:23,250 --> 00:20:25,030 Por lo tanto, vamos a mirar a la primera mitad. 482 00:20:25,030 --> 00:20:26,450 >> O podría ser que con los números. 483 00:20:26,450 --> 00:20:28,830 Cualquier cosa que pueda comparar, puede ser ordenada. 484 00:20:28,830 --> 00:20:29,920 485 00:20:29,920 --> 00:20:31,260 Puedes utilizar la búsqueda binaria sobre. 486 00:20:31,260 --> 00:20:32,340 487 00:20:32,340 --> 00:20:37,455 Por lo tanto, alguien se acuerda de este gráfico o lo que es esto? 488 00:20:37,455 --> 00:20:39,520 Es la complejidad asintótica. 489 00:20:39,520 --> 00:20:42,830 Por lo tanto, este gráfico sólo describe el tiempo que 490 00:20:42,830 --> 00:20:46,230 te lleva a resolver un problema como se aumenta el número de las cosas 491 00:20:46,230 --> 00:20:47,090 que está utilizando. 492 00:20:47,090 --> 00:20:51,260 >> Por lo tanto, tenemos N, que es el tiempo lineal. 493 00:20:51,260 --> 00:20:54,560 Si N más de dos, que es ligeramente mejor, todavía crece muy rápido. 494 00:20:54,560 --> 00:20:58,360 Y entonces hemos Login, la cual es lo que consideramos búsqueda binaria. 495 00:20:58,360 --> 00:21:03,630 Si nos damos cuenta, como su problema consigue mucho y mucho más grande, 496 00:21:03,630 --> 00:21:06,600 el tiempo que le lleva a resolverlo en realidad no aumentar mucho. 497 00:21:06,600 --> 00:21:09,010 Es como comparables aquí en el principio. 498 00:21:09,010 --> 00:21:10,060 Eres como, OK. 499 00:21:10,060 --> 00:21:13,000 Cualquier cosa que aquí no hace realmente importa que uno que utilizamos, 500 00:21:13,000 --> 00:21:16,220 pero usted consigue a un millón, un billón. 501 00:21:16,220 --> 00:21:20,010 Usted está tratando de encontrar some-- --you're tratando de encontrar una aguja en un pajar. 502 00:21:20,010 --> 00:21:21,550 >> Creo que quieres este problema. 503 00:21:21,550 --> 00:21:25,850 Usted quiere que esta complejidad, no lineal, porque por todo lo que 504 00:21:25,850 --> 00:21:30,049 sé que tu vas a estar buscando a través de cada aguja individual, cosa de heno, 505 00:21:30,049 --> 00:21:31,340 tratando de buscar la aguja. 506 00:21:31,340 --> 00:21:34,730 Y eso no es demasiado divertido en mi opinión. 507 00:21:34,730 --> 00:21:35,500 Me gusta rápido. 508 00:21:35,500 --> 00:21:36,620 Me gusta eficiente. 509 00:21:36,620 --> 00:21:40,450 Y como esforzados estudiantes le chicos son, ya sabes trabajar más inteligentemente, 510 00:21:40,450 --> 00:21:43,010 no más difícil que el tipo, la forma en que puede compensar estos algoritmos. 511 00:21:43,010 --> 00:21:45,110 512 00:21:45,110 --> 00:21:47,910 >> Por lo tanto, vamos a caminar sólo a través de un ejemplo rápido. 513 00:21:47,910 --> 00:21:51,090 Creo que ustedes deben tener una mano en la búsqueda binaria, 514 00:21:51,090 --> 00:21:54,352 pero en caso de que alguien es un poco borroso, quieren reforzarlo, 515 00:21:54,352 --> 00:21:56,310 vamos a ir a través de un ejemplo aquí. 516 00:21:56,310 --> 00:21:59,490 Por lo tanto, estamos buscando si la matriz contiene siete. 517 00:21:59,490 --> 00:22:00,540 518 00:22:00,540 --> 00:22:06,010 >> Por lo tanto, lo primero que hacemos es buscar en el medio, ¿no? 519 00:22:06,010 --> 00:22:09,340 Y también va a ser la codificación Binary Buscar en tan sólo un segundo. 520 00:22:09,340 --> 00:22:11,310 Por lo tanto, va a ser divertido. 521 00:22:11,310 --> 00:22:13,710 Así que nos fijamos en la pequeñas matrices medias 3. 522 00:22:13,710 --> 00:22:15,501 ¿Tiene 3 equivalen a 7? 523 00:22:15,501 --> 00:22:16,000 No lo hace. 524 00:22:16,000 --> 00:22:18,670 525 00:22:18,670 --> 00:22:19,550 Son las seis. 526 00:22:19,550 --> 00:22:21,480 Así que, ¿es menos de o superior a siete? 527 00:22:21,480 --> 00:22:23,080 528 00:22:23,080 --> 00:22:23,960 Menos que. 529 00:22:23,960 --> 00:22:24,570 Sí. 530 00:22:24,570 --> 00:22:25,170 Trabajo chicos Niza. 531 00:22:25,170 --> 00:22:25,569 532 00:22:25,569 --> 00:22:27,360 Siento que como que debería tener dulces porque 533 00:22:27,360 --> 00:22:29,460 querer tirarlo en los patios. 534 00:22:29,460 --> 00:22:30,270 Es lo que voy a hacer la próxima semana. 535 00:22:30,270 --> 00:22:31,436 Se le mantendrá chicos agudo. 536 00:22:31,436 --> 00:22:32,560 537 00:22:32,560 --> 00:22:34,690 >> Así, nos tiramos de que primera mitad, ¿no? 538 00:22:34,690 --> 00:22:35,670 fue menor que. 539 00:22:35,670 --> 00:22:39,325 sabemos que todo en ese lado de la izquierda 540 00:22:39,325 --> 00:22:41,700 va a ser menos de lo que en realidad estamos buscando. 541 00:22:41,700 --> 00:22:43,491 Por lo tanto, no hay necesidad de prestar atención a ella. 542 00:22:43,491 --> 00:22:45,120 Simplemente olvidarse de él. 543 00:22:45,120 --> 00:22:48,720 Así pues, ahora nos fijamos en nuestro lado derecho, y nos fijamos en el medio de allí, 544 00:22:48,720 --> 00:22:50,510 y ahora es de nueve. 545 00:22:50,510 --> 00:22:55,510 Así, 9 es-- --Todos? 546 00:22:55,510 --> 00:22:57,470 Más de lo que somos buscando, ¿verdad? 547 00:22:57,470 --> 00:22:59,860 Por lo tanto, vamos a lanzar lejos de todo a la derecha. 548 00:22:59,860 --> 00:23:00,970 549 00:23:00,970 --> 00:23:01,940 Al igual que. 550 00:23:01,940 --> 00:23:03,700 Ahora, todo lo que nos queda es una. 551 00:23:03,700 --> 00:23:07,760 Así, comprobamos, es éste lo que estamos buscando? es. 552 00:23:07,760 --> 00:23:08,970 Hemos encontrado lo que queríamos. 553 00:23:08,970 --> 00:23:10,440 554 00:23:10,440 --> 00:23:11,690 Así que hemos terminado. 555 00:23:11,690 --> 00:23:12,550 Bilineal Buscar. 556 00:23:12,550 --> 00:23:15,740 >> Y si te fijas, nos tenía siete entradas allí. 557 00:23:15,740 --> 00:23:24,320 Sólo nos llevó como tres veces, pero si usted está haciendo como un mil millones, 558 00:23:24,320 --> 00:23:28,190 ustedes saben la cantidad de pasos que lo haría tomar si tuviéramos cuatro mil millones de cosas? 559 00:23:28,190 --> 00:23:29,940 560 00:23:29,940 --> 00:23:30,455 Cualquier conjeturas? 561 00:23:30,455 --> 00:23:32,286 562 00:23:32,286 --> 00:23:33,960 Es 32. 563 00:23:33,960 --> 00:23:37,110 32 pasos para encontrar algo en una de cuatro mil millones 564 00:23:37,110 --> 00:23:39,650 elemento de la matriz debido a potencias de dos. 565 00:23:39,650 --> 00:23:43,550 Así que dos es a 32, es de cuatro mil millones. 566 00:23:43,550 --> 00:23:50,430 >> ¿Cómo es eso una locura todavía estás dentro de como un número bastante reducido de pasos 567 00:23:50,430 --> 00:23:52,650 para encontrar algo en cuatro mil millones de elementos. 568 00:23:52,650 --> 00:23:55,730 Así que en ese sentido, estamos va a codificar este 569 00:23:55,730 --> 00:23:58,950 así que ustedes pueden en realidad tipo de ver cómo funciona esto. 570 00:23:58,950 --> 00:24:01,520 Muy bien, así que ustedes pueden codificar. 571 00:24:01,520 --> 00:24:04,100 Voy a dejar que ustedes hablar un poco. 572 00:24:04,100 --> 00:24:07,970 Conozca a la gente que te rodea, que es lo que alguien quería de última sección. 573 00:24:07,970 --> 00:24:10,280 >> Así que llegar a conocer a las personas que te rodean. 574 00:24:10,280 --> 00:24:11,305 Hable por un rato. 575 00:24:11,305 --> 00:24:12,580 576 00:24:12,580 --> 00:24:15,730 Y todo lo que quiero de ti chicos en este momento es sólo 577 00:24:15,730 --> 00:24:17,575 tratar de crear un esquema de pseudocódigo. 578 00:24:17,575 --> 00:24:18,075 ¿De acuerdo? 579 00:24:18,075 --> 00:24:20,825 580 00:24:20,825 --> 00:24:21,325 Whoa. 581 00:24:21,325 --> 00:24:23,320 582 00:24:23,320 --> 00:24:29,520 Todo lo que quiero de ustedes es que eres sólo va a llenar en este caso, mientras que. 583 00:24:29,520 --> 00:24:32,170 Así que me he puesto estos superior y límites inferiores que 584 00:24:32,170 --> 00:24:35,250 representar el comienzo y al final de nuestra matriz. 585 00:24:35,250 --> 00:24:40,440 Y usted va a realidad recorrer y descubrir 586 00:24:40,440 --> 00:24:42,470 lo que estamos haciendo dentro de este bucle while. 587 00:24:42,470 --> 00:24:45,810 >> Así que si usted puede calcular fuera-- tengo una pizca allí-- ¿cuáles son los casos 588 00:24:45,810 --> 00:24:46,640 que tenemos aquí? 589 00:24:46,640 --> 00:24:48,100 590 00:24:48,100 --> 00:24:51,560 Así que si quieres averiguar la casos, vamos a los Pseudocódigo 591 00:24:51,560 --> 00:24:53,350 y luego vamos a realmente codificarlos. 592 00:24:53,350 --> 00:24:55,330 Y va a ser, pensar, es de esperar que va a 593 00:24:55,330 --> 00:24:56,788 ser un poco más fácil de lo esperado. 594 00:24:56,788 --> 00:24:57,554 595 00:24:57,554 --> 00:25:00,220 Porque no es que mucho código, en realidad, lo que es realmente genial. 596 00:25:00,220 --> 00:25:34,110 597 00:25:34,110 --> 00:25:35,018 >> Mm-hm? 598 00:25:35,018 --> 00:25:35,893 >> ESTUDIANTE: [inaudible]? 599 00:25:35,893 --> 00:25:36,984 600 00:25:36,984 --> 00:25:37,650 INSTRUCTOR: Sí. 601 00:25:37,650 --> 00:25:38,595 Había algo para encontrar en el medio. 602 00:25:38,595 --> 00:25:39,552 >> ESTUDIANTE: Así que podemos usar eso. 603 00:25:39,552 --> 00:25:39,770 Okay. 604 00:25:39,770 --> 00:25:40,603 >> INSTRUCTOR: Perfecto. 605 00:25:40,603 --> 00:25:42,950 Así que eso es lo primero que tenemos que hacer. 606 00:25:42,950 --> 00:25:44,330 Así que encontrar el medio. 607 00:25:44,330 --> 00:25:45,415 608 00:25:45,415 --> 00:25:45,915 Gran. 609 00:25:45,915 --> 00:25:47,770 610 00:25:47,770 --> 00:25:55,010 Así que tienes una idea de cómo podríamos en realidad encontrar el centro con código? 611 00:25:55,010 --> 00:25:55,980 >> ESTUDIANTE: Sí. 612 00:25:55,980 --> 00:25:57,000 n más de 2? 613 00:25:57,000 --> 00:25:58,500 614 00:25:58,500 --> 00:25:59,500 PROFESOR: Entonces n sobre 2. 615 00:25:59,500 --> 00:26:05,170 Así que una cosa a recordar es que sus límites superior e inferior cambian. 616 00:26:05,170 --> 00:26:08,110 Seguimos la constricción de la parte de la matriz que estamos buscando para. 617 00:26:08,110 --> 00:26:11,970 Así que n más de 2 sólo funcionará para la primera cosa que hacemos. 618 00:26:11,970 --> 00:26:17,810 Así que teniendo superiores e inferiores en cuenta, ¿cómo podemos conseguir que el elemento medio? 619 00:26:17,810 --> 00:26:20,640 Porque queremos que el medio entre superior e inferior, a la derecha? 620 00:26:20,640 --> 00:26:21,730 621 00:26:21,730 --> 00:26:22,494 Mm-hm? 622 00:26:22,494 --> 00:26:23,369 >> ESTUDIANTE: [inaudible]. 623 00:26:23,369 --> 00:26:26,170 624 00:26:26,170 --> 00:26:28,080 >> INSTRUCTOR: Así que tenemos algún medio. 625 00:26:28,080 --> 00:26:32,730 Y que va a ser superior, más bajo en 2. 626 00:26:32,730 --> 00:26:34,740 627 00:26:34,740 --> 00:26:35,690 Impresionante. 628 00:26:35,690 --> 00:26:36,570 Hay que ir. 629 00:26:36,570 --> 00:26:37,280 Una línea hacia abajo. 630 00:26:37,280 --> 00:26:38,560 Ustedes están en su camino. 631 00:26:38,560 --> 00:26:41,400 Así que ahora que tenemos nuestro medio, ¿qué es lo que queremos hacer? 632 00:26:41,400 --> 00:26:45,050 633 00:26:45,050 --> 00:26:45,900 Justo en general. 634 00:26:45,900 --> 00:26:47,734 Usted no tiene que codificarlo. 635 00:26:47,734 --> 00:26:48,335 Sí. 636 00:26:48,335 --> 00:26:49,210 ESTUDIANTE: [inaudible]? 637 00:26:49,210 --> 00:27:00,310 638 00:27:00,310 --> 00:27:10,310 INSTRUCTOR: Así que es más porque eres encontrar la media entre los dos 639 00:27:10,310 --> 00:27:10,810 de ellos. 640 00:27:10,810 --> 00:27:11,890 641 00:27:11,890 --> 00:27:17,370 Así que si usted piensa en ellos como especie de aumentar desde los lados, 642 00:27:17,370 --> 00:27:21,640 pensar en ello cuando se aproxima el medio, que desea así. 643 00:27:21,640 --> 00:27:27,150 Así que si usted fuera a cada lado de la medio, y tenemos como 5 y 7. 644 00:27:27,150 --> 00:27:31,440 Cuando se agregan juntos obtener 12, se divide por 2, es de 6. 645 00:27:31,440 --> 00:27:33,726 >> A veces es difícil explicar por qué funciona, 646 00:27:33,726 --> 00:27:35,600 pero si usted trabaja a través de un ejemplo a veces, 647 00:27:35,600 --> 00:27:37,962 que va a ayudar a determinar si debería ser más o menos. 648 00:27:37,962 --> 00:27:38,846 Sí. 649 00:27:38,846 --> 00:27:40,830 >> ESTUDIANTE: [inaudible] exactamente en el centro 650 00:27:40,830 --> 00:27:43,950 si tenían un caso en el que hay una gran cantidad de números más pequeños 651 00:27:43,950 --> 00:27:45,860 y al igual que un número grande? 652 00:27:45,860 --> 00:27:49,750 >> INSTRUCTOR: Así que todo lo que necesita es el centro de la matriz. 653 00:27:49,750 --> 00:27:53,010 Así que si usted tenía un montón de números pequeños y entonces uno realmente gran número 654 00:27:53,010 --> 00:27:54,799 al final, no importa. 655 00:27:54,799 --> 00:27:56,840 Todo lo que importa es que que están ordenados, sólo 656 00:27:56,840 --> 00:27:59,339 que desee ver en el centro de la matriz porque eres todavía 657 00:27:59,339 --> 00:28:00,700 cortando su problema a la mitad. 658 00:28:00,700 --> 00:28:03,020 659 00:28:03,020 --> 00:28:03,680 Enfriar. 660 00:28:03,680 --> 00:28:06,430 Así que ahora que tenemos la medio, ¿qué hacemos después? 661 00:28:06,430 --> 00:28:07,150 >> ESTUDIANTE: Comparar. 662 00:28:07,150 --> 00:28:08,150 INSTRUCTOR: El comparar. 663 00:28:08,150 --> 00:28:11,670 Así que comparar a medio value_wanted. 664 00:28:11,670 --> 00:28:14,300 665 00:28:14,300 --> 00:28:15,160 Enfriar. 666 00:28:15,160 --> 00:28:17,950 Así que ya ves aquí arriba tenemos este valor que queremos aquí. 667 00:28:17,950 --> 00:28:22,012 668 00:28:22,012 --> 00:28:23,095 Recuerde que este es un array. 669 00:28:23,095 --> 00:28:24,100 670 00:28:24,100 --> 00:28:26,970 Así medio se refiere al índice. 671 00:28:26,970 --> 00:28:29,785 Así que queremos hacer valores de media. 672 00:28:29,785 --> 00:28:32,380 673 00:28:32,380 --> 00:28:35,650 No te olvides que si quieres para comparar, dobles iguales. 674 00:28:35,650 --> 00:28:38,250 Usted lo único es igual que estés sólo va a reasignar, 675 00:28:38,250 --> 00:28:41,090 y luego, por supuesto, es va a ser el valor que desee. 676 00:28:41,090 --> 00:28:42,300 Así que no hagas eso. 677 00:28:42,300 --> 00:28:44,350 >> Así que vamos a ver si los valores en el medio 678 00:28:44,350 --> 00:28:46,460 es igual al valor que queremos. 679 00:28:46,460 --> 00:28:47,749 680 00:28:47,749 --> 00:28:48,790 No olvide sus llaves. 681 00:28:48,790 --> 00:28:50,520 682 00:28:50,520 --> 00:28:52,235 Dropbox debe desaparecer. 683 00:28:52,235 --> 00:28:54,140 684 00:28:54,140 --> 00:28:56,200 Así que, ¿qué hacemos en este caso? 685 00:28:56,200 --> 00:28:59,360 Si se trata de lo que queremos para volver? 686 00:28:59,360 --> 00:29:01,510 687 00:29:01,510 --> 00:29:02,626 Estamos tratando de decir. 688 00:29:02,626 --> 00:29:03,440 >> ESTUDIANTE: Imprima. 689 00:29:03,440 --> 00:29:05,314 >> INSTRUCTOR: Bueno, no quieren imprimir. 690 00:29:05,314 --> 00:29:08,220 Así que este es un bool aquí, así que quieren volver verdadero o falso. 691 00:29:08,220 --> 00:29:12,280 Estamos diciendo, es este número un [? RRA? ?] Así que si lo es, 692 00:29:12,280 --> 00:29:13,788 simplemente devolvemos verdad. 693 00:29:13,788 --> 00:29:16,780 694 00:29:16,780 --> 00:29:17,760 Si puedo deletrear cierto. 695 00:29:17,760 --> 00:29:18,830 696 00:29:18,830 --> 00:29:20,805 >> ESTUDIANTE: ¿Por qué no le volverá a cero? 697 00:29:20,805 --> 00:29:22,930 INSTRUCTOR: por lo que podría volver a cero si querías. 698 00:29:22,930 --> 00:29:26,780 Pero en este caso porque nuestra función devuelve un bool, 699 00:29:26,780 --> 00:29:28,962 tenemos que volver, ya sea verdadera o falsa. 700 00:29:28,962 --> 00:29:30,920 ESTUDIANTE: Cuando estás diciendo expresión booleana, 701 00:29:30,920 --> 00:29:33,450 puedes configurarlo igual a falsa? 702 00:29:33,450 --> 00:29:39,860 Al igual que si quiero decir, si esta condición no se cumple, al igual que es superior es igual a falsa. 703 00:29:39,860 --> 00:29:42,332 ¿Va a entender si sólo poner falsa en el otro lado? 704 00:29:42,332 --> 00:29:43,040 INSTRUCTOR: Sí. 705 00:29:43,040 --> 00:29:44,820 Así que en realidad si estás siempre haciendo algo 706 00:29:44,820 --> 00:29:49,600 como es superior o es menor, que devuelve verdadero o falso 707 00:29:49,600 --> 00:29:53,850 y en realidad es un mal estilo de por ejemplo igual a igual a verdadero o iguales 708 00:29:53,850 --> 00:29:54,840 es igual a falsa. 709 00:29:54,840 --> 00:30:00,210 Usted desea utilizar ese resultado como a sí mismo como su cheque. 710 00:30:00,210 --> 00:30:04,720 711 00:30:04,720 --> 00:30:05,860 No era lo que yo quería. 712 00:30:05,860 --> 00:30:08,150 713 00:30:08,150 --> 00:30:09,240 Eso es lo que yo quería. 714 00:30:09,240 --> 00:30:13,205 Así que en el caso de que usted está pidiendo acerca de algo así como guardar esto en c. 715 00:30:13,205 --> 00:30:16,320 716 00:30:16,320 --> 00:30:25,150 >> Así que si tenemos int main (void) y algo como esto. 717 00:30:25,150 --> 00:30:31,922 Y usted tiene si es superior de alguna entrada y ya está 718 00:30:31,922 --> 00:30:33,630 preguntando si se puede hacer algo como esto? 719 00:30:33,630 --> 00:30:35,010 720 00:30:35,010 --> 00:30:35,679 Derecha? 721 00:30:35,679 --> 00:30:37,470 ESTUDIANTE: Yo estaba tratando para hacerlo [inaudible]. 722 00:30:37,470 --> 00:30:38,450 Porque si es-- 723 00:30:38,450 --> 00:30:39,200 INSTRUCTOR: Derecho. 724 00:30:39,200 --> 00:30:41,197 ¿Así que quieres que esto es falso, ¿no? 725 00:30:41,197 --> 00:30:41,780 ESTUDIANTE: Sí. 726 00:30:41,780 --> 00:30:45,960 INSTRUCTOR: Así que en este caso quiere que se ejecuta si no es verdad. 727 00:30:45,960 --> 00:30:50,510 Así que la cosa fresca que haces no es esto. 728 00:30:50,510 --> 00:30:52,900 729 00:30:52,900 --> 00:30:55,650 Así que recuerde de exclamación punto niega cosas? 730 00:30:55,650 --> 00:30:58,270 Dice [inaudible] no significa. 731 00:30:58,270 --> 00:31:03,590 Así que si nos fijamos en sólo esta parte aquí, estarías 732 00:31:03,590 --> 00:31:05,740 dicen que evalúa a falso como usted desea. 733 00:31:05,740 --> 00:31:06,790 734 00:31:06,790 --> 00:31:09,880 No es falso es cierto que significa esto sería ejecutar. 735 00:31:09,880 --> 00:31:11,037 ¿Eso tiene sentido? 736 00:31:11,037 --> 00:31:11,620 ESTUDIANTE: Sí. 737 00:31:11,620 --> 00:31:12,453 INSTRUCTOR: Awesome. 738 00:31:12,453 --> 00:31:13,800 739 00:31:13,800 --> 00:31:14,300 Okay. 740 00:31:14,300 --> 00:31:16,330 Así que pudiéramos volver cierto en este caso. 741 00:31:16,330 --> 00:31:20,357 Así que ahora tenemos otros dos casos en este caso. 742 00:31:20,357 --> 00:31:21,565 ¿Cuáles son los otros dos casos? 743 00:31:21,565 --> 00:31:31,610 744 00:31:31,610 --> 00:31:32,900 Vamos a hacerlo de esta manera. 745 00:31:32,900 --> 00:31:40,660 Así que vamos a empezar con otra cosa si los valores de la media 746 00:31:40,660 --> 00:31:43,230 es menor que el valor que queremos. 747 00:31:43,230 --> 00:31:47,200 748 00:31:47,200 --> 00:31:52,020 Así que nuestro valor en el medio es menos que el valor que estamos buscando. 749 00:31:52,020 --> 00:31:53,765 750 00:31:53,765 --> 00:31:56,720 >> Así que unido hacer pensamos que queremos poner al día? 751 00:31:56,720 --> 00:31:57,870 752 00:31:57,870 --> 00:31:58,780 Alto o bajo? 753 00:31:58,780 --> 00:32:01,440 754 00:32:01,440 --> 00:32:01,940 Alta? 755 00:32:01,940 --> 00:32:03,230 756 00:32:03,230 --> 00:32:06,470 Así qué lado de la matriz vamos a estar mirando? 757 00:32:06,470 --> 00:32:07,500 >> ESTUDIANTE: La más baja. 758 00:32:07,500 --> 00:32:09,750 >> INSTRUCTOR: Nos vamos a estar mirando a la izquierda. 759 00:32:09,750 --> 00:32:11,120 Así lo demás si poco valor es menor. 760 00:32:11,120 --> 00:32:14,730 Por lo que su valor medio aquí es menos de lo que queremos. 761 00:32:14,730 --> 00:32:17,202 Por eso queremos tomar la lado derecho de nuestra matriz. 762 00:32:17,202 --> 00:32:18,910 Así que vamos a actualizar nuestra cota inferior. 763 00:32:18,910 --> 00:32:20,210 764 00:32:20,210 --> 00:32:23,020 Así que vamos a reasignar nuestro inferior. 765 00:32:23,020 --> 00:32:25,221 ¿Y qué cree usted que debería ser más baja? 766 00:32:25,221 --> 00:32:26,304 ESTUDIANTE: El valor medio? 767 00:32:26,304 --> 00:32:27,446 768 00:32:27,446 --> 00:32:28,820 INSTRUCTOR: Así que la value-- medio 769 00:32:28,820 --> 00:32:30,136 ESTUDIANTE: Plus 1. 770 00:32:30,136 --> 00:32:31,010 INSTRUCTOR: --plus 1. 771 00:32:31,010 --> 00:32:32,300 772 00:32:32,300 --> 00:32:34,380 ¿Puede alguien decirme por qué tenemos que, más 1? 773 00:32:34,380 --> 00:32:35,730 >> ESTUDIANTE: [? Ningún valor?] es más igual a ella. 774 00:32:35,730 --> 00:32:36,120 >> INSTRUCTOR: Derecho. 775 00:32:36,120 --> 00:32:38,661 Porque ya sabemos que nuestro valor medio no es igual a 776 00:32:38,661 --> 00:32:42,750 y queremos excluirla de todas las búsquedas posteriores. 777 00:32:42,750 --> 00:32:46,360 Si se le olvida que más 1, este le gustaría bucle indefinidamente. 778 00:32:46,360 --> 00:32:49,620 Y sólo le atrapados en un bucle infinito y luego podrás segfault 779 00:32:49,620 --> 00:32:50,370 y las cosas van mal. 780 00:32:50,370 --> 00:32:54,780 Así que asegúrese siempre de que usted no está incluyendo el valor que acaba de 781 00:32:54,780 --> 00:32:55,380 mirado. 782 00:32:55,380 --> 00:32:58,530 Así que nosotros nos encargamos de que con un más 1. 783 00:32:58,530 --> 00:33:04,840 >> Así que ahora tenemos nuestra última condición Siempre que por razones de seguridad 784 00:33:04,840 --> 00:33:12,664 usted puede comprobar aquí, de lo contrario si el valor en el medio es mayor que el valor 785 00:33:12,664 --> 00:33:13,163 queremos. 786 00:33:13,163 --> 00:33:16,260 787 00:33:16,260 --> 00:33:20,230 Eso significa que queremos la mitad de la mano izquierda. 788 00:33:20,230 --> 00:33:21,350 789 00:33:21,350 --> 00:33:23,260 Así que uno vamos a actualizar? 790 00:33:23,260 --> 00:33:23,760 Superior. 791 00:33:23,760 --> 00:33:25,470 792 00:33:25,470 --> 00:33:26,970 ¿Y cuál es éste va a ser igual? 793 00:33:26,970 --> 00:33:31,630 794 00:33:31,630 --> 00:33:33,690 Medio menos 1, ya que, por supuesto, queremos 795 00:33:33,690 --> 00:33:38,370 para asegurarse de que no estamos mirando a ese valor medio nuevo. 796 00:33:38,370 --> 00:33:41,830 797 00:33:41,830 --> 00:33:45,110 Y entonces lo tenemos. 798 00:33:45,110 --> 00:33:45,610 Eso es todo. 799 00:33:45,610 --> 00:33:46,820 Eso es todo de búsqueda binaria es. 800 00:33:46,820 --> 00:33:48,190 No es tan malo, ¿verdad? 801 00:33:48,190 --> 00:33:51,590 Es como 10 líneas de código con el espacio en blanco. 802 00:33:51,590 --> 00:33:57,510 Así que es muy potente, muy útil, se quiere a utilizar en uno de sus conjuntos de procesadores posteriores. 803 00:33:57,510 --> 00:33:59,360 Tal vez no éste, pero más tarde. 804 00:33:59,360 --> 00:34:00,670 Así que aprenderlo. 805 00:34:00,670 --> 00:34:01,510 Quiéralo. 806 00:34:01,510 --> 00:34:02,980 Se tratará bien. 807 00:34:02,980 --> 00:34:05,370 Así que ¿alguien tiene alguna preguntas sobre la búsqueda binaria? 808 00:34:05,370 --> 00:34:06,196 Sí. 809 00:34:06,196 --> 00:34:09,840 >> ESTUDIANTE: ¿Importa si el n es par o impar? 810 00:34:09,840 --> 00:34:10,750 >> INSTRUCTOR: No. 811 00:34:10,750 --> 00:34:18,150 Porque nos echamos a la media como un int, se acaba de truncar la misma. 812 00:34:18,150 --> 00:34:21,600 Por lo tanto, se mantendrá un número entero y lo hará eventualmente ordenar a través de todo. 813 00:34:21,600 --> 00:34:23,909 Así que usted no tiene que preocuparse por eso. 814 00:34:23,909 --> 00:34:24,580 Todo el mundo bien? 815 00:34:24,580 --> 00:34:25,659 816 00:34:25,659 --> 00:34:26,850 Impresionante. 817 00:34:26,850 --> 00:34:27,919 Enfriar. 818 00:34:27,919 --> 00:34:30,836 Así que, ustedes me encargo. 819 00:34:30,836 --> 00:34:33,380 820 00:34:33,380 --> 00:34:33,880 Presentación de diapositivas. 821 00:34:33,880 --> 00:34:35,719 822 00:34:35,719 --> 00:34:43,270 Así como que estábamos hablando, lo sé David mencionó tiempos de ejecución de complejidad. 823 00:34:43,270 --> 00:34:44,420 824 00:34:44,420 --> 00:34:50,340 >> Así que en el mejor de los casos, es sólo uno, que llamamos constante de tiempo. 825 00:34:50,340 --> 00:34:51,909 ¿Puede alguien decirme por qué podría ser? 826 00:34:51,909 --> 00:34:52,969 827 00:34:52,969 --> 00:34:55,800 ¿Qué tipo de escenario habría que implicar? 828 00:34:55,800 --> 00:34:58,260 829 00:34:58,260 --> 00:34:58,760 Mm-hm. 830 00:34:58,760 --> 00:34:59,926 >> ESTUDIANTE: [inaudible] primero-- 831 00:34:59,926 --> 00:35:00,789 832 00:35:00,789 --> 00:35:03,830 INSTRUCTOR: Así que el medio es el primer elemento que llegamos a, ¿verdad? 833 00:35:03,830 --> 00:35:08,167 Así que, o una matriz de uno o lo que estamos buscando sólo 834 00:35:08,167 --> 00:35:09,750 pasa a ser justo en el medio. 835 00:35:09,750 --> 00:35:11,190 836 00:35:11,190 --> 00:35:13,380 Así que esa es nuestra mejor de los casos. 837 00:35:13,380 --> 00:35:17,540 Te metes en problemas reales, probablemente no va a llegar a [inaudible] que a menudo. 838 00:35:17,540 --> 00:35:18,667 839 00:35:18,667 --> 00:35:19,750 ¿Qué pasa con nuestra peor de los casos? 840 00:35:19,750 --> 00:35:21,270 Nuestro peor de los casos es log n. 841 00:35:21,270 --> 00:35:25,360 Y eso tiene que ver con el todo potencias de dos cosa que hablé. 842 00:35:25,360 --> 00:35:30,930 >> Así que en el peor de los casos que significaría que teníamos que cortar la matriz hacia abajo 843 00:35:30,930 --> 00:35:33,270 hasta que había un elemento de uno. 844 00:35:33,270 --> 00:35:34,810 845 00:35:34,810 --> 00:35:38,930 Así que tuvimos que cortar hacia abajo en la mitad tantas veces como nos sea posible. 846 00:35:38,930 --> 00:35:41,430 Es por eso que es log n porque que acaba de seguir dividiendo por dos. 847 00:35:41,430 --> 00:35:42,890 848 00:35:42,890 --> 00:35:45,830 Así suposiciones, cosas que vosotros necesita saber si alguna vez 849 00:35:45,830 --> 00:35:48,050 va a utilizar una búsqueda binaria. 850 00:35:48,050 --> 00:35:50,680 Sus elementos deben ser ordenados. 851 00:35:50,680 --> 00:35:53,890 Tienen que ser resuelto porque esa es la única manera en que 852 00:35:53,890 --> 00:35:57,060 puede saber si usted es capaz de que tirar la mitad de ella. 853 00:35:57,060 --> 00:36:00,260 >> Si tuvieras esta bolsa confusa de los números y que estás diciendo, 854 00:36:00,260 --> 00:36:05,380 Bien, voy a revisar el medio número y el número que estoy buscando 855 00:36:05,380 --> 00:36:08,510 es menos que eso, yo sólo voy tirar arbitrariamente la mitad. 856 00:36:08,510 --> 00:36:11,130 Usted no sabe si su números en ese otro medio. 857 00:36:11,130 --> 00:36:12,655 Su lista tiene que ser resuelto. 858 00:36:12,655 --> 00:36:14,030 859 00:36:14,030 --> 00:36:16,560 Además, esto puede ser seguir adelante un poco, 860 00:36:16,560 --> 00:36:18,360 pero es necesario tener acceso aleatorio. 861 00:36:18,360 --> 00:36:21,940 ¡Tienes que ser capaz de simplemente ir a ese elemento medio. 862 00:36:21,940 --> 00:36:25,110 Si usted tiene que atravesar a través de algo 863 00:36:25,110 --> 00:36:28,630 o le toma medidas adicionales para llegar a ese elemento medio, 864 00:36:28,630 --> 00:36:31,750 no es log n más porque va a añadir más trabajo en él. 865 00:36:31,750 --> 00:36:34,800 Y esto hará un poco más sentido en dos semanas, 866 00:36:34,800 --> 00:36:37,950 pero yo como que quería escribir el prólogo, ustedes dar una idea de lo que es 867 00:36:37,950 --> 00:36:38,999 por venir. 868 00:36:38,999 --> 00:36:40,790 Pero esos son los dos supuestos importantes 869 00:36:40,790 --> 00:36:44,804 que usted necesita para obtener una lista binario. 870 00:36:44,804 --> 00:36:45,720 Asegúrese de que está ordenada. 871 00:36:45,720 --> 00:36:47,920 Esa es la gran uno para ustedes ahora mismo. 872 00:36:47,920 --> 00:36:52,170 Y en que podemos entrar en el resto de nuestras clases. 873 00:36:52,170 --> 00:36:56,444 Así que cuatro burbuja sorts--, inserción, selección y combinación. 874 00:36:56,444 --> 00:36:57,485 Son todos una especie de fresco. 875 00:36:57,485 --> 00:37:02,860 Si ustedes deciden tomar CS 124, usted aprenderá acerca de todo tipo de géneros. 876 00:37:02,860 --> 00:37:07,575 Y si eres un fan de XKCD, hay es un cómico genial sobre 877 00:37:07,575 --> 00:37:11,530 como tipo realmente ineficaces, que me altamente recomendable ir a mirar. 878 00:37:11,530 --> 00:37:16,170 Uno de ellos es como una especie de pánico, que es como, ¡oh no, volver disposición aleatoria. 879 00:37:16,170 --> 00:37:16,991 Sistema apagado. 880 00:37:16,991 --> 00:37:17,490 Deja. 881 00:37:17,490 --> 00:37:19,070 882 00:37:19,070 --> 00:37:21,500 Así humor geek es siempre bueno. 883 00:37:21,500 --> 00:37:22,620 884 00:37:22,620 --> 00:37:25,750 >> Así que ¿alguien recuerda tipo de como simplemente una idea general 885 00:37:25,750 --> 00:37:27,810 de cómo funciona la burbuja especie. 886 00:37:27,810 --> 00:37:31,130 887 00:37:31,130 --> 00:37:32,155 ¿Te acuerdas? 888 00:37:32,155 --> 00:37:32,755 >> ESTUDIANTE: Sí. 889 00:37:32,755 --> 00:37:33,970 >> INSTRUCTOR: A por ello. 890 00:37:33,970 --> 00:37:38,980 >> ESTUDIANTE: ¿Así que estás pasando y si es más grande, entonces usted intercambia los dos. 891 00:37:38,980 --> 00:37:39,820 >> INSTRUCTOR: Mm-hm. 892 00:37:39,820 --> 00:37:40,564 Exactamente. 893 00:37:40,564 --> 00:37:41,730 Así que sólo iterar a través. 894 00:37:41,730 --> 00:37:43,050 Usted comprueba dos números. 895 00:37:43,050 --> 00:37:46,510 Si el anterior es más grande que el que después, 896 00:37:46,510 --> 00:37:50,230 usted acaba de intercambiar de manera que en de esta manera todos los números más altos 897 00:37:50,230 --> 00:37:54,990 la burbuja hacia el final de la lista y todos los números más bajos de la burbuja abajo. 898 00:37:54,990 --> 00:37:59,355 >> ¿Él te muestre chicos el fresco efecto de sonido de clasificación de video? 899 00:37:59,355 --> 00:38:00,480 Es una especie de fresco. 900 00:38:00,480 --> 00:38:01,510 901 00:38:01,510 --> 00:38:05,200 Así como sólo dijo Robert, el algoritmo que acaba de paso a través de la lista, 902 00:38:05,200 --> 00:38:07,930 el intercambio de los valores adyacentes si no están en orden. 903 00:38:07,930 --> 00:38:10,975 Y a continuación, sólo seguir repitiendo hasta que no se realicen canjes. 904 00:38:10,975 --> 00:38:11,990 905 00:38:11,990 --> 00:38:12,740 Así que no está mal, ¿verdad? 906 00:38:12,740 --> 00:38:14,080 907 00:38:14,080 --> 00:38:16,319 Así que sólo tenemos un ejemplo rápido aquí. 908 00:38:16,319 --> 00:38:18,360 Así que esto va a clasificar en orden ascendente. 909 00:38:18,360 --> 00:38:19,470 910 00:38:19,470 --> 00:38:23,470 Así que cuando vamos a través de la primera tiempo, vemos a través de ocho 911 00:38:23,470 --> 00:38:26,880 y seis, obviamente, no son en fin, les cambiamos. 912 00:38:26,880 --> 00:38:27,985 >> Así que busque en la siguiente. 913 00:38:27,985 --> 00:38:29,430 Ocho y no cuatro en orden. 914 00:38:29,430 --> 00:38:30,450 Intercambiarlas. 915 00:38:30,450 --> 00:38:32,530 Y después de ocho y dos, ellos swap. 916 00:38:32,530 --> 00:38:33,470 Hay que ir. 917 00:38:33,470 --> 00:38:39,519 Así que después de su primera pasada, puede saber que su número más grande 918 00:38:39,519 --> 00:38:41,810 va a ser todo el camino en la parte superior, ya que es sólo 919 00:38:41,810 --> 00:38:44,210 va a estar constantemente más grande que todo lo demás 920 00:38:44,210 --> 00:38:46,810 y que sólo va a la burbuja todo el camino hasta el final allí. 921 00:38:46,810 --> 00:38:48,226 ¿Eso tiene sentido para todo el mundo? 922 00:38:48,226 --> 00:38:48,560 923 00:38:48,560 --> 00:38:49,060 Enfriar. 924 00:38:49,060 --> 00:38:51,310 925 00:38:51,310 --> 00:38:53,920 >> Entonces nos fijamos en nuestro segundo pase. 926 00:38:53,920 --> 00:38:54,980 Seis y cuatro, interruptor. 927 00:38:54,980 --> 00:38:55,920 Seis y dos, interruptor. 928 00:38:55,920 --> 00:38:58,700 Y ahora que tenemos algunas cosas en orden. 929 00:38:58,700 --> 00:39:02,240 Así, por cada paso que nos hacer a través de toda nuestra lista, 930 00:39:02,240 --> 00:39:06,320 sabemos que al igual que muchos números al final le han sido ordenados. 931 00:39:06,320 --> 00:39:07,690 932 00:39:07,690 --> 00:39:09,610 Así que hacemos un tercer pase, que es uno de intercambio. 933 00:39:09,610 --> 00:39:10,860 934 00:39:10,860 --> 00:39:15,910 Y luego en el cuarto pasar, tenemos cero ranuras. 935 00:39:15,910 --> 00:39:18,570 Y por lo que sabemos que nuestro matriz se ha clasificado. 936 00:39:18,570 --> 00:39:20,900 >> Y ese es el gran cosa con la burbuja de clase. 937 00:39:20,900 --> 00:39:23,720 Sabemos que cuando nos tener cero swaps, que 938 00:39:23,720 --> 00:39:26,497 significa que todo está en completo orden. 939 00:39:26,497 --> 00:39:27,580 Es una especie de cómo comprobamos. 940 00:39:27,580 --> 00:39:28,740 941 00:39:28,740 --> 00:39:36,480 Así que también vamos a codificar burbuja qué tipo tampoco es tan malo. 942 00:39:36,480 --> 00:39:38,120 Ninguno de estos son tan malos. 943 00:39:38,120 --> 00:39:40,210 Sé que puede parecer un poco de miedo. 944 00:39:40,210 --> 00:39:42,124 Sé que cuando tomé la clase, incluso cuando yo 945 00:39:42,124 --> 00:39:44,290 fue la enseñanza de la clase de la primera vez el año pasado, 946 00:39:44,290 --> 00:39:46,165 Yo estaba como, ¿cómo puedo hacer esto? 947 00:39:46,165 --> 00:39:48,540 Tiene sentido en teoría, pero ¿cómo podemos realmente hacer esto? 948 00:39:48,540 --> 00:39:51,420 Es por eso que también quiero caminar a través de código con ustedes aquí. 949 00:39:51,420 --> 00:39:54,915 Así que tengo un pseudocódigo para ustedes en esta ocasión. 950 00:39:54,915 --> 00:39:55,950 951 00:39:55,950 --> 00:39:58,970 Así que tener esto en mente a medida estamos a punto de hacer la transición más. 952 00:39:58,970 --> 00:40:04,210 Así que tenemos un poco de contador que realiza un seguimiento de nuestros swaps, 953 00:40:04,210 --> 00:40:08,370 porque tenemos que asegurarnos de que estamos comprobando que. 954 00:40:08,370 --> 00:40:11,830 Y iteramos toda la matriz como acabamos de hacer con este ejemplo. 955 00:40:11,830 --> 00:40:12,900 956 00:40:12,900 --> 00:40:17,325 Si el elemento es más grande que antes el elemento después de donde estamos, 957 00:40:17,325 --> 00:40:20,760 nosotros los swap y incrementamos nuestra contador porque tan pronto como nos intercambiamos, 958 00:40:20,760 --> 00:40:23,850 queremos que nuestro contador sabe. 959 00:40:23,850 --> 00:40:26,247 Cualquier pregunta allí? 960 00:40:26,247 --> 00:40:27,580 Algo parece divertido por aquí. 961 00:40:27,580 --> 00:40:29,225 962 00:40:29,225 --> 00:40:32,350 ESTUDIANTE: ¿Se ajusta el contador a cero cada vez que vaya a través del bucle? 963 00:40:32,350 --> 00:40:34,339 ¿No sigues adelante de vuelta a cero cada vez? 964 00:40:34,339 --> 00:40:35,505 INSTRUCTOR: No necesariamente. 965 00:40:35,505 --> 00:40:39,710 Así que lo que pasa es que vamos por aquí. 966 00:40:39,710 --> 00:40:43,830 Así que mientras que, recuerde, esto se ejecutará una vez sin falta. 967 00:40:43,830 --> 00:40:46,480 Así que va a establecer el contador igual a cero, 968 00:40:46,480 --> 00:40:48,070 a continuación, se va a recorrer. 969 00:40:48,070 --> 00:40:50,590 A medida que itera a través de, se actualizará mostrador. 970 00:40:50,590 --> 00:40:51,870 971 00:40:51,870 --> 00:40:56,900 Como se actualiza mostrador, cuando se hace, cuando se alcanza el final de la matriz, 972 00:40:56,900 --> 00:41:00,830 si nuestra lista no ha sido ordenado, contador se habrá actualizado. 973 00:41:00,830 --> 00:41:01,840 974 00:41:01,840 --> 00:41:07,150 >> Así entonces se comprueba la condición y dice, está bien, es contador mayor que cero. 975 00:41:07,150 --> 00:41:09,290 Si lo es, hacerlo de nuevo. 976 00:41:09,290 --> 00:41:14,340 Usted desea restablecer de modo que cuando usted ir a través de, el contador es igual a cero. 977 00:41:14,340 --> 00:41:18,240 Si usted va a través de una ordenada matriz, nada cambia, 978 00:41:18,240 --> 00:41:21,355 esto no funciona, y usted devolver la lista ordenada. 979 00:41:21,355 --> 00:41:23,104 980 00:41:23,104 --> 00:41:24,020 ¿Eso tiene sentido? 981 00:41:24,020 --> 00:41:24,940 982 00:41:24,940 --> 00:41:26,356 ESTUDIANTE: Se podría en un poco. 983 00:41:26,356 --> 00:41:27,147 INSTRUCTOR: OK. 984 00:41:27,147 --> 00:41:28,980 Si hay cualquier otro pregunta que surge. 985 00:41:28,980 --> 00:41:30,180 986 00:41:30,180 --> 00:41:30,680 Sí. 987 00:41:30,680 --> 00:41:33,760 >> ESTUDIANTE: ¿Cuál sería la función será para el canje de los elementos? 988 00:41:33,760 --> 00:41:36,900 >> INSTRUCTOR: Así que en realidad podemos escribir que si vamos a la derecha ahora. 989 00:41:36,900 --> 00:41:37,801 990 00:41:37,801 --> 00:41:38,300 Enfriar. 991 00:41:38,300 --> 00:41:42,155 Así que en esa nota, Alison va para cambiar de nuevo al aparato. 992 00:41:42,155 --> 00:41:43,080 Va a ser divertido. 993 00:41:43,080 --> 00:41:45,170 994 00:41:45,170 --> 00:41:47,390 Y tenemos nuestro agradable burbuja especie cosa aquí. 995 00:41:47,390 --> 00:41:50,800 Así que ya lo hice en bicicleta a través de la matriz. 996 00:41:50,800 --> 00:41:53,030 Tenemos nuestros swaps que son iguales a cero. 997 00:41:53,030 --> 00:41:54,480 998 00:41:54,480 --> 00:41:58,440 Así que queremos intercambiar adyacente elementos si están fuera de orden. 999 00:41:58,440 --> 00:42:03,020 Así que lo primero que tenemos que hacer es iterar a través de nuestra gama. 1000 00:42:03,020 --> 00:42:04,500 1001 00:42:04,500 --> 00:42:08,260 >> Entonces, ¿cómo cree usted que podríamos iterar a través de nuestra gama? 1002 00:42:08,260 --> 00:42:09,720 1003 00:42:09,720 --> 00:42:13,990 Tenemos para y i es igual a 0. 1004 00:42:13,990 --> 00:42:16,950 1005 00:42:16,950 --> 00:42:22,454 Queremos i a ser menos de n menos 1 menos k. 1006 00:42:22,454 --> 00:42:23,870 Y voy a explicar que en un segundo. 1007 00:42:23,870 --> 00:42:26,280 1008 00:42:26,280 --> 00:42:32,830 Así que esta es una optimización aquí donde, recordar cómo he dicho después de cada pase 1009 00:42:32,830 --> 00:42:36,655 a través de la que array saber que todo lo que es en-- 1010 00:42:36,655 --> 00:42:43,590 1011 00:42:43,590 --> 00:42:46,295 >> Así que después de una pasada nos sé que esto está solucionado. 1012 00:42:46,295 --> 00:42:47,370 1013 00:42:47,370 --> 00:42:50,060 Después de dos pases sabemos que todo esto está ordenada. 1014 00:42:50,060 --> 00:42:52,750 Después de tres pases nos Sé que es ordenados. 1015 00:42:52,750 --> 00:42:55,620 Así que la forma en que estoy iteración a través de la matriz aquí, 1016 00:42:55,620 --> 00:43:01,090 se está asegurando de que ir solo a través de lo que sabemos que es clasificar. 1017 00:43:01,090 --> 00:43:01,644 ¿De acuerdo? 1018 00:43:01,644 --> 00:43:02,810 Eso es sólo una optimización. 1019 00:43:02,810 --> 00:43:04,430 1020 00:43:04,430 --> 00:43:08,210 Se puede escribir que ingenuamente sólo iteración a través de todo, 1021 00:43:08,210 --> 00:43:09,970 sería justo tomar más tiempo. 1022 00:43:09,970 --> 00:43:12,470 Con este bucle es de cuatro sólo una buena optimización 1023 00:43:12,470 --> 00:43:18,460 porque sabemos que después de cada pleno iteración a través de la matriz aquí, 1024 00:43:18,460 --> 00:43:24,050 como cada bucle completo aquí, sabemos que uno más de estos elementos 1025 00:43:24,050 --> 00:43:25,760 se ordenarán al final. 1026 00:43:25,760 --> 00:43:28,294 >> Así que no tenemos que preocuparnos por aquellos. 1027 00:43:28,294 --> 00:43:29,710 ¿Eso tiene sentido para todo el mundo? 1028 00:43:29,710 --> 00:43:30,950 Ese pequeño truco genial? 1029 00:43:30,950 --> 00:43:32,060 1030 00:43:32,060 --> 00:43:37,270 Así que en ese caso, si estamos iteración a través de, 1031 00:43:37,270 --> 00:43:50,590 sabemos que queremos comprobar si matriz n y n + 1 están en orden. 1032 00:43:50,590 --> 00:43:52,640 1033 00:43:52,640 --> 00:43:53,559 Okay. 1034 00:43:53,559 --> 00:43:54,600 Así que aquí está el pseudocódigo. 1035 00:43:54,600 --> 00:43:57,540 Queremos comprobar si matriz n y n + 1 están en orden. 1036 00:43:57,540 --> 00:43:59,520 Entonces, ¿qué podríamos tener allí? 1037 00:43:59,520 --> 00:44:01,090 1038 00:44:01,090 --> 00:44:03,120 Va a ser un poco de condicional. 1039 00:44:03,120 --> 00:44:04,220 Será un si. 1040 00:44:04,220 --> 00:44:07,066 >> ESTUDIANTE: Si matriz n es menos de matriz de n más 1. 1041 00:44:07,066 --> 00:44:07,816 INSTRUCTOR: Mm-hm. 1042 00:44:07,816 --> 00:44:09,000 1043 00:44:09,000 --> 00:44:10,699 Bueno, menor que o mayor que. 1044 00:44:10,699 --> 00:44:11,615 ESTUDIANTE: Mayor que. 1045 00:44:11,615 --> 00:44:15,850 1046 00:44:15,850 --> 00:44:17,620 Entonces queremos para intercambiarlas. 1047 00:44:17,620 --> 00:44:18,570 Exactamente. 1048 00:44:18,570 --> 00:44:23,570 Así que ahora nos metemos en lo que es la mecanismo para el intercambio de ellos? 1049 00:44:23,570 --> 00:44:24,840 1050 00:44:24,840 --> 00:44:28,137 Así que nos fuimos a través de este breve, un tipo de función de intercambio de la semana pasada. 1051 00:44:28,137 --> 00:44:29,595 ¿Alguien recuerda cómo funcionaba? 1052 00:44:29,595 --> 00:44:32,300 1053 00:44:32,300 --> 00:44:34,950 Así que no podemos simplemente reasignar ellos, ¿verdad? 1054 00:44:34,950 --> 00:44:36,640 Debido a que uno de ellos se pierda. 1055 00:44:36,640 --> 00:44:41,696 Si hemos dicho que A es igual a B y B a continuación, es igual a A, todo repente ambos 1056 00:44:41,696 --> 00:44:43,150 son sólo igual a B. 1057 00:44:43,150 --> 00:44:45,720 >> Así que lo que tenemos que hacer es que tener una variable temporal que es 1058 00:44:45,720 --> 00:44:49,055 va a celebrar uno de los nuestros, mientras que estamos en el proceso de intercambio. 1059 00:44:49,055 --> 00:44:50,200 1060 00:44:50,200 --> 00:44:56,464 Así que lo que tenemos es que tendremos un poco de int temperatura es igual a-- puede asignarlo 1061 00:44:56,464 --> 00:44:59,130 a lo que usted desea, apenas Asegúrese de mantener un registro de it-- 1062 00:44:59,130 --> 00:45:01,840 por lo que en este caso, voy a asignarla a la matriz n + 1. 1063 00:45:01,840 --> 00:45:03,360 1064 00:45:03,360 --> 00:45:07,674 Así que va a celebrar lo que sea valor está en ese segundo bloque 1065 00:45:07,674 --> 00:45:08,590 que estamos viendo. 1066 00:45:08,590 --> 00:45:09,700 1067 00:45:09,700 --> 00:45:13,240 >> Y entonces lo que podemos hacer es que podemos ir adelante y variedad Reasignar n + 1, 1068 00:45:13,240 --> 00:45:14,990 porque sabemos que que tienen valor almacenado. 1069 00:45:14,990 --> 00:45:16,645 1070 00:45:16,645 --> 00:45:19,270 Este es también uno de los grandes cosas-- No sé si alguno de ustedes 1071 00:45:19,270 --> 00:45:23,780 tenido problemas donde si interruptor de dos líneas de código de repente las cosas funcionaron. 1072 00:45:23,780 --> 00:45:25,880 El orden es muy importante en CS. 1073 00:45:25,880 --> 00:45:29,450 Así que asegúrese de diagramar las cosas, si es posible 1074 00:45:29,450 --> 00:45:31,230 en cuanto a lo que está sucediendo realmente. 1075 00:45:31,230 --> 00:45:34,256 Así que ahora vamos a reasignar matriz n + 1, 1076 00:45:34,256 --> 00:45:36,005 porque sabemos que que tienen valor almacenado. 1077 00:45:36,005 --> 00:45:37,090 1078 00:45:37,090 --> 00:45:41,560 >> Y podemos asignar que a la matriz n o en este caso array i. 1079 00:45:41,560 --> 00:45:50,540 1080 00:45:50,540 --> 00:45:51,465 Demasiadas variables. 1081 00:45:51,465 --> 00:45:54,230 1082 00:45:54,230 --> 00:45:55,470 Okay. 1083 00:45:55,470 --> 00:46:01,500 Array Así que ahora que hemos reasignado i más 1 para igualar lo que está en serie i. 1084 00:46:01,500 --> 00:46:08,240 Y ahora podemos volver atrás y asignar serie i para qué? 1085 00:46:08,240 --> 00:46:10,680 1086 00:46:10,680 --> 00:46:11,180 Cualquier persona? 1087 00:46:11,180 --> 00:46:13,490 1088 00:46:13,490 --> 00:46:14,010 >> ESTUDIANTE: 10. 1089 00:46:14,010 --> 00:46:14,680 >> INSTRUCTOR: 10. 1090 00:46:14,680 --> 00:46:15,180 Exactamente. 1091 00:46:15,180 --> 00:46:16,930 1092 00:46:16,930 --> 00:46:18,640 Y una última cosa. 1093 00:46:18,640 --> 00:46:21,840 Si hemos cambiado ahora, ¿qué es lo que tenemos que hacer? 1094 00:46:21,840 --> 00:46:23,740 ¿Qué es lo único eso va a decirnos 1095 00:46:23,740 --> 00:46:27,542 si alguna vez terminar este programa? 1096 00:46:27,542 --> 00:46:29,250 Lo que nos dice que tenemos tener una lista ordenada? 1097 00:46:29,250 --> 00:46:31,560 1098 00:46:31,560 --> 00:46:33,750 Si no realizamos ningún swaps, ¿verdad? 1099 00:46:33,750 --> 00:46:36,900 Si swaps es igual a cero al final de este. 1100 00:46:36,900 --> 00:46:42,975 Así que cada vez que se realiza un intercambio, ya que acaba de hacer aquí, queremos actualizar los swaps. 1101 00:46:42,975 --> 00:46:45,002 1102 00:46:45,002 --> 00:46:47,210 Y yo sabía que había un pregunta anterior sobre ¿verdad 1103 00:46:47,210 --> 00:46:49,689 utilizar cero o uno en su lugar de verdadero o falso. 1104 00:46:49,689 --> 00:46:50,980 Y eso es lo que hace esto aquí. 1105 00:46:50,980 --> 00:46:52,750 Así que esto dice que si no los swaps. 1106 00:46:52,750 --> 00:47:01,310 Así que si los swaps es cero, lo que es-- Siempre conseguir mis verdades y mis falses mezclados. 1107 00:47:01,310 --> 00:47:03,960 Queremos que evaluemos true y no lo es. 1108 00:47:03,960 --> 00:47:07,680 1109 00:47:07,680 --> 00:47:09,630 Así que si es cero, entonces es falso. 1110 00:47:09,630 --> 00:47:12,560 Si niegas con un [? Bang?] se convierte en verdadera. 1111 00:47:12,560 --> 00:47:13,975 Así que esta línea se ejecuta. 1112 00:47:13,975 --> 00:47:15,060 1113 00:47:15,060 --> 00:47:17,370 >> Verdades y falsa y ceros y unos consiguen loco. 1114 00:47:17,370 --> 00:47:20,690 Sólo si usted camina lentamente a través de ella tendrá sentido. 1115 00:47:20,690 --> 00:47:23,320 Pero eso es lo que este pequeño poco de código aquí hace. 1116 00:47:23,320 --> 00:47:26,490 Así que esto comprueba hemos hecho ningún swaps. 1117 00:47:26,490 --> 00:47:30,054 Así que si es algo además de cero, que va a ser falso 1118 00:47:30,054 --> 00:47:31,970 y toda la cosa es va a ejecutar de nuevo. 1119 00:47:31,970 --> 00:47:33,150 1120 00:47:33,150 --> 00:47:33,650 Fresco? 1121 00:47:33,650 --> 00:47:34,660 1122 00:47:34,660 --> 00:47:36,000 >> ESTUDIANTE: ¿Qué hace el descanso? 1123 00:47:36,000 --> 00:47:38,990 >> INSTRUCTOR: Romper sólo que rompe fuera del circuito. 1124 00:47:38,990 --> 00:47:41,570 Así que en este caso sería al igual que terminar el programa 1125 00:47:41,570 --> 00:47:43,828 y lo haría sólo tener su lista ordenada. 1126 00:47:43,828 --> 00:47:44,536 ESTUDIANTE: Amazing. 1127 00:47:44,536 --> 00:47:48,094 1128 00:47:48,094 --> 00:47:49,010 INSTRUCTOR: Lo siento? 1129 00:47:49,010 --> 00:47:52,110 ESTUDIANTE: Debido a que anteriormente utilizado escrito 1 sobre escrito cero 1130 00:47:52,110 --> 00:47:54,170 para presentar que si que va a funcionar o no. 1131 00:47:54,170 --> 00:47:54,878 >> INSTRUCTOR: Sí. 1132 00:47:54,878 --> 00:47:56,410 Así que usted puede devolver cero o 1. 1133 00:47:56,410 --> 00:47:58,950 En este caso, porque no estamos en realidad hacer cualquier cosa con la función, 1134 00:47:58,950 --> 00:48:00,150 sólo queremos que se rompa. 1135 00:48:00,150 --> 00:48:02,680 En realidad no se preocupan por él. 1136 00:48:02,680 --> 00:48:06,960 Freno también es bueno si se utiliza para romper 1137 00:48:06,960 --> 00:48:10,710 de cuatro bucles o condiciones que usted no desea mantener la ejecución. 1138 00:48:10,710 --> 00:48:12,110 Simplemente te lleva fuera de ellos. 1139 00:48:12,110 --> 00:48:13,587 1140 00:48:13,587 --> 00:48:14,795 Es un poco de una cosa matiz. 1141 00:48:14,795 --> 00:48:16,737 1142 00:48:16,737 --> 00:48:18,445 Me siento como si hubiera una gran cantidad de mano que agita, 1143 00:48:18,445 --> 00:48:19,740 como usted aprenderá acerca de esto pronto. 1144 00:48:19,740 --> 00:48:20,955 >> Pero usted aprenderá acerca de esto pronto. 1145 00:48:20,955 --> 00:48:21,500 Prometo. 1146 00:48:21,500 --> 00:48:22,670 1147 00:48:22,670 --> 00:48:23,170 Okay. 1148 00:48:23,170 --> 00:48:24,840 Así que no todo el mundo consigue burbuja especie? 1149 00:48:24,840 --> 00:48:25,550 No está mal. 1150 00:48:25,550 --> 00:48:31,910 Recorrer, cosas swaps utilizando un variable TEMP, y todos estamos establece allí? 1151 00:48:31,910 --> 00:48:32,960 Enfriar. 1152 00:48:32,960 --> 00:48:34,080 Impresionante. 1153 00:48:34,080 --> 00:48:34,807 Okay. 1154 00:48:34,807 --> 00:48:35,765 Volver al principio PowerPoint. 1155 00:48:35,765 --> 00:48:38,140 1156 00:48:38,140 --> 00:48:40,130 Cualquier pregunta en general sobre éstos hasta el momento? 1157 00:48:40,130 --> 00:48:41,200 1158 00:48:41,200 --> 00:48:41,700 Enfriar. 1159 00:48:41,700 --> 00:48:43,110 1160 00:48:43,110 --> 00:48:43,695 Mm-hm. 1161 00:48:43,695 --> 00:48:45,279 >> ESTUDIANTE: [inaudible] int main normalmente. 1162 00:48:45,279 --> 00:48:46,695 No tienes que tener que para esto? 1163 00:48:46,695 --> 00:48:48,400 1164 00:48:48,400 --> 00:48:53,550 >> INSTRUCTOR: Así que estábamos buscando justo en el algoritmo de ordenación real. 1165 00:48:53,550 --> 00:48:54,559 1166 00:48:54,559 --> 00:48:56,350 Si tuvieras que dentro como un programa más amplio, 1167 00:48:56,350 --> 00:48:57,891 usted tendría un algún lugar principal int. 1168 00:48:57,891 --> 00:49:00,070 1169 00:49:00,070 --> 00:49:02,880 Dependiendo de donde usted utilizar este algoritmo, 1170 00:49:02,880 --> 00:49:05,860 sería determinar cuál es siendo devuelto por él. 1171 00:49:05,860 --> 00:49:09,960 Sin embargo, para nuestro caso, estamos estrictamente mirando cómo funciona esto en realidad 1172 00:49:09,960 --> 00:49:11,300 recorrer una matriz. 1173 00:49:11,300 --> 00:49:12,570 Así que no te preocupes por eso. 1174 00:49:12,570 --> 00:49:14,150 1175 00:49:14,150 --> 00:49:19,830 >> Así que estábamos hablando mejor de los casos y peor de los casos para la búsqueda binaria. 1176 00:49:19,830 --> 00:49:22,470 Así también es importante hacer que para cada una de nuestras clases. 1177 00:49:22,470 --> 00:49:24,200 1178 00:49:24,200 --> 00:49:27,560 Entonces, ¿qué cree usted que es el peor de los casos caso el tiempo de ejecución de la burbuja especie? 1179 00:49:27,560 --> 00:49:29,560 1180 00:49:29,560 --> 00:49:30,700 Ustedes recuerdan? 1181 00:49:30,700 --> 00:49:31,784 >> ESTUDIANTE: N menos 1. 1182 00:49:31,784 --> 00:49:32,700 INSTRUCTOR: N menos 1. 1183 00:49:32,700 --> 00:49:35,070 Así que eso significa que hay n menos 1 comparaciones. 1184 00:49:35,070 --> 00:49:40,060 Así que una cosa es darse cuenta de que en la primera iteración, 1185 00:49:40,060 --> 00:49:43,360 vamos a través, comparamos estos dos-- así que eso es 1. 1186 00:49:43,360 --> 00:49:46,685 Estos dos, tres, cuatro. 1187 00:49:46,685 --> 00:49:48,070 1188 00:49:48,070 --> 00:49:55,050 Así que después de una iteración que ya tiene cuatro comparaciones. 1189 00:49:55,050 --> 00:49:58,230 Cuando estoy hablando de tiempo de ejecución y n. 1190 00:49:58,230 --> 00:50:04,680 N representa el número de comparaciones como una función de cuántos elementos 1191 00:50:04,680 --> 00:50:05,570 tenemos. 1192 00:50:05,570 --> 00:50:06,430 ¿De acuerdo? 1193 00:50:06,430 --> 00:50:08,860 >> Así que vamos a través, tenemos cuatro. 1194 00:50:08,860 --> 00:50:11,780 La próxima vez que usted sabe no lo hacemos tiene que hacerse cargo de esto. 1195 00:50:11,780 --> 00:50:15,140 Comparamos estos dos, estos dos, estos dos, 1196 00:50:15,140 --> 00:50:20,050 y si no tuviéramos que la optimización con los cuatro bucle que escribí, 1197 00:50:20,050 --> 00:50:22,750 usted estaría comparando aquí de todos modos. 1198 00:50:22,750 --> 00:50:26,170 Así que tendría que ejecutar a través de la matriz 1199 00:50:26,170 --> 00:50:34,380 y hacer comparaciones n n veces, porque cada vez que 1200 00:50:34,380 --> 00:50:36,670 correr a través de él clasificamos una cosa. 1201 00:50:36,670 --> 00:50:38,300 1202 00:50:38,300 --> 00:50:41,475 >> Y cada vez que nos encontramos a través de la matriz, hacemos n comparaciones. 1203 00:50:41,475 --> 00:50:42,920 1204 00:50:42,920 --> 00:50:46,330 Así que nuestro tiempo de ejecución de esto es en realidad n cuadrado, que 1205 00:50:46,330 --> 00:50:48,400 es mucho peor en nuestra ingrese final porque eso 1206 00:50:48,400 --> 00:50:51,965 significa que si teníamos cuatro miles de millones de elementos, es 1207 00:50:51,965 --> 00:50:55,260 nos va a llevar cuatro mil millones cuadrado en lugar de 32. 1208 00:50:55,260 --> 00:51:01,240 Así que no es el mejor tiempo de ejecución, pero para algunas cosas, 1209 00:51:01,240 --> 00:51:04,610 ya sabes, si estás dentro de de un cierto rango de elementos 1210 00:51:04,610 --> 00:51:06,540 burbuja especie puede estar bien para su uso. 1211 00:51:06,540 --> 00:51:07,530 >> Okay. 1212 00:51:07,530 --> 00:51:12,290 Así que ahora lo que es el mejor tiempo de ejecución de caso? 1213 00:51:12,290 --> 00:51:14,357 1214 00:51:14,357 --> 00:51:14,940 ESTUDIANTE: Cero? 1215 00:51:14,940 --> 00:51:16,420 O 1? 1216 00:51:16,420 --> 00:51:18,140 >> INSTRUCTOR: 1 Así que lo haría ser una comparación. 1217 00:51:18,140 --> 00:51:19,114 Derecha. 1218 00:51:19,114 --> 00:51:20,002 >> ESTUDIANTE: N menos 1? 1219 00:51:20,002 --> 00:51:21,380 1220 00:51:21,380 --> 00:51:22,320 >> INSTRUCTOR: Así que, sí. 1221 00:51:22,320 --> 00:51:22,990 Así n menos 1. 1222 00:51:22,990 --> 00:51:26,510 Siempre que tenga un concepto como n menos 1, tendemos a simplemente dejarlo 1223 00:51:26,510 --> 00:51:31,680 y acabamos de decir n porque tienes comparar cada uno de these-- cada par. 1224 00:51:31,680 --> 00:51:36,470 Así que sería n menos 1, que nos que acabábamos de decir es aproximadamente n. 1225 00:51:36,470 --> 00:51:39,280 Cuando usted está tratando con el tiempo de ejecución, todo está en aproximados. 1226 00:51:39,280 --> 00:51:43,860 Mientras el exponente es correcta, eres bastante bueno. 1227 00:51:43,860 --> 00:51:45,700 >> Así es como nos ocupamos de ello. 1228 00:51:45,700 --> 00:51:47,410 1229 00:51:47,410 --> 00:51:51,780 Así que el mejor de los casos es n, el cual significa que la lista ya está ordenado, 1230 00:51:51,780 --> 00:51:54,320 y todo lo que hacemos es ejecutar a través de y compruebe que está ordenada. 1231 00:51:54,320 --> 00:51:56,110 1232 00:51:56,110 --> 00:51:56,855 Enfriar. 1233 00:51:56,855 --> 00:51:57,355 Bien. 1234 00:51:57,355 --> 00:51:58,980 1235 00:51:58,980 --> 00:52:01,920 Así que como ves aquí, sólo hay algunas más gráficos. 1236 00:52:01,920 --> 00:52:02,660 Así que n al cuadrado. 1237 00:52:02,660 --> 00:52:03,780 1238 00:52:03,780 --> 00:52:05,120 Diversión. 1239 00:52:05,120 --> 00:52:09,730 Mucho peor que n como vemos, y mucho, mucho peor que 2n registro. 1240 00:52:09,730 --> 00:52:12,060 Y entonces usted también consigue en registro registros. 1241 00:52:12,060 --> 00:52:18,020 Y usted toma 124, te metes en como estrella de registro, que es como una locura. 1242 00:52:18,020 --> 00:52:20,172 Así que si usted está interesado, estrella de registro de búsqueda. 1243 00:52:20,172 --> 00:52:20,880 Es un poco de diversión. 1244 00:52:20,880 --> 00:52:22,800 1245 00:52:22,800 --> 00:52:24,220 Así que tenemos este gran cuadro. 1246 00:52:24,220 --> 00:52:25,360 1247 00:52:25,360 --> 00:52:28,720 Sólo una cabeza, este un maravillosa carta tenga 1248 00:52:28,720 --> 00:52:31,350 para su medio plazo, ya que tiempo para pedirle que estos se adelgaza. 1249 00:52:31,350 --> 00:52:36,090 Así que sólo un cabezas, tienen esto en su a medio plazo en su hoja de trucos agradable 1250 00:52:36,090 --> 00:52:36,616 Ya está. 1251 00:52:36,616 --> 00:52:37,990 Así que acabamos de ver burbujas especie. 1252 00:52:37,990 --> 00:52:39,510 1253 00:52:39,510 --> 00:52:42,370 Peor de los casos, n al cuadrado, mejor de los casos, n. 1254 00:52:42,370 --> 00:52:43,367 1255 00:52:43,367 --> 00:52:44,950 Y vamos a mirar a los demás. 1256 00:52:44,950 --> 00:52:47,940 >> Y como se puede ver, la única uno que realmente le va bien 1257 00:52:47,940 --> 00:52:50,910 es una especie de combinación, que vamos a entrar en por qué. 1258 00:52:50,910 --> 00:52:52,690 1259 00:52:52,690 --> 00:52:55,215 Así que vamos a ir a la siguiente aquí-- selección especie. 1260 00:52:55,215 --> 00:52:56,360 1261 00:52:56,360 --> 00:52:58,420 ¿Alguien recuerda cómo selección trabajó especie? 1262 00:52:58,420 --> 00:53:05,200 1263 00:53:05,200 --> 00:53:05,700 No te lo pienses. 1264 00:53:05,700 --> 00:53:08,210 >> ESTUDIANTE: Básicamente pasar por un orden y crear una nueva lista. 1265 00:53:08,210 --> 00:53:11,001 Y así como usted está poniendo elementos en, los puso en el lugar correcto 1266 00:53:11,001 --> 00:53:11,750 en la nueva lista. 1267 00:53:11,750 --> 00:53:14,040 >> INSTRUCTOR: ¿Así que los sonidos más como la ordenación por inserción. 1268 00:53:14,040 --> 00:53:15,040 Pero estás muy cerca. 1269 00:53:15,040 --> 00:53:15,915 Son muy similares. 1270 00:53:15,915 --> 00:53:17,440 Incluso llego ellos confunden a veces. 1271 00:53:17,440 --> 00:53:18,981 Antes de esta sección yo estaba como, espere. 1272 00:53:18,981 --> 00:53:20,130 1273 00:53:20,130 --> 00:53:20,630 Okay. 1274 00:53:20,630 --> 00:53:24,141 Así que lo que usted desea hacer es una especie de selección, 1275 00:53:24,141 --> 00:53:25,890 la forma en que se pueda imaginar al respecto y la forma 1276 00:53:25,890 --> 00:53:30,140 Me aseguro de no tratar de conseguir se confundan, es que pasa por 1277 00:53:30,140 --> 00:53:33,280 y selecciona el menor número y 1278 00:53:33,280 --> 00:53:36,070 pone que al principio de su lista. 1279 00:53:36,070 --> 00:53:37,730 Se intercambia con ese primer lugar. 1280 00:53:37,730 --> 00:53:42,600 1281 00:53:42,600 --> 00:53:45,370 De hecho, tienen un ejemplo para mí. 1282 00:53:45,370 --> 00:53:46,540 Impresionante. 1283 00:53:46,540 --> 00:53:50,130 Así que una manera de pensar en la selección it-- Ordena, seleccione el valor más pequeño. 1284 00:53:50,130 --> 00:53:51,940 Y vamos a ejecutar a través de un ejemplo 1285 00:53:51,940 --> 00:53:55,320 que creo que va a ayudar porque Creo visuales siempre ayudan. 1286 00:53:55,320 --> 00:53:58,510 Así que empezamos con algo que es completamente sin clasificar. 1287 00:53:58,510 --> 00:54:00,730 Rojo será sin clasificar, verde, serán ordenados. 1288 00:54:00,730 --> 00:54:02,190 Todo tendrá sentido en un segundo. 1289 00:54:02,190 --> 00:54:08,950 >> Así que vamos a través y iteramos desde el principio hasta el final. 1290 00:54:08,950 --> 00:54:12,320 Y decimos, OK, 2 es nuestro número más pequeño. 1291 00:54:12,320 --> 00:54:15,680 Así que vamos a tener 2 y vamos para moverlo a la parte delantera de nuestra gama 1292 00:54:15,680 --> 00:54:17,734 porque es la número más pequeño que tenemos. 1293 00:54:17,734 --> 00:54:19,150 Así que eso es lo que esto está haciendo aquí. 1294 00:54:19,150 --> 00:54:20,820 Es sólo va a cambiar los dos. 1295 00:54:20,820 --> 00:54:21,850 1296 00:54:21,850 --> 00:54:25,450 Así que ahora tenemos un clasificado parte y una parte sin clasificar. 1297 00:54:25,450 --> 00:54:27,810 Y lo que es bueno recordar sobre la selección de especie 1298 00:54:27,810 --> 00:54:30,690 es que sólo estamos seleccionando de la parte sin clasificar. 1299 00:54:30,690 --> 00:54:32,220 1300 00:54:32,220 --> 00:54:34,527 >> La parte ordenada que acaba de dejar solos. 1301 00:54:34,527 --> 00:54:35,660 Mm-hm? 1302 00:54:35,660 --> 00:54:38,452 >> ESTUDIANTE: ¿Cómo sabe lo que es el más pequeño sin compararlo 1303 00:54:38,452 --> 00:54:39,868 a cualquier otro valor en el array. 1304 00:54:39,868 --> 00:54:41,250 INSTRUCTOR: Lo hace compararlo. 1305 00:54:41,250 --> 00:54:42,041 Nos gusta lo saltamos. 1306 00:54:42,041 --> 00:54:43,850 Esto es sólo en general en general. 1307 00:54:43,850 --> 00:54:44,831 Sí. 1308 00:54:44,831 --> 00:54:47,205 Cuando escribimos el código que estoy Seguro que estará más satisfecho. 1309 00:54:47,205 --> 00:54:48,696 1310 00:54:48,696 --> 00:54:53,030 Pero usted guarda el primer elemento como el más pequeño. 1311 00:54:53,030 --> 00:54:56,110 Se trata de comparar y usted decir, OK, ¿es más pequeño? 1312 00:54:56,110 --> 00:54:56,660 Sí. 1313 00:54:56,660 --> 00:54:57,460 Keep it. 1314 00:54:57,460 --> 00:54:58,640 Aquí es más pequeño? 1315 00:54:58,640 --> 00:54:59,660 ¿No? 1316 00:54:59,660 --> 00:55:02,510 >> Este es su más pequeño, reasignar a su valor. 1317 00:55:02,510 --> 00:55:06,340 Y serás mucho más feliz cuando vamos a través del código. 1318 00:55:06,340 --> 00:55:07,510 1319 00:55:07,510 --> 00:55:13,970 Así que vamos a través, nos cambiamos, así que a continuación nos fijamos en esta porción sin clasificar. 1320 00:55:13,970 --> 00:55:15,810 Así que vamos a seleccionar tres. 1321 00:55:15,810 --> 00:55:18,890 Vamos a ponerlo en en Al final de nuestra parte ordenada. 1322 00:55:18,890 --> 00:55:20,267 1323 00:55:20,267 --> 00:55:23,100 Y sólo vamos a seguir haciendo que, haciendo eso, y haciendo eso. 1324 00:55:23,100 --> 00:55:24,130 1325 00:55:24,130 --> 00:55:27,420 Así que este es nuestro tipo de pseudocódigo aquí. 1326 00:55:27,420 --> 00:55:29,470 1327 00:55:29,470 --> 00:55:31,380 Vamos a codificarlo hasta aquí en un segundo. 1328 00:55:31,380 --> 00:55:34,140 1329 00:55:34,140 --> 00:55:37,270 Pero sólo algo para caminar a través de un alto nivel. 1330 00:55:37,270 --> 00:55:40,275 Te vas a ir de i es igual a 0 a n menos 2. 1331 00:55:40,275 --> 00:55:41,570 1332 00:55:41,570 --> 00:55:43,530 Esa es otra de optimización. 1333 00:55:43,530 --> 00:55:45,020 No se preocupe demasiado acerca de él. 1334 00:55:45,020 --> 00:55:46,620 Así como usted decía. 1335 00:55:46,620 --> 00:55:49,660 1336 00:55:49,660 --> 00:55:54,406 Como Jacob estaba diciendo, ¿cómo podemos llevar un registro de lo que nuestro mínimo es? 1337 00:55:54,406 --> 00:55:55,030 ¿Cómo lo sabemos? 1338 00:55:55,030 --> 00:55:57,060 Tenemos que comparar todo en nuestra lista. 1339 00:55:57,060 --> 00:55:59,600 >> Así mínimo es igual a i. 1340 00:55:59,600 --> 00:56:03,870 Es simplemente diciendo en este caso el índice de nuestro valor mínimo. 1341 00:56:03,870 --> 00:56:07,660 Así que se va a recorrer y va desde j es igual a i + 1. 1342 00:56:07,660 --> 00:56:11,420 Así que ya sabemos que ese es nuestro primer elemento. 1343 00:56:11,420 --> 00:56:13,240 No necesitamos para compararla con la propia. 1344 00:56:13,240 --> 00:56:16,970 Así que empezar a comparar a la siguiente uno que es por eso que es i + 1 a n 1345 00:56:16,970 --> 00:56:20,110 menos 1, que es el final de la matriz allí. 1346 00:56:20,110 --> 00:56:25,090 Y nosotros dijimos si matriz en j es de menos de matriz min, 1347 00:56:25,090 --> 00:56:29,200 entonces reasignar donde nuestros índices mínimos es. 1348 00:56:29,200 --> 00:56:37,470 >> Y si min no es igual a i, como se en donde estábamos de vuelta por aquí. 1349 00:56:37,470 --> 00:56:38,950 1350 00:56:38,950 --> 00:56:41,790 Así como cuando lo hicimos por primera vez este uno. 1351 00:56:41,790 --> 00:56:49,310 En este caso, sería empezar a cero, sería llegar a ser dos. 1352 00:56:49,310 --> 00:56:53,010 Así min no lo haría igual i en el final. 1353 00:56:53,010 --> 00:56:55,720 Que nos permite saber que que necesitamos para intercambiarlas. 1354 00:56:55,720 --> 00:56:57,420 1355 00:56:57,420 --> 00:57:00,470 Me siento como un ejemplo concreto ayudará mucho más que esto. 1356 00:57:00,470 --> 00:57:04,970 Así que voy a codificar esta con ustedes en este momento y creo que va a ser mejor. 1357 00:57:04,970 --> 00:57:07,380 1358 00:57:07,380 --> 00:57:11,350 >> Ordena tienden a trabajar de esa manera en que a menudo es mejor sólo para verlos. 1359 00:57:11,350 --> 00:57:12,780 1360 00:57:12,780 --> 00:57:17,280 Así que lo que queremos hacer es lo primero que queremos la más pequeña 1361 00:57:17,280 --> 00:57:19,890 elemento en su posición en el array. 1362 00:57:19,890 --> 00:57:21,280 Exactamente lo que Jacob estaba diciendo. 1363 00:57:21,280 --> 00:57:23,090 Necesita almacenar que de algún modo. 1364 00:57:23,090 --> 00:57:25,900 Así que vamos a comenzar aquí iteración en la matriz. 1365 00:57:25,900 --> 00:57:28,970 Vamos a decir que es nuestro primero sólo para empezar. 1366 00:57:28,970 --> 00:57:38,308 Así que vamos a tener int más pequeño es igual a la matriz en i. 1367 00:57:38,308 --> 00:57:40,500 1368 00:57:40,500 --> 00:57:45,050 >> Así que una cosa a notar, cada vez este bucle se ejecuta, 1369 00:57:45,050 --> 00:57:48,550 estamos empezando un paso más allá a lo largo. 1370 00:57:48,550 --> 00:57:54,780 1371 00:57:54,780 --> 00:57:57,440 Cuando empezamos nos fijamos en éste. 1372 00:57:57,440 --> 00:58:00,840 La próxima vez que recorrer, estamos empezando a éste 1373 00:58:00,840 --> 00:58:02,680 y asignándole nuestro valor más pequeño. 1374 00:58:02,680 --> 00:58:10,450 Así que es muy similar a la burbuja de tipo donde sabemos que después de una sola pasada, 1375 00:58:10,450 --> 00:58:11,700 este último elemento está ordenada. 1376 00:58:11,700 --> 00:58:12,810 1377 00:58:12,810 --> 00:58:15,120 Con la selección de especie, que es todo lo contrario. 1378 00:58:15,120 --> 00:58:18,950 >> En cada pase, sabemos que la primera de ellas está ordenada. 1379 00:58:18,950 --> 00:58:21,360 Después de la segunda pasada, el segundo, serán ordenados. 1380 00:58:21,360 --> 00:58:26,470 Y como se vio con los ejemplos de diapositivas, nuestra porción ordenados sigue creciendo. 1381 00:58:26,470 --> 00:58:34,020 Así que mediante el establecimiento de nuestro uno más pequeño a matrices i, todo lo que está haciendo 1382 00:58:34,020 --> 00:58:37,340 se constricción de lo que estamos viendo con el fin de 1383 00:58:37,340 --> 00:58:40,164 para minimizar el número de las comparaciones que hacemos. 1384 00:58:40,164 --> 00:58:41,770 ¿Eso tiene sentido para todo el mundo? 1385 00:58:41,770 --> 00:58:42,920 1386 00:58:42,920 --> 00:58:46,380 ¿Me necesita para funcionar a través de ese otra vez más lento o con otras palabras? 1387 00:58:46,380 --> 00:58:47,180 Estoy feliz. 1388 00:58:47,180 --> 00:58:48,095 1389 00:58:48,095 --> 00:58:48,595 Okay. 1390 00:58:48,595 --> 00:58:50,060 1391 00:58:50,060 --> 00:58:55,540 >> Así que estamos almacenando el valor en este punto, 1392 00:58:55,540 --> 00:58:57,840 pero también queremos almacenar el índice. 1393 00:58:57,840 --> 00:59:01,010 Así que vamos a almacenar el la posición de los más pequeños 1394 00:59:01,010 --> 00:59:02,770 uno, que es sólo va a ser i. 1395 00:59:02,770 --> 00:59:04,357 1396 00:59:04,357 --> 00:59:05,440 Así que ahora Jacob está satisfecho. 1397 00:59:05,440 --> 00:59:06,870 Tenemos cosas almacenadas. 1398 00:59:06,870 --> 00:59:08,240 1399 00:59:08,240 --> 00:59:11,870 Y ahora tenemos que mirar a través de la parte no seleccionada de la matriz. 1400 00:59:11,870 --> 00:59:18,170 Así que en este caso esta sería nuestro sin clasificar. 1401 00:59:18,170 --> 00:59:20,980 1402 00:59:20,980 --> 00:59:22,462 Esto es i. 1403 00:59:22,462 --> 00:59:25,430 1404 00:59:25,430 --> 00:59:26,210 Okay. 1405 00:59:26,210 --> 00:59:30,040 >> Así que lo que vamos a hacer va a ser de un bucle. 1406 00:59:30,040 --> 00:59:32,066 Siempre que necesite iterar a través de una matriz, 1407 00:59:32,066 --> 00:59:33,440 su mente podía ir a por un bucle. 1408 00:59:33,440 --> 00:59:34,760 1409 00:59:34,760 --> 00:59:38,090 Así que para algunos int k equals-- ¿qué pensamos 1410 00:59:38,090 --> 00:59:39,700 k va a ser igual para empezar? 1411 00:59:39,700 --> 00:59:41,580 1412 00:59:41,580 --> 00:59:44,766 Esto es lo que nos propusimos como nuestro más pequeño valor y queremos compararlo. 1413 00:59:44,766 --> 00:59:47,090 ¿Qué es lo que queremos compararlo? 1414 00:59:47,090 --> 00:59:48,730 Va a ser el próximo uno, ¿verdad? 1415 00:59:48,730 --> 00:59:53,200 Por lo que queremos k para ser inicializado a i + 1 para comenzar. 1416 00:59:53,200 --> 00:59:55,350 1417 00:59:55,350 --> 01:00:02,800 >> Y queremos k en este caso ya han almacenado tamaño hasta aquí, 1418 01:00:02,800 --> 01:00:03,930 por lo que sólo podemos usar tamaño. 1419 01:00:03,930 --> 01:00:06,240 Tamaño ser el tamaño de la matriz. 1420 01:00:06,240 --> 01:00:09,620 Y sólo queremos actualizar k en uno cada vez. 1421 01:00:09,620 --> 01:00:17,410 1422 01:00:17,410 --> 01:00:17,910 Enfriar. 1423 01:00:17,910 --> 01:00:19,650 1424 01:00:19,650 --> 01:00:23,430 Así que ahora tenemos que encontrar el elemento más pequeño aquí. 1425 01:00:23,430 --> 01:00:24,470 1426 01:00:24,470 --> 01:00:31,380 Así que si nos recorrer, nos quiero decir, si en la matriz k 1427 01:00:31,380 --> 01:00:37,080 es menor que nuestro value-- más pequeño aquí es donde estamos en realidad 1428 01:00:37,080 --> 01:00:42,950 hacer el seguimiento de lo que es el más pequeño aquí-- 1429 01:00:42,950 --> 01:00:47,740 entonces queremos reasignar cuál es nuestro valor más pequeño es. 1430 01:00:47,740 --> 01:00:50,645 >> Esto significa que, oh, estamos iteración a través de aquí. 1431 01:00:50,645 --> 01:00:51,699 1432 01:00:51,699 --> 01:00:53,740 Cualquiera que sea el valor es aquí es no la cosa más pequeña. 1433 01:00:53,740 --> 01:00:54,448 Nosotros no queremos. 1434 01:00:54,448 --> 01:00:56,100 Queremos volver a asignar la misma. 1435 01:00:56,100 --> 01:01:02,050 Así que si estamos reasignando, qué hacer usted piensa que podría estar en el código aquí? 1436 01:01:02,050 --> 01:01:04,160 Queremos volver a asignar más pequeño y la posición. 1437 01:01:04,160 --> 01:01:05,740 1438 01:01:05,740 --> 01:01:07,010 Entonces, ¿qué es más pequeña ahora? 1439 01:01:07,010 --> 01:01:08,422 1440 01:01:08,422 --> 01:01:09,130 ESTUDIANTE: Array k. 1441 01:01:09,130 --> 01:01:09,963 INSTRUCTOR: Array k. 1442 01:01:09,963 --> 01:01:13,480 1443 01:01:13,480 --> 01:01:15,956 ¿Y cuál es la posición ahora? 1444 01:01:15,956 --> 01:01:20,940 1445 01:01:20,940 --> 01:01:23,000 ¿Qué hay de los índices de nuestro valor más pequeño? 1446 01:01:23,000 --> 01:01:24,030 1447 01:01:24,030 --> 01:01:24,530 Es sólo k. 1448 01:01:24,530 --> 01:01:25,690 1449 01:01:25,690 --> 01:01:27,790 Así matriz k, k, que coinciden. 1450 01:01:27,790 --> 01:01:31,670 1451 01:01:31,670 --> 01:01:33,120 Así que queríamos que reasignar. 1452 01:01:33,120 --> 01:01:34,390 1453 01:01:34,390 --> 01:01:39,950 Y a continuación, después de que nos encontramos nuestra más pequeña, así que al final de este bucle for 1454 01:01:39,950 --> 01:01:45,100 aquí hemos encontrado lo que nuestro pequeño valor es, por lo que sólo se intercambie. 1455 01:01:45,100 --> 01:01:47,100 1456 01:01:47,100 --> 01:01:50,816 En este caso, al igual que decir que nuestra valor más pequeño es aquí. 1457 01:01:50,816 --> 01:01:51,940 Este es nuestro valor más pequeño. 1458 01:01:51,940 --> 01:01:57,690 >> Sólo queremos cambiar desde aquí, que es lo que la función de intercambio en la parte inferior 1459 01:01:57,690 --> 01:02:01,270 hicimos, que sólo escribimos arriba juntos hace un par de minutos. 1460 01:02:01,270 --> 01:02:02,775 Por lo tanto, debería parecer familiar. 1461 01:02:02,775 --> 01:02:04,320 1462 01:02:04,320 --> 01:02:08,030 Y entonces se acaba de repetir hasta que llega a través de todo el camino 1463 01:02:08,030 --> 01:02:13,100 hasta el final, lo que significa que usted tener cero elementos que no clasificadas 1464 01:02:13,100 --> 01:02:14,800 y todo lo demás se ha ordenado. 1465 01:02:14,800 --> 01:02:16,216 1466 01:02:16,216 --> 01:02:16,715 Tiene sentido? 1467 01:02:16,715 --> 01:02:18,010 1468 01:02:18,010 --> 01:02:19,280 Un poco más concreta? 1469 01:02:19,280 --> 01:02:19,990 El código ayuda? 1470 01:02:19,990 --> 01:02:21,720 1471 01:02:21,720 --> 01:02:26,410 >> ESTUDIANTE: Para un tamaño, nunca realmente definirlo o cambiarlo, 1472 01:02:26,410 --> 01:02:27,340 ¿cómo sabe? 1473 01:02:27,340 --> 01:02:32,380 >> INSTRUCTOR: Así que una cosa es cuenta aquí es el tamaño int. 1474 01:02:32,380 --> 01:02:35,680 Así que estamos diciendo en este tipo sort-- es una función en este caso-- es 1475 01:02:35,680 --> 01:02:40,770 selección especie, se aprobó con la función. 1476 01:02:40,770 --> 01:02:43,460 Así que si no se aprobó en, usted haría algo 1477 01:02:43,460 --> 01:02:47,840 como con la longitud de la matriz o usted recorrer 1478 01:02:47,840 --> 01:02:49,390 para encontrar la longitud. 1479 01:02:49,390 --> 01:02:52,680 Pero debido a que se aprobó en, sólo podemos usarlo. 1480 01:02:52,680 --> 01:02:55,720 Usted acaba de asumir que el usuario le dio un tamaño válido que 1481 01:02:55,720 --> 01:02:57,698 en realidad representa un tamaño de la matriz. 1482 01:02:57,698 --> 01:02:59,461 1483 01:02:59,461 --> 01:02:59,960 Fresco? 1484 01:02:59,960 --> 01:03:01,610 1485 01:03:01,610 --> 01:03:05,870 >> Si ustedes tienen algún problema con estos o desea más práctica de codificación tipo 1486 01:03:05,870 --> 01:03:08,050 por su cuenta, usted debe ir a study.cs50. 1487 01:03:08,050 --> 01:03:11,560 1488 01:03:11,560 --> 01:03:12,670 Es una herramienta. 1489 01:03:12,670 --> 01:03:15,040 Tienen un corrector que en realidad se puede escribir. 1490 01:03:15,040 --> 01:03:16,180 Lo hacen pseudocódigo. 1491 01:03:16,180 --> 01:03:19,310 Tienen más vídeos y diapositivas incluyendo los que utilizo aquí. 1492 01:03:19,310 --> 01:03:23,150 Así que si usted todavía está sintiendo un poco borroso, trate de eso. 1493 01:03:23,150 --> 01:03:25,670 Como siempre, venir a hablar conmigo, también. 1494 01:03:25,670 --> 01:03:26,320 Pregunta? 1495 01:03:26,320 --> 01:03:28,611 >> ESTUDIANTE: ¿Está usted diciendo que el tamaño se define anteriormente? 1496 01:03:28,611 --> 01:03:29,234 1497 01:03:29,234 --> 01:03:29,900 INSTRUCTOR: Sí. 1498 01:03:29,900 --> 01:03:35,570 El tamaño se define previamente para arriba aquí en la declaración de la función. 1499 01:03:35,570 --> 01:03:39,060 Así que usted asume que ha sido aprobada en por el usuario, y por el bien de la simplicidad, 1500 01:03:39,060 --> 01:03:41,896 vamos a suponer que el usuario nos dio la talla correcta. 1501 01:03:41,896 --> 01:03:43,240 Enfriar. 1502 01:03:43,240 --> 01:03:44,390 Así que esa es la selección de clasificación. 1503 01:03:44,390 --> 01:03:45,590 1504 01:03:45,590 --> 01:03:47,640 Chicos, saben que estamos aprendiendo mucho hoy. 1505 01:03:47,640 --> 01:03:49,710 Es una densa datos para la sección. 1506 01:03:49,710 --> 01:03:51,880 1507 01:03:51,880 --> 01:03:57,340 Así que con eso, vamos para ir a la ordenación por inserción. 1508 01:03:57,340 --> 01:04:01,550 1509 01:04:01,550 --> 01:04:02,510 >> Okay. 1510 01:04:02,510 --> 01:04:06,100 Así que antes de que nosotros tenemos que hacer nuestro análisis de tiempo de ejecución aquí. 1511 01:04:06,100 --> 01:04:10,190 Así, en el mejor de los casos, concedido desde que te mostré 1512 01:04:10,190 --> 01:04:11,960 la mesa que ya clase de lo delató. 1513 01:04:11,960 --> 01:04:15,430 Pero mejor tiempo de ejecución caso, ¿qué pensamos? 1514 01:04:15,430 --> 01:04:17,310 1515 01:04:17,310 --> 01:04:18,130 Todo ordenadas. 1516 01:04:18,130 --> 01:04:21,040 1517 01:04:21,040 --> 01:04:22,070 N al cuadrado. 1518 01:04:22,070 --> 01:04:24,780 ¿Alguien tiene una explicación para qué te parece? 1519 01:04:24,780 --> 01:04:29,060 1520 01:04:29,060 --> 01:04:30,519 >> ESTUDIANTE: Usted está comparando through-- 1521 01:04:30,519 --> 01:04:31,268 INSTRUCTOR: Derecho. 1522 01:04:31,268 --> 01:04:32,540 Usted está comparando a través. 1523 01:04:32,540 --> 01:04:35,630 En cada iteración, aunque estamos decrementar este por uno, 1524 01:04:35,630 --> 01:04:38,950 usted todavía está buscando a través de todo para encontrar el más pequeño. 1525 01:04:38,950 --> 01:04:42,390 Así que incluso si su valor más pequeño es aquí en el comienzo, 1526 01:04:42,390 --> 01:04:44,710 usted todavía está comparándolo contra todo lo demás 1527 01:04:44,710 --> 01:04:46,550 para asegurarse de que es la cosa más pequeña. 1528 01:04:46,550 --> 01:04:49,820 Así que va a terminar corriendo a través de aproximadamente n veces al cuadrado. 1529 01:04:49,820 --> 01:04:51,090 1530 01:04:51,090 --> 01:04:51,590 Bien. 1531 01:04:51,590 --> 01:04:52,785 Y ¿cuál es el peor de los casos? 1532 01:04:52,785 --> 01:04:54,350 1533 01:04:54,350 --> 01:04:57,980 También n al cuadrado porque vas a estar haciendo eso mismo procedimiento. 1534 01:04:57,980 --> 01:05:01,670 Así, en este caso, la selección tipo tiene algo 1535 01:05:01,670 --> 01:05:04,010 que también llamamos el tiempo de ejecución esperado. 1536 01:05:04,010 --> 01:05:07,400 Así que en los otros, solo sabemos los límites superior e inferior. 1537 01:05:07,400 --> 01:05:11,180 Dependiendo de qué tan loco nuestro lista es o cómo clasificar lo que sea, 1538 01:05:11,180 --> 01:05:15,350 que varían entre n o n al cuadrado. 1539 01:05:15,350 --> 01:05:16,550 No sabemos. 1540 01:05:16,550 --> 01:05:22,820 >> Pero debido a que la selección tiene el mismo tipo peor y mejor de los casos, que nos dice que 1541 01:05:22,820 --> 01:05:25,880 no importa qué tipo de entrada que tiene, ya sea por completo 1542 01:05:25,880 --> 01:05:29,130 ordenados o completamente revertir ordenados, es 1543 01:05:29,130 --> 01:05:30,740 va a tomar la misma cantidad de tiempo. 1544 01:05:30,740 --> 01:05:33,760 Así que en ese caso, si recordar de nuestra mesa, 1545 01:05:33,760 --> 01:05:38,610 que en realidad tenía un valor que estas dos clases no tienen, 1546 01:05:38,610 --> 01:05:40,390 que es el tiempo de ejecución esperado. 1547 01:05:40,390 --> 01:05:43,350 Así que sabemos que cada vez que corremos selección especie, 1548 01:05:43,350 --> 01:05:45,380 está garantizado que ejecutar una n al cuadrado del tiempo. 1549 01:05:45,380 --> 01:05:46,630 No hay variabilidad allí. 1550 01:05:46,630 --> 01:05:47,630 Sólo espera. 1551 01:05:47,630 --> 01:05:48,820 1552 01:05:48,820 --> 01:05:52,140 Y, de nuevo, si quieres aprender más, tomar CS 124 en la primavera. 1553 01:05:52,140 --> 01:05:55,370 1554 01:05:55,370 --> 01:05:56,712 Bien. 1555 01:05:56,712 --> 01:05:57,545 Hemos visto esta. 1556 01:05:57,545 --> 01:05:58,530 1557 01:05:58,530 --> 01:05:59,030 Enfriar. 1558 01:05:59,030 --> 01:06:00,930 Así que tipo de inserción. 1559 01:06:00,930 --> 01:06:03,330 Y probablemente voy para arder a través de este. 1560 01:06:03,330 --> 01:06:05,440 No voy a tener ustedes codificarlo. 1561 01:06:05,440 --> 01:06:06,580 Tendremos caminamos a través de él. 1562 01:06:06,580 --> 01:06:10,500 Así que la ordenación por inserción es una especie de tipo similar a la selección 1563 01:06:10,500 --> 01:06:14,460 en que tenemos tanto una sin clasificar y ordenados parte de la matriz. 1564 01:06:14,460 --> 01:06:20,260 >> Pero lo que es diferente es que a medida que avanzamos a través de uno a uno, 1565 01:06:20,260 --> 01:06:24,210 que acabamos de tomar cualquier número está al lado de nuestro sin clasificar, 1566 01:06:24,210 --> 01:06:28,507 y clasificarlo correctamente en nuestra matriz ordenada. 1567 01:06:28,507 --> 01:06:30,090 Se va a hacer más sentido con un ejemplo. 1568 01:06:30,090 --> 01:06:31,140 1569 01:06:31,140 --> 01:06:35,430 Así que todo empieza como sin clasificar, Al igual que con la selección de clasificación. 1570 01:06:35,430 --> 01:06:38,740 Y vamos a resolver esto en orden ascendente como lo hemos sido. 1571 01:06:38,740 --> 01:06:40,360 1572 01:06:40,360 --> 01:06:43,340 Así que en nuestro primer pase tomamos el primer valor 1573 01:06:43,340 --> 01:06:46,700 y decimos, OK, usted es ahora en una lista por su cuenta. 1574 01:06:46,700 --> 01:06:49,150 >> Debido a que usted está en una lista por sí mismo, que está ordenada. 1575 01:06:49,150 --> 01:06:52,460 Felicidades por ser el primer elemento de esta matriz. 1576 01:06:52,460 --> 01:06:54,800 Usted ya está la ordenó todo por su cuenta. 1577 01:06:54,800 --> 01:06:58,900 Así que ahora tenemos un clasificado y un arsenal sin clasificar. 1578 01:06:58,900 --> 01:07:01,760 Así que ahora tenemos la primera. 1579 01:07:01,760 --> 01:07:05,600 ¿Qué pasa entre aquí y aquí es que nosotros decimos, 1580 01:07:05,600 --> 01:07:08,890 Bien, vamos a mirar el primer valor de nuestra gama sin clasificar 1581 01:07:08,890 --> 01:07:13,270 y vamos a la entrada en su lugar correcto en el arreglo ordenado. 1582 01:07:13,270 --> 01:07:21,460 >> Así que lo que hacemos es que tomamos 5 y decimos, OK, 5 es mayor que 3, 1583 01:07:21,460 --> 01:07:24,630 así que nos insertamos derecho a la derecha de eso. 1584 01:07:24,630 --> 01:07:25,130 Somos buenos. 1585 01:07:25,130 --> 01:07:26,200 1586 01:07:26,200 --> 01:07:28,420 Así que a continuación pasamos a nuestro siguiente. 1587 01:07:28,420 --> 01:07:29,720 Y tomamos 2. 1588 01:07:29,720 --> 01:07:34,330 Nosotros decimos, OK, 2 es menos de 3, por lo que sabemos que 1589 01:07:34,330 --> 01:07:36,220 tiene que estar en el frente a nuestra lista ahora. 1590 01:07:36,220 --> 01:07:41,800 Así que lo que hacemos es empujamos 3 y 5 hacia abajo y nos movemos 2 en la primera ranura. 1591 01:07:41,800 --> 01:07:42,990 1592 01:07:42,990 --> 01:07:45,870 Así que estamos a sólo insertarlo en el lugar correcto que debería ser. 1593 01:07:45,870 --> 01:07:46,960 1594 01:07:46,960 --> 01:07:49,470 >> Entonces nos fijamos en nuestra siguiente, y decimos 6. 1595 01:07:49,470 --> 01:07:53,620 Aceptar, 6 es mayor que todo en nuestra matriz ordenada, 1596 01:07:53,620 --> 01:07:56,000 así que simplemente etiquetarla hasta el final. 1597 01:07:56,000 --> 01:07:56,960 Y luego nos fijamos en 4. 1598 01:07:56,960 --> 01:07:58,130 1599 01:07:58,130 --> 01:08:03,020 4 es menor que 6, es menos del 5 pero es mayor que 3. 1600 01:08:03,020 --> 01:08:06,270 Así que sólo nos insertamos la derecha el medio entre 3 y 5. 1601 01:08:06,270 --> 01:08:07,380 1602 01:08:07,380 --> 01:08:10,530 Así que para hacer que un poco poco más concreto, 1603 01:08:10,530 --> 01:08:12,280 aquí es una especie de la idea de lo que pasó. 1604 01:08:12,280 --> 01:08:16,430 Así que para cada elemento sin clasificar, que determinar dónde en la parte ordenada 1605 01:08:16,430 --> 01:08:17,090 es. 1606 01:08:17,090 --> 01:08:20,680 >> Así que teniendo en cuenta la clasificados y sin clasificar, 1607 01:08:20,680 --> 01:08:26,080 tenemos que recorrer a través de la figura y dónde encaja en la matriz ordenada. 1608 01:08:26,080 --> 01:08:31,460 Y lo insertamos desplazando la elementos a la derecha hacia abajo. 1609 01:08:31,460 --> 01:08:34,910 Y entonces nos mantenemos iteración a través hasta que 1610 01:08:34,910 --> 01:08:39,270 tener una lista totalmente ordenada donde no seleccionados es ahora cero 1611 01:08:39,270 --> 01:08:41,720 y ordenada ocupa el totalidad de nuestra lista. 1612 01:08:41,720 --> 01:08:43,146 1613 01:08:43,146 --> 01:08:45,854 Así que, de nuevo, para hacer las cosas aún más concreto, tenemos pseudocódigo. 1614 01:08:45,854 --> 01:08:47,979 1615 01:08:47,979 --> 01:08:52,410 >> Así que, básicamente, para i es igual a 0 a n menos 1, 1616 01:08:52,410 --> 01:08:54,790 eso es sólo la duración de nuestra matriz. 1617 01:08:54,790 --> 01:09:00,979 Tenemos algún elemento que es igual a la primera matriz o los primeros índices. 1618 01:09:00,979 --> 01:09:03,200 Establecemos j igual a eso. 1619 01:09:03,200 --> 01:09:04,649 1620 01:09:04,649 --> 01:09:09,210 Así, mientras que j es mayor que cero y la matriz, j menos 1 1621 01:09:09,210 --> 01:09:11,660 es mayor que la elemento, por lo que todo lo que está haciendo 1622 01:09:11,660 --> 01:09:17,479 es asegurarse de que el j realmente representa 1623 01:09:17,479 --> 01:09:20,010 la parte no seleccionada de la matriz. 1624 01:09:20,010 --> 01:09:30,745 >> Así, mientras que todavía hay cosas para ordenar y j menos uno lo es-- 1625 01:09:30,745 --> 01:09:31,840 es el elemento ella? 1626 01:09:31,840 --> 01:09:34,760 J nunca se definió aquí. 1627 01:09:34,760 --> 01:09:35,677 Es un poco molesto. 1628 01:09:35,677 --> 01:09:36,176 Okay. 1629 01:09:36,176 --> 01:09:36,689 De todas formas. 1630 01:09:36,689 --> 01:09:39,899 Así j menos 1, usted está comprobando el elemento antes de ella. 1631 01:09:39,899 --> 01:09:46,460 ¿Estás diciendo, OK, es el elemento antes de donde quiera que vamos am-- 1632 01:09:46,460 --> 01:09:47,540 realmente sacar esto hacia fuera. 1633 01:09:47,540 --> 01:09:52,580 1634 01:09:52,580 --> 01:09:56,830 Así que digamos que este es como en nuestro segundo pase. 1635 01:09:56,830 --> 01:09:59,525 Así que va a ser igual a 1, lo que es aquí. 1636 01:09:59,525 --> 01:10:03,310 1637 01:10:03,310 --> 01:10:06,025 >> Así que va a ser igual a 1. 1638 01:10:06,025 --> 01:10:09,510 1639 01:10:09,510 --> 01:10:13,702 Esto sería 2, 4, 5, 6, 7. 1640 01:10:13,702 --> 01:10:16,060 1641 01:10:16,060 --> 01:10:16,750 Bien. 1642 01:10:16,750 --> 01:10:20,945 Así que nuestro elemento, en este caso va a ser igual a 4. 1643 01:10:20,945 --> 01:10:22,110 1644 01:10:22,110 --> 01:10:24,946 Y tenemos algunos j que es va a ser igual a 1. 1645 01:10:24,946 --> 01:10:29,770 1646 01:10:29,770 --> 01:10:30,971 Oh, j se decremento. 1647 01:10:30,971 --> 01:10:31,720 Eso es lo que es. 1648 01:10:31,720 --> 01:10:35,680 Así que j es igual a i, por lo que es esto dicho es que a medida que avanzamos, 1649 01:10:35,680 --> 01:10:37,530 sólo estamos asegurando de que no somos más 1650 01:10:37,530 --> 01:10:43,520 la indexación de esta manera cuando estamos tratando para insertar cosas en nuestra lista ordenada. 1651 01:10:43,520 --> 01:10:49,850 >> Así que cuando j es igual a 1 en este caso y matriz j menos uno-- tan gama j menos 1 1652 01:10:49,850 --> 01:10:54,610 es 2 en este caso-- si eso es mayor que el elemento, 1653 01:10:54,610 --> 01:10:57,700 entonces todo esto está haciendo está cambiando las cosas. 1654 01:10:57,700 --> 01:11:04,790 Así pues, en este caso, matriz j menos uno sería matriz cero, que es 2. 1655 01:11:04,790 --> 01:11:08,430 2 no es mayor que 4, por lo que este no se ejecuta. 1656 01:11:08,430 --> 01:11:11,460 Así que el cambio no se mueve hacia abajo. 1657 01:11:11,460 --> 01:11:18,790 Lo que esto hace aquí es sólo mover la matriz ordenada hacia abajo. 1658 01:11:18,790 --> 01:11:22,340 1659 01:11:22,340 --> 01:11:26,400 En este caso, en realidad, nos podría hacer-- vamos a hacer este 3. 1660 01:11:26,400 --> 01:11:28,080 1661 01:11:28,080 --> 01:11:31,970 Así que si vamos a caminar a través de este ejemplo, ahora estamos aquí. 1662 01:11:31,970 --> 01:11:32,740 Esto se solucionó. 1663 01:11:32,740 --> 01:11:34,492 1664 01:11:34,492 --> 01:11:35,200 Esto es sin clasificar. 1665 01:11:35,200 --> 01:11:39,090 1666 01:11:39,090 --> 01:11:39,860 Fresco? 1667 01:11:39,860 --> 01:11:46,620 Así que i es igual a 2, por lo nuestro elemento es igual a 3. 1668 01:11:46,620 --> 01:11:47,920 1669 01:11:47,920 --> 01:11:52,270 Y nuestro j es igual a 2. 1670 01:11:52,270 --> 01:12:00,620 Así que miramos a través y nos decir, OK, es matriz j menos uno 1671 01:12:00,620 --> 01:12:03,470 mayor que el elemento que estamos viendo? 1672 01:12:03,470 --> 01:12:05,540 Y la respuesta es sí, ¿verdad? 1673 01:12:05,540 --> 01:12:11,275 4 es mayor que 3 y j es 2, por lo que este código se ejecuta. 1674 01:12:11,275 --> 01:12:12,510 1675 01:12:12,510 --> 01:12:18,550 >> Así que ahora lo que hacemos un arreglo en 2, por lo que aquí, les swap. 1676 01:12:18,550 --> 01:12:25,620 Así que nos limitamos a decir, OK, matriz a las 2 de ahora va a ser de 3. 1677 01:12:25,620 --> 01:12:28,130 1678 01:12:28,130 --> 01:12:32,340 Y j va a ser igual j menos 1, que es 1. 1679 01:12:32,340 --> 01:12:34,590 1680 01:12:34,590 --> 01:12:37,200 Eso es horrible, pero ustedes chicos se ponen la idea. 1681 01:12:37,200 --> 01:12:38,360 J es ahora igual a 1. 1682 01:12:38,360 --> 01:12:44,360 Y gama j es sólo va a ser igual a nuestro elemento, que era 4. 1683 01:12:44,360 --> 01:12:45,950 1684 01:12:45,950 --> 01:12:48,570 Borré algo que no debería tener o algo miswrote, 1685 01:12:48,570 --> 01:12:49,910 pero ustedes chicos se ponen la idea. 1686 01:12:49,910 --> 01:12:50,640 >> Se mueve en el n. 1687 01:12:50,640 --> 01:12:51,920 1688 01:12:51,920 --> 01:12:57,960 Y luego, si esto fuera, lo haría bucle de nuevo y sería decir, OK, j es 1 ahora. 1689 01:12:57,960 --> 01:13:00,665 Y gama j menos 1 es ahora 2. 1690 01:13:00,665 --> 01:13:01,750 1691 01:13:01,750 --> 01:13:03,760 Es 2 menos que nuestro elemento? 1692 01:13:03,760 --> 01:13:04,540 ¿No? 1693 01:13:04,540 --> 01:13:07,970 Eso significa que hemos insertado este elemento 1694 01:13:07,970 --> 01:13:10,110 en el lugar correcto en nuestra matriz ordenada. 1695 01:13:10,110 --> 01:13:14,400 Entonces podemos tomar esto y digamos, Aceptar, nuestra matriz ordenada es aquí. 1696 01:13:14,400 --> 01:13:19,940 Y sería tomar este número 6 y ser como, OK, es de 6 a menos de este número? 1697 01:13:19,940 --> 01:13:20,480 ¿No? 1698 01:13:20,480 --> 01:13:21,080 Enfriar. 1699 01:13:21,080 --> 01:13:22,680 Estamos bien. 1700 01:13:22,680 --> 01:13:23,530 >> Hazlo de nuevo. 1701 01:13:23,530 --> 01:13:24,740 Decimos 7. 1702 01:13:24,740 --> 01:13:29,010 Es 7 menos que el fin de nuestra matriz ordenada? 1703 01:13:29,010 --> 01:13:29,520 No. 1704 01:13:29,520 --> 01:13:30,430 Así que estamos bien. 1705 01:13:30,430 --> 01:13:32,760 Así que este sería solucionado. 1706 01:13:32,760 --> 01:13:38,610 Básicamente todo lo que esto hace se está diciendo toma 1707 01:13:38,610 --> 01:13:42,060 el primer elemento de la matriz sin clasificar, 1708 01:13:42,060 --> 01:13:46,010 averiguar a dónde va en su matriz ordenada. 1709 01:13:46,010 --> 01:13:48,780 Y esto sólo se hace cargo de los swaps de hacer eso. 1710 01:13:48,780 --> 01:13:51,300 Básicamente, se está simplemente intercambiando hasta que esté en el lugar correcto. 1711 01:13:51,300 --> 01:13:53,600 1712 01:13:53,600 --> 01:13:56,990 La imagen visual es que eres moviendo todo por hacer eso. 1713 01:13:56,990 --> 01:13:59,420 >> Así que es como la mitad de la burbuja especie-esque. 1714 01:13:59,420 --> 01:14:02,280 1715 01:14:02,280 --> 01:14:03,420 Echa un vistazo a estudio 50. 1716 01:14:03,420 --> 01:14:06,000 Recomiendo probar para codificar esto por su cuenta. 1717 01:14:06,000 --> 01:14:07,220 1718 01:14:07,220 --> 01:14:12,450 Si usted tiene algún problema o si desea ver código de ejemplo para una ordenación por inserción, 1719 01:14:12,450 --> 01:14:13,750 por favor hágamelo saber. 1720 01:14:13,750 --> 01:14:14,500 Estoy siempre alrededor. 1721 01:14:14,500 --> 01:14:16,600 1722 01:14:16,600 --> 01:14:20,200 Así que el peor tiempo de ejecución de caso y el mejor tiempo de ejecución caso. 1723 01:14:20,200 --> 01:14:30,700 Al chico vio desde la mesa que ya que mostró, es tanto n al cuadrado y n. 1724 01:14:30,700 --> 01:14:35,590 >> Así que tipo de ir fuera de lo que hablamos sobre las clases con nuestros anteriores, peor 1725 01:14:35,590 --> 01:14:38,760 caso de tiempo de ejecución es que si que está completamente sin clasificar, 1726 01:14:38,760 --> 01:14:42,530 tenemos que comparar todas estas veces n. 1727 01:14:42,530 --> 01:14:47,020 Hacemos un montón de comparaciones porque si es en orden inverso, 1728 01:14:47,020 --> 01:14:50,360 vamos a decir, OK, este es el mismo, esto es bueno, 1729 01:14:50,360 --> 01:14:54,650 y éste tendrá que ser comparado contra el primero en ser trasladado de nuevo. 1730 01:14:54,650 --> 01:14:56,710 Y a medida que nos hacia el extremo de la cola, tenemos 1731 01:14:56,710 --> 01:14:59,440 para comparar, comparar y comparar contra todo. 1732 01:14:59,440 --> 01:15:03,030 >> Por lo tanto, termina siendo aproximadamente n al cuadrado. 1733 01:15:03,030 --> 01:15:09,510 Si es correcta, entonces dices, OK, 2, ya está bueno. 1734 01:15:09,510 --> 01:15:11,330 3, usted está frente a un 2. 1735 01:15:11,330 --> 01:15:12,310 Estas bien. 1736 01:15:12,310 --> 01:15:14,150 4, que acaba de comparar a la cola. 1737 01:15:14,150 --> 01:15:14,990 Estas bien. 1738 01:15:14,990 --> 01:15:17,140 6, compara a la cola, que estás bien. 1739 01:15:17,140 --> 01:15:20,870 Así, por cada punto si ya está ordenados, usted está haciendo una comparación. 1740 01:15:20,870 --> 01:15:22,320 Así que es sólo n. 1741 01:15:22,320 --> 01:15:26,840 Y porque tenemos un mejor tiempo de ejecución de caso de n y un peor caso de tiempo de ejecución de n 1742 01:15:26,840 --> 01:15:28,680 cuadrado, no tenemos tiempo de ejecución esperado. 1743 01:15:28,680 --> 01:15:31,290 1744 01:15:31,290 --> 01:15:34,020 >> Sólo depende de la el caos de nuestra lista allí. 1745 01:15:34,020 --> 01:15:35,860 1746 01:15:35,860 --> 01:15:39,530 Y de nuevo, otro gráfico y la otra tabla. 1747 01:15:39,530 --> 01:15:41,170 Así diferencias entre clases. 1748 01:15:41,170 --> 01:15:44,180 Yo sólo voy a brisa a través, yo sentir que hemos hablado extensamente 1749 01:15:44,180 --> 01:15:46,570 sobre la forma en que toda la clase de variar y unir. 1750 01:15:46,570 --> 01:15:50,564 Así Ordenamiento por mezcla es el último Yo te aburriré con los chicos. 1751 01:15:50,564 --> 01:15:52,105 Tenemos un cuadro bonito colorido. 1752 01:15:52,105 --> 01:15:53,860 1753 01:15:53,860 --> 01:15:56,040 Así fusionar especie es un algoritmo recursivo. 1754 01:15:56,040 --> 01:15:59,910 Así que ¿sabe usted lo que chicos una función recursiva es? 1755 01:15:59,910 --> 01:16:01,550 1756 01:16:01,550 --> 01:16:03,320 >> ¿Alguien quiere decir? 1757 01:16:03,320 --> 01:16:04,739 ¿Quieres probar? 1758 01:16:04,739 --> 01:16:07,280 Así que una función recursiva es sólo una función que llama a sí mismo. 1759 01:16:07,280 --> 01:16:08,570 1760 01:16:08,570 --> 01:16:11,590 Así que si ustedes están familiarizados con la secuencia de Fibonacci, 1761 01:16:11,590 --> 01:16:15,670 eso es porque considera recursiva usted toma los dos anteriores 1762 01:16:15,670 --> 01:16:17,530 y sumarlos para obtener su siguiente. 1763 01:16:17,530 --> 01:16:21,440 Así recursiva, siempre pienso de la recursividad como como una espiral 1764 01:16:21,440 --> 01:16:24,430 por lo que usted es como una espiral hacia abajo en él. 1765 01:16:24,430 --> 01:16:27,150 Pero es sólo una función que llama a sí mismo. 1766 01:16:27,150 --> 01:16:32,660 >> Y, en realidad, muy rápido me usted puede mostrar lo que parece. 1767 01:16:32,660 --> 01:16:34,260 1768 01:16:34,260 --> 01:16:41,840 Así recursiva aquí, si nos fijamos, este es la manera recursiva para resumir a través de una matriz. 1769 01:16:41,840 --> 01:16:45,900 1770 01:16:45,900 --> 01:16:47,880 Así que todo lo que hacemos es tenemos la función suma 1771 01:16:47,880 --> 01:16:52,210 suma que toma un tamaño y una matriz. 1772 01:16:52,210 --> 01:16:55,210 Y si te fijas, el tamaño decrementos en uno cada vez. 1773 01:16:55,210 --> 01:17:00,365 Y todo lo que hace es si x es igual a zero-- así que si el tamaño de la matriz 1774 01:17:00,365 --> 01:17:02,710 es igual a zero-- devuelve cero. 1775 01:17:02,710 --> 01:17:10,440 >> De lo contrario, resume este último elemento de la matriz, 1776 01:17:10,440 --> 01:17:14,790 y después toma una suma de el resto de la matriz. 1777 01:17:14,790 --> 01:17:17,555 Así que es justo y lo descomponen en problemas más pequeños y más pequeños. 1778 01:17:17,555 --> 01:17:18,990 1779 01:17:18,990 --> 01:17:21,890 Larga historia corta, la recursividad, función que llama a sí mismo. 1780 01:17:21,890 --> 01:17:25,740 Si eso es todo lo que tienes fuera de esto, eso es lo que es una función recursiva. 1781 01:17:25,740 --> 01:17:29,870 Si usted toma 51, obtendrá muy, muy cómodo con la recursividad. 1782 01:17:29,870 --> 01:17:31,110 1783 01:17:31,110 --> 01:17:32,370 Es realmente genial. 1784 01:17:32,370 --> 01:17:34,660 Tenía sentido al igual que 03 a.m. una noche fuera. 1785 01:17:34,660 --> 01:17:37,900 Y yo estaba como, ¿por qué he nunca usarlo? 1786 01:17:37,900 --> 01:17:39,170 1787 01:17:39,170 --> 01:17:42,430 >> Así que para la fusión especie, básicamente, lo que va a hacer es que es 1788 01:17:42,430 --> 01:17:45,620 va a romper hacia abajo y romper hacia abajo hasta que sus elementos sólo individuales. 1789 01:17:45,620 --> 01:17:47,570 Los elementos individuales son fáciles de clasificar. 1790 01:17:47,570 --> 01:17:48,070 Vemos que. 1791 01:17:48,070 --> 01:17:50,760 Si usted tiene uno de los elementos, es ya considerada ordenada. 1792 01:17:50,760 --> 01:17:53,800 Así que en una entrada de n elementos, si n es menor que 2, 1793 01:17:53,800 --> 01:17:58,120 simplemente volver porque eso significa es 0 o 1 como hemos visto. 1794 01:17:58,120 --> 01:18:00,050 Los que se consideran elementos ordenados. 1795 01:18:00,050 --> 01:18:02,170 >> De lo contrario, romper por la mitad. 1796 01:18:02,170 --> 01:18:06,336 Ordene la primera mitad, ordenar la segunda la mitad, y luego unirlos. 1797 01:18:06,336 --> 01:18:07,460 ¿Por qué se llama fusión especie. 1798 01:18:07,460 --> 01:18:08,700 1799 01:18:08,700 --> 01:18:12,155 Así que tenemos aquí vamos a resolver estos. 1800 01:18:12,155 --> 01:18:13,410 1801 01:18:13,410 --> 01:18:17,210 Así que seguimos teniéndolos hasta que el tamaño de la matriz es 1. 1802 01:18:17,210 --> 01:18:20,790 Por eso, cuando es 1, apenas volvemos porque este es un arreglo ordenado, 1803 01:18:20,790 --> 01:18:23,940 y esto es un arreglo ordenado, y eso es una matriz ordenada, todos estamos ordenados. 1804 01:18:23,940 --> 01:18:25,390 1805 01:18:25,390 --> 01:18:29,420 Así que lo que hacemos es que iniciar la fusión de ellos juntos. 1806 01:18:29,420 --> 01:18:31,820 >> Así que la forma en que puede pensar en la fusión es 1807 01:18:31,820 --> 01:18:36,240 que acaba de extraer la más pequeña número de cada una de las matrices de sub 1808 01:18:36,240 --> 01:18:38,330 y sólo añadir a la matriz surgido. 1809 01:18:38,330 --> 01:18:44,290 Así que si usted mira aquí, cuando tenemos estos conjuntos que tienen 4, 6, y 1. 1810 01:18:44,290 --> 01:18:47,280 Cuando queremos fusionar estos, nos fijamos en estos dos primeros 1811 01:18:47,280 --> 01:18:50,730 y decimos, OK, 1 es más pequeña, que va a la parte delantera. 1812 01:18:50,730 --> 01:18:54,330 4 y 6, que no hay nada para comparar que, simplemente Etiquétalo hasta el final. 1813 01:18:54,330 --> 01:18:58,020 >> Cuando combinamos estos dos, que acabamos de tomar el más pequeño de estos dos, 1814 01:18:58,020 --> 01:18:59,310 por lo que es 1. 1815 01:18:59,310 --> 01:19:01,690 Y ahora tenemos la más pequeño de los dos, así que 2. 1816 01:19:01,690 --> 01:19:03,330 Más pequeño de estos dos, 3. 1817 01:19:03,330 --> 01:19:06,260 Más pequeño de estos dos, 4, 5, 6. 1818 01:19:06,260 --> 01:19:08,630 Así que usted está tirando de ellas. 1819 01:19:08,630 --> 01:19:11,210 Y porque no tienen sido ordenados previamente, 1820 01:19:11,210 --> 01:19:14,300 sólo hay uno comparación cada vez que hay. 1821 01:19:14,300 --> 01:19:19,610 Así que más código aquí, la representación justa. 1822 01:19:19,610 --> 01:19:24,410 Así se inicia en el centro y a ordenar a la izquierda y la derecha 1823 01:19:24,410 --> 01:19:26,180 y entonces simplemente fusionar esos. 1824 01:19:26,180 --> 01:19:30,080 >> Y no tenemos código para fusionar aquí. 1825 01:19:30,080 --> 01:19:34,110 Pero, de nuevo, si usted va en estudiar 50, que va a estar allí. 1826 01:19:34,110 --> 01:19:36,860 De lo contrario, venir a hablar conmigo si usted todavía está confundido. 1827 01:19:36,860 --> 01:19:42,340 Así que lo bueno aquí es que mejor de los casos, peor de los casos, y el tiempo de ejecución esperado 1828 01:19:42,340 --> 01:19:46,250 están todos en log n, que es mucho mejor que la que hemos 1829 01:19:46,250 --> 01:19:48,000 visto por el resto de nuestras clases. 1830 01:19:48,000 --> 01:19:51,840 Hemos visto n al cuadrado y lo que en realidad 1831 01:19:51,840 --> 01:19:54,380 llegar aquí se n log n, lo cual es genial. 1832 01:19:54,380 --> 01:19:55,830 >> Mira lo mucho mejor que es. 1833 01:19:55,830 --> 01:19:56,780 Tal agradable curva. 1834 01:19:56,780 --> 01:19:58,130 1835 01:19:58,130 --> 01:20:00,120 Así que mucho más eficiente. 1836 01:20:00,120 --> 01:20:03,510 Si alguna vez se pueda, utilizar la combinación de clase. 1837 01:20:03,510 --> 01:20:04,810 Esto le ahorrará tiempo. 1838 01:20:04,810 --> 01:20:07,670 Por otra parte, como hemos dicho, si estás abajo en esta zona inferior, 1839 01:20:07,670 --> 01:20:09,480 no tiene que gran parte de la diferencia. 1840 01:20:09,480 --> 01:20:11,360 Te levantas a miles y miles de entradas, 1841 01:20:11,360 --> 01:20:13,318 usted definitivamente quiere un algoritmo más eficiente. 1842 01:20:13,318 --> 01:20:14,730 1843 01:20:14,730 --> 01:20:19,400 Y, de nuevo, nuestra hermosa mesa de todos tipo que ustedes aprendieron hoy. 1844 01:20:19,400 --> 01:20:21,157 >> Así que sé que ha sido un día denso. 1845 01:20:21,157 --> 01:20:23,490 Esto no es necesariamente va para ayudarle con su conjunto de procesadores. 1846 01:20:23,490 --> 01:20:28,250 Pero yo sólo quiero hacer un descargo de responsabilidad esa sección no se trata sólo de conjuntos de procesadores. 1847 01:20:28,250 --> 01:20:31,240 Todo este material es justo juego para sus exámenes parciales. 1848 01:20:31,240 --> 01:20:35,430 Y también si lo hace seguir adelante con CS, estos son fundamentos muy importantes 1849 01:20:35,430 --> 01:20:37,870 que usted necesita saber. 1850 01:20:37,870 --> 01:20:41,700 Así que algunos días serán un poco más pset ayuda, 1851 01:20:41,700 --> 01:20:44,600 pero algunas semanas serán contenido mucho más real 1852 01:20:44,600 --> 01:20:46,600 que puede no parecer súper útil para usted en este momento, 1853 01:20:46,600 --> 01:20:51,215 pero te prometo si continúa el va a ser muy, muy útil. 1854 01:20:51,215 --> 01:20:52,560 1855 01:20:52,560 --> 01:20:54,250 >> Así que eso es todo por sección. 1856 01:20:54,250 --> 01:20:55,250 Abajo al alambre. 1857 01:20:55,250 --> 01:20:56,570 Lo hice en un minuto. 1858 01:20:56,570 --> 01:20:58,262 1859 01:20:58,262 --> 01:20:58,970 Pero hay que ir. 1860 01:20:58,970 --> 01:21:01,240 Y voy a tener donas o dulces. 1861 01:21:01,240 --> 01:21:03,464 ¿Es alérgico a cualquier persona nada, por cierto? 1862 01:21:03,464 --> 01:21:05,307 1863 01:21:05,307 --> 01:21:05,890 Los huevos y la leche. 1864 01:21:05,890 --> 01:21:08,120 Así donas son un no? 1865 01:21:08,120 --> 01:21:09,400 1866 01:21:09,400 --> 01:21:10,160 Okay. 1867 01:21:10,160 --> 01:21:10,770 Bien. 1868 01:21:10,770 --> 01:21:12,120 Hay chocolate? 1869 01:21:12,120 --> 01:21:12,620 Starburst. 1870 01:21:12,620 --> 01:21:13,837 1871 01:21:13,837 --> 01:21:14,670 Starbursts son buenas. 1872 01:21:14,670 --> 01:21:15,170 Okay. 1873 01:21:15,170 --> 01:21:17,045 Vamos a tener Starburst próxima semana entonces. 1874 01:21:17,045 --> 01:21:18,240 Eso es lo que voy a conseguir. 1875 01:21:18,240 --> 01:21:19,690 Ustedes tienen una gran semana. 1876 01:21:19,690 --> 01:21:20,460 Lea su especificación. 1877 01:21:20,460 --> 01:21:22,130 >> Déjeme saber si usted tiene alguna pregunta. 1878 01:21:22,130 --> 01:21:25,300 PSET dos grados deben ser a usted para el jueves. 1879 01:21:25,300 --> 01:21:28,320 Si usted tiene alguna pregunta acerca de cómo me califiqué algo 1880 01:21:28,320 --> 01:21:32,250 o por qué yo califiqué algo la forma en que hizo, por favor envíeme un correo electrónico, venir a hablar conmigo. 1881 01:21:32,250 --> 01:21:34,210 Estoy un poco esta locura semana, pero te prometo 1882 01:21:34,210 --> 01:21:36,340 Todavía voy a responder dentro de 24 horas. 1883 01:21:36,340 --> 01:21:38,240 Así que tener una gran semana, todo el mundo. 1884 01:21:38,240 --> 01:21:40,090 Buena suerte en su conjunto de procesadores. 1885 01:21:40,090 --> 01:21:41,248