1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [Sección 3] [menos cómodo] 2 00:00:03,000 --> 00:00:05,000 >> [Nate Hardison] [Harvard University] 3 00:00:05,000 --> 00:00:08,000 >> [Esta é CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:10,000 >> Todo ben, imos comezar. 5 00:00:10,000 --> 00:00:13,000 Benvido á Semana 4 de CS50. 6 00:00:13,000 --> 00:00:19,000 Se vostedes abrir un navegador e abrir pset 3, 7 00:00:19,000 --> 00:00:23,000 Scramble con CS50, imos comezar a ir 8 00:00:23,000 --> 00:00:26,000 a través da sección de preguntas alí. 9 00:00:26,000 --> 00:00:32,000 Así como a semana pasada, nós estaremos traballando no CS50 Spaces, 10 00:00:32,000 --> 00:00:35,000 se tamén vai tirar que ata ben, 11 00:00:35,000 --> 00:00:43,000 e se vai adiante e visita este enlace que eu teño aquí enriba na parte superior. 12 00:00:43,000 --> 00:00:45,000 É hora de comezar. 13 00:00:45,000 --> 00:00:51,000 Temos o noso programa ola pouco aquí. Nada tolo. 14 00:00:51,000 --> 00:00:55,000 Unha das primeiras cousas que quero facer con vós hoxe é pasar por riba de algunhas solucións 15 00:00:55,000 --> 00:00:58,000 ao conxunto de problemas 1, especie de exemplos de solucións, 16 00:00:58,000 --> 00:01:03,000 só así pode ter unha idea de que tipo de equipo código está escrito, 17 00:01:03,000 --> 00:01:07,000 que tipo de estudantes de código outros están escribindo, 18 00:01:07,000 --> 00:01:10,000 e ter que dar un ollo niso, porque sei que é raro 19 00:01:10,000 --> 00:01:14,000 Cando envíe unha solución para un conxunto de problemas e obter comentarios 20 00:01:14,000 --> 00:01:18,000 na súa propia versión, pero ás veces é útil para ver como as outras persoas o fixo, 21 00:01:18,000 --> 00:01:22,000 especialmente aqueles que son agradable. 22 00:01:22,000 --> 00:01:27,000 Para a maior parte, eu quedei realmente impresionado coas solucións que vostedes produciron. 23 00:01:27,000 --> 00:01:31,000 Eu aínda non empecei a mirar para os seus 2s conxunto de problemas, pero se é calquera cousa como o primeiro, 24 00:01:31,000 --> 00:01:34,000 iso non significa outra cousa que cousas boas. 25 00:01:34,000 --> 00:01:40,000 >> Se ollar para as miñas opinións, imos comezar todo o camiño de Revisión 1, 26 00:01:40,000 --> 00:01:47,000 e imos dar un ollo rápida en unha solución Mario. 27 00:01:47,000 --> 00:01:54,000 Se puxar isto, estes programas que imos presentar son correctas. 28 00:01:54,000 --> 00:01:56,000 Non houbo problemas de regularidade con estes problemas, pero si, 29 00:01:56,000 --> 00:01:59,000 queremos falar un pouco sobre as cuestións de deseño diferentes 30 00:01:59,000 --> 00:02:03,000 que estaban a ser usados ​​aquí. 31 00:02:03,000 --> 00:02:08,000 Unha das cousas que era interesante sobre a solución 32 00:02:08,000 --> 00:02:11,000 é que usou este novo concepto chamado de libre definir, 33 00:02:11,000 --> 00:02:15,000 por veces tamén referido como un hash definir. 34 00:02:15,000 --> 00:02:18,000 Deixe-me ampliar-lo aquí. 35 00:02:18,000 --> 00:02:24,000 A # establecer permite dar nomes a eses números no seu programa. 36 00:02:24,000 --> 00:02:28,000 Neste caso, a altura máxima dunha pirámide en Mario 37 00:02:28,000 --> 00:02:34,000 foi de 23 e en vez de poñer 23 no meu código 38 00:02:34,000 --> 00:02:37,000 que se refiren a iso como codificación dura 23 - 39 00:02:37,000 --> 00:02:43,000 vez que dá o nome max_height a ese número, 40 00:02:43,000 --> 00:02:48,000 de xeito que aquí no meu loop do-while 41 00:02:48,000 --> 00:02:51,000 realmente pode referirse a max_height 42 00:02:51,000 --> 00:02:55,000 en vez de poñer o número 23 polgadas 43 00:02:55,000 --> 00:02:57,000 [Estudante] Cal é a vantaxe de facer iso? 44 00:02:57,000 --> 00:02:59,000 Esta é unha gran cuestión. 45 00:02:59,000 --> 00:03:03,000 Unha delas é a lexibilidade. 46 00:03:03,000 --> 00:03:08,000 Unha vantaxe de usar esta # define é a lexibilidade. 47 00:03:08,000 --> 00:03:11,000 Cando eu estou lendo este código, podo ver o que está a suceder. 48 00:03:11,000 --> 00:03:15,000 >> Podo ver nesa condición aquí que estamos probando 49 00:03:15,000 --> 00:03:19,000 a altura de ser <0, o que poderiamos ter definido tamén 50 00:03:19,000 --> 00:03:22,000 para unha altura mínima ou unha altura min. 51 00:03:22,000 --> 00:03:25,000 A outra vantaxe é que podo entón ler o resto da liña para ver 52 00:03:25,000 --> 00:03:30,000 que está tamén a verificación para asegurarse de que a altura non é maior que a altura máxima, 53 00:03:30,000 --> 00:03:35,000 porque imos continuar mentres que a altura é maior que a altura máxima. 54 00:03:35,000 --> 00:03:40,000 A outra vantaxe é, se eu reducir un pouco aquí- 55 00:03:40,000 --> 00:03:49,000 se eu executar este programa e executa-lo, digamos, con 23, agora, 56 00:03:49,000 --> 00:03:52,000 ha imprimir os 23 liñas só como aquel. 57 00:03:52,000 --> 00:03:54,000 Pero dicir que eu quería cambiar a altura máxima, 58 00:03:54,000 --> 00:03:57,000 e agora quero limitar a altura máxima das pirámides 59 00:03:57,000 --> 00:04:06,000 para ser só dicir-home, que foi descolados. 60 00:04:06,000 --> 00:04:14,000 # Incluír # define max_height, 61 00:04:14,000 --> 00:04:18,000 e imos dicir que quería define-lo igual a 10. 62 00:04:18,000 --> 00:04:22,000 Agora, neste momento, todo o que eu tiña que facer era cambiar isto neste lugar un. 63 00:04:22,000 --> 00:04:27,000 Eu podo recompilar o código, e agora eu tentar escribir 12, 64 00:04:27,000 --> 00:04:30,000 el me vai preguntar de novo. 65 00:04:30,000 --> 00:04:33,000 Neste caso, estamos só usando max_height unha vez. 66 00:04:33,000 --> 00:04:37,000 Non é que de un gran problema para ir 67 00:04:37,000 --> 00:04:40,000 e cambia-lo no loop while se precisa. 68 00:04:40,000 --> 00:04:44,000 Pero en programas onde está referenciando o mesmo número máxico 69 00:04:44,000 --> 00:04:47,000 unha e outra vez, este # define mecanismo é realmente útil 70 00:04:47,000 --> 00:04:52,000 porque simplemente muda-lo unha vez no cume do ficheiro que é xeralmente onde poñer-los- 71 00:04:52,000 --> 00:04:57,000 é o cambio se infiltra a través do resto do ficheiro. 72 00:04:57,000 --> 00:05:02,000 >> Outras cousas que eu quería observar nesta tarefa que eu pensaba que parecía moi bo, 73 00:05:02,000 --> 00:05:05,000 un era o nome das variables. 74 00:05:05,000 --> 00:05:14,000 Vostede ve aquí que temos variables enteiras chamadas de liña e chamada altura. 75 00:05:14,000 --> 00:05:20,000 Espazos, hashes, que axuda a facer o código un pouco máis lexible, 76 00:05:20,000 --> 00:05:25,000 fai un pouco máis comprensible o que está realmente a suceder. 77 00:05:25,000 --> 00:05:31,000 Isto está en contraste co uso, por exemplo, letras aleatorias 78 00:05:31,000 --> 00:05:35,000 ou só gobbledygook completamente. 79 00:05:35,000 --> 00:05:39,000 A última cousa que eu vou apuntar é que, en loops, 80 00:05:39,000 --> 00:05:45,000 moitas veces estas variables iterador, estes contadores que usa no seu loops, 81 00:05:45,000 --> 00:05:51,000 é estándar e convencionais para comezar con calquera I e J a continuación, e, a continuación, k 82 00:05:51,000 --> 00:05:54,000 e ir de alí, se precisa máis variables, 83 00:05:54,000 --> 00:05:56,000 e iso é só unha convención. 84 00:05:56,000 --> 00:05:58,000 Hai moitas convencións. 85 00:05:58,000 --> 00:06:00,000 El depende da linguaxe de programación que está a usar. 86 00:06:00,000 --> 00:06:04,000 Pero en C, que normalmente comezan con i. 87 00:06:04,000 --> 00:06:08,000 Non ten sentido usar, por exemplo, A ou B 88 00:06:08,000 --> 00:06:13,000 , Dependendo da situación. 89 00:06:13,000 --> 00:06:15,000 Isto é todo para este. 90 00:06:15,000 --> 00:06:25,000 Se agora puxar arriba Revisión 2, podes ver un outro Mario, 91 00:06:25,000 --> 00:06:29,000 e este é semellante a outra que acabamos de ver, 92 00:06:29,000 --> 00:06:32,000 pero fai algo do tipo legal. 93 00:06:32,000 --> 00:06:38,000 Se olharmos para esta sección aquí no interior do interior para o lazo, 94 00:06:38,000 --> 00:06:44,000 eles están usando algunha sintaxe tolo buscando aquí ben nesta liña. 95 00:06:44,000 --> 00:06:47,000 Isto é chamado un operador ternário. 96 00:06:47,000 --> 00:06:53,000 É unha declaración máis condensada nunha liña. 97 00:06:53,000 --> 00:06:57,000 A condición é esa parte entre parénteses. 98 00:06:57,000 --> 00:07:05,000 É equivalente a dicir se j altura <- i - 1. 99 00:07:05,000 --> 00:07:10,000 E, a continuación, o que o contido do bloque que se serían son o espazo 100 00:07:10,000 --> 00:07:16,000 e, a continuación, o contido que a outra cousa sería se este #. 101 00:07:16,000 --> 00:07:20,000 É, esencialmente, a asignación dun espazo para esa variable. 102 00:07:20,000 --> 00:07:24,000 E colocar un espazo no contido do bloque variable, 103 00:07:24,000 --> 00:07:29,000 Se esta condición se responde, e se a condición non se responde, 104 00:07:29,000 --> 00:07:32,000 entón a variable bloque recibe este #. 105 00:07:32,000 --> 00:07:37,000 E despois, claro, en vez de construír unha cadea enteira 106 00:07:37,000 --> 00:07:43,000 e impresión de todo ao final esa solución imprime o personaxe de cada vez. 107 00:07:43,000 --> 00:07:48,000 Moi legal. 108 00:07:48,000 --> 00:07:53,000 >> Outro par de cousas para ollar. Nós imos pasar ganancioso. 109 00:07:53,000 --> 00:07:58,000 Agora, se olharmos para ganancioso, solución esta primeira 110 00:07:58,000 --> 00:08:00,000 usa eses # define un pouco. 111 00:08:00,000 --> 00:08:06,000 Temos unha constante definida para cada un dos diferentes números neste programa. 112 00:08:06,000 --> 00:08:12,000 Temos unha de centavos por dólar, unha para cuartos, moedas, moedas e centavos, 113 00:08:12,000 --> 00:08:15,000 e agora, se desprace para abaixo e ler o código, 114 00:08:15,000 --> 00:08:22,000 podemos ver un patrón mentres todo impresión loop out. 115 00:08:22,000 --> 00:08:25,000 Tipo de cerne do problema foi entender que 116 00:08:25,000 --> 00:08:29,000 vostede necesario para converter a boia que le na do usuario para un número enteiro 117 00:08:29,000 --> 00:08:32,000 con precisión facer a matemática, e iso é porque 118 00:08:32,000 --> 00:08:36,000 con números de punto flotante, como falamos na clase brevemente, 119 00:08:36,000 --> 00:08:41,000 non é posíbel representar con precisión cada valor único na liña de número 120 00:08:41,000 --> 00:08:47,000 porque hai valores infinitos entre 3 e, digamos, 3,1 mesmo. 121 00:08:47,000 --> 00:08:54,000 Pode ter 3,01 e 3,001 e 3,0001, e pode continuar. 122 00:08:54,000 --> 00:09:00,000 Acontece cando se está a traballar co diñeiro, moitas veces quere convertela-lo 123 00:09:00,000 --> 00:09:05,000 en formato completo, de xeito que non está perdendo uns centavos e ese tipo de cousas. 124 00:09:05,000 --> 00:09:09,000 Facelo e redondeo foi fundamental. 125 00:09:09,000 --> 00:09:14,000 Esta solución utilizada perfectamente simple algoritmo, gran, 126 00:09:14,000 --> 00:09:17,000 que diminúa o número de centavos restantes, primeiro por trimestres, 127 00:09:17,000 --> 00:09:19,000 a continuación, por moedas, a continuación, por recreo, a continuación, por tostões, 128 00:09:19,000 --> 00:09:24,000 e aumentando o número de moedas de cada vez. 129 00:09:24,000 --> 00:09:31,000 >> Outra solución que nós imos ver, como eu diminuír o zoom e vaia para a revisión 4, 130 00:09:31,000 --> 00:09:40,000 tivo un inicio moi semellante, pero en vez utilizado div e mod 131 00:09:40,000 --> 00:09:44,000 ben aquí para calcular o número de centavos. 132 00:09:44,000 --> 00:09:50,000 Iso, o número de aloxamentos é igual ao número de centavos divididos por 25, 133 00:09:50,000 --> 00:09:53,000 ea razón que isto funciona é porque estamos facendo unha división enteira, 134 00:09:53,000 --> 00:09:58,000 por iso é descartar calquera resto. 135 00:09:58,000 --> 00:10:02,000 [Estudante] Temos que comentar a investigación? 136 00:10:02,000 --> 00:10:05,000 Ela realmente depende. 137 00:10:05,000 --> 00:10:08,000 [Estudante] Está comentando máis que o código aquí. 138 00:10:08,000 --> 00:10:16,000 Si, e por iso hai unha morea de diferentes filosofías sobre iso. 139 00:10:16,000 --> 00:10:21,000 A miña filosofía persoal é que o seu código é realmente a verdade, 140 00:10:21,000 --> 00:10:24,000 como o seu código é o que está realmente en execución no ordenador, 141 00:10:24,000 --> 00:10:29,000 e para que o seu código debe ser lexible posible para non ter que moitos comentarios. 142 00:10:29,000 --> 00:10:33,000 Dito isto, cando está facendo cousas que son medio complicado matematicamente 143 00:10:33,000 --> 00:10:38,000 ou a través de algoritmos, é bo para comentar os para que poida 144 00:10:38,000 --> 00:10:43,000 engadir unha dimensión extra, unha capa extra para quen está lendo o código. 145 00:10:43,000 --> 00:10:49,000 Nesas solucións, moitas veces son comentados máis fortemente só porque 146 00:10:49,000 --> 00:10:52,000 queremos ser capaces de distribuír los e ter persoas busca-las 147 00:10:52,000 --> 00:10:56,000 e le-los moi facilmente. 148 00:10:56,000 --> 00:11:05,000 Pero, en definitiva, eu concordaría que este é abondo. 149 00:11:05,000 --> 00:11:07,000 [Estudante] Pero, cando en dúbida, vaia máis pesado? 150 00:11:07,000 --> 00:11:10,000 Cando en dúbida, vaia máis pesado. 151 00:11:10,000 --> 00:11:17,000 Algunhas persoas ás veces din 0 retorno ou algo así. 152 00:11:17,000 --> 00:11:20,000 Eu creo que é un comentario ridículo. 153 00:11:20,000 --> 00:11:22,000 Claramente que é o que está a suceder. 154 00:11:22,000 --> 00:11:25,000 Eu non teño de Inglés para me dicir iso. 155 00:11:25,000 --> 00:11:28,000 Ás veces as persoas escriben cousas como "kthxbai!" 156 00:11:28,000 --> 00:11:32,000 Este é un tipo de ben, pero tampouco- 157 00:11:32,000 --> 00:11:35,000 que non está facendo a diferenza entre os puntos comentando ou non. 158 00:11:35,000 --> 00:11:41,000 Estes tipos de comentarios son só ha, ha. 159 00:11:41,000 --> 00:11:43,000 Cool. 160 00:11:43,000 --> 00:11:48,000 >> Neste punto, imos comezar a traballar no conxunto de problemas 3 sección de preguntas. 161 00:11:48,000 --> 00:11:52,000 Se vostedes tirar iso de novo, 162 00:11:52,000 --> 00:11:55,000 como a semana pasada, non estamos indo a asistir os curtas nesta sección. 163 00:11:55,000 --> 00:12:00,000 Nós imos deixar vostedes facelo no seu propio tempo e falar sobre as preguntas. 164 00:12:00,000 --> 00:12:05,000 Pero agora nesta sección imos gastar un pouco máis 165 00:12:05,000 --> 00:12:11,000 falando menos o básico de codificación 166 00:12:11,000 --> 00:12:15,000 como fixemos a semana pasada, e en vez diso, imos centrar máis en 167 00:12:15,000 --> 00:12:22,000 un pouco máis da teoría, polo tanto, falar sobre a busca binaria e de clasificación. 168 00:12:22,000 --> 00:12:27,000 Desde aqueles de vostedes que teñen benvida a seguir, xunto coa charla, 169 00:12:27,000 --> 00:12:30,000 alguén me pode dar un resumo do que a diferenza é 170 00:12:30,000 --> 00:12:35,000 entre busca binaria e de procura lineal? 171 00:12:35,000 --> 00:12:37,000 O que está a suceder? Claro. 172 00:12:37,000 --> 00:12:42,000 Lineais investigacións a través de cada elemento da lista ordenada 173 00:12:42,000 --> 00:12:45,000 un por un por un por un por un, 174 00:12:45,000 --> 00:12:50,000 e busca binaria divide a lista en dous grupos, 175 00:12:50,000 --> 00:12:57,000 Comproba que o valor teclas que está a buscar é maior ou menor que o valor do punto medio 176 00:12:57,000 --> 00:13:00,000 que acaba de atopar, e se é menor, que vai coa lista inferior 177 00:13:00,000 --> 00:13:03,000 e despois divide de novo, fai a mesma función 178 00:13:03,000 --> 00:13:07,000 todo o camiño ata atopar o punto medio para ser igual ao valor propiamente dito. 179 00:13:07,000 --> 00:13:10,000 Dereito. 180 00:13:10,000 --> 00:13:12,000 >> Por que nos importan? 181 00:13:12,000 --> 00:13:20,000 Por que falamos de busca binaria contra investigación lineal? 182 00:13:20,000 --> 00:13:22,000 Si 183 00:13:22,000 --> 00:13:24,000 Binario é moito máis rápido, entón se dobrar o tamaño do problema 184 00:13:24,000 --> 00:13:27,000 dá un paso máis no canto de o dobre. 185 00:13:27,000 --> 00:13:29,000 Exactamente. 186 00:13:29,000 --> 00:13:31,000 Iso é unha gran resposta. 187 00:13:31,000 --> 00:13:36,000 Busca lineal é moi comprobando un elemento de cada vez, 188 00:13:36,000 --> 00:13:39,000 e, como vimos no primeiro día de clase 189 00:13:39,000 --> 00:13:42,000 David pasou polo seu exemplo libro de teléfono 190 00:13:42,000 --> 00:13:45,000 e arrincou unha páxina do libro de teléfono de cada vez 191 00:13:45,000 --> 00:13:47,000 e continúe a facer isto máis e máis e outra vez, 192 00:13:47,000 --> 00:13:51,000 que vai leva-lo moito tempo para atopar alguén no libro de teléfono, 193 00:13:51,000 --> 00:13:55,000 a menos, claro, que estaba buscando alguén no comezo do alfabeto. 194 00:13:55,000 --> 00:14:00,000 Con busca binaria, pode ir moito máis rápido, 195 00:14:00,000 --> 00:14:05,000 e non é só dúas veces máis rápido ou 3 veces máis rápido ou 4 veces máis rápido. 196 00:14:05,000 --> 00:14:13,000 Pero o problema convértese en menor e menor e menor moito máis rápido. 197 00:14:13,000 --> 00:14:17,000 Para ilustrar isto, imos comezar a falar sobre o que está a suceder 198 00:14:17,000 --> 00:14:21,000 cando escribimos busca binaria. 199 00:14:21,000 --> 00:14:27,000 O problema en cuestión é que se eu tivera unha matriz de números, 200 00:14:27,000 --> 00:14:40,000 por exemplo, 1, 2, 3, 5, 7, 23, 45, 78, 12,323, 201 00:14:40,000 --> 00:14:47,000 e 9 cunha tonelada de 0s despois, 202 00:14:47,000 --> 00:14:52,000 queremos ser capaces de descubrir moi rapidamente o que está en 203 00:14:52,000 --> 00:14:57,000 ese conxunto de números. 204 00:14:57,000 --> 00:15:00,000 Sei que isto parece un pouco parvo e un pouco artificial, 205 00:15:00,000 --> 00:15:02,000 porque agora é. 206 00:15:02,000 --> 00:15:05,000 Temos unha matriz que non ten elementos moi diversos en que, 207 00:15:05,000 --> 00:15:08,000 e se eu pedir un de vós para descubrir se ou non 208 00:15:08,000 --> 00:15:11,000 23 e na matriz, pode facelo moi rapidamente 209 00:15:11,000 --> 00:15:16,000 só mirando para iso e me dicir si ou non. 210 00:15:16,000 --> 00:15:20,000 O análogo a considerar é imaxinar se iso fose, por exemplo, 211 00:15:20,000 --> 00:15:27,000 unha folla de cálculo Excel con 10.000 liñas, 20.000 liñas. 212 00:15:27,000 --> 00:15:31,000 Por suposto, pode facer o comando F ou o F e control de buscar algo. 213 00:15:31,000 --> 00:15:33,000 Tamén pode usar os filtros e as cousas de procura, 214 00:15:33,000 --> 00:15:37,000 pero se tiña que ollar a través dese arquivo liña por liña por liña, 215 00:15:37,000 --> 00:15:40,000 que levaría moito tempo para atopalo. 216 00:15:40,000 --> 00:15:42,000 É tipo como no exemplo do libro de teléfono, tamén, onde 217 00:15:42,000 --> 00:15:44,000 ninguén mira a través dunha páxina dun libro de teléfono de cada vez. 218 00:15:44,000 --> 00:15:47,000 Normalmente, eles non abri-lo ao medio, 219 00:15:47,000 --> 00:15:50,000 ou, no caso dunha serie de libros de teléfono e dicionarios onde 220 00:15:50,000 --> 00:15:54,000 realmente telo introducido na primeira letra, 221 00:15:54,000 --> 00:16:01,000 Xire a primeira carta, abrir e comezar a pasar por alí. 222 00:16:01,000 --> 00:16:03,000 >> Me lembrar do seu nome novo. >> Sam. 223 00:16:03,000 --> 00:16:05,000 Sam. 224 00:16:05,000 --> 00:16:11,000 Como dixo Sam, que o proceso de procura lineal vai ser moi lento, 225 00:16:11,000 --> 00:16:15,000 e, en vez de busca binaria, a forma na que isto funciona é que 226 00:16:15,000 --> 00:16:21,000 cada vez que pasar por unha iteração do noso algoritmo de procura, 227 00:16:21,000 --> 00:16:27,000 imos dividir a lista ao medio, esencialmente, 228 00:16:27,000 --> 00:16:33,000 en dúas listas menores. 229 00:16:33,000 --> 00:16:39,000 E, a continuación, a próxima iteração do loop, imos división lo novo 230 00:16:39,000 --> 00:16:44,000 noutras listas menores. 231 00:16:44,000 --> 00:16:48,000 Como podes ver, o problema segue quedando menor e menor 232 00:16:48,000 --> 00:16:55,000 porque gardamos descartando metade da lista de cada vez. 233 00:16:55,000 --> 00:16:59,000 Como funciona este descarte? 234 00:16:59,000 --> 00:17:05,000 Só como recordatorio, o que imos facer, se fose un ordenador 235 00:17:05,000 --> 00:17:11,000 e nós foron, digamos, buscando o número 5 na lista 236 00:17:11,000 --> 00:17:15,000 que escoller un número no medio. 237 00:17:15,000 --> 00:17:26,000 No medio da lista, porque non son 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 números, 238 00:17:26,000 --> 00:17:32,000 Nós escoller o número, na posición de cuarto ou na posición 5, 239 00:17:32,000 --> 00:17:38,000 e diría que o medio da nosa lista. 240 00:17:38,000 --> 00:17:42,000 Escolla número no medio. 241 00:17:42,000 --> 00:17:51,000 Entón, así como Sam dixo, imos probar a ver se ese número é igual 242 00:17:51,000 --> 00:17:59,000 para o número que queremos chegar ou o noso número desexado. 243 00:17:59,000 --> 00:18:06,000 Se é igual, entón atopamos iso. Nós gañamos. 244 00:18:06,000 --> 00:18:12,000 Se non é igual, entón hai un par de casos. 245 00:18:12,000 --> 00:18:15,000 Os dous casos son ou o número ten que ser maior que o número que estamos mirando, 246 00:18:15,000 --> 00:18:19,000 ou é menor que. 247 00:18:19,000 --> 00:18:25,000 Se é maior, imos pasar á dereita. 248 00:18:25,000 --> 00:18:33,000 E se é menos, nós nos movemos cara á esquerda. 249 00:18:33,000 --> 00:18:41,000 E, entón, repetir todo o proceso de novo 250 00:18:41,000 --> 00:18:48,000 en cada metade da dereita ou da metade esquerda da lista. 251 00:18:48,000 --> 00:18:51,000 >> O primeiro problema na sección de hoxe é descubrir 252 00:18:51,000 --> 00:18:55,000 como podemos realmente comezar a expresar isto no código C. 253 00:18:55,000 --> 00:18:58,000 Temos o pseudocódigo aquí. 254 00:18:58,000 --> 00:19:04,000 O que nós imos comezar a facer é que eu vou tirar-se un novo espazo, 255 00:19:04,000 --> 00:19:09,000 Gardar esta revisión para que teñamos esas notas para máis tarde, 256 00:19:09,000 --> 00:19:20,000 imos borrar todo iso, e en seguida, copiar e pegar a partir do conxunto de problemas 257 00:19:20,000 --> 00:19:26,000 Esta información nos nosos espazos, e espero que iso non rompe. 258 00:19:26,000 --> 00:19:28,000 Perfecto. 259 00:19:28,000 --> 00:19:33,000 Se vostedes todos fan isto, copia e pega este código no seu novo espazo, 260 00:19:33,000 --> 00:19:43,000 nun baleiro. 261 00:19:43,000 --> 00:19:47,000 Imos tentar Daniel. Se compilar e executar este programa, é que funciona? 262 00:19:47,000 --> 00:19:49,000 >> Non O que está dicindo? 263 00:19:49,000 --> 00:19:53,000 El di que o control atinxe final de non-void función. 264 00:19:53,000 --> 00:19:55,000 Si, entón deixe-me tentar executa-lo. 265 00:19:55,000 --> 00:19:59,000 Vós xa viron que antes? Vostede sabe o que significa isto? 266 00:19:59,000 --> 00:20:01,000 Ok, imos dissecar iso un pouco. 267 00:20:01,000 --> 00:20:10,000 Está dicindo, file.c na liña 9, columna 1, temos un erro, como dixen, 268 00:20:10,000 --> 00:20:16,000 e el di que é derivada do aviso de erro eo aviso tipo de retorno. 269 00:20:16,000 --> 00:20:18,000 Parece que algo está a suceder co tipo de retorno, o que ten sentido. 270 00:20:18,000 --> 00:20:21,000 Temos unha función non nula, o que significa que temos unha función 271 00:20:21,000 --> 00:20:24,000 que non volve baleira. 272 00:20:24,000 --> 00:20:27,000 Unha función de baleiro é un que se parece con esta: 273 00:20:27,000 --> 00:20:35,000 void foo (), e é nula, xa que o tipo de retorno é nulo, 274 00:20:35,000 --> 00:20:38,000 o que significa que se nós tivésemos algo aquí 275 00:20:38,000 --> 00:20:45,000 como un retorno, teriamos un erro do compilador para iso. 276 00:20:45,000 --> 00:20:49,000 Con todo, temos unha función non nula. 277 00:20:49,000 --> 00:20:51,000 A nosa función non nula neste caso é a nosa función de busca 278 00:20:51,000 --> 00:20:56,000 porque ten un tipo de retorno de bool. 279 00:20:56,000 --> 00:20:59,000 Cando é dicindo que o control atinxe o fin dunha función non nula, 280 00:20:59,000 --> 00:21:02,000 é porque a investigación non ten unha instrución de retorno. 281 00:21:02,000 --> 00:21:04,000 Non está retornando nada do tipo bool. 282 00:21:04,000 --> 00:21:09,000 >> Podemos fixar iso, eo que é o que vostedes pensan 283 00:21:09,000 --> 00:21:13,000 investigación deberá retornar por defecto? 284 00:21:13,000 --> 00:21:16,000 Cal debe ser o valor de retorno patrón de busca? 285 00:21:16,000 --> 00:21:19,000 Porque é o que podemos poñer na final. 286 00:21:19,000 --> 00:21:21,000 Charlotte, ten algunha-? 287 00:21:21,000 --> 00:21:23,000 Verdadeiro ou falso? >> Verdadeiro ou falso. 288 00:21:23,000 --> 00:21:26,000 Cal? 289 00:21:26,000 --> 00:21:28,000 Falso. Eu non sei. 290 00:21:28,000 --> 00:21:30,000 Falso? Imos tentar. 291 00:21:30,000 --> 00:21:32,000 Por que di return false? Isto é gran intuición. 292 00:21:32,000 --> 00:21:35,000 [Charlotte] Eu non sei. 293 00:21:35,000 --> 00:21:39,000 Nós imos voltar false neste caso, porque este será o noso estándar 294 00:21:39,000 --> 00:21:44,000 Se por algún motivo a lista está baleira ou a agulla 295 00:21:44,000 --> 00:21:46,000 que está a buscar non existe. 296 00:21:46,000 --> 00:21:50,000 Entón, ao final, se non voltar certo anteriormente nesta función, 297 00:21:50,000 --> 00:21:55,000 sempre sabemos que esta función vai dicir non, non é na matriz. 298 00:21:55,000 --> 00:21:58,000 Non é o palheiro. 299 00:21:58,000 --> 00:22:03,000 Agora, se compilar e executar, deixe-me gardar este para que poidamos tirar cara arriba. 300 00:22:03,000 --> 00:22:08,000 Agora, se compilar e executar o noso programa, que constrúe. 301 00:22:08,000 --> 00:22:12,000 Nós temos o noso poder pouco. 302 00:22:12,000 --> 00:22:20,000 Se acertar 4-uh-oh. 303 00:22:20,000 --> 00:22:25,000 Non imprimir nada. Parece que todo rematou ben. 304 00:22:25,000 --> 00:22:35,000 Temos que encher este polgadas 305 00:22:35,000 --> 00:22:39,000 Nós conversas sobre o algoritmo en pseudocódigo un pouco atrás. 306 00:22:39,000 --> 00:22:44,000 Deixe-me ver, senón este, 307 00:22:44,000 --> 00:22:49,000 e eu vou tirar o algoritmo de volta de novo. 308 00:22:49,000 --> 00:22:51,000 Imos bater este cara. Nope. 309 00:22:51,000 --> 00:22:58,000 Non é. 310 00:22:58,000 --> 00:23:03,000 Como podemos facer iso? 311 00:23:03,000 --> 00:23:11,000 O que sería unha boa estratexia para a posta en marcha este código? 312 00:23:11,000 --> 00:23:16,000 Ten que escoller un número no medio. 313 00:23:16,000 --> 00:23:23,000 Como é que imos escoller un número no medio dunha matriz? 314 00:23:23,000 --> 00:23:25,000 Algunha suxestión? 315 00:23:25,000 --> 00:23:27,000 [Estudante] strlen dividido por 2. 316 00:23:27,000 --> 00:23:32,000 Strlen dividido por 2. Isto é un gran. 317 00:23:32,000 --> 00:23:35,000 Strlen traballa con tipos especiais de matrices. 318 00:23:35,000 --> 00:23:38,000 Que tipos de matrices? 319 00:23:38,000 --> 00:23:44,000 Matrices cadea, arrays de caracteres. 320 00:23:44,000 --> 00:23:48,000 É que mesmo tipo de concepto que queremos aplicar, 321 00:23:48,000 --> 00:23:52,000 pero non podemos usar strlen porque non temos unha matriz de caracteres. 322 00:23:52,000 --> 00:23:55,000 Nós temos unha matriz de enteiros. 323 00:23:55,000 --> 00:23:58,000 Pero o que strlen comezar por nós? 324 00:23:58,000 --> 00:24:01,000 Vostede sabe o que está para nós? 325 00:24:01,000 --> 00:24:03,000 [Estudante] strlen queda-nos o longo. 326 00:24:03,000 --> 00:24:05,000 Exactamente, queda-nos o longo. 327 00:24:05,000 --> 00:24:09,000 Strlen recibe a lonxitude da matriz para nós. 328 00:24:09,000 --> 00:24:14,000 >> Como é que imos conseguir isto no noso programa de busca binaria? 329 00:24:14,000 --> 00:24:18,000 Como obter a lonxitude dunha matriz? 330 00:24:18,000 --> 00:24:20,000 [Estudante] strlen? 331 00:24:20,000 --> 00:24:25,000 Pode obter a lonxitude dunha matriz formatada correctamente secuencia C con strlen. 332 00:24:25,000 --> 00:24:31,000 O problema, porén, é que non temos unha matriz de cadea. 333 00:24:31,000 --> 00:24:36,000 Se miramos cara atrás, neste código, temos esa matriz enteiro. 334 00:24:36,000 --> 00:24:38,000 Como sabemos canto tempo é? 335 00:24:38,000 --> 00:24:44,000 [Estudante] Existe un equivalente a un punto final, como int l ou algo así? 336 00:24:44,000 --> 00:24:49,000 Acontece que hai, en realidade, non é, e iso de certa forma, iso é 337 00:24:49,000 --> 00:24:52,000 unha desas cousas que é bo saber sobre C, 338 00:24:52,000 --> 00:24:57,000 que non hai ningunha forma de obter a lonxitude dunha matriz 339 00:24:57,000 --> 00:24:59,000 todo o que eu che dar é a matriz. 340 00:24:59,000 --> 00:25:02,000 A razón traballa con cordas, a razón strlen obras, 341 00:25:02,000 --> 00:25:06,000 é porque se unha cadea está formatado correctamente, 342 00:25:06,000 --> 00:25:12,000 terá que especial caracter \ 0 no final. 343 00:25:12,000 --> 00:25:16,000 >> Tamén pode imaxinar se ten unha cadea formatada incorrectamente 344 00:25:16,000 --> 00:25:20,000 e non hai ningún caracter \ 0 alí, entón a cousa toda non funciona. 345 00:25:20,000 --> 00:25:22,000 [Estudante] Podes engadir o \ 0? 346 00:25:22,000 --> 00:25:24,000 Poderiamos neste caso. 347 00:25:24,000 --> 00:25:29,000 Poderiamos engadir algún tipo de \ 0 348 00:25:29,000 --> 00:25:33,000 ou algún tipo de significar personaxe e entón usar isto. 349 00:25:33,000 --> 00:25:36,000 Pero iso non é moi de ir traballar 350 00:25:36,000 --> 00:25:40,000 porque o 0 \ é un tipo char, 351 00:25:40,000 --> 00:25:43,000 e aquí temos ints. 352 00:25:43,000 --> 00:25:46,000 A outra cousa é que, se fose para usar un valor especial 353 00:25:46,000 --> 00:25:49,000 como -1 a marcar o final dunha matriz 354 00:25:49,000 --> 00:25:54,000 entón nunca podería almacenar un -1 nas nosas matrices enteiros. 355 00:25:54,000 --> 00:25:56,000 Nós estariamos presos. 356 00:25:56,000 --> 00:26:00,000 Acontece que a única forma de obter a lonxitude 357 00:26:00,000 --> 00:26:03,000 dunha matriz en C é, en realidade, lembre que 358 00:26:03,000 --> 00:26:08,000 cando configure-lo e pasalo ao redor coa matriz 359 00:26:08,000 --> 00:26:14,000 de xeito que sempre que eu teño unha función que vai facer algún traballo 360 00:26:14,000 --> 00:26:18,000 nun array de enteiros ou flota ou duplica ou o que ten, 361 00:26:18,000 --> 00:26:22,000 Eu tamén preciso dar a función lonxitude da matriz, 362 00:26:22,000 --> 00:26:26,000 e iso é o que fixemos aquí en función de procura. 363 00:26:26,000 --> 00:26:30,000 Se ollar, o que fixemos cando pasamos na nosa matriz aquí, 364 00:26:30,000 --> 00:26:36,000 que tamén pasan na lonxitude, o tamaño. 365 00:26:36,000 --> 00:26:41,000 Acontece que chamamos esta variable aquí, 366 00:26:41,000 --> 00:26:43,000 este parámetro ou argumento. 367 00:26:43,000 --> 00:26:46,000 Iso é chamado de lista de argumentos da función ou lista de parámetros, 368 00:26:46,000 --> 00:26:51,000 e estes son tamén chamados de argumentos ou parámetros. 369 00:26:51,000 --> 00:26:53,000 As persoas usan termos distintos en momentos diferentes. 370 00:26:53,000 --> 00:26:55,000 Eu ás veces cambiar-los persoalmente. 371 00:26:55,000 --> 00:27:00,000 O que pasa é que esta variable aquí é un nome semellante 372 00:27:00,000 --> 00:27:03,000 a esta # defínese aquí. 373 00:27:03,000 --> 00:27:06,000 Pero eles non son a mesma cousa. 374 00:27:06,000 --> 00:27:11,000 A capitalización non importa. 375 00:27:11,000 --> 00:27:14,000 >> Se ollar para o que ocorre aquí, nós declaramos 376 00:27:14,000 --> 00:27:18,000 nosa matriz int, o que chamamos números. 377 00:27:18,000 --> 00:27:23,000 Nós demos o noso tamaño, o que corresponde ao noso # define-se na parte superior. 378 00:27:23,000 --> 00:27:27,000 Vai ser 8. 379 00:27:27,000 --> 00:27:35,000 E entón, cando entón chamar a nosa función de investigación, debaixo, 380 00:27:35,000 --> 00:27:40,000 pasamos o número que desexa buscar, o que temos solicitado, 381 00:27:40,000 --> 00:27:43,000 obtido a partir do usuario. 382 00:27:43,000 --> 00:27:46,000 Pasamos na matriz, este número, 383 00:27:46,000 --> 00:27:51,000 e, despois, tamén teñen que pasar no tamaño da matriz, 384 00:27:51,000 --> 00:27:57,000 e, a continuación, o valor de tamaño 8 queda almacenado 385 00:27:57,000 --> 00:28:01,000 ou pasados ​​a esta variable tamaño completo chamado. 386 00:28:01,000 --> 00:28:08,000 Temos o tamaño da matriz. 387 00:28:08,000 --> 00:28:11,000 Agora, se volver para o que estabamos falando antes, 388 00:28:11,000 --> 00:28:14,000 Eu creo que Missy trouxo o punto de que o que necesitabamos facer é obter a lonxitude da matriz 389 00:28:14,000 --> 00:28:20,000 e dividir por dous, e que vai dar o punto medio. 390 00:28:20,000 --> 00:28:22,000 Imos ver. 391 00:28:22,000 --> 00:28:25,000 Podo ter alguén escribir este e garda-lo no seu espazo? 392 00:28:25,000 --> 00:28:27,000 Como preto de Leila? 393 00:28:27,000 --> 00:28:31,000 Podo ter escribir isto? 394 00:28:31,000 --> 00:28:35,000 Escribir a primeira liña onde se toma a lonxitude da matriz e obter o punto medio 395 00:28:35,000 --> 00:28:41,000 e almacena-lo nunha nova variable. 396 00:28:41,000 --> 00:28:44,000 Vou che dar algúns segundos. Está preparado? 397 00:28:44,000 --> 00:28:46,000 [Estudante inaudível] 398 00:28:46,000 --> 00:28:50,000 Por suposto, eu podería ter a calcular o punto medio 399 00:28:50,000 --> 00:28:55,000 da matriz palheiro dentro da función de busca 400 00:28:55,000 --> 00:29:03,000 utilizando a lonxitude da matriz palheiro, que é a variable de tamaño? 401 00:29:03,000 --> 00:29:08,000 Nada complicado aquí. 402 00:29:08,000 --> 00:29:12,000 [Leila] tamaño Just / 2 e just- 403 00:29:12,000 --> 00:29:17,000 E garda-lo, e presione o botón Gardar-se aquí enriba, 404 00:29:17,000 --> 00:29:19,000 e imos arrincala. 405 00:29:19,000 --> 00:29:22,000 Perfecto. 406 00:29:22,000 --> 00:29:28,000 Alí imos nós. Impresionante. 407 00:29:28,000 --> 00:29:30,000 >> Como é, este vai compilar? 408 00:29:30,000 --> 00:29:32,000 [Leila] Non, el ten que ser maior. 409 00:29:32,000 --> 00:29:34,000 [Nate] Si, entón o que necesitamos facer? 410 00:29:34,000 --> 00:29:36,000 [Leila] Como punto medio int ou algo así. 411 00:29:36,000 --> 00:29:41,000 Impresionante. Si, imos facelo, int size = punto medio. 412 00:29:41,000 --> 00:29:44,000 Será que isto vai compilar? 413 00:29:44,000 --> 00:29:47,000 Imos borrar este comentario e tiralo do camiño. 414 00:29:47,000 --> 00:29:50,000 O que non se compilado sobre iso? 415 00:29:50,000 --> 00:29:52,000 Nós non estamos facendo nada enteiro, 416 00:29:52,000 --> 00:29:55,000 por iso necesitamos imprimir lo ou algo así. 417 00:29:55,000 --> 00:29:58,000 Si, exactamente. 418 00:29:58,000 --> 00:30:00,000 Nós imos ter unha variable non utilizada. 419 00:30:00,000 --> 00:30:02,000 O que máis non vai traballar sobre iso? 420 00:30:02,000 --> 00:30:06,000 Eu creo que dixo algo, Sam. Punto e coma. 421 00:30:06,000 --> 00:30:08,000 Si, eu estou perdendo os puntos e comas. 422 00:30:08,000 --> 00:30:14,000 Vai ser unha constante ao longo de todo o período. 423 00:30:14,000 --> 00:30:17,000 A última cousa que vou facer é que eu vou poñer algún espazo en branco en ambos os dous lados 424 00:30:17,000 --> 00:30:23,000 deste operador aquí, xa que é normalmente como facemos 425 00:30:23,000 --> 00:30:26,000 de acordo co noso guía de estilo. 426 00:30:26,000 --> 00:30:29,000 Temos o punto medio da nosa matriz. 427 00:30:29,000 --> 00:30:32,000 Agora, nos lembrar de volta ao noso algoritmo, 428 00:30:32,000 --> 00:30:37,000 cal foi o segundo paso que tivemos que facer unha vez que temos o punto medio? 429 00:30:37,000 --> 00:30:42,000 [Estudante] Se é maior [inaudível]. 430 00:30:42,000 --> 00:30:48,000 Si, por iso temos que facer algún tipo de comparación, eo que estamos comparando aquí? 431 00:30:48,000 --> 00:30:53,000 Vostede dixo que se el é maior que. O que hai en que a sentenza se refire? 432 00:30:53,000 --> 00:30:57,000 O número que aparece, se é maior que o punto medio, entón a carón da matriz? 433 00:30:57,000 --> 00:31:05,000 Exactamente, por iso o número que aparece cando- 434 00:31:05,000 --> 00:31:10,000 A agulla, polo que estamos comparando coa agulla, 435 00:31:10,000 --> 00:31:12,000 eo que estamos comparando contra a agulla? 436 00:31:12,000 --> 00:31:15,000 Porque a agulla é o que estamos a buscar. 437 00:31:15,000 --> 00:31:18,000 Estamos comparándoo a chegar ao punto medio. 438 00:31:18,000 --> 00:31:21,000 >> Pero será que ten sentido para comprobar 439 00:31:21,000 --> 00:31:27,000 punto medio = agulla? 440 00:31:27,000 --> 00:31:32,000 Isto ten sentido? 441 00:31:32,000 --> 00:31:35,000 Alguén discorda? 442 00:31:35,000 --> 00:31:40,000 Imos tentar, se (punto medio agulla ==). 443 00:31:40,000 --> 00:31:42,000 [Estudante] Non printf vostede o atopou. 444 00:31:42,000 --> 00:31:51,000 [Nate] printf ("Nós descubrimos que \ n"); 445 00:31:51,000 --> 00:31:56,000 Se non! Vou comezar a facer algo diferente aquí. 446 00:31:56,000 --> 00:32:00,000 Vou comezar a poñer cintas ao redor de se as declaracións en todo 447 00:32:00,000 --> 00:32:05,000 só porque se nós engadimos máis cousas, entón 448 00:32:05,000 --> 00:32:07,000 Nós non temos os compiladores. 449 00:32:07,000 --> 00:32:09,000 Si, Sam. Ten un punto. 450 00:32:09,000 --> 00:32:12,000 O problema é que o punto central representa unha posición na matriz, 451 00:32:12,000 --> 00:32:15,000 pero pode obtelo para representar o valor en que a posición da matriz. 452 00:32:15,000 --> 00:32:17,000 Isto é un gran punto. 453 00:32:17,000 --> 00:32:19,000 Será que todo o mundo escoitar o que Sam dixo? 454 00:32:19,000 --> 00:32:22,000 El dixo que como é punto medio 455 00:32:22,000 --> 00:32:28,000 representa só unha posición na matriz, pero non é o elemento real na matriz. 456 00:32:28,000 --> 00:32:30,000 Se pensar sobre o código como escrita agora, 457 00:32:30,000 --> 00:32:35,000 se miramos para esta matriz aquí abaixo, que ten 8 elementos que, 458 00:32:35,000 --> 00:32:39,000 o que é o valor do punto medio será nesta función? 459 00:32:39,000 --> 00:32:41,000 [Estudante] 4. 460 00:32:41,000 --> 00:32:45,000 [Nate] 4. 461 00:32:45,000 --> 00:32:51,000 Se olharmos para o número 4 - 462 00:32:51,000 --> 00:32:54,000 e podemos só facer este código e poñer un rostro pouco triste aquí 463 00:32:54,000 --> 00:32:58,000 porque non pensou-se executar este código 464 00:32:58,000 --> 00:33:04,000 como é agora, cargando-o, construción, deixe-me rolar para abaixo, 465 00:33:04,000 --> 00:33:09,000 e miramos para o número 4, 466 00:33:09,000 --> 00:33:18,000 que atopamos, pero non chegar a este printf si. 467 00:33:18,000 --> 00:33:23,000 Unha razón é que nós non volver true, 468 00:33:23,000 --> 00:33:26,000 pero nós realmente atopar o número 4? 469 00:33:26,000 --> 00:33:28,000 E Sam é dicir non. 470 00:33:28,000 --> 00:33:31,000 O que atopamos? 471 00:33:31,000 --> 00:33:35,000 Nós realmente atopamos o punto medio, que se olharmos para a matriz para acá, 472 00:33:35,000 --> 00:33:38,000 vai ser o elemento no índice 4 que estamos mirando, 473 00:33:38,000 --> 00:33:42,000 que é 23. 474 00:33:42,000 --> 00:33:46,000 >> Como é que imos realmente ter ese elemento no punto medio 475 00:33:46,000 --> 00:33:48,000 e non só o punto medio en si? 476 00:33:48,000 --> 00:33:52,000 [Estudante] Nós entraría char ou algo así? 477 00:33:52,000 --> 00:33:55,000 O que tería que facer, só por curiosidade? 478 00:33:55,000 --> 00:33:57,000 Podes elaborar un pouco máis? 479 00:33:57,000 --> 00:34:02,000 Tes de transformar a posición para o número, 480 00:34:02,000 --> 00:34:05,000 así que ten que facer algunha conexión, eu creo que é char, pero pode non ser. 481 00:34:05,000 --> 00:34:07,000 Si, iso é un bo punto. 482 00:34:07,000 --> 00:34:12,000 Estamos facendo unha morea de postos esta convertendo caracteres, eses personaxes, 483 00:34:12,000 --> 00:34:14,000 durante os dous primeiros conxuntos de problemas. 484 00:34:14,000 --> 00:34:18,000 Acontece que aquí, iso é case semellante ao 485 00:34:18,000 --> 00:34:24,000 accedendo o carácter om dentro dunha cadea, se iso ten sentido. 486 00:34:24,000 --> 00:34:30,000 Aquí queremos acceder ao elemento punto medio. 487 00:34:30,000 --> 00:34:34,000 Como podemos facer iso? 488 00:34:34,000 --> 00:34:39,000 Kevin, tes algunha suxestión de como podemos facer iso? 489 00:34:39,000 --> 00:34:44,000 Vostede podería facer palheiro, soporte aberto, medio, pechou soporte. 490 00:34:44,000 --> 00:34:46,000 Podes escribir isto por nós? 491 00:34:46,000 --> 00:34:51,000 Garda-lo aquí, e nós imos tirar isto. 492 00:34:51,000 --> 00:34:56,000 Estamos mirando para esa liña 9, 493 00:34:56,000 --> 00:34:59,000 e nós estamos entendendo que nós non queremos comparar a agulla para o punto medio, 494 00:34:59,000 --> 00:35:03,000 pero en vez diso, queremos comparar a agulla 495 00:35:03,000 --> 00:35:07,000 para o elemento no punto medio posición dentro da nosa matriz palheiro. 496 00:35:07,000 --> 00:35:10,000 Cool. 497 00:35:10,000 --> 00:35:12,000 Alí imos nós. 498 00:35:12,000 --> 00:35:15,000 Si, iso parece moi bo, si (== agulla palheiro [punto medio]). 499 00:35:15,000 --> 00:35:18,000 Atopamos. 500 00:35:18,000 --> 00:35:22,000 Agora, se executar o código de volta we'll-se un pouco bits 501 00:35:22,000 --> 00:35:26,000 el compila, é executado, e agora miramos para 4, 502 00:35:26,000 --> 00:35:30,000 non atopamos, porque agora estamos realmente empezando a número 23. 503 00:35:30,000 --> 00:35:33,000 Estamos recibindo o valor de 23, e iso é o que estamos comparando a nosa agulla. 504 00:35:33,000 --> 00:35:35,000 Pero iso é bo. Este é un paso na dirección certa. 505 00:35:35,000 --> 00:35:37,000 >> Isto é o que estamos intentando facer. 506 00:35:37,000 --> 00:35:40,000 Non estamos tentando comparar a agulla contra posicións na matriz 507 00:35:40,000 --> 00:35:44,000 senón contra os elementos reais da matriz. 508 00:35:44,000 --> 00:35:49,000 Se miramos para atrás de novo, agora a próxima etapa no noso algoritmo, 509 00:35:49,000 --> 00:35:51,000 cal é o seguinte paso? 510 00:35:51,000 --> 00:35:57,000 Leila xa mencionado brevemente. 511 00:35:57,000 --> 00:36:00,000 [Estudante] Asegúrese de que é maior ou menor que e, a continuación, decidir que o camiño a se mover. 512 00:36:00,000 --> 00:36:03,000 [Nate] Si, entón como é que imos facelo? 513 00:36:03,000 --> 00:36:07,000 Podes poñer algún eu vou-gardar esta revisión, 514 00:36:07,000 --> 00:36:13,000 e, a continuación, se pór en algunhas liñas que vai facer iso. 515 00:36:13,000 --> 00:36:15,000 Si, Charlotte. >> Eu teño unha pregunta. 516 00:36:15,000 --> 00:36:19,000 Se non é punto medio - 1, porque o primeiro é 517 00:36:19,000 --> 00:36:26,000 é 0 indexados, polo que se poñemos 4, que non é realmente o personaxe que está buscando? 518 00:36:26,000 --> 00:36:30,000 Si, e outro problema que se 519 00:36:30,000 --> 00:36:35,000 iso é unha gran captura, porque o que vai acabar acontecendo, posiblemente, 520 00:36:35,000 --> 00:36:42,000 manter en movemento e nós nunca axustar inicialmente? 521 00:36:42,000 --> 00:36:46,000 Eu creo que o que pode acabar facendo é tentar acceder 522 00:36:46,000 --> 00:36:49,000 o elemento na posición 8 da matriz, 523 00:36:49,000 --> 00:36:53,000 que neste caso non existe. 524 00:36:53,000 --> 00:36:56,000 Imos querer facer algún tipo de contabilidade para o feito de 525 00:36:56,000 --> 00:36:59,000 que temos unha indexación cero. 526 00:36:59,000 --> 00:37:05,000 [Charlotte] Sentímolo, eu quería dicir punto medio - 1 entre corchetes. 527 00:37:05,000 --> 00:37:08,000 Podemos facelo. 528 00:37:08,000 --> 00:37:10,000 Volveremos a esta cuestión un pouco. 529 00:37:10,000 --> 00:37:13,000 Unha vez que comezan a chegar ao looping real, 530 00:37:13,000 --> 00:37:16,000 que é cando nós imos realmente ver iso entrar en xogo. 531 00:37:16,000 --> 00:37:21,000 De momento, non podemos facelo, pero está totalmente certo. 532 00:37:21,000 --> 00:37:28,000 Que a indexación cero terá un efecto que é preciso explicar. 533 00:37:28,000 --> 00:37:30,000 Imos ver. 534 00:37:30,000 --> 00:37:34,000 >> Como é a maior e menor que-? 535 00:37:34,000 --> 00:37:36,000 [Estudante] chegar a facer o maior e menor do que a parte. 536 00:37:36,000 --> 00:37:41,000 Eu só non tiña seguro de que imprimir, se cre que é menos que o punto medio palheiro ou superior. 537 00:37:41,000 --> 00:37:43,000 Aquí podo gardar o que I've- 538 00:37:43,000 --> 00:37:47,000 [Nate] Si, si gardar o que ten, e nós imos puxa-lo cara arriba. 539 00:37:47,000 --> 00:37:49,000 Alí imos nós. 540 00:37:49,000 --> 00:37:51,000 [Estudante] E eu poñer puntos de interrogación para o que eu non sabía. 541 00:37:51,000 --> 00:37:54,000 [Nate] que parece gran. 542 00:37:54,000 --> 00:37:58,000 Aquí temos puntos de interrogación, porque aínda non sei 543 00:37:58,000 --> 00:38:06,000 o que imos facer moito aínda. 544 00:38:06,000 --> 00:38:12,000 O que queremos facer oops, temos algunhas claves todo funky en nós. 545 00:38:12,000 --> 00:38:15,000 Imos corrixir esas chaves. 546 00:38:15,000 --> 00:38:19,000 Alí imos nós. 547 00:38:19,000 --> 00:38:22,000 E entón o que queremos facer, de acordo co noso algoritmo, 548 00:38:22,000 --> 00:38:27,000 se non atopa a agulla? 549 00:38:27,000 --> 00:38:32,000 Dicir no caso de que a agulla é menor que o que estamos mirando. Kevin. 550 00:38:32,000 --> 00:38:34,000 Só ollar para a media esquerda. 551 00:38:34,000 --> 00:38:40,000 Certo, entón imos poñer un comentario aquí que di "mire para media esquerda." 552 00:38:40,000 --> 00:38:46,000 E se a agulla é maior que o palheiro no punto medio, o que queremos facer? 553 00:38:46,000 --> 00:38:48,000 [Estudante] Entón mira para o lado dereito. 554 00:38:48,000 --> 00:38:53,000 Olle para o lado dereito, "ollar para a metade dereita." 555 00:38:53,000 --> 00:38:58,000 Nada mal. 556 00:38:58,000 --> 00:39:05,000 Ok, entón, neste momento, as cousas están moi ben. 557 00:39:05,000 --> 00:39:13,000 O problema co código como está escrito é o que? 558 00:39:13,000 --> 00:39:15,000 [Estudante] Non ten parámetros para as metades. 559 00:39:15,000 --> 00:39:18,000 Certo, que non teñen puntos de extrema para as dúas metades. 560 00:39:18,000 --> 00:39:20,000 Tamén vai só para pasar por iso unha vez. 561 00:39:20,000 --> 00:39:23,000 Só imos ollar para un punto medio. 562 00:39:23,000 --> 00:39:27,000 Ou o elemento está aí, ou non é. 563 00:39:27,000 --> 00:39:34,000 A fin de completar isto, imos ter que facer algún tipo de repetición. 564 00:39:34,000 --> 00:39:39,000 Necesitamos manter repetindo ata descubrimos que 565 00:39:39,000 --> 00:39:43,000 ou o elemento está aí porque reducimos e, finalmente, atopou, 566 00:39:43,000 --> 00:39:46,000 ou non está aí porque nós miramos a través de todas as cousas 567 00:39:46,000 --> 00:39:52,000 nas metades correspondentes da matriz e descubriu que nada está aí. 568 00:39:52,000 --> 00:39:56,000 >> Sempre que teño esa repetición suceder, que é o que imos usar? 569 00:39:56,000 --> 00:39:58,000 [Estudante] Un loop. 570 00:39:58,000 --> 00:40:00,000 Algún tipo de lazo. Si 571 00:40:00,000 --> 00:40:03,000 [Estudante] Podemos facer un loop do-while e telo facer, e, mentres 572 00:40:03,000 --> 00:40:10,000 a agulla non non é igual-Estou seguro de onde eu estaba indo con iso. 573 00:40:10,000 --> 00:40:18,000 Pero tipo como facelo, sempre que non valora o igual que a entrada do usuario. 574 00:40:18,000 --> 00:40:21,000 Si, entón imos ver como iso pode escribir-se? 575 00:40:21,000 --> 00:40:23,000 Vostede dixo que imos usar un lazo do-while. 576 00:40:23,000 --> 00:40:26,000 Onde é que o facer de inicio? 577 00:40:26,000 --> 00:40:33,000 [Estudante] Logo tras o tamaño / 2. 578 00:40:33,000 --> 00:40:42,000 [Nate] Ok, eo que é o que imos facer? 579 00:40:42,000 --> 00:40:44,000 Imos encher o tempo despois. 580 00:40:44,000 --> 00:40:46,000 O que imos facer? 581 00:40:46,000 --> 00:40:49,000 [Estudante] Non queremos facer todo o que temos na parte de? 582 00:40:49,000 --> 00:40:52,000 [Nate] facer todo isto, xenial. 583 00:40:52,000 --> 00:40:55,000 Copiar e pegar. 584 00:40:55,000 --> 00:40:59,000 Oh, cara. 585 00:40:59,000 --> 00:41:03,000 Imos ver se isto funciona, se pudermos guía sobre iso. 586 00:41:03,000 --> 00:41:08,000 Bonito. 587 00:41:08,000 --> 00:41:16,000 Ok, e gardar este para que vostedes teñen. 588 00:41:16,000 --> 00:41:21,000 Todo ben, e nós imos facelo mentres- 589 00:41:21,000 --> 00:41:25,000 Cal era a condición, mentres estaba despois? 590 00:41:25,000 --> 00:41:31,000 [Estudante] Mentres a agulla non é igual, entón como o punto de exclamación. 591 00:41:31,000 --> 00:41:37,000 Pero eu non sei exactamente o que é aínda. 592 00:41:37,000 --> 00:41:39,000 [Nate] Si, esta é unha forma de facelo. 593 00:41:39,000 --> 00:41:41,000 Sam, ten un comentario? 594 00:41:41,000 --> 00:41:43,000 [Sam] Esquecín cando eu olhei para os vídeos, 595 00:41:43,000 --> 00:41:48,000 Eu tomei unha imaxe dun dos o-como cando fixemos o pseudocódigo para el, 596 00:41:48,000 --> 00:41:52,000 había algunha relación entre Max e min. 597 00:41:52,000 --> 00:41:58,000 Creo que foi algo así como o máximo é sempre menos de min. 598 00:41:58,000 --> 00:42:00,000 Entendín. 599 00:42:00,000 --> 00:42:04,000 [Sam] ou como se Max non sexa inferior a min ou algo así, 600 00:42:04,000 --> 00:42:06,000 porque iso significa que investigou todo. 601 00:42:06,000 --> 00:42:13,000 >> Si, entón que é o que soa como máximo e mínimo estaban referíndose? 602 00:42:13,000 --> 00:42:16,000 [Sam] valores que enteiros que van cambiar 603 00:42:16,000 --> 00:42:18,000 en relación a onde imos colocar o punto medio. 604 00:42:18,000 --> 00:42:20,000 Exactamente. 605 00:42:20,000 --> 00:42:24,000 [Sam] Nese punto, el vai [inaudível] calcular o máximo e mínimo. 606 00:42:24,000 --> 00:42:29,000 Punto medio é esta idea de Max e min. 607 00:42:29,000 --> 00:42:35,000 Isto ten sentido para as persoas? 608 00:42:35,000 --> 00:42:39,000 Se tivésemos que comezar a ollar para como imos facer esa iteração, 609 00:42:39,000 --> 00:42:43,000 está totalmente seguro que queremos usar algún tipo de do-while. 610 00:42:43,000 --> 00:42:49,000 Pero eu creo que, se lembrar o que está pasando no lugar desa matriz 611 00:42:49,000 --> 00:42:53,000 eo que está realmente a suceder! Vou escribir aquí- 612 00:42:53,000 --> 00:42:58,000 na primeira iteração de investigación binaria, temos- 613 00:42:58,000 --> 00:43:05,000 Vou usar B e e para denotar o principio. 614 00:43:05,000 --> 00:43:10,000 E entón, o fin da nosa matriz. 615 00:43:10,000 --> 00:43:14,000 Sabemos que o comezo é a 4 ben aquí, 616 00:43:14,000 --> 00:43:18,000 e sabemos que o fin está en 108. 617 00:43:18,000 --> 00:43:23,000 Dicir que estamos a buscar o número 15. 618 00:43:23,000 --> 00:43:27,000 A primeira vez que facemos isto, como vimos anteriormente, 619 00:43:27,000 --> 00:43:30,000 o punto medio é ou vai ser 16 ou 23 620 00:43:30,000 --> 00:43:34,000 dependendo de como calcular as cousas. 621 00:43:34,000 --> 00:43:37,000 Dende uniformemente dividindo o medio nos daría este espazo 622 00:43:37,000 --> 00:43:42,000 entre 16 e 23, non é posible división lo uniformemente 623 00:43:42,000 --> 00:43:47,000 ou división lo e chegar a un punto medio certo. 624 00:43:47,000 --> 00:43:49,000 Nós imos ollar para 16. 625 00:43:49,000 --> 00:43:55,000 Nós imos realizar "Ei, 16> 15, que estamos a buscar." 626 00:43:55,000 --> 00:43:59,000 Para, a continuación, ollar para a metade esquerda da matriz 627 00:43:59,000 --> 00:44:03,000 o que vai acabar facendo está descartando 628 00:44:03,000 --> 00:44:07,000 Esta porción superior enteira 629 00:44:07,000 --> 00:44:16,000 e dicindo: "Ok, agora o noso punto final vai ser aquí." 630 00:44:16,000 --> 00:44:22,000 A próxima iteração do noso circuíto, agora estamos mirando para esa matriz, 631 00:44:22,000 --> 00:44:25,000 eliminar eficazmente esta porción, porque agora 632 00:44:25,000 --> 00:44:30,000 se está a tomar o punto medio como a diferenza entre o inicio e fin, 633 00:44:30,000 --> 00:44:34,000 atopamos o noso punto medio para ser 8, 634 00:44:34,000 --> 00:44:40,000 que pode entón comprobar 8 para ver onde está en relación ao número que estamos a buscar, 635 00:44:40,000 --> 00:44:44,000 15, creo que 15 é maior, 636 00:44:44,000 --> 00:44:49,000 por iso temos que pasar a parte dereita da lista, 637 00:44:49,000 --> 00:44:51,000 que sabemos porque somos seres humanos, e podemos ver iso. 638 00:44:51,000 --> 00:44:54,000 Sabemos que a parte dereita vai ser onde atopalo, 639 00:44:54,000 --> 00:45:01,000 pero o ordenador non sabe que, así que imos facer é que vai realmente 640 00:45:01,000 --> 00:45:04,000 ter este ir para arriba, e agora o comezo eo fin 641 00:45:04,000 --> 00:45:11,000 son o mesmo punto, de xeito que o punto central convértese no único número da lista, nese punto, 642 00:45:11,000 --> 00:45:16,000 que é de 15, e atopou-o. 643 00:45:16,000 --> 00:45:21,000 Será que publicar algunha luz sobre onde este máximo toda e notación min vai, 644 00:45:21,000 --> 00:45:24,000 manter o control dos puntos finais da matriz, a fin de descubrir 645 00:45:24,000 --> 00:45:35,000 como estreitar as cousas? 646 00:45:35,000 --> 00:45:42,000 >> O que sucedería se non fose igual a 15 agora? 647 00:45:42,000 --> 00:45:52,000 O que se estivésemos mirando para 15 e, en vez diso, este número tamén foron 16? 648 00:45:52,000 --> 00:45:54,000 Nós diriamos, "Oh, é maior. 649 00:45:54,000 --> 00:45:57,000 Queremos volver para a esquerda. " 650 00:45:57,000 --> 00:46:01,000 E nós mover a nosa e para a dereita, 651 00:46:01,000 --> 00:46:06,000 en que punto temos un terminal que sería conflitante. 652 00:46:06,000 --> 00:46:09,000 Non sería capaz de buscar calquera máis elementos 653 00:46:09,000 --> 00:46:13,000 porque agora temos o noso punto final eo noso punto de partida, 654 00:46:13,000 --> 00:46:16,000 o noso máximo eo noso min, están agora viradas. 655 00:46:16,000 --> 00:46:23,000 Buscamos a través de toda a matriz. Non podo atopar nada. 656 00:46:23,000 --> 00:46:27,000 Ese é o momento en que queremos dicir: "Ok, imos deixar este algoritmo. 657 00:46:27,000 --> 00:46:34,000 Non atopamos nada. Nós sabemos que non está aquí. " 658 00:46:34,000 --> 00:46:36,000 Como é que isto vai? 659 00:46:36,000 --> 00:46:40,000 [Estudante] Como exactamente o ordenador cambiar o final? 660 00:46:40,000 --> 00:46:45,000 Como o final acabar antes do inicio? 661 00:46:45,000 --> 00:46:48,000 O final acaba antes do inicio 662 00:46:48,000 --> 00:46:54,000 por mor da matemática que imos facer cada vez que facemos isto. 663 00:46:54,000 --> 00:47:00,000 A nosa forma de intercambiar é que se ollar para a primeira vez que facemos este intercambio 664 00:47:00,000 --> 00:47:03,000 en que ten inicio a 4 e un extremo 665 00:47:03,000 --> 00:47:13,000 todo o camiño ata a 108 eo noso punto medio, digamos, en 16 - 666 00:47:13,000 --> 00:47:20,000 Eu estou indo a recuperar iso de volta para 15 se nós estamos mirando para o 15, 667 00:47:20,000 --> 00:47:25,000 sabiamos que o que fixemos cando fixo a 16 e viu que era maior 668 00:47:25,000 --> 00:47:28,000 e quería descartar toda a parte dereita da lista, 669 00:47:28,000 --> 00:47:36,000 vimos que o que nós queriamos facer é mover este aquí. 670 00:47:36,000 --> 00:47:44,000 Efectivamente, o e foi movido para un antes do punto medio. 671 00:47:44,000 --> 00:47:48,000 Do mesmo xeito, cando fixemos esta iteração do algoritmo 672 00:47:48,000 --> 00:47:51,000 É o punto medio era de 8, 673 00:47:51,000 --> 00:47:55,000 verificouse que 8 <15, entón nós queriamos para mover o b 674 00:47:55,000 --> 00:48:00,000 un pasado do punto medio. 675 00:48:00,000 --> 00:48:07,000 Agora, no inicio e no fin son os dous xuntos no 15. 676 00:48:07,000 --> 00:48:10,000 >> Se tivésemos sido suceder para buscar algún outro valor, e non 15, 677 00:48:10,000 --> 00:48:14,000 ou se o 15 fora unha vez 16, 678 00:48:14,000 --> 00:48:20,000 teriamos atopado o e queremos pasar unha antes do punto medio. 679 00:48:20,000 --> 00:48:33,000 Agora o e estaría alí capotou menos que o b. 680 00:48:33,000 --> 00:48:39,000 Imos examinar como podemos realmente acabar este algoritmo de codificación. 681 00:48:39,000 --> 00:48:44,000 Sabemos que queremos ter ese cálculo punto medio. 682 00:48:44,000 --> 00:48:48,000 Sabemos tamén que pretende controlar o inicio e fin da matriz 683 00:48:48,000 --> 00:48:51,000 da nosa matriz actual, para que poidamos descubrir 684 00:48:51,000 --> 00:48:56,000 onde esta metade esquerda da lista é e onde a metade dereita da lista está. 685 00:48:56,000 --> 00:49:03,000 Nós facemos iso cun inicio e fin, 686 00:49:03,000 --> 00:49:07,000 ou podemos chamalos de mínimo e máximo. 687 00:49:07,000 --> 00:49:10,000 Vou usar comezar e rematar este tempo. 688 00:49:10,000 --> 00:49:15,000 Cando comezamos, se olharmos para o noso exemplo aquí, 689 00:49:15,000 --> 00:49:20,000 noso comezo foi definida para o inicio da matriz, como natural. 690 00:49:20,000 --> 00:49:25,000 O índice foi iso? O que debe ser a nosa comezar? 691 00:49:25,000 --> 00:49:27,000 Daniel. 692 00:49:27,000 --> 00:49:30,000 [Daniel] Haystack [0]. 693 00:49:30,000 --> 00:49:37,000 [Nate] Si, entón nós poderíamos define-lo igual ao palheiro [0]. 694 00:49:37,000 --> 00:49:40,000 O problema, con todo, é que esta non nos dá a posición do primeiro elemento. 695 00:49:40,000 --> 00:49:45,000 Isto dá-nos o índice do primeiro elemento ou o valor real en que a primeira posición. 696 00:49:45,000 --> 00:49:47,000 [Estudante] Isto converter a 0,20? 697 00:49:47,000 --> 00:49:52,000 [Nate] O que isto vai facer é, así, el non vai facer calquera conversión. 698 00:49:52,000 --> 00:49:56,000 O que vai facer é que vai almacenar un 4 en comezar, 699 00:49:56,000 --> 00:49:59,000 e despois será difícil facer comparacións contra comezar 700 00:49:59,000 --> 00:50:03,000 porque begin vai realizar o valor de 4, 701 00:50:03,000 --> 00:50:06,000 que é o inicio da nosa matriz, 702 00:50:06,000 --> 00:50:08,000 pero queremos seguir os índices na matriz 703 00:50:08,000 --> 00:50:11,000 ao contrario dos valores. 704 00:50:11,000 --> 00:50:17,000 Nós imos realmente usar a 0, así. 705 00:50:17,000 --> 00:50:20,000 Cara ao final da matriz-Charlotte trouxo esta un pouco máis cedo. 706 00:50:20,000 --> 00:50:23,000 Este é o lugar onde nós imos ter en conta a indexación cero. 707 00:50:23,000 --> 00:50:25,000 >> Charlotte, que é o final da matriz? 708 00:50:25,000 --> 00:50:28,000 O que é o índice da extremidade? 709 00:50:28,000 --> 00:50:30,000 [Charlotte] Tamaño - 1. 710 00:50:30,000 --> 00:50:32,000 Si, e que o tamaño que debemos usar? 711 00:50:32,000 --> 00:50:35,000 Debemos usar o tamaño de capital ou tamaño minúsculo? 712 00:50:35,000 --> 00:50:37,000 Tamaño Capital. 713 00:50:37,000 --> 00:50:42,000 Neste caso, poderiamos usar o tamaño de capital. 714 00:50:42,000 --> 00:50:45,000 Se quixésemos esta función para portátil 715 00:50:45,000 --> 00:50:48,000 e use esta función noutros programas, 716 00:50:48,000 --> 00:50:50,000 podemos realmente usar o tamaño minúsculo. 717 00:50:50,000 --> 00:50:52,000 É bo tamén. 718 00:50:52,000 --> 00:51:01,000 Pero Charlotte é totalmente certo que queremos ter tamaño - 1. 719 00:51:01,000 --> 00:51:03,000 Neste punto 720 00:51:03,000 --> 00:51:05,000 [Estudante] Como é que pode usar o tamaño maiúscula? 721 00:51:05,000 --> 00:51:07,000 Como é que nós poderíamos usar tamaño maiúscula? 722 00:51:07,000 --> 00:51:13,000 Acontece que estes # define son realmente, 723 00:51:13,000 --> 00:51:19,000 baixo o capo, un texto como localizar e substituír, se iso ten sentido. 724 00:51:19,000 --> 00:51:24,000 Cando compilar o código, a fase de pre-procesamento 725 00:51:24,000 --> 00:51:27,000 do compilador pasa o arquivo 726 00:51:27,000 --> 00:51:31,000 e mira para todas as partes que escribiu tamaño capital, 727 00:51:31,000 --> 00:51:39,000 e substitúe o texto, literalmente, con un 8, só como aquel. 728 00:51:39,000 --> 00:51:42,000 Nese sentido, iso é moi diferente dunha variable. 729 00:51:42,000 --> 00:51:45,000 Non ocupa espazo na memoria. 730 00:51:45,000 --> 00:51:52,000 É un truco sinxelo substitución de texto. 731 00:51:52,000 --> 00:51:57,000 Neste caso, imos empregar o tamaño. 732 00:51:57,000 --> 00:52:01,000 A partir de aquí, quero facer algún tipo de repetición, 733 00:52:01,000 --> 00:52:03,000 e que estamos no camiño correcto co noso lazo do-while. 734 00:52:03,000 --> 00:52:08,000 Queremos facer algo ata que unha condición non máis se, 735 00:52:08,000 --> 00:52:12,000 e como vimos anteriormente, vimos que esa condición 736 00:52:12,000 --> 00:52:19,000 era de feito que nós non queremos o fin 737 00:52:19,000 --> 00:52:24,000 ser menor que a comezar. 738 00:52:24,000 --> 00:52:26,000 >> Esta é a nosa condición de parada. 739 00:52:26,000 --> 00:52:35,000 Se isto ocorrer, queremos parar e declarar como "Ei, pero non atopamos nada." 740 00:52:35,000 --> 00:52:43,000 Para expresar iso, queremos usar algún tipo de lazo. 741 00:52:43,000 --> 00:52:49,000 Neste caso, sería un loop do-while, un loop, loop de un tempo? 742 00:52:49,000 --> 00:52:51,000 Temos un lazo do-while aquí. 743 00:52:51,000 --> 00:52:53,000 Vostede caras como esa visión? 744 00:52:53,000 --> 00:52:59,000 Pensas que debemos tentar unha visión diferente? 745 00:52:59,000 --> 00:53:01,000 Kevin, todos os pensamentos? 746 00:53:01,000 --> 00:53:06,000 Nós poderiamos ter un loop while porque sabemos máximo 747 00:53:06,000 --> 00:53:11,000 sería maior que a de calquera maneira min iniciais. 748 00:53:11,000 --> 00:53:14,000 Si, por iso non hai inicio que debe acontecer. 749 00:53:14,000 --> 00:53:17,000 Os lazos facer mentres-son grandes cando ten algo para arrincar 750 00:53:17,000 --> 00:53:21,000 antes despois probar, mentres aquí 751 00:53:21,000 --> 00:53:26,000 sabemos que non imos manter reinitializing tanto comezar e rematar 752 00:53:26,000 --> 00:53:28,000 Cada volta do loop. 753 00:53:28,000 --> 00:53:32,000 Sabemos que queremos para arrincar-los, a continuación, comprobar a nosa condición. 754 00:53:32,000 --> 00:53:38,000 Neste caso, realmente ir con un loop while simple. 755 00:53:38,000 --> 00:53:44,000 Acontece que facer mentres loops son usados ​​moi raro. 756 00:53:44,000 --> 00:53:49,000 Unha morea de lugares tan sequera ensinan que mentres loops. 757 00:53:49,000 --> 00:53:53,000 Son bos para xestionar a entrada do usuario, de xeito que vimos moitos deles ata agora. 758 00:53:53,000 --> 00:53:59,000 Pero normal para e mentres lazos son moito máis comúns. 759 00:53:59,000 --> 00:54:03,000 Acontece que esta condición como escrito 760 00:54:03,000 --> 00:54:09,000 non vai realmente facer-nos moi ben, e por que isto? 761 00:54:09,000 --> 00:54:11,000 Sinto moito, eu non sei o seu nome. 762 00:54:11,000 --> 00:54:13,000 Estou Jerry. >> Desculpa? 763 00:54:13,000 --> 00:54:15,000 B-O-R-L-I. 764 00:54:15,000 --> 00:54:18,000 Ah, ok. 765 00:54:18,000 --> 00:54:23,000 Eu non vexo que na miña lista. 766 00:54:23,000 --> 00:54:26,000 Ah, é porque, oh, iso ten sentido. 767 00:54:26,000 --> 00:54:31,000 Vostede ten unha idea de por que isto loop while pode non funcionar como desexado, 768 00:54:31,000 --> 00:54:38,000 como escrito coa condición? 769 00:54:38,000 --> 00:54:43,000 [Jerry] É dicir, como quere todo o material despois de no-? 770 00:54:43,000 --> 00:54:46,000 Si, entón esta é unha. 771 00:54:46,000 --> 00:54:49,000 Quizais teñamos que poñer todas esas cousas para o loop while, o que é totalmente certo. 772 00:54:49,000 --> 00:54:55,000 A outra cousa que é un pouco máis problemático, pero é que esta condición non funciona. 773 00:54:55,000 --> 00:54:57,000 [Estudante] Debe lanzalo. 774 00:54:57,000 --> 00:55:04,000 Certo, entón esta condición non será sempre certo, inicialmente a forma que nós conversas sobre iso. 775 00:55:04,000 --> 00:55:08,000 Queremos facer algo ata 00:55:13,000 pero queremos facer algo mentres 777 00:55:13,000 --> 00:55:21,000 comezar a finais ≤. 778 00:55:21,000 --> 00:55:24,000 >> Hai que a inversión da lóxica de alí. 779 00:55:24,000 --> 00:55:27,000 Eu son culpable de cometer estes erros o tempo. 780 00:55:27,000 --> 00:55:31,000 [Student] Por que ten que ser menor ou igual a? 781 00:55:31,000 --> 00:55:33,000 Porque se lembra do caso que temos que 782 00:55:33,000 --> 00:55:36,000 onde había só un elemento, e fomos cara a abaixo, 783 00:55:36,000 --> 00:55:43,000 e nós estabamos mirando só o 15 na nosa matriz? 784 00:55:43,000 --> 00:55:47,000 E o noso principio eo noso fin fose o mesmo elemento. 785 00:55:47,000 --> 00:55:50,000 Queremos estar seguro de que lidamos con ese caso. 786 00:55:50,000 --> 00:55:54,000 Se fixésemos unha recta menor que, 787 00:55:54,000 --> 00:55:58,000 que só sería capaz de descender a unha matriz de dous elementos. 788 00:55:58,000 --> 00:56:06,000 Así que descendeu a último elemento que, se fose ese o noso elemento, nós nunca atopalo. 789 00:56:06,000 --> 00:56:10,000 Agora, aquí, podemos facer exactamente o que estaba dicindo. 790 00:56:10,000 --> 00:56:15,000 Podemos comezar plopping cousas ben no medio do noso loop while. 791 00:56:15,000 --> 00:56:20,000 Podemos plop no noso punto medio. 792 00:56:20,000 --> 00:56:24,000 Podemos tomar todas estas declaracións que, 793 00:56:24,000 --> 00:56:30,000 retirala los deste lazo do-while, 794 00:56:30,000 --> 00:56:34,000 plop-los, 795 00:56:34,000 --> 00:56:39,000 limpar as cousas un pouco, 796 00:56:39,000 --> 00:56:48,000 e eu vou adiante e salvar esta revisión. 797 00:56:48,000 --> 00:56:53,000 E, neste punto, estamos quedando moi preto. 798 00:56:53,000 --> 00:56:55,000 Sam. 799 00:56:55,000 --> 00:56:58,000 Eu creo que tamén ten que ter punto medio int = tamaño - 1/2. 800 00:56:58,000 --> 00:57:01,000 Peguei tamaño - 1/2. 801 00:57:01,000 --> 00:57:05,000 Hai algo que necesitamos cambiar sobre esa liña? 802 00:57:05,000 --> 00:57:10,000 Iso foi unha boa captura. 803 00:57:10,000 --> 00:57:14,000 >> O que o tamaño fai? Estamos sempre cambiando de tamaño? 804 00:57:14,000 --> 00:57:17,000 Co fin de manter a liña como este, hai que cambiar o tamaño. 805 00:57:17,000 --> 00:57:21,000 Temos que cambiar o tamaño cada vez que volta para o lazo. 806 00:57:21,000 --> 00:57:25,000 Pero lembre, cando estabamos pasando por noso exemplo un pouco máis cedo, 807 00:57:25,000 --> 00:57:30,000 e tivemos o inicio a 4 808 00:57:30,000 --> 00:57:33,000 e ao final todo o camiño en 108? 809 00:57:33,000 --> 00:57:35,000 Como calculamos o punto medio? 810 00:57:35,000 --> 00:57:38,000 Estabamos a usar o tamaño? 811 00:57:38,000 --> 00:57:40,000 Ou estaban usando comezan e terminan en vez diso? 812 00:57:40,000 --> 00:57:42,000 É a diferenza entre o extremo é o inicio. 813 00:57:42,000 --> 00:57:50,000 Exactamente, e exactamente como eu debería escribir que, Charlotte? 814 00:57:50,000 --> 00:57:52,000 Basta finalizar - comezar. 815 00:57:52,000 --> 00:57:55,000 Non é preciso facer a - 1 816 00:57:55,000 --> 00:57:58,000 porque a - 1, foi incluída no final e comezar xa. 817 00:57:58,000 --> 00:58:00,000 [Nate] Gran, está totalmente certo. 818 00:58:00,000 --> 00:58:03,000 Nós non temos que facer o - un porque - unha foi incluído 819 00:58:03,000 --> 00:58:08,000 e contabilizados cando inicializar a variable final. 820 00:58:08,000 --> 00:58:11,000 >> Hai algo que eu teño que facer para ter sintaticamente esta liña ten sentido? 821 00:58:11,000 --> 00:58:13,000 [Estudante] Ademais comezar. >> Ademais comezar? 822 00:58:13,000 --> 00:58:15,000 [Estudante] Ao final. 823 00:58:15,000 --> 00:58:20,000 Porque é calculado só a metade da lonxitude. 824 00:58:20,000 --> 00:58:26,000 Debe engadir a comezar. 825 00:58:26,000 --> 00:58:31,000 [Nate] O que este cálculo para nós? 826 00:58:31,000 --> 00:58:35,000 Se pensamos sobre o fin desta primeira iteração do loop, 827 00:58:35,000 --> 00:58:40,000 final vai ser o índice de posición 7. 828 00:58:40,000 --> 00:58:43,000 Comezar está na posición 0. 829 00:58:43,000 --> 00:58:47,000 Lembre, nós estamos mirando para calquera 830 00:58:47,000 --> 00:58:52,000 posición 3 ou da posición 4. 831 00:58:52,000 --> 00:58:56,000 Se miramos para esta matemáticas, só para facelo un pouco máis tanxible, 832 00:58:56,000 --> 00:59:02,000 poñer algúns números aquí, temos 7, 0, 833 00:59:02,000 --> 00:59:10,000 para 7-0, e despois / 2 834 00:59:10,000 --> 00:59:19,000 é 3 na división enteira, o que é. 835 00:59:19,000 --> 00:59:26,000 Entón necesitamos entón engadir de volta o noso comezar? 836 00:59:26,000 --> 00:59:28,000 Non facer neste caso. 837 00:59:28,000 --> 00:59:31,000 Na primeira iteração, só pode ir ben, porque comezar é 0. 838 00:59:31,000 --> 00:59:36,000 Pero a medida que avanzamos, nós realmente só precisa de todos 839 00:59:36,000 --> 00:59:42,000 final - Comezar / 2. 840 00:59:42,000 --> 00:59:46,000 Hai outro truco aquí, e que é un saber de precedencia. 841 00:59:46,000 --> 00:59:49,000 [Estudante] Necesitamos parénteses? 842 00:59:49,000 --> 00:59:53,000 [Nate] Exactamente, e iso é porque non poñer eses parénteses, 843 00:59:53,000 --> 00:59:58,000 a continuación esta liña será interpretado en vez 844 00:59:58,000 --> 01:00:09,000 como (final) - (inicio / 2), que en definitiva non quere. 845 01:00:09,000 --> 01:00:11,000 Coidado coas normas de precedencia. 846 01:00:11,000 --> 01:00:15,000 [Estudante] Por que non é acabar + comezar? 847 01:00:15,000 --> 01:00:17,000 Por que non é acabar + comezar? 848 01:00:17,000 --> 01:00:19,000 [Estudante] Por que non é isto? 849 01:00:19,000 --> 01:00:24,000 Por que sería +? 850 01:00:24,000 --> 01:00:26,000 Eu creo que está certo. 851 01:00:26,000 --> 01:00:28,000 [Estudante] Porque é a media? 852 01:00:28,000 --> 01:00:31,000 [Nate] + End comezar, está totalmente certo. 853 01:00:31,000 --> 01:00:34,000 Guau, eu totalmente gozado. Está certo. 854 01:00:34,000 --> 01:00:39,000 Se estivésemos facendo o menos, queremos engadir a comezar cara atrás dentro 855 01:00:39,000 --> 01:00:43,000 Neste caso, é moi certo que queremos tomar a media dos dous, 856 01:00:43,000 --> 01:00:45,000 así que nós queremos para engadila los, en vez de restar-los. 857 01:00:45,000 --> 01:00:49,000 [Estudante] Isto tamén funciona se fixo final - Comezar / 2 + comezar. 858 01:00:49,000 --> 01:00:55,000 Sería se non facemos-Creo que si. 859 01:00:55,000 --> 01:01:00,000 >> Por exemplo, se estivésemos mirando para comezar, 860 01:01:00,000 --> 01:01:04,000 e cambiamos iso aquí 861 01:01:04,000 --> 01:01:08,000 ao 15. 862 01:01:08,000 --> 01:01:12,000 Agora é comezar na posición 2. 863 01:01:12,000 --> 01:01:15,000 Final é na posición 7. 864 01:01:15,000 --> 01:01:21,000 Subtrair-los, temos 5. 865 01:01:21,000 --> 01:01:24,000 Débeda iso por dous, temos 2. 866 01:01:24,000 --> 01:01:27,000 E, entón, engadir 2 de volta, 867 01:01:27,000 --> 01:01:30,000 e que nos leva á posición 4, 868 01:01:30,000 --> 01:01:33,000 que está aquí, que é o punto medio. 869 01:01:33,000 --> 01:01:36,000 [Estudante] Necesitamos coidar de embrulho? 870 01:01:36,000 --> 01:01:39,000 En que sentido é que necesitamos coidar de embrulho? 871 01:01:39,000 --> 01:01:43,000 Se a suma ou a diferenza entre 872 01:01:43,000 --> 01:01:45,000 dependendo da forma como o facemos non é un número par. 873 01:01:45,000 --> 01:01:49,000 A continuación, o ordenador está confuso cando é 2,5; 874 01:01:49,000 --> 01:01:52,000 se se mover á esquerda ou á dereita para determinar cal é o punto medio? 875 01:01:52,000 --> 01:01:54,000 Entendín. 876 01:01:54,000 --> 01:01:56,000 Acontece que coa división enteira, 877 01:01:56,000 --> 01:01:59,000 nunca obter estes números de punto flotante. 878 01:01:59,000 --> 01:02:01,000 Nós nunca obter o decimal. 879 01:02:01,000 --> 01:02:04,000 É totalmente descartada. 880 01:02:04,000 --> 01:02:08,000 Se vostede ten un ordenador dividir dúas variables int 881 01:02:08,000 --> 01:02:11,000 e unha é 7, e outro é 2, 882 01:02:11,000 --> 01:02:13,000 non vai ter como resultado 3,5. 883 01:02:13,000 --> 01:02:16,000 El vai estar 3. 884 01:02:16,000 --> 01:02:19,000 O resto será descartado, por iso é efectivamente redondeo 885 01:02:19,000 --> 01:02:24,000 Nin un, pero si un chan, se vostedes están familiarizados co que, en matemáticas, 886 01:02:24,000 --> 01:02:27,000 onde descartar completamente a decimal, 887 01:02:27,000 --> 01:02:31,000 e por iso está esencialmente truncando-lo para o máis próximo 888 01:02:31,000 --> 01:02:33,000 posicións, para o número enteiro máis próximo. 889 01:02:33,000 --> 01:02:38,000 [Estudante] Pero entón iso é problemático porque se ten un conxunto de sete elementos 890 01:02:38,000 --> 01:02:43,000 a continuación, que asume automaticamente o elemento 3 para fóra do punto central, en vez do 4. 891 01:02:43,000 --> 01:02:46,000 Como tratar con isto? 892 01:02:46,000 --> 01:02:49,000 É problemático porque se tivésemos unha matriz de 7, 893 01:02:49,000 --> 01:02:54,000 ía incorporarse o terceiro lugar do cuarto. 894 01:02:54,000 --> 01:02:56,000 Podería explicar un pouco máis? 895 01:02:56,000 --> 01:02:59,000 [Estudante] Porque se ten 7 elementos, entón o elemento 4 896 01:02:59,000 --> 01:03:04,000 sería o punto medio, non? 897 01:03:04,000 --> 01:03:07,000 Teña en conta que o seu comentario sobre ser cero indexados, no entanto. 898 01:03:07,000 --> 01:03:10,000 [Estudante] Si, entón en posición 3. Ese sería o punto medio. 899 01:03:10,000 --> 01:03:12,000 Si 900 01:03:12,000 --> 01:03:16,000 Ah, ok. Eu vexo o que quere dicir. 901 01:03:16,000 --> 01:03:19,000 É medio raro, como se acostumar con esta noción de 902 01:03:19,000 --> 01:03:22,000 librar-se de cifras decimais. 903 01:03:22,000 --> 01:03:26,000 Isto é un gran punto. 904 01:03:26,000 --> 01:03:30,000 Imos acabar con iso. 905 01:03:30,000 --> 01:03:32,000 Nós calculamos o punto medio. 906 01:03:32,000 --> 01:03:37,000 >> Estamos probando a ver se a nosa agulla é igual ao valor medio. 907 01:03:37,000 --> 01:03:41,000 Estamos imprimindo que atopamos, pero realmente, o que queremos facer nesta situación? 908 01:03:41,000 --> 01:03:46,000 Descubrimos que, por iso queremos que o chamador información que atopamos. 909 01:03:46,000 --> 01:03:49,000 Temos unha función que é unha función booleana ingresaran. 910 01:03:49,000 --> 01:03:54,000 A nosa forma de sinalizar para o chamador da nosa función de que estamos preparados para ir 911 01:03:54,000 --> 01:03:58,000 que dicimos: "Ei, iso é certo." 912 01:03:58,000 --> 01:04:00,000 Como poderiamos facelo, Kevin? 913 01:04:00,000 --> 01:04:02,000 Vostede está acenando coa cabeza. >> [Kevin] regreso Engadir verdade. 914 01:04:02,000 --> 01:04:06,000 [Nate] Exactamente, voltar true. 915 01:04:06,000 --> 01:04:12,000 Agora, se non é igual, como é que miramos cara á esquerda? 916 01:04:12,000 --> 01:04:16,000 Algunha idea? 917 01:04:16,000 --> 01:04:18,000 Stella, algunha idea? 918 01:04:18,000 --> 01:04:21,000 Debe establecer unha nova posición para o final. 919 01:04:21,000 --> 01:04:23,000 Si 920 01:04:23,000 --> 01:04:29,000 Entón, nós temos que facer a posición de punto medio - o fin. 921 01:04:29,000 --> 01:04:33,000 Grande. 922 01:04:33,000 --> 01:04:36,000 Necesitamos definir unha nova posición para o final 923 01:04:36,000 --> 01:04:38,000 ollar para a metade esquerda. 924 01:04:38,000 --> 01:04:41,000 Iso foi o que falamos antes, onde 925 01:04:41,000 --> 01:04:44,000 Eu sigo volvendo para este exemplo. 926 01:04:44,000 --> 01:04:50,000 Teño a comezar, e entón eu teño o fin de todo ata aquí. 927 01:04:50,000 --> 01:04:53,000 >> Unha vez máis, se nós estamos mirando para 15, eo noso punto medio é de 16 anos, 928 01:04:53,000 --> 01:04:56,000 e entender, "Oops, 16 é maior. 929 01:04:56,000 --> 01:04:59,000 Queremos pasar á media esquerda. " 930 01:04:59,000 --> 01:05:02,000 Nós, entón, pasar o fin do 15, 931 01:05:02,000 --> 01:05:06,000 e facemos isto tomando un lonxe do punto medio 932 01:05:06,000 --> 01:05:09,000 e da definición que o noso novo fin. 933 01:05:09,000 --> 01:05:12,000 Do mesmo xeito, se queremos mirar cara a metade dereita, como é que imos facelo? 934 01:05:12,000 --> 01:05:14,000 Tes unha idea? 935 01:05:14,000 --> 01:05:22,000 [Estudante] Vostede acaba de comezar a definir o punto medio + 1. 936 01:05:22,000 --> 01:05:24,000 [Nate] Grande. 937 01:05:24,000 --> 01:05:29,000 E agora no caso de que non atopar nada, 938 01:05:29,000 --> 01:05:32,000 non que estar resolto por nós? 939 01:05:32,000 --> 01:05:36,000 Daniel, iso tidos en conta, de para nós? 940 01:05:36,000 --> 01:05:38,000 [Daniel] Non 941 01:05:38,000 --> 01:05:40,000 [Nate] Se facemos isto a través da matriz enteira e non atopar nada, 942 01:05:40,000 --> 01:05:42,000 onde tería que ser coidado, ou debemos coidar dela? 943 01:05:42,000 --> 01:05:44,000 [Daniel] A condición momento. 944 01:05:44,000 --> 01:05:48,000 [Nate] Si, a condición de tempo, exactamente. 945 01:05:48,000 --> 01:05:51,000 El vai coidar de pasar por toda a matriz se non atopa nada. 946 01:05:51,000 --> 01:05:53,000 Este loop while vai acabar. 947 01:05:53,000 --> 01:05:56,000 Nós nunca encontrou esta condición, 948 01:05:56,000 --> 01:06:03,000 e podemos voltar falso. 949 01:06:03,000 --> 01:06:10,000 Tamén pode deixar que aquí como esta 950 01:06:10,000 --> 01:06:14,000 porque se esta afirmación é certa se, 951 01:06:14,000 --> 01:06:16,000 ea nosa función vai volver, 952 01:06:16,000 --> 01:06:21,000 e así imos esencialmente abortar esta función neste momento 953 01:06:21,000 --> 01:06:24,000 cando retornar true. 954 01:06:24,000 --> 01:06:28,000 Pero o que acontece con esta estrutura aquí? 955 01:06:28,000 --> 01:06:34,000 Será que isto vai funcionar totalmente ou se hai algunha falla lóxica aí? 956 01:06:34,000 --> 01:06:37,000 >> Hai algunha falla lóxica alí, coa forma como é creado. 957 01:06:37,000 --> 01:06:40,000 O que pode ser? 958 01:06:40,000 --> 01:06:43,000 [Estudante] Por que precisa - e + 1s? 959 01:06:43,000 --> 01:06:47,000 Que define a nosa matriz para ser o noso novo media esquerda e media dereita. 960 01:06:47,000 --> 01:06:51,000 [Estudante] Pero por que non podería facelo sen o - 1s e 1s +? 961 01:06:51,000 --> 01:06:53,000 [Nate] Podemos define-lo igual ao punto medio? 962 01:06:53,000 --> 01:07:04,000 O que pode ser problemático niso? 963 01:07:04,000 --> 01:07:08,000 [Estudante] Coido que é ineficiente porque está comprobando un valor que xa foi comprobado. 964 01:07:08,000 --> 01:07:11,000 [Nate] Exactamente, por iso Sam é totalmente certo. 965 01:07:11,000 --> 01:07:15,000 Se definir o fin eo inicio igual ao punto medio 966 01:07:15,000 --> 01:07:18,000 en vez de - 1 e + 1 reflexivamente, 967 01:07:18,000 --> 01:07:22,000 nalgún momento no futuro, vai acabar comprobar o punto medio de novo. 968 01:07:22,000 --> 01:07:26,000 [Estudante] eu comece a pset, e entón eu tiven algo parecido 969 01:07:26,000 --> 01:07:30,000 onde eu esquezo o 1 +, e el ficou preso nun loop infinito. 970 01:07:30,000 --> 01:07:34,000 Certo, porque nalgún momento nunca vai comezar e rematar 971 01:07:34,000 --> 01:07:39,000 que realmente se sobrepoñen. 972 01:07:39,000 --> 01:07:41,000 Cool. 973 01:07:41,000 --> 01:07:44,000 Hai unha falla lóxica, e iso é que este debe ser definitivamente 974 01:07:44,000 --> 01:07:48,000 unha persoa. 975 01:07:48,000 --> 01:07:55,000 Por que podería ser? 976 01:07:55,000 --> 01:07:59,000 >> A razón é que non é unha persoa se viu iso, Kevin? 977 01:07:59,000 --> 01:08:02,000 [Kevin] Si, porque está cambiando o punto final. 978 01:08:02,000 --> 01:08:05,000 [Nate] Exactamente. 979 01:08:05,000 --> 01:08:07,000 Estamos cambiando o punto final, 980 01:08:07,000 --> 01:08:12,000 e se é escrito así we'll-crear espazos entre- 981 01:08:12,000 --> 01:08:14,000 ha comprobar este problema. 982 01:08:14,000 --> 01:08:18,000 Neste caso, se é exitoso, vai abortar fóra da función. 983 01:08:18,000 --> 01:08:21,000 A continuación, el ha comprobar este caso seguinte, 984 01:08:21,000 --> 01:08:24,000 e esta é acertada, ha axustar o punto final, 985 01:08:24,000 --> 01:08:28,000 e despois continuará e comproba neste caso. 986 01:08:28,000 --> 01:08:31,000 Pero neste momento, non quere que siga a comprobar. 987 01:08:31,000 --> 01:08:35,000 Afortunadamente, non temos axustar o punto central aquí, 988 01:08:35,000 --> 01:08:39,000 e sabemos que este caso non terá éxito. 989 01:08:39,000 --> 01:08:44,000 Pero nós sempre queremos poñer o outro alí 990 01:08:44,000 --> 01:08:48,000 a pesar de que podería en caso de que esta 991 01:08:48,000 --> 01:08:52,000 unha vez que non está axustando o punto medio, tería que facer a diferenza? 992 01:08:52,000 --> 01:08:54,000 Non, porque todos estes casos son exclusivas. 993 01:08:54,000 --> 01:08:58,000 Unha vez máis, foi mal. 994 01:08:58,000 --> 01:09:01,000 Non, eu creo, que diso máis se. 995 01:09:01,000 --> 01:09:05,000 Podemos darlle un intento e executa-lo e ver o que acontece. 996 01:09:05,000 --> 01:09:08,000 Edificio, un erro. 997 01:09:08,000 --> 01:09:12,000 Probablemente é porque eu deixei estes de b e e, en aquí. 998 01:09:12,000 --> 01:09:14,000 Eu teño máis daqueles arriba? 999 01:09:14,000 --> 01:09:16,000 Non se parece con el. 1000 01:09:16,000 --> 01:09:20,000 Nós zoom out, construír, 1001 01:09:20,000 --> 01:09:24,000 alí vai, agora buscar 15, 1002 01:09:24,000 --> 01:09:28,000 Si 1003 01:09:28,000 --> 01:09:30,000 Deixe-me facer zoom in 1004 01:09:30,000 --> 01:09:33,000 15, si. Podemos executa-lo de novo. 1005 01:09:33,000 --> 01:09:36,000 Carga de código fonte, a construción, en execución. 1006 01:09:36,000 --> 01:09:41,000 Podemos buscar algo como 13, 1007 01:09:41,000 --> 01:09:45,000 e nós non temos nada de imprimir, por iso non está descubrindo que para nós. 1008 01:09:45,000 --> 01:09:51,000 Isto é óptimo, porque non está na nosa lista. 1009 01:09:51,000 --> 01:09:53,000 >> Estamos agora fóra do tempo. 1010 01:09:53,000 --> 01:09:55,000 Isto vai ser el para esta semana. 1011 01:09:55,000 --> 01:10:00,000 Grazas por unirse, e ve-lo máis tarde. 1012 01:10:00,000 --> 01:10:02,000 >> [CS50.TV]