1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [Artikel 3] [Minder Gerieflik] 2 00:00:03,000 --> 00:00:05,000 >> [Nate Hardison] [Harvard Universiteit] 3 00:00:05,000 --> 00:00:08,000 >> [Hierdie is CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:10,000 >> Alle reg, laat ons begin. 5 00:00:10,000 --> 00:00:13,000 Welkom by Week 4 van CS50. 6 00:00:13,000 --> 00:00:19,000 As julle 'n webblaaier oopmaak en oop pset 3, 7 00:00:19,000 --> 00:00:23,000 Scramble met CS50, gaan ons begin gaan 8 00:00:23,000 --> 00:00:26,000 deur middel van die afdeling van die vrae was daar. 9 00:00:26,000 --> 00:00:32,000 Net soos verlede week, sal ons werk in CS50 Ruimtes, 10 00:00:32,000 --> 00:00:35,000 as jy sal ook trek dat sowel, 11 00:00:35,000 --> 00:00:43,000 en as jy gaan voort en besoek hierdie skakel wat ek het hier aan die bokant. 12 00:00:43,000 --> 00:00:45,000 Dit is tyd om te begin. 13 00:00:45,000 --> 00:00:51,000 Ons het ons min hi program hier. Niks mal. 14 00:00:51,000 --> 00:00:55,000 Een van die eerste dinge wat ek wil doen met julle ouens vandag is om te gaan oor 'n paar oplossings 15 00:00:55,000 --> 00:00:58,000 Problem Set 1, soort van voorbeeld oplossings, 16 00:00:58,000 --> 00:01:03,000 net sodat jy kan kry 'n gevoel vir watter soorte van die kode personeel skryf, 17 00:01:03,000 --> 00:01:07,000 watter soort van kode ander studente skryf, 18 00:01:07,000 --> 00:01:10,000 en jy het 'n blik op dit, want ek weet dit is weird 19 00:01:10,000 --> 00:01:14,000 wanneer jy 'n oplossing vir 'n probleem stel en kommentaar te kry 20 00:01:14,000 --> 00:01:18,000 op jou eie weergawe, maar soms is dit nuttig om te sien hoe ander mense dit gedoen het, 21 00:01:18,000 --> 00:01:22,000 veral diegene wat lekker soek. 22 00:01:22,000 --> 00:01:27,000 Vir die grootste deel, ek was werklik beïndruk met die oplossings wat julle geproduseer. 23 00:01:27,000 --> 00:01:31,000 Ek het nog nie begin soek na jou Problem Set 2s, maar as hulle iets soos die eerste, 24 00:01:31,000 --> 00:01:34,000 dit beteken niks, maar goeie dinge. 25 00:01:34,000 --> 00:01:40,000 >> As jy kyk na my wysigings, laat ons begin al die pad af op Revision 1, 26 00:01:40,000 --> 00:01:47,000 en ons gaan 'n vinnige blik op 'n Mario-oplossing te neem. 27 00:01:47,000 --> 00:01:54,000 As jy trek dit op, hierdie programme wat ons gaan aanbied korrek is. 28 00:01:54,000 --> 00:01:56,000 Daar was nie korrektheid probleme met hierdie probleme nie, maar eerder 29 00:01:56,000 --> 00:01:59,000 ons wil 'n bietjie om te praat oor die verskillende ontwerp kwessies 30 00:01:59,000 --> 00:02:03,000 wat hier gebruik word. 31 00:02:03,000 --> 00:02:08,000 Een van die dinge wat was interessant oor die oplossing 32 00:02:08,000 --> 00:02:11,000 is dat dit gebruik word om hierdie nuwe konstruk genoem pond definieer, 33 00:02:11,000 --> 00:02:15,000 ook soms na verwys as 'n hash definieer. 34 00:02:15,000 --> 00:02:18,000 Laat my zoom in op dit hier. 35 00:02:18,000 --> 00:02:24,000 A # definieer, stel jou in staat om name te gee aan hierdie getalle in jou program. 36 00:02:24,000 --> 00:02:28,000 In hierdie geval, die maksimum hoogte van 'n piramide in Mario 37 00:02:28,000 --> 00:02:34,000 23 en eerder as om 23 in my kode- 38 00:02:34,000 --> 00:02:37,000 ons sou verwys na as hard kodering 23 - 39 00:02:37,000 --> 00:02:43,000 plaas dit gee die naam MAX_HEIGHT dat die getal, 40 00:02:43,000 --> 00:02:48,000 so dat hier in my do-while lus 41 00:02:48,000 --> 00:02:51,000 jy kan eintlik verwys na MAX_HEIGHT 42 00:02:51,000 --> 00:02:55,000 in plaas daarvan om die getal 23. 43 00:02:55,000 --> 00:02:57,000 [Studente] Wat is die voordeel van om dit te doen? 44 00:02:57,000 --> 00:02:59,000 Dit is 'n groot vraag. 45 00:02:59,000 --> 00:03:03,000 Een daarvan is leesbaarheid. 46 00:03:03,000 --> 00:03:08,000 'N voordeel van die gebruik van hierdie # define leesbaarheid. 47 00:03:08,000 --> 00:03:11,000 Toe ek hierdie kode is om te lees, kan ek sien wat gaan aan. 48 00:03:11,000 --> 00:03:15,000 >> Ek kan sien in hierdie toestand hier dat ons die toets 49 00:03:15,000 --> 00:03:19,000 vir die hoogte <0, wat ons kan ook gedefinieer 50 00:03:19,000 --> 00:03:22,000 tot 'n minimum hoogte of 'n min hoogte te wees. 51 00:03:22,000 --> 00:03:25,000 Die ander voordeel is dat ek kan lees dan die res van die lyn te sien 52 00:03:25,000 --> 00:03:30,000 dat ons ook nagaan om seker te maak dat die hoogte is nie groter as die maksimum hoogte, 53 00:03:30,000 --> 00:03:35,000 want ons gaan om voort te gaan, terwyl die hoogte is groter as die maksimum hoogte. 54 00:03:35,000 --> 00:03:40,000 Die ander voordeel is as ek 'n bietjie uit te zoem hier- 55 00:03:40,000 --> 00:03:49,000 as ek hierdie program en ek hardloop dit, sê, met 23 right now, 56 00:03:49,000 --> 00:03:52,000 dit sal druk uit al 23 rye net soos wat. 57 00:03:52,000 --> 00:03:54,000 Maar sê ek wou die maksimum hoogte te verander, 58 00:03:54,000 --> 00:03:57,000 en nou wil ek die maksimum hoogte van die piramides te beperk 59 00:03:57,000 --> 00:04:06,000 te wees net sê-man, dit was funky. 60 00:04:06,000 --> 00:04:14,000 # Include # define MAX_HEIGHT, 61 00:04:14,000 --> 00:04:18,000 en laat ons sê ons wil te stel dit gelyk aan 10. 62 00:04:18,000 --> 00:04:22,000 Nou op hierdie punt, al wat ek moes doen, was dit verander in hierdie plek. 63 00:04:22,000 --> 00:04:27,000 Ek kan die kode hercompileren, en as ek nou probeer en tik in 12, 64 00:04:27,000 --> 00:04:30,000 dit sal my weer gevra. 65 00:04:30,000 --> 00:04:33,000 In hierdie geval, het ons slegs met behulp van MAX_HEIGHT keer. 66 00:04:33,000 --> 00:04:37,000 Dit is nie dat die groot van 'n probleem om in te gaan 67 00:04:37,000 --> 00:04:40,000 en verander dit in die while lus as wat jy nodig het. 68 00:04:40,000 --> 00:04:44,000 Maar in programme waar jy verwysing na die dieselfde magic number 69 00:04:44,000 --> 00:04:47,000 oor en oor weer, dit definieer # meganisme is regtig handig 70 00:04:47,000 --> 00:04:52,000 omdat jy verander dit net een keer op die top van die lêer dit is gewoonlik waar jy hulle sit- 71 00:04:52,000 --> 00:04:57,000 en die verandering Percolaten deur die res van die lêer. 72 00:04:57,000 --> 00:05:02,000 >> Ander dinge wat ek wou in hierdie opdrag om daarop te let dat ek gedink het baie mooi gelyk, 73 00:05:02,000 --> 00:05:05,000 een was die benaming van die veranderlikes. 74 00:05:05,000 --> 00:05:14,000 Wat jy hier sien dat ons integer veranderlikes genoem ry en sogenaamde hoogte het. 75 00:05:14,000 --> 00:05:20,000 Ruimtes, hashes, dit help om die kode 'n bietjie meer leesbare, 76 00:05:20,000 --> 00:05:25,000 maak dit 'n bietjie meer verstaanbaar wat eintlik aan die gang. 77 00:05:25,000 --> 00:05:31,000 Dit is in teenstelling met die gebruik van, sê, ewekansige letters 78 00:05:31,000 --> 00:05:35,000 of net codes geheel en al. 79 00:05:35,000 --> 00:05:39,000 'N laaste ding wat ek sal uitwys, is dat vir loops, 80 00:05:39,000 --> 00:05:45,000 dikwels hierdie Iterator veranderlikes, hierdie tellers wat jy gebruik in jou loops, 81 00:05:45,000 --> 00:05:51,000 dit is standaard-en konvensionele hulle om te begin met óf i en dan j en dan k 82 00:05:51,000 --> 00:05:54,000 en gaan van daar af as jy meer veranderlikes, 83 00:05:54,000 --> 00:05:56,000 en dit is net 'n konvensie. 84 00:05:56,000 --> 00:05:58,000 Daar is baie van die konvensies. 85 00:05:58,000 --> 00:06:00,000 Dit hang af van die programmeringstaal wat jy gebruik. 86 00:06:00,000 --> 00:06:04,000 Maar in C, ons gewoonlik begin met i. 87 00:06:04,000 --> 00:06:08,000 Dit maak nie sin om te gebruik, sê, A of B 88 00:06:08,000 --> 00:06:13,000 afhangende van die situasie. 89 00:06:13,000 --> 00:06:15,000 Dit is dit vir hierdie een. 90 00:06:15,000 --> 00:06:25,000 As jy nou trek Hersiening 2, sal jy sien 'n ander Mario, 91 00:06:25,000 --> 00:06:29,000 en hierdie een is soortgelyk aan die ander een wat ons nou net gesien het, 92 00:06:29,000 --> 00:06:32,000 maar dit is nie iets soort van cool. 93 00:06:32,000 --> 00:06:38,000 As ons kyk na hierdie artikel hier binne-in die binneste lus 94 00:06:38,000 --> 00:06:44,000 hulle is met behulp van 'n paar mal soek sintaksis hier reg in hierdie lyn. 95 00:06:44,000 --> 00:06:47,000 Dit staan ​​bekend as 'n drieledige operateur. 96 00:06:47,000 --> 00:06:53,000 Dit is 'n as anders stelling saamgevat in een lyn. 97 00:06:53,000 --> 00:06:57,000 Die toestand is hierdie deel in hakies. 98 00:06:57,000 --> 00:07:05,000 Dit is ekwivalent om te sê as j 00:07:10,000 En dan wat die inhoud van daardie as blok sou wees, is die ruimte 100 00:07:10,000 --> 00:07:16,000 en dan die inhoud van wat die anders sou wees hierdie. 101 00:07:16,000 --> 00:07:20,000 Dit is in wese die toeken van 'n ruimte aan die veranderlike. 102 00:07:20,000 --> 00:07:24,000 Dit is om 'n ruimte in die inhoud van die blok veranderlike, 103 00:07:24,000 --> 00:07:29,000 indien hierdie voorwaarde voldoen word, en indien die voorwaarde nie nagekom word nie, 104 00:07:29,000 --> 00:07:32,000 dan kry die blok veranderlike #. 105 00:07:32,000 --> 00:07:37,000 En dan, natuurlik, in plaas van die opbou van 'n hele string 106 00:07:37,000 --> 00:07:43,000 en druk alles aan die einde hierdie oplossing druk dit uit een karakter op 'n tyd. 107 00:07:43,000 --> 00:07:48,000 Pretty cool. 108 00:07:48,000 --> 00:07:53,000 >> Nog 'n paar dinge om na te kyk. Ons sal skuif op te gulsig. 109 00:07:53,000 --> 00:07:58,000 Nou as ons kyk na gulsig, hierdie eerste oplossing 110 00:07:58,000 --> 00:08:00,000 gebruik hierdie # omskryf nogal 'n bietjie. 111 00:08:00,000 --> 00:08:06,000 Ons het een konstante gedefinieer vir elk van die verskillende getalle in hierdie program. 112 00:08:06,000 --> 00:08:12,000 Ons het een sent per dollar, een vir kwarte, dimes, vernikkelt en pennies, 113 00:08:12,000 --> 00:08:15,000 en nou as ons scroll down en lees die kode, 114 00:08:15,000 --> 00:08:22,000 ons kan 'n standaard do-while lus druk alles sien nie. 115 00:08:22,000 --> 00:08:25,000 Soort van die kern van die probleem is die besef dat 116 00:08:25,000 --> 00:08:29,000 wat jy nodig het om die float te sit dat jy lees van die gebruiker om 'n heelgetal 117 00:08:29,000 --> 00:08:32,000 akkuraat te doen die wiskunde, en dit is omdat 118 00:08:32,000 --> 00:08:36,000 met 'n swaai punt getalle, soos ons oor gepraat het in die lesing kortliks, 119 00:08:36,000 --> 00:08:41,000 dit is nie moontlik om akkuraat te verteenwoordig elke enkele waarde op die getallelyn 120 00:08:41,000 --> 00:08:47,000 want daar is oneindig baie waardes tussen 3 en, sê, 3,1 selfs. 121 00:08:47,000 --> 00:08:54,000 Jy kan 3,01 en 3,001 en 3,0001, en jy kan hou. 122 00:08:54,000 --> 00:09:00,000 Dit blyk uit wanneer jy met geld werk, het jy dikwels wil om dit te omskep 123 00:09:00,000 --> 00:09:05,000 in heelgetal-formaat sodat jy nie die pennies en dat soort dinge verloor. 124 00:09:05,000 --> 00:09:09,000 Om dit te doen en afronding was die sleutel. 125 00:09:09,000 --> 00:09:14,000 Hierdie oplossing het 'n heeltemal eenvoudig, groot algoritme gebruik, 126 00:09:14,000 --> 00:09:17,000 wat die aantal sent oorblywende decremented, eers deur kwartale, 127 00:09:17,000 --> 00:09:19,000 dan deur dimes, dan deur vernikkelt, dan deur pennies, 128 00:09:19,000 --> 00:09:24,000 en toe te voeg tot die aantal munte elke keer. 129 00:09:24,000 --> 00:09:31,000 >> Nog 'n oplossing wat ons sal sien, as ek zoom uit en gaan na Hersiening 4, 130 00:09:31,000 --> 00:09:40,000 het 'n baie soortgelyke begin, maar in plaas daarvan gebruik div en mod 131 00:09:40,000 --> 00:09:44,000 reg oor hier die aantal sent te bereken. 132 00:09:44,000 --> 00:09:50,000 Dit, die aantal kwartale is gelyk aan die aantal sent gedeel deur 25, 133 00:09:50,000 --> 00:09:53,000 en die rede waarom dit werk is omdat ons doen integer afdeling, 134 00:09:53,000 --> 00:09:58,000 so dit is wegdoen enige restant. 135 00:09:58,000 --> 00:10:02,000 [Studente] Het ons die soektog om kommentaar te lewer? 136 00:10:02,000 --> 00:10:05,000 Dit hang af. 137 00:10:05,000 --> 00:10:08,000 [Studente] Jy is kommentaar te lewer meer as kode hier. 138 00:10:08,000 --> 00:10:16,000 Ja, en so is daar 'n klomp van die verskillende filosofieë oor hierdie. 139 00:10:16,000 --> 00:10:21,000 My persoonlike filosofie is dat jou kode is regtig die waarheid, 140 00:10:21,000 --> 00:10:24,000 soos jou kode is wat is eintlik die uitvoering op die rekenaar, 141 00:10:24,000 --> 00:10:29,000 en so moet jou kode as leesbare as moontlik nie soveel kommentaar noodsaak. 142 00:10:29,000 --> 00:10:33,000 Dit gesê, as jy doen dinge wat soort van moeilike wiskundig 143 00:10:33,000 --> 00:10:38,000 of algoritmies, is dit goed om kommentaar te lewer sodat jy kan 144 00:10:38,000 --> 00:10:43,000 voeg 'n ekstra dimensie, 'n ekstra laag aan wie die lees van jou kode. 145 00:10:43,000 --> 00:10:49,000 In hierdie oplossings, hulle dikwels swaarder net omdat kommentaar 146 00:10:49,000 --> 00:10:52,000 ons wil in staat wees om hulle te versprei en mense af te haal 147 00:10:52,000 --> 00:10:56,000 en lees dit redelik maklik. 148 00:10:56,000 --> 00:11:05,000 Maar beslis, sou ek saamstem dat dit is swaar. 149 00:11:05,000 --> 00:11:07,000 [Studente] Maar wanneer jy twyfel, gaan swaarder? 150 00:11:07,000 --> 00:11:10,000 Wanneer jy twyfel, gaan swaarder. 151 00:11:10,000 --> 00:11:17,000 Sommige mense sal sê soms terugkeer 0 of iets soos dit. 152 00:11:17,000 --> 00:11:20,000 Ek dink dit is 'n belaglike kommentaar. 153 00:11:20,000 --> 00:11:22,000 Duidelik dat wat gebeur. 154 00:11:22,000 --> 00:11:25,000 Ek hoef nie Engels nie om my te vertel dat. 155 00:11:25,000 --> 00:11:28,000 Soms sal mense dinge soos skryf "kthxbai!" 156 00:11:28,000 --> 00:11:32,000 Dit is soort van oulik, maar ook nie- 157 00:11:32,000 --> 00:11:35,000 wat nie die verskil tussen kommentaar punte of nie. 158 00:11:35,000 --> 00:11:41,000 Daardie soort van kommentaar is net ha, ha. 159 00:11:41,000 --> 00:11:43,000 Cool. 160 00:11:43,000 --> 00:11:48,000 >> Op hierdie punt, laat ons begin werk op die probleem Stel 3 afdeling van vrae. 161 00:11:48,000 --> 00:11:52,000 As julle trek om dit weer, 162 00:11:52,000 --> 00:11:55,000 soos met verlede week, is ons nie gaan die broek om te kyk in hierdie afdeling. 163 00:11:55,000 --> 00:12:00,000 Ons sal jou laat julle ouens doen dit op jou eie tyd en praat oor die vrae. 164 00:12:00,000 --> 00:12:05,000 Maar nou in hierdie artikel gaan ons 'n bietjie meer tyd te spandeer 165 00:12:05,000 --> 00:12:11,000 praat oor minder van die kodering basiese 166 00:12:11,000 --> 00:12:15,000 soos ons gedoen het verlede week, en in plaas daarvan, ons gaan om meer te fokus op 167 00:12:15,000 --> 00:12:22,000 'n bietjie meer van die teorie, so praat oor binêre soek en dan sorteer. 168 00:12:22,000 --> 00:12:27,000 Van diegene van julle wat is die volgende saam met die lesing, 169 00:12:27,000 --> 00:12:30,000 Kan iemand gee vir my 'n herhaling van wat die verskil is 170 00:12:30,000 --> 00:12:35,000 tussen binêre soek en lineêre soek? 171 00:12:35,000 --> 00:12:37,000 What's going on? Seker nie. 172 00:12:37,000 --> 00:12:42,000 Lineêre soek soektogte deur middel van elke element in die gesorteerde lys 173 00:12:42,000 --> 00:12:45,000 een vir een deur een deur een vir een, 174 00:12:45,000 --> 00:12:50,000 en binêre soek in 2 groepe verdeel die lys, 175 00:12:50,000 --> 00:12:57,000 tjeks indien die sleutels waarde wat jy op soek is na groter as of minder is as die middelpunt waarde 176 00:12:57,000 --> 00:13:00,000 wat jy nou net gevind het, en as dit is minder as dit gaan met die laer lys 177 00:13:00,000 --> 00:13:03,000 en dan verdeel dit weer, doen dieselfde funksie 178 00:13:03,000 --> 00:13:07,000 al die pad af totdat dit bevind dat die middelpunt gelyk wees aan die waarde self. 179 00:13:07,000 --> 00:13:10,000 Reg. 180 00:13:10,000 --> 00:13:12,000 >> Waarom gee ons nie? 181 00:13:12,000 --> 00:13:20,000 Waarom praat ons nie oor binêre soek teenoor lineêre soek? 182 00:13:20,000 --> 00:13:22,000 Ja. 183 00:13:22,000 --> 00:13:24,000 Program is 'n baie vinniger, so as jy dubbel die grootte van die probleem 184 00:13:24,000 --> 00:13:27,000 dit neem nog 'n stap eerder as twee keer soveel. 185 00:13:27,000 --> 00:13:29,000 Presies. 186 00:13:29,000 --> 00:13:31,000 Dit is 'n goeie antwoord. 187 00:13:31,000 --> 00:13:36,000 Linêere soek baie kontrole een element op 'n slag, 188 00:13:36,000 --> 00:13:39,000 en soos ons gesien het op die eerste dag van die lesing 189 00:13:39,000 --> 00:13:42,000 toe Dawid het deur sy telefoon boek voorbeeld 190 00:13:42,000 --> 00:13:45,000 en geruk uit een bladsy van die telefoon boek op 'n slag 191 00:13:45,000 --> 00:13:47,000 en het aangehou om dit te doen oor en oor en oor weer, 192 00:13:47,000 --> 00:13:51,000 dit gaan vir hom 'n baie lang tyd om iemand te vind in die telefoon boek te neem, 193 00:13:51,000 --> 00:13:55,000 tensy, natuurlik, is hy op soek na iemand aan die begin van die alfabet. 194 00:13:55,000 --> 00:14:00,000 Met 'n binêre soek, kan jy 'n baie vinniger gaan, 195 00:14:00,000 --> 00:14:05,000 en dit is nie net twee keer so vinnig of 3 keer so vinnig of 4 keer so vinnig. 196 00:14:05,000 --> 00:14:13,000 Maar die probleem kry kleiner en kleiner en kleiner word baie vinniger. 197 00:14:13,000 --> 00:14:17,000 Om dit te illustreer, sal ons begin praat oor wat gaan aan 198 00:14:17,000 --> 00:14:21,000 wanneer ons skryf binêre soek. 199 00:14:21,000 --> 00:14:27,000 Die probleem aan die hand is dat as ek het 'n skikking van getalle, 200 00:14:27,000 --> 00:14:40,000 sê, 1, 2, 3, 5, 7, 23, 45, 78, 12.323, 201 00:14:40,000 --> 00:14:47,000 en dan 9 nadat dit met 'n ton van 0e, 202 00:14:47,000 --> 00:14:52,000 ons wil in staat wees om regtig vinnig om uit te vind wat is in 203 00:14:52,000 --> 00:14:57,000 hierdie skikking van getalle. 204 00:14:57,000 --> 00:15:00,000 Ek weet dit lyk 'n bietjie dom en 'n bietjie slinks, 205 00:15:00,000 --> 00:15:02,000 want nou is dit. 206 00:15:02,000 --> 00:15:05,000 Ons het 'n skikking wat nie baie elemente in dit, 207 00:15:05,000 --> 00:15:08,000 En as Ek vra een van julle om uit te vind of 208 00:15:08,000 --> 00:15:11,000 23 is in die skikking, kan jy doen dit redelik vinnig 209 00:15:11,000 --> 00:15:16,000 net skrams op hierdie en vertel my ja of nee. 210 00:15:16,000 --> 00:15:20,000 Die analoog om te oorweeg dink as dit, sê, 211 00:15:20,000 --> 00:15:27,000 'n Excel spreadsheet met 10.000 rye, 20.000 rye. 212 00:15:27,000 --> 00:15:31,000 Van die kursus, kan jy die opdrag F of die beheer F doen en kyk iets. 213 00:15:31,000 --> 00:15:33,000 Jy kan ook gebruik maak van die filters en die soektog dinge, 214 00:15:33,000 --> 00:15:37,000 maar as jy het om te kyk deur die lêer lyn deur die lyn deur die lyn, 215 00:15:37,000 --> 00:15:40,000 dit sal neem om jou 'n lang tyd om dit te vind. 216 00:15:40,000 --> 00:15:42,000 Dit is soort van soos in die telefoon boek voorbeeld ook, waar 217 00:15:42,000 --> 00:15:44,000 niemand kyk deur middel van 'n telefoon boek een bladsy op 'n tyd. 218 00:15:44,000 --> 00:15:47,000 Tipies, maak hulle dit na die middel, 219 00:15:47,000 --> 00:15:50,000 of in die geval van 'n baie van die telefoon boeke en woordeboeke waar 220 00:15:50,000 --> 00:15:54,000 jy eintlik het dit op die eerste letter ingesleutel, 221 00:15:54,000 --> 00:16:01,000 jy flip dat die eerste letter en oop en begin gaan deur daar. 222 00:16:01,000 --> 00:16:03,000 >> Herinner my weer van jou naam. >> Sam. 223 00:16:03,000 --> 00:16:05,000 Sam. 224 00:16:05,000 --> 00:16:11,000 Soos Sam gesê het, is dat die lineêre soekproses regtig stadig gaan wees, 225 00:16:11,000 --> 00:16:15,000 en in plaas daarvan met binêre soek, die manier waarop dit werk, is dat 226 00:16:15,000 --> 00:16:21,000 elke keer wat ons gaan deur 'n herhaling van ons soek algoritme, 227 00:16:21,000 --> 00:16:27,000 ons gaan die lys in die helfte te verdeel, in wese, 228 00:16:27,000 --> 00:16:33,000 in twee kleiner lyste. 229 00:16:33,000 --> 00:16:39,000 En dan op die volgende iterasie van die lus, sal ons verdeel dit weer 230 00:16:39,000 --> 00:16:44,000 in ander kleiner lyste. 231 00:16:44,000 --> 00:16:48,000 Soos jy kan sien, hou die probleem kleiner en kleiner 232 00:16:48,000 --> 00:16:55,000 omdat ons wegdoen helfte van die lys elke keer. 233 00:16:55,000 --> 00:16:59,000 Hoe werk dit weggooi werk? 234 00:16:59,000 --> 00:17:05,000 Net soos 'n herinnering, wat ons gaan doen as ons 'n rekenaar 235 00:17:05,000 --> 00:17:11,000 en ons was, sê, op soek na die getal 5 in hierdie lys 236 00:17:11,000 --> 00:17:15,000 is dat ons 'n aantal in die middel te kies. 237 00:17:15,000 --> 00:17:26,000 In die middel van hierdie lys, want daar is 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 getalle, 238 00:17:26,000 --> 00:17:32,000 ons wil die getal kies óf by die 4de posisie of op die 5de posisie, 239 00:17:32,000 --> 00:17:38,000 en ons wil noem dat die middel van ons lys. 240 00:17:38,000 --> 00:17:42,000 Pick getal in die middel. 241 00:17:42,000 --> 00:17:51,000 Dan, net soos Sam gesê het, sal ons toets om te sien as dat die getal is gelyk 242 00:17:51,000 --> 00:17:59,000 na die aantal wat ons wil te kry of ons presiese aantal. 243 00:17:59,000 --> 00:18:06,000 As dit gelyk is, dan het ons dit gevind het. Ons wen. 244 00:18:06,000 --> 00:18:12,000 As dit nie gelyk is, dan is daar 'n paar van die gevalle. 245 00:18:12,000 --> 00:18:15,000 Die twee gevalle is die getal groter wees as die getal wat ons is op soek na, 246 00:18:15,000 --> 00:18:19,000 of dit is minder as. 247 00:18:19,000 --> 00:18:25,000 As dit is groter, ons skuif na regs. 248 00:18:25,000 --> 00:18:33,000 En as dit is minder, beweeg ons aan die linkerkant. 249 00:18:33,000 --> 00:18:41,000 En dan moet ons herhaal die hele proses weer 250 00:18:41,000 --> 00:18:48,000 op die regter helfte of die linker helfte van die lys. 251 00:18:48,000 --> 00:18:51,000 >> Die eerste probleem in vandag se artikel is om uit te vind 252 00:18:51,000 --> 00:18:55,000 hoe kan ons eintlik begin om dit uit te druk in C-kode. 253 00:18:55,000 --> 00:18:58,000 Ons het die pseudokode hier. 254 00:18:58,000 --> 00:19:04,000 Wat sal ons begin doen, is ek sal trek 'n splinternuwe ruimte, 255 00:19:04,000 --> 00:19:09,000 behalwe hierdie hersiening, sodat ons hierdie aantekeninge vir later, 256 00:19:09,000 --> 00:19:20,000 ons sal dit alles verwyder, en dan kopieer en plak van die probleem stel 257 00:19:20,000 --> 00:19:26,000 hierdie inligting in ons ruimtes, en hopelik dit nie breek nie. 258 00:19:26,000 --> 00:19:28,000 Perfect. 259 00:19:28,000 --> 00:19:33,000 As julle almal dit doen, kopieer en plak die kode in jou nuwe ruimte, 260 00:19:33,000 --> 00:19:43,000 in 'n leë een. 261 00:19:43,000 --> 00:19:47,000 Kom ons probeer Daniel. As jy hierdie program te stel en uit te voer, werk dit? 262 00:19:47,000 --> 00:19:49,000 No. >> Wat sê dit? 263 00:19:49,000 --> 00:19:53,000 Dit sê die beheer bereik die einde van 'n nie-nietig funksie. 264 00:19:53,000 --> 00:19:55,000 Ja, so laat ek probeer om dit te draai. 265 00:19:55,000 --> 00:19:59,000 Het julle gesien dit voor? Weet jy wat dit beteken? 266 00:19:59,000 --> 00:20:01,000 Goed, kom ons dissekteer dit 'n bietjie. 267 00:20:01,000 --> 00:20:10,000 Dit sê by file.c on line 9, kolom 1 het ons het 'n fout, net soos jy het gesê, 268 00:20:10,000 --> 00:20:16,000 en dit sê dat dit die gevolg is van die fout waarskuwing en die terugkeer tipe waarskuwing. 269 00:20:16,000 --> 00:20:18,000 Dit lyk soos iets wat aan die gang is met die terugkeer tipe, wat sin maak. 270 00:20:18,000 --> 00:20:21,000 Ons het 'n nie-nietig funksie het, wat beteken dat ons 'n funksie het 271 00:20:21,000 --> 00:20:24,000 dat dit nie terugkeer nie nietig. 272 00:20:24,000 --> 00:20:27,000 'N leemte funksie is een wat soos volg lyk: 273 00:20:27,000 --> 00:20:35,000 nietig cat (), en dit is nietig omdat die opbrengs tipe is nietig, 274 00:20:35,000 --> 00:20:38,000 wat beteken dat as ons iets in hier 275 00:20:38,000 --> 00:20:45,000 soos terugkeer 1, wil ons 'n vertaler fout vir hierdie. 276 00:20:45,000 --> 00:20:49,000 Maar ons het 'n nie-nietig funksie. 277 00:20:49,000 --> 00:20:51,000 Ons nie-nietig funksie in hierdie geval is ons soek funksie 278 00:20:51,000 --> 00:20:56,000 want dit het 'n opbrengs tipe Bool. 279 00:20:56,000 --> 00:20:59,000 Wanneer dit sê dat die beheer bereik die einde van 'n nie-nietig funksie, 280 00:20:59,000 --> 00:21:02,000 dit is omdat soek, is nie 'n terugkeer verklaring. 281 00:21:02,000 --> 00:21:04,000 Dit is nie iets van die tipe Bool terug. 282 00:21:04,000 --> 00:21:09,000 >> Ons kan dit regmaak, en wat doen julle dink 283 00:21:09,000 --> 00:21:13,000 soek moet terugkeer by verstek? 284 00:21:13,000 --> 00:21:16,000 Wat moet die standaard waarde van soek wees? 285 00:21:16,000 --> 00:21:19,000 Want dit is wat ons kan aan die einde. 286 00:21:19,000 --> 00:21:21,000 Charlotte, het jy enige? 287 00:21:21,000 --> 00:21:23,000 Waar of vals >> Waar of vals? 288 00:21:23,000 --> 00:21:26,000 Watter een? 289 00:21:26,000 --> 00:21:28,000 Vals is. Ek weet nie. 290 00:21:28,000 --> 00:21:30,000 Vals? Kom ons probeer dit. 291 00:21:30,000 --> 00:21:32,000 Waarom sou jy sê terugkeer vals? Dit is groot intuïsie. 292 00:21:32,000 --> 00:21:35,000 [Charlotte] Ek weet nie. 293 00:21:35,000 --> 00:21:39,000 Ons gaan om terug te keer vals in hierdie geval, want dit sal ons standaard 294 00:21:39,000 --> 00:21:44,000 indien vir een of ander rede die lys is leeg, of die naald 295 00:21:44,000 --> 00:21:46,000 dat ons op soek is na, bestaan ​​nie. 296 00:21:46,000 --> 00:21:50,000 Dan heel aan die einde, as ons nie waar vroeër terug in hierdie funksie, 297 00:21:50,000 --> 00:21:55,000 ons altyd weet dat hierdie funksie sal sê: Nee, dit is nie in die skikking. 298 00:21:55,000 --> 00:21:58,000 Dit is nie in die hooiberg. 299 00:21:58,000 --> 00:22:03,000 Nou as ons stel en uit te voer dit-laat my red sodat ons kan trek dit. 300 00:22:03,000 --> 00:22:08,000 Nou as ons stel en uit te voer van ons program, dit bou. 301 00:22:08,000 --> 00:22:12,000 Ons kry ons klein prompt. 302 00:22:12,000 --> 00:22:20,000 As ek getref 4-uh-oh. 303 00:22:20,000 --> 00:22:25,000 Dit het nie druk uit enigiets. Dit lyk alles geëindig okay. 304 00:22:25,000 --> 00:22:35,000 Ons het hierdie te vul. 305 00:22:35,000 --> 00:22:39,000 Ons het gepraat oor die algoritme in pseudokode 'n bietjie gelede. 306 00:22:39,000 --> 00:22:44,000 Laat my sien nie, behalwe dit, 307 00:22:44,000 --> 00:22:49,000 en ek sal dat die algoritme terug te trek weer. 308 00:22:49,000 --> 00:22:51,000 Laat ons hierdie man getref. Nope. 309 00:22:51,000 --> 00:22:58,000 Daar is dit. 310 00:22:58,000 --> 00:23:03,000 Hoe doen ons dit? 311 00:23:03,000 --> 00:23:11,000 Wat sou 'n goeie strategie vir die begin van hierdie kode? 312 00:23:11,000 --> 00:23:16,000 Jy het 'n aantal in die middel te kies. 313 00:23:16,000 --> 00:23:23,000 Hoe kies ons 'n getal in die middel van 'n skikking? 314 00:23:23,000 --> 00:23:25,000 Enige voorstelle? 315 00:23:25,000 --> 00:23:27,000 [Studente] strlen gedeel deur 2. 316 00:23:27,000 --> 00:23:32,000 Strlen gedeel deur 2. Dit is 'n groot een. 317 00:23:32,000 --> 00:23:35,000 Strlen werk met spesiale soorte van skikkings. 318 00:23:35,000 --> 00:23:38,000 Watter soort van skikkings? 319 00:23:38,000 --> 00:23:44,000 String skikkings, karakter skikkings. 320 00:23:44,000 --> 00:23:48,000 Dit is dieselfde soort van die konsep wat ons wil om aansoek te doen, 321 00:23:48,000 --> 00:23:52,000 maar ons kan nie gebruik strlen omdat ons nie 'n verskeidenheid van karakters. 322 00:23:52,000 --> 00:23:55,000 Ons het 'n verskeidenheid van ints. 323 00:23:55,000 --> 00:23:58,000 Maar wat beteken strlen kry vir ons? 324 00:23:58,000 --> 00:24:01,000 Weet jy wat dit vir ons kry? 325 00:24:01,000 --> 00:24:03,000 [Studente] strlen kry ons die lengte. 326 00:24:03,000 --> 00:24:05,000 Presies, dit raak ons ​​die lengte. 327 00:24:05,000 --> 00:24:09,000 Strlen kry die lengte van die skikking vir ons. 328 00:24:09,000 --> 00:24:14,000 >> Hoe kry ons dit in ons binêre soek program? 329 00:24:14,000 --> 00:24:18,000 Hoe sou jy die lengte van 'n skikking? 330 00:24:18,000 --> 00:24:20,000 [Studente] strlen? 331 00:24:20,000 --> 00:24:25,000 Jy kan die lengte van 'n behoorlik geformateer C string array met strlen. 332 00:24:25,000 --> 00:24:31,000 Die probleem is egter dat ons nie 'n string array. 333 00:24:31,000 --> 00:24:36,000 As ons terugkyk op hierdie kode, ons het hierdie integer skikking. 334 00:24:36,000 --> 00:24:38,000 Hoe weet ons hoe lank dit is? 335 00:24:38,000 --> 00:24:44,000 [Studente] Is daar 'n ekwivalente een eindpunt, soos int l of iets? 336 00:24:44,000 --> 00:24:49,000 Dit blyk daar is eintlik nie, en so op 'n manier, is dit 337 00:24:49,000 --> 00:24:52,000 een van daardie dinge wat net goed om te weet oor C, 338 00:24:52,000 --> 00:24:57,000 dat daar is geen manier om die lengte van 'n skikking te kry 339 00:24:57,000 --> 00:24:59,000 as alles wat Ek julle gee, is die skikking. 340 00:24:59,000 --> 00:25:02,000 Die rede waarom dit werk met snare, die rede strlen werke, 341 00:25:02,000 --> 00:25:06,000 is, want as 'n string behoorlik geformateer, 342 00:25:06,000 --> 00:25:12,000 dit sal daardie spesiale \ 0 karakter aan die einde. 343 00:25:12,000 --> 00:25:16,000 >> Jy kan ook dink as jy 'n onbehoorlik geformateerde string 344 00:25:16,000 --> 00:25:20,000 en daar is geen \ 0 karakter daar, dan is die hele ding nie werk nie. 345 00:25:20,000 --> 00:25:22,000 [Studente] Kan jy die \ 0? 346 00:25:22,000 --> 00:25:24,000 Ons kon in hierdie geval. 347 00:25:24,000 --> 00:25:29,000 Ons kan voeg 'n soort van \ 0 348 00:25:29,000 --> 00:25:33,000 of 'n soort van dui karakter en dan gebruik. 349 00:25:33,000 --> 00:25:36,000 Maar dit is nie heeltemal gaan om te werk 350 00:25:36,000 --> 00:25:40,000 omdat die \ 0 is vir 'n char tipe, 351 00:25:40,000 --> 00:25:43,000 en hier is ons het ints. 352 00:25:43,000 --> 00:25:46,000 Die ander ding is as ons 'n spesiale waarde te gebruik 353 00:25:46,000 --> 00:25:49,000 soos -1 die einde van 'n skikking te merk 354 00:25:49,000 --> 00:25:54,000 dan kan ons nooit berg 'n -1 in ons integer skikkings. 355 00:25:54,000 --> 00:25:56,000 Ons wil vas. 356 00:25:56,000 --> 00:26:00,000 Dit blyk dat die enigste manier om die lengte te kry 357 00:26:00,000 --> 00:26:03,000 van 'n skikking in C is om werklik te onthou 358 00:26:03,000 --> 00:26:08,000 as jy sit dit op en dan beweeg dit rond met die skikking 359 00:26:08,000 --> 00:26:14,000 sodat wanneer ek het 'n funksie wat gaan werk om te doen 360 00:26:14,000 --> 00:26:18,000 op 'n verskeidenheid van heelgetalle of dryf of verdubbel of wat het jy, 361 00:26:18,000 --> 00:26:22,000 Ek moet ook die funksie gee die skikking se lengte, 362 00:26:22,000 --> 00:26:26,000 en dit is presies wat ons hier gedoen het in die "search" funksie. 363 00:26:26,000 --> 00:26:30,000 As jy kyk, wat ons gedoen het toe ons hier in ons verskeidenheid, 364 00:26:30,000 --> 00:26:36,000 ons ook in die lengte, grootte. 365 00:26:36,000 --> 00:26:41,000 Dit gebeur net dat ons hierdie veranderlike hier genoem het, 366 00:26:41,000 --> 00:26:43,000 hierdie parameter of argument. 367 00:26:43,000 --> 00:26:46,000 Dit staan ​​bekend as 'n funksie se argument lys of parameter lys, 368 00:26:46,000 --> 00:26:51,000 en dit word ook genoem argumente of parameters. 369 00:26:51,000 --> 00:26:53,000 Mense gebruik verskillende terme op verskillende tye. 370 00:26:53,000 --> 00:26:55,000 Ek soms omruil hulle myself. 371 00:26:55,000 --> 00:27:00,000 Dit gebeur net so dat hierdie veranderlike hier gelyknamige 372 00:27:00,000 --> 00:27:03,000 aan hierdie # define hier. 373 00:27:03,000 --> 00:27:06,000 Maar hulle is nie dieselfde ding nie. 374 00:27:06,000 --> 00:27:11,000 Die kapitalisasiereserwe nie saak nie. 375 00:27:11,000 --> 00:27:14,000 >> As jy kyk na wat hier gebeur, ons verklaar 376 00:27:14,000 --> 00:27:18,000 ons int skikking, wat het ons geroep getalle. 377 00:27:18,000 --> 00:27:23,000 Ons het dit ons grootte, wat ooreenstem met ons # define aan die bokant. 378 00:27:23,000 --> 00:27:27,000 Dit gaan wees 8. 379 00:27:27,000 --> 00:27:35,000 En dan wanneer ons dan noem ons soek funksie hieronder neer, 380 00:27:35,000 --> 00:27:40,000 ons in die getal wat ons wil om te soek na wat ons het gevra, 381 00:27:40,000 --> 00:27:43,000 gekry van die gebruiker. 382 00:27:43,000 --> 00:27:46,000 Ons in die skikking, hierdie getalle, 383 00:27:46,000 --> 00:27:51,000 en dan het ons ook om te slaag in die grootte van die skikking, 384 00:27:51,000 --> 00:27:57,000 en dan kry die waarde van grootte 8 gestoor 385 00:27:57,000 --> 00:28:01,000 geslaag het of aan hierdie heelgetal veranderlike genoem grootte. 386 00:28:01,000 --> 00:28:08,000 Ons het die grootte van die skikking. 387 00:28:08,000 --> 00:28:11,000 Nou as ons gaan terug na wat ons praat oor vroeër, 388 00:28:11,000 --> 00:28:14,000 Ek dink Missy het die punt wat ons nodig het om te doen, is om die lengte van die skikking 389 00:28:14,000 --> 00:28:20,000 en deel dit deur 2, en dit sal gee ons die middelpunt. 390 00:28:20,000 --> 00:28:22,000 Kom ons kyk. 391 00:28:22,000 --> 00:28:25,000 Kan ek iemand skryf dit en stoor dit in die ruimte? 392 00:28:25,000 --> 00:28:27,000 Hoe gaan dit Leila? 393 00:28:27,000 --> 00:28:31,000 Kan ek hê dat julle skryf hierdie in? 394 00:28:31,000 --> 00:28:35,000 Skryf die eerste reël waar jy die lengte van die skikking en kry die middelpunt 395 00:28:35,000 --> 00:28:41,000 en bêre dit in 'n nuwe veranderlike. 396 00:28:41,000 --> 00:28:44,000 Ek gee jou 'n paar sekondes. Is jy gereed? 397 00:28:44,000 --> 00:28:46,000 [Student onhoorbaar] 398 00:28:46,000 --> 00:28:50,000 Sure, kan ek jy het die middelpunt bereken 399 00:28:50,000 --> 00:28:55,000 van die hooiberg verskeidenheid binne-in die "search" funksie 400 00:28:55,000 --> 00:29:03,000 deur gebruik te maak van die lengte van die hooiberg verskeidenheid, wat is die grootte veranderlike? 401 00:29:03,000 --> 00:29:08,000 Niks moeilike hier. 402 00:29:08,000 --> 00:29:12,000 [Leila] Net grootte / 2 en net- 403 00:29:12,000 --> 00:29:17,000 En stoor dit, en klik op die knoppie Stoor hier aan die bokant, 404 00:29:17,000 --> 00:29:19,000 en ons sal trek dit. 405 00:29:19,000 --> 00:29:22,000 Perfect. 406 00:29:22,000 --> 00:29:28,000 Daar gaan ons. Awesome. 407 00:29:28,000 --> 00:29:30,000 >> Soos dit is, sal dit stel? 408 00:29:30,000 --> 00:29:32,000 [Leila] Nee, dit moet hoër wees. 409 00:29:32,000 --> 00:29:34,000 [Nate] Ja, so wat moet ons doen? 410 00:29:34,000 --> 00:29:36,000 [Leila] Soos int middelpunt of iets. 411 00:29:36,000 --> 00:29:41,000 Awesome. Ja, laat ons dit doen, int middelpunt = grootte. 412 00:29:41,000 --> 00:29:44,000 Sal dit stel? 413 00:29:44,000 --> 00:29:47,000 Laat hierdie kommentaar te verwyder en kry dit uit die weg geruim. 414 00:29:47,000 --> 00:29:50,000 Wat sal nie stel oor hierdie? 415 00:29:50,000 --> 00:29:52,000 Ons is nie om iets te doen met heelgetal, 416 00:29:52,000 --> 00:29:55,000 sodat ons nodig het om dit of iets soos dit te druk. 417 00:29:55,000 --> 00:29:58,000 Ja, presies. 418 00:29:58,000 --> 00:30:00,000 Ons kry 'n ongebruikte veranderlike. 419 00:30:00,000 --> 00:30:02,000 Wat anders is nie van plan om te werk oor hierdie? 420 00:30:02,000 --> 00:30:06,000 Ek dink jy het iets gesê, Sam. Kommapunte. 421 00:30:06,000 --> 00:30:08,000 Ja, ek mis daardie kommapunte. 422 00:30:08,000 --> 00:30:14,000 Dit gaan om 'n konstante ding deur die loop van die kwartaal. 423 00:30:14,000 --> 00:30:17,000 Die laaste ding wat ek sal doen, is ek sal 'n wit spasie aan weerskante 424 00:30:17,000 --> 00:30:23,000 van hierdie operateur hier, want dit is tipies hoe ons dit doen 425 00:30:23,000 --> 00:30:26,000 volgens ons stylgids. 426 00:30:26,000 --> 00:30:29,000 Ons het die middelpunt van ons verskeidenheid. 427 00:30:29,000 --> 00:30:32,000 Nou as ons dink terug aan ons algoritme, 428 00:30:32,000 --> 00:30:37,000 wat was die tweede stap wat ons gehad het om te doen wanneer ons die middelpunt? 429 00:30:37,000 --> 00:30:42,000 [Studente] As dit is groter [onhoorbaar]. 430 00:30:42,000 --> 00:30:48,000 Ja, so ons het 'n soort van vergelyking te doen, en wat ons 'n vergelyking hier? 431 00:30:48,000 --> 00:30:53,000 Jy het gesê as dit is groter as. Wat is dit in daardie sin verwys na? 432 00:30:53,000 --> 00:30:57,000 Die getal wat kom, as dit is groter as die middelpunt, en gaan dan tot die skikking? 433 00:30:57,000 --> 00:31:05,000 Presies, sodat die getal wat opkom wanneer ons- 434 00:31:05,000 --> 00:31:10,000 Die naald, so ons is in vergelyking met die naald, 435 00:31:10,000 --> 00:31:12,000 en wat ons 'n vergelyking teen die naald? 436 00:31:12,000 --> 00:31:15,000 Omdat die naald is wat ons soek. 437 00:31:15,000 --> 00:31:18,000 Ons vergelyk dit te kry om die middelpunt. 438 00:31:18,000 --> 00:31:21,000 >> Maar maak dit sin om te kyk om te sien 439 00:31:21,000 --> 00:31:27,000 indien die naald = middelpunt? 440 00:31:27,000 --> 00:31:32,000 Maak dit sin? 441 00:31:32,000 --> 00:31:35,000 Het enige iemand nie saamstem nie? 442 00:31:35,000 --> 00:31:40,000 Kom ons gee dit 'n probeer, as (naald == middelpunt). 443 00:31:40,000 --> 00:31:42,000 [Studente] jy printf het dit gevind. 444 00:31:42,000 --> 00:31:51,000 [Nate] printf ("Ons het gevind dat dit \ n"); 445 00:31:51,000 --> 00:31:56,000 Anders bepaal-Achievement gaan om te begin doen iets anders hier. 446 00:31:56,000 --> 00:32:00,000 Ek gaan om te begin om draadjies rondom if-stellings om al die tyd 447 00:32:00,000 --> 00:32:05,000 net omdat ons meer dinge, dan 448 00:32:05,000 --> 00:32:07,000 ons kry nie die samestellers. 449 00:32:07,000 --> 00:32:09,000 Ja, Sam. Jy het 'n punt. 450 00:32:09,000 --> 00:32:12,000 Die probleem is dat die middelpunt verteenwoordig 'n posisie in die skikking, 451 00:32:12,000 --> 00:32:15,000 maar jy kan dit die waarde in daardie posisie van die skikking te stel. 452 00:32:15,000 --> 00:32:17,000 Dit is 'n groot punt. 453 00:32:17,000 --> 00:32:19,000 Het almal hoor wat Sam gesê? 454 00:32:19,000 --> 00:32:22,000 Hy het gesê dat die middelpunt as 455 00:32:22,000 --> 00:32:28,000 net 'n posisie in die skikking, maar dit is nie die werklike element in die skikking. 456 00:32:28,000 --> 00:32:30,000 As jy dink oor die kode soos dit geskryf is nou, 457 00:32:30,000 --> 00:32:35,000 as ons kyk na hierdie array hier onder, wat 8 elemente in dit, 458 00:32:35,000 --> 00:32:39,000 Wat is die waarde van die middelpunt gaan wees in hierdie funksie? 459 00:32:39,000 --> 00:32:41,000 [Studente] 4. 460 00:32:41,000 --> 00:32:45,000 [Nate] 4. 461 00:32:45,000 --> 00:32:51,000 As ons kyk vir die nommer 4 - 462 00:32:51,000 --> 00:32:54,000 en ons kan net gebruik hierdie kode en 'n bietjie hartseer gesig hier 463 00:32:54,000 --> 00:32:58,000 want ons het nie vind dit as ons loop hierdie kode 464 00:32:58,000 --> 00:33:04,000 soos nou, dit oplaai, gebou, let me down scroll, 465 00:33:04,000 --> 00:33:09,000 en as ons kyk vir die getal 4, 466 00:33:09,000 --> 00:33:18,000 ons het dit gevind, maar ons het nie om dit te printf ja. 467 00:33:18,000 --> 00:33:23,000 Een rede is dat ons nie terug ware, 468 00:33:23,000 --> 00:33:26,000 maar ons het regtig die getal 4? 469 00:33:26,000 --> 00:33:28,000 En Sam is geen gesê. 470 00:33:28,000 --> 00:33:31,000 Wat het ons vind? 471 00:33:31,000 --> 00:33:35,000 Ons het regtig die middelpunt, wat as ons kyk na die skikking hier onder gevind, 472 00:33:35,000 --> 00:33:38,000 dit gaan om die element te wees indeks 4 dat ons is op soek na, 473 00:33:38,000 --> 00:33:42,000 wat 23. 474 00:33:42,000 --> 00:33:46,000 >> Hoe kry ons eintlik daardie element by die middelpunt 475 00:33:46,000 --> 00:33:48,000 en nie net die middelpunt self? 476 00:33:48,000 --> 00:33:52,000 [Studente] Ons wil gaan char of iets? 477 00:33:52,000 --> 00:33:55,000 Wat sou dit doen, net uit nuuskierigheid? 478 00:33:55,000 --> 00:33:57,000 Kan jy 'n bietjie meer uit te brei? 479 00:33:57,000 --> 00:34:02,000 Jy het om die posisie te omskep in die getal, 480 00:34:02,000 --> 00:34:05,000 sodat jy het om te maak 'n verband-ek dink dit is char, maar dit kan nie wees nie. 481 00:34:05,000 --> 00:34:07,000 Ja, dis 'n goeie punt. 482 00:34:07,000 --> 00:34:12,000 Het ons is besig met 'n baie van hierdie omskakeling posisies in karakters, hierdie karakters, 483 00:34:12,000 --> 00:34:14,000 in die eerste twee probleem stelle. 484 00:34:14,000 --> 00:34:18,000 Dit blyk dat hier, dit is amper soortgelyk aan 485 00:34:18,000 --> 00:34:24,000 toegang tot die met karakter binne 'n string, as dit sin maak. 486 00:34:24,000 --> 00:34:30,000 Hier wil ons die middelpunt element om toegang te verkry tot. 487 00:34:30,000 --> 00:34:34,000 Hoe doen ons dit? 488 00:34:34,000 --> 00:34:39,000 Kevin, het jy enige voorstelle hoe ons kan doen? 489 00:34:39,000 --> 00:34:44,000 Jy hooiberg kan doen, oop bracket, middel, gesluit bracket. 490 00:34:44,000 --> 00:34:46,000 Kan jy skryf wat vir ons? 491 00:34:46,000 --> 00:34:51,000 Stoor dit in hier, en ons sal daardie up trek. 492 00:34:51,000 --> 00:34:56,000 Ons is op soek na hierdie lyn 9, 493 00:34:56,000 --> 00:34:59,000 en ons besef dat ons nie wil hê om die naald te vergelyk met die middelpunt, 494 00:34:59,000 --> 00:35:03,000 maar in plaas daarvan, ons wil hê dat die naald te vergelyk 495 00:35:03,000 --> 00:35:07,000 aan die element by posisie middelpunt binne ons hooiberg verskeidenheid. 496 00:35:07,000 --> 00:35:10,000 Cool. 497 00:35:10,000 --> 00:35:12,000 Daar gaan ons. 498 00:35:12,000 --> 00:35:15,000 Ja, dit lyk redelik goed, indien (naald == hooiberg [middelpunt]). 499 00:35:15,000 --> 00:35:18,000 Ons het dit gevind. 500 00:35:18,000 --> 00:35:22,000 Nou as ons hardloop die kode-we'll back-up 'n bietjie- 501 00:35:22,000 --> 00:35:26,000 dit stel, dit loop, en as ons nou kyk vir 4, 502 00:35:26,000 --> 00:35:30,000 ons het dit nie vind nie, omdat ons nou eintlik die getal 23 kry. 503 00:35:30,000 --> 00:35:33,000 Ons kry die waarde van 23, en dit is wat ons in vergelyking met ons naald. 504 00:35:33,000 --> 00:35:35,000 Maar dit is goed. Dit is 'n stap in die regte rigting. 505 00:35:35,000 --> 00:35:37,000 >> Dit is wat ons probeer om te doen. 506 00:35:37,000 --> 00:35:40,000 Ons is nie probeer om die naald te vergelyk posisies in die skikking 507 00:35:40,000 --> 00:35:44,000 maar eerder teen die werklike elemente in die skikking. 508 00:35:44,000 --> 00:35:49,000 As ons terug kyk nou weer by die volgende stap in ons algoritme, 509 00:35:49,000 --> 00:35:51,000 wat is die volgende stap? 510 00:35:51,000 --> 00:35:57,000 Leila reeds genoem dit kortliks. 511 00:35:57,000 --> 00:36:00,000 [Studente] Toets om te sien of dit is groter as of minder is as en dan besluit watter rigting om te beweeg. 512 00:36:00,000 --> 00:36:03,000 [Nate] Ja, so hoe sou ons dit doen? 513 00:36:03,000 --> 00:36:07,000 Kan jy in sommige I'll behalwe hierdie hersiening, 514 00:36:07,000 --> 00:36:13,000 en dan as jy in 'n paar lyne wat sal dit doen. 515 00:36:13,000 --> 00:36:15,000 Ja, Charlotte >> Ek het 'n vraag. 516 00:36:15,000 --> 00:36:19,000 Dit behoort nie wees middelpunt - 1 want die eerste ding is 517 00:36:19,000 --> 00:36:26,000 dit is 0 geïndekseer, so as ons 4, dis nie eintlik die karakter wat ons is op soek na? 518 00:36:26,000 --> 00:36:30,000 Ja, en die ander probleem met wat- 519 00:36:30,000 --> 00:36:35,000 dit is 'n groot vangs, want wat gaan gebeur moontlik 520 00:36:35,000 --> 00:36:42,000 as ons beweeg en ons ooit nie aanvanklik te pas? 521 00:36:42,000 --> 00:36:46,000 Ek dink wat ons kan doen is probeer om toegang te verkry tot 522 00:36:46,000 --> 00:36:49,000 die element by die 8ste posisie van die skikking, 523 00:36:49,000 --> 00:36:53,000 wat in hierdie geval nie bestaan ​​nie. 524 00:36:53,000 --> 00:36:56,000 Ons sal wil hê om 'n soort van rekeningkunde te doen vir die feit 525 00:36:56,000 --> 00:36:59,000 dat ons het 'n paar zero kruip. 526 00:36:59,000 --> 00:37:05,000 [Charlotte] Jammer, ek bedoel middelpunt - 1 in die vierkantige hakies. 527 00:37:05,000 --> 00:37:08,000 Ons kan dit doen. 528 00:37:08,000 --> 00:37:10,000 Ons sal terugkom na hierdie kwessie in net 'n bietjie. 529 00:37:10,000 --> 00:37:13,000 Sodra ons begin om te kry om die werklike herhaling, 530 00:37:13,000 --> 00:37:16,000 dit is wanneer ons sal regtig sien dit kom in die spel. 531 00:37:16,000 --> 00:37:21,000 Vir die oomblik, kan ons dit doen nie, maar jy is heeltemal reg. 532 00:37:21,000 --> 00:37:28,000 Dat die nul-indeksering sal 'n effek hê wat ons nodig het om rekenskap te gee. 533 00:37:28,000 --> 00:37:30,000 Kom ons kyk. 534 00:37:30,000 --> 00:37:34,000 >> Hoe is die meer as en minder as? 535 00:37:34,000 --> 00:37:36,000 [Studente] Ek kry hoe die meer as en minder as 'n deel te doen. 536 00:37:36,000 --> 00:37:41,000 Ek was net nie seker wat om te druk as jy vind dat dit minder as die hooiberg middelpunt of groter as. 537 00:37:41,000 --> 00:37:43,000 Hier kan ek red wat I've- 538 00:37:43,000 --> 00:37:47,000 [Nate] Ja, as jy red wat jy het, en ons sal trek dit. 539 00:37:47,000 --> 00:37:49,000 Daar gaan ons. 540 00:37:49,000 --> 00:37:51,000 [Studente] En Ek het vraagtekens vir wat ek het nie geweet nie. 541 00:37:51,000 --> 00:37:54,000 [Nate] Dit lyk great. 542 00:37:54,000 --> 00:37:58,000 Hier het ons het vraagtekens, want ons weet nog steeds nie 543 00:37:58,000 --> 00:38:06,000 wat gaan ons nog baie doen. 544 00:38:06,000 --> 00:38:12,000 Wat sou ons wil te doen Oeps, ons het 'n paar draadjies al die funky op ons. 545 00:38:12,000 --> 00:38:15,000 Ons sal regstel draadjies. 546 00:38:15,000 --> 00:38:19,000 Daar gaan ons. 547 00:38:19,000 --> 00:38:22,000 En wat het ons wil om dit te doen, volgens ons algoritme, 548 00:38:22,000 --> 00:38:27,000 as ons nie die naald? 549 00:38:27,000 --> 00:38:32,000 Sê in die geval dat die naald is minder as wat ons is op soek na. Kevin. 550 00:38:32,000 --> 00:38:34,000 Net kyk na die linker helfte. 551 00:38:34,000 --> 00:38:40,000 Reg, so ons sal sit 'n kommentaar hier wat sê "kyk na linker helfte." 552 00:38:40,000 --> 00:38:46,000 En as die naald is groter as die hooiberg by die middelpunt, wat ons wil hê om dit te doen? 553 00:38:46,000 --> 00:38:48,000 [Studente] Dan moet jy kyk op die regter helfte. 554 00:38:48,000 --> 00:38:53,000 Kyk na die regter helfte, "kyk na regter helfte." 555 00:38:53,000 --> 00:38:58,000 Nie sleg nie. 556 00:38:58,000 --> 00:39:05,000 Okay, so op hierdie punt, is dinge lyk redelik goed. 557 00:39:05,000 --> 00:39:13,000 Die probleem met die kode soos dit geskryf is? 558 00:39:13,000 --> 00:39:15,000 [Studente] Jy hoef nie eindpunte vir die helftes. 559 00:39:15,000 --> 00:39:18,000 Reg is, hoef ons nie eindpunte vir die helftes. 560 00:39:18,000 --> 00:39:20,000 Ons is ook net gaan om te gaan deur middel van hierdie een keer. 561 00:39:20,000 --> 00:39:23,000 Ons is net gaan om te kyk op 'n middelpunt. 562 00:39:23,000 --> 00:39:27,000 Óf die element is daar, of dit is nie. 563 00:39:27,000 --> 00:39:34,000 Om dit te voltooi, sal ons nodig het om 'n soort van herhaling te doen. 564 00:39:34,000 --> 00:39:39,000 Ons moet aanhou herhaal totdat vind ons dat 565 00:39:39,000 --> 00:39:43,000 óf die element is daar, want ons het vernou en uiteindelik het dit gevind, 566 00:39:43,000 --> 00:39:46,000 of dit nie daar nie, want ons het deur al die dinge gekyk 567 00:39:46,000 --> 00:39:52,000 in die toepaslike helftes van die skikking en gevind dat daar niks is daar. 568 00:39:52,000 --> 00:39:56,000 >> Wanneer ons het hierdie herhaling gaan, wat ons gaan gebruik? 569 00:39:56,000 --> 00:39:58,000 [Studente] 'n lus. 570 00:39:58,000 --> 00:40:00,000 'N soort van loop. Ja. 571 00:40:00,000 --> 00:40:03,000 [Studente] Kan ons doen 'n do-while lus en dit doen en dan, terwyl 572 00:40:03,000 --> 00:40:10,000 die naald nie gelyke ek nie seker waar ek gaan met dit. 573 00:40:10,000 --> 00:40:18,000 Maar soort van soos dit doen, solank dit nie gelyk is aan die waarde wat die toevoer van die gebruiker. 574 00:40:18,000 --> 00:40:21,000 Ja, so laat ons sien, hoe kan dit self skryf? 575 00:40:21,000 --> 00:40:23,000 Jy het gesê laat ons gebruik om 'n do-while lus. 576 00:40:23,000 --> 00:40:26,000 Waar kom die begin doen? 577 00:40:26,000 --> 00:40:33,000 [Studente] Net na die grootte / 2. 578 00:40:33,000 --> 00:40:42,000 [Nate] Okay, en wat gaan ons doen? 579 00:40:42,000 --> 00:40:44,000 Ons sal vul in die rukkie later. 580 00:40:44,000 --> 00:40:46,000 Wat gaan ons doen? 581 00:40:46,000 --> 00:40:49,000 [Studente] Het ons nie wil al die dinge te doen wat ons in die if gedeelte? 582 00:40:49,000 --> 00:40:52,000 [Nate] Doen al hierdie dinge, groot. 583 00:40:52,000 --> 00:40:55,000 Kopieer en plak. 584 00:40:55,000 --> 00:40:59,000 Ag, man. 585 00:40:59,000 --> 00:41:03,000 Kom ons kyk of dit werk, as ons kan blad dit oor. 586 00:41:03,000 --> 00:41:08,000 Mooi. 587 00:41:08,000 --> 00:41:16,000 Okay, en red ons, sodat julle dit. 588 00:41:16,000 --> 00:41:21,000 Alles reg, en ons gaan om dit te doen, terwyl 589 00:41:21,000 --> 00:41:25,000 Wat was die tyd toestand was jy na? 590 00:41:25,000 --> 00:41:31,000 [Studente] Terwyl die naald nie gelyk is, so soos die uitroepteken. 591 00:41:31,000 --> 00:41:37,000 Maar ek is nie seker presies wat dit nog is. 592 00:41:37,000 --> 00:41:39,000 [Nate] Ja, dit is een manier om dit te doen. 593 00:41:39,000 --> 00:41:41,000 Sam, het jy 'n comment? 594 00:41:41,000 --> 00:41:43,000 [Sam] Ek onthou toe ek kyk na die video's, 595 00:41:43,000 --> 00:41:48,000 Ek het 'n kiekie van een van die soos toe ons het die pseudokode vir dit, 596 00:41:48,000 --> 00:41:52,000 was daar 'n verhouding tussen maks en min. 597 00:41:52,000 --> 00:41:58,000 Ek dink dit was iets soos as Max is steeds minder as min. 598 00:41:58,000 --> 00:42:00,000 Het dit. 599 00:42:00,000 --> 00:42:04,000 [Sam] Of wil indien max is nie minder nie as min of iets soos dit, 600 00:42:04,000 --> 00:42:06,000 want dit sou beteken dat jy alles het gesoek. 601 00:42:06,000 --> 00:42:13,000 >> Ja, so wat maak dit klink soos maks en min verwys na? 602 00:42:13,000 --> 00:42:16,000 [Sam] waardes wat heelgetalle wat gaan verander 603 00:42:16,000 --> 00:42:18,000 relatief tot waar ons die middelpunt. 604 00:42:18,000 --> 00:42:20,000 Presies. 605 00:42:20,000 --> 00:42:24,000 [Sam] Op daardie punt, dit gaan [onhoorbaar] Bereken die maksimum en min. 606 00:42:24,000 --> 00:42:29,000 Middelpunt is hierdie maks en min idee. 607 00:42:29,000 --> 00:42:35,000 Beteken dit sin maak aan mense? 608 00:42:35,000 --> 00:42:39,000 As ons begin kyk na hoe ons gaan hierdie iterasie te doen, 609 00:42:39,000 --> 00:42:43,000 jy is heeltemal reg dat ons wil 'n soort van do-while lus te gebruik. 610 00:42:43,000 --> 00:42:49,000 Maar ek dink as ons onthou wat daar op die plek van die skikking 611 00:42:49,000 --> 00:42:53,000 en wat eintlik gebeur-ek-gaan om te skryf oor hier- 612 00:42:53,000 --> 00:42:58,000 met die eerste iterasie van binêre soek, het ons 613 00:42:58,000 --> 00:43:05,000 Ek gaan B en E te gebruik om die begin aan te dui. 614 00:43:05,000 --> 00:43:10,000 En dan die einde van ons verskeidenheid. 615 00:43:10,000 --> 00:43:14,000 Ons weet dat die begin af, is op 4 reg hier, 616 00:43:14,000 --> 00:43:18,000 en ons weet dat die einde is op 108. 617 00:43:18,000 --> 00:43:23,000 Sê ons is op soek vir die nommer 15. 618 00:43:23,000 --> 00:43:27,000 Die eerste keer dat ons dit doen, soos ons vroeër gesien het, 619 00:43:27,000 --> 00:43:30,000 die middelpunt óf gaan wees 16 of 23 620 00:43:30,000 --> 00:43:34,000 afhangende van hoe bereken ons dinge uit. 621 00:43:34,000 --> 00:43:37,000 Sedert eweredig te verdeel in die middel sou gee ons hierdie spasie 622 00:43:37,000 --> 00:43:42,000 tussen 16 en 23 is, kan ons nie eweredig verdeel dit 623 00:43:42,000 --> 00:43:47,000 of verdeel dit en kry op 'n ware middelpunt. 624 00:43:47,000 --> 00:43:49,000 Ons sal kyk na 16. 625 00:43:49,000 --> 00:43:55,000 Ons sal besef "Hey, 16> 15 wat ons soek." 626 00:43:55,000 --> 00:43:59,000 Dan kyk na die linker helfte van die skikking 627 00:43:59,000 --> 00:44:03,000 wat sal ons doen, is wegdoen 628 00:44:03,000 --> 00:44:07,000 hierdie hele boonste gedeelte 629 00:44:07,000 --> 00:44:16,000 en gesê: "Goed, nou is ons eindpunt gaan om hier te wees." 630 00:44:16,000 --> 00:44:22,000 Die volgende iterasie van ons loop, ons is nou op soek na hierdie skikking, 631 00:44:22,000 --> 00:44:25,000 effektief weggegooi hierdie gedeelte, want nou 632 00:44:25,000 --> 00:44:30,000 as ons die neem van die middelpunt na die verskil tussen die begin en die einde, 633 00:44:30,000 --> 00:44:34,000 vind ons ons middelpunt te wees 8, 634 00:44:34,000 --> 00:44:40,000 wat ons kan toets 8 om te sien waar dit is in verhouding tot die getal wat ons soek, 635 00:44:40,000 --> 00:44:44,000 15, vind dat 15 groter is, 636 00:44:44,000 --> 00:44:49,000 so ons het om te skuif na die regte gedeelte van die lys, 637 00:44:49,000 --> 00:44:51,000 wat ons weet, want ons is mense, en ons kan dit sien. 638 00:44:51,000 --> 00:44:54,000 Ons weet dat die regter deel gaan wees waar ons dit vind, 639 00:44:54,000 --> 00:45:01,000 maar die rekenaar het nie geweet dat, so wat sal ons doen, is ons werklik 640 00:45:01,000 --> 00:45:04,000 het hierdie optrek, en nou is die begin en die einde 641 00:45:04,000 --> 00:45:11,000 is die dieselfde plek, sodat die middelpunt word die enigste getal in die lys op daardie punt, 642 00:45:11,000 --> 00:45:16,000 wat is 15, en ons het dit gevind. 643 00:45:16,000 --> 00:45:21,000 Beteken dit n bietjie lig werp op waar hierdie hele maks en min notasie gaan, 644 00:45:21,000 --> 00:45:24,000 die dop van die eindpunte van die skikking in orde om uit te vind 645 00:45:24,000 --> 00:45:35,000 hoe dinge te beperk? 646 00:45:35,000 --> 00:45:42,000 >> Wat sou gebeur as dit was nie nou gelyk aan 15? 647 00:45:42,000 --> 00:45:52,000 Wat as ons is op soek na 15 en, in plaas hierdie getal was ook 16? 648 00:45:52,000 --> 00:45:54,000 Ons wil sê, "O, dit is groter. 649 00:45:54,000 --> 00:45:57,000 Ons wil om terug te gaan na links. " 650 00:45:57,000 --> 00:46:01,000 En ons wil ons e beweeg na regs, 651 00:46:01,000 --> 00:46:06,000 op watter punt ons het 'n eindpunt wat sou wees botsende. 652 00:46:06,000 --> 00:46:09,000 Dit sou nie in staat wees om te soek vir meer elemente 653 00:46:09,000 --> 00:46:13,000 want nou het ons ons eindpunt en ons begin punt, 654 00:46:13,000 --> 00:46:16,000 ons max en ons min, is nou omgekeer. 655 00:46:16,000 --> 00:46:23,000 Ons soek deur die hele skikking. Ons kan niks vind nie. 656 00:46:23,000 --> 00:46:27,000 Dit is die punt waar ons graag wil hê om te sê, "Goed, ons gaan hierdie algoritme om te stop. 657 00:46:27,000 --> 00:46:34,000 Ons het nie gevind nie enigiets. Ons weet dit is nie hier nie. " 658 00:46:34,000 --> 00:46:36,000 Hoe gaan dit? 659 00:46:36,000 --> 00:46:40,000 [Studente] Hoe presies het die rekenaar skakel die einde? 660 00:46:40,000 --> 00:46:45,000 Hoe die ou end beland voor die begin? 661 00:46:45,000 --> 00:46:48,000 Die einde eindig voor die begin 662 00:46:48,000 --> 00:46:54,000 as gevolg van die wiskunde wat ons gaan elke keer as ons dit doen, te doen. 663 00:46:54,000 --> 00:47:00,000 Die manier waarop ons ruil is as jy kyk na die heel eerste keer doen ons dit omruil 664 00:47:00,000 --> 00:47:03,000 waar ons die begin by 4 en die einde 665 00:47:03,000 --> 00:47:13,000 al die pad af op 108 en ons middelpunt, sê, op 16 - 666 00:47:13,000 --> 00:47:20,000 Ek gaan om dit terug te stel na 15 as ons is op soek vir die 15, 667 00:47:20,000 --> 00:47:25,000 ons het geweet dat dit wat ons gedoen het toe ons kyk na die 16 en het gesien dat dit groter 668 00:47:25,000 --> 00:47:28,000 en wou die hele regter deel van die lys te verwyder, 669 00:47:28,000 --> 00:47:36,000 het ons gesien wat ons wou doen, is hierdie e beweeg hier. 670 00:47:36,000 --> 00:47:44,000 Doeltreffend, het die e verskuif na een voor die middelpunt. 671 00:47:44,000 --> 00:47:48,000 Net so, wanneer het ons hierdie iterasie van die algoritme 672 00:47:48,000 --> 00:47:51,000 en die middelpunt was op 8, 673 00:47:51,000 --> 00:47:55,000 het ons gevind dat 8 <15 so, ons wou die b te beweeg 674 00:47:55,000 --> 00:48:00,000 een verby die middelpunt. 675 00:48:00,000 --> 00:48:07,000 Nou, die begin en die einde is albei saam op hierdie 15. 676 00:48:07,000 --> 00:48:10,000 >> As ons wil gebeur om te kyk vir 'n ander waarde, nie 15 677 00:48:10,000 --> 00:48:14,000 of as hierdie 15 plaas 'n 16, 678 00:48:14,000 --> 00:48:20,000 ons sou gevind het dat die e ons wil een te beweeg voor die aangesig van die middelpunt. 679 00:48:20,000 --> 00:48:33,000 Nou is die e daar sou wees omgekeer minder as die b. 680 00:48:33,000 --> 00:48:39,000 Laat ons wandel deur hoe ons eintlik beland kodering hierdie algoritme. 681 00:48:39,000 --> 00:48:44,000 Ons weet dat ons wil hierdie middelpunt berekening te hê. 682 00:48:44,000 --> 00:48:48,000 Ons weet ook dat ons wil hê dat die begin en die einde van die skikking op te spoor 683 00:48:48,000 --> 00:48:51,000 van ons huidige skikking sodat ons kan uitvind 684 00:48:51,000 --> 00:48:56,000 waar hierdie linker helfte van die lys is en waar die regter helfte van die lys is. 685 00:48:56,000 --> 00:49:03,000 Ons doen dit met een begin en eindig, 686 00:49:03,000 --> 00:49:07,000 of ons kan noem hulle min en max. 687 00:49:07,000 --> 00:49:10,000 Ek sal gebruik om hierdie tyd begin en eindig. 688 00:49:10,000 --> 00:49:15,000 Wanneer ons begin, as ons terug kyk op ons voorbeeld hier, 689 00:49:15,000 --> 00:49:20,000 ons begin was aan die begin van die skikking, so natuurlik. 690 00:49:20,000 --> 00:49:25,000 Wat indeks was dit? Wat moet ons begin word? 691 00:49:25,000 --> 00:49:27,000 Daniel. 692 00:49:27,000 --> 00:49:30,000 [Daniel] Hooi [0]. 693 00:49:30,000 --> 00:49:37,000 [Nate] Ja, so kan ons stel dit gelyk aan hooiberg [0]. 694 00:49:37,000 --> 00:49:40,000 Die probleem is, is dat dit gee ons nie die posisie van die eerste element. 695 00:49:40,000 --> 00:49:45,000 Dit gee ons die indeks van die eerste element of die werklike waarde op daardie eerste posisie. 696 00:49:45,000 --> 00:49:47,000 [Studente] Dit sal skakel na 0,20? 697 00:49:47,000 --> 00:49:52,000 [Nate] Wat sal dit doen-goed, sal dit nie doen nie enige omsettingsensiem. 698 00:49:52,000 --> 00:49:56,000 Wat sal dit doen, is dit 'n 4 stoor in begin, 699 00:49:56,000 --> 00:49:59,000 en dan sal dit moeilik wees om vergelykings te maak teen begin 700 00:49:59,000 --> 00:50:03,000 omdat begin sal hou die waarde van 4, 701 00:50:03,000 --> 00:50:06,000 wat is die begin van ons verskeidenheid, 702 00:50:06,000 --> 00:50:08,000 maar ons wil die indekse in die skikking op te spoor 703 00:50:08,000 --> 00:50:11,000 in teenstelling met die waardes. 704 00:50:11,000 --> 00:50:17,000 Ons sal eintlik gebruik om 'n 0, soos dat. 705 00:50:17,000 --> 00:50:20,000 Vir die einde van die skikking Charlotte het dit 'n bietjie vroeër. 706 00:50:20,000 --> 00:50:23,000 Dit is waar ons sal in ag neem die nul kruip. 707 00:50:23,000 --> 00:50:25,000 >> Charlotte, wat is die einde van die skikking? 708 00:50:25,000 --> 00:50:28,000 Wat is die indeks van die einde? 709 00:50:28,000 --> 00:50:30,000 [Charlotte] Grootte - 1. 710 00:50:30,000 --> 00:50:32,000 Ja, en watter grootte moet ons gebruik? 711 00:50:32,000 --> 00:50:35,000 Moet ons gebruik kapitaal grootte of klein grootte? 712 00:50:35,000 --> 00:50:37,000 Capital grootte. 713 00:50:37,000 --> 00:50:42,000 In hierdie geval, kan ons gebruik om kapitaal grootte. 714 00:50:42,000 --> 00:50:45,000 As ons wou hierdie funksie te wees draagbare 715 00:50:45,000 --> 00:50:48,000 en gebruik hierdie funksie in ander programme, 716 00:50:48,000 --> 00:50:50,000 ons kan eintlik gebruik kleinletters grootte. 717 00:50:50,000 --> 00:50:52,000 Dit is goed ook. 718 00:50:52,000 --> 00:51:01,000 Maar Charlotte is heeltemal reg dat ons wil grootte te hê - 1. 719 00:51:01,000 --> 00:51:03,000 Op hierdie punt- 720 00:51:03,000 --> 00:51:05,000 [Studente] Hoe is dit dat jy kan gebruik hoofletters grootte? 721 00:51:05,000 --> 00:51:07,000 Hoe is dit dat ons kan gebruik hoofletters grootte? 722 00:51:07,000 --> 00:51:13,000 Dit blyk dat hierdie # definieer is regtig, 723 00:51:13,000 --> 00:51:19,000 onder die kap, 'n teks soos vind en te vervang, as dit sin maak. 724 00:51:19,000 --> 00:51:24,000 Wanneer jy jou kode stel, die preprocessing fase 725 00:51:24,000 --> 00:51:27,000 van die vertaler gaan deur middel van die lêer, 726 00:51:27,000 --> 00:51:31,000 en dit lyk vir oral dat jou kapitaal grootte geskryf het, 727 00:51:31,000 --> 00:51:39,000 en dit vervang dat die teks letterlik met 'n 8, net soos wat. 728 00:51:39,000 --> 00:51:42,000 In daardie sin, dit is baie verskillend van 'n veranderlike. 729 00:51:42,000 --> 00:51:45,000 Dit neem nie 'n ruimte in die geheue. 730 00:51:45,000 --> 00:51:52,000 Dit is 'n eenvoudige teks vervang truuk. 731 00:51:52,000 --> 00:51:57,000 In hierdie geval gaan ons om te gebruik. 732 00:51:57,000 --> 00:52:01,000 Van hier is ons wil 'n soort van herhaling te doen, 733 00:52:01,000 --> 00:52:03,000 en ons is op die regte pad met ons do-while lus. 734 00:52:03,000 --> 00:52:08,000 Ons wil om iets te doen totdat 'n toestand nie meer hou nie, 735 00:52:08,000 --> 00:52:12,000 en soos ons vroeër gesien het, het ons gesien dat daardie toestand 736 00:52:12,000 --> 00:52:19,000 was inderdaad dat ons nie wil hê dat die einde 737 00:52:19,000 --> 00:52:24,000 minder wees as die begin. 738 00:52:24,000 --> 00:52:26,000 >> Dit is ons stop toestand. 739 00:52:26,000 --> 00:52:35,000 As dit gebeur, ons wil om te stop en te verklaar soos, "Hey, het ons nie gevind nie enigiets." 740 00:52:35,000 --> 00:52:43,000 Om dit uit te druk, wil ons 'n soort van die lus te gebruik. 741 00:52:43,000 --> 00:52:49,000 In hierdie geval, sou dit 'n do-while lus, 'n lus, 'n while lus? 742 00:52:49,000 --> 00:52:51,000 Ons het 'n do-while lus hier. 743 00:52:51,000 --> 00:52:53,000 Het jy ouens soos dié benadering? 744 00:52:53,000 --> 00:52:59,000 Dink jy moet ons 'n ander benadering probeer? 745 00:52:59,000 --> 00:53:01,000 Kevin, enige gedagtes? 746 00:53:01,000 --> 00:53:06,000 Ons kon 'n while lus het, want ons weet maksimum 747 00:53:06,000 --> 00:53:11,000 sal groter wees as die min aan die begin anyways. 748 00:53:11,000 --> 00:53:14,000 Ja, so daar is geen inisialisering wat moet gebeur. 749 00:53:14,000 --> 00:53:17,000 Diegene do-while loops is groot wanneer jy iets te inisialiseer 750 00:53:17,000 --> 00:53:21,000 voor te toets, terwyl hier 751 00:53:21,000 --> 00:53:26,000 weet ons dat ons nie gaan hou weer initialiseren beide begin en eindig 752 00:53:26,000 --> 00:53:28,000 elke ronde van die lus. 753 00:53:28,000 --> 00:53:32,000 Ons weet dat ons wil hê om hulle te inisialiseer, dan gaan ons toestand. 754 00:53:32,000 --> 00:53:38,000 In hierdie geval is, sal ek werklik gaan met 'n eenvoudige while lus. 755 00:53:38,000 --> 00:53:44,000 Dit blyk dat die do-while loops is redelik selde gebruik. 756 00:53:44,000 --> 00:53:49,000 'N baie plekke nie eens leer terwyl loops. 757 00:53:49,000 --> 00:53:53,000 Hulle is goed vir die hantering van die toevoer van die gebruiker, so het ons gesien hoe 'n baie van hulle tot dusver. 758 00:53:53,000 --> 00:53:59,000 Maar die normale en terwyl loops is 'n baie meer algemeen. 759 00:53:59,000 --> 00:54:03,000 Dit blyk dat hierdie toestand as 'n skriftelike 760 00:54:03,000 --> 00:54:09,000 sal nie regtig doen ons baie goed, en hoekom is dit? 761 00:54:09,000 --> 00:54:11,000 Ek is jammer, ek weet nie jou naam. 762 00:54:11,000 --> 00:54:13,000 Ek is Jerry. >> Jammer? 763 00:54:13,000 --> 00:54:15,000 Dit is B-O-R-U-I. 764 00:54:15,000 --> 00:54:18,000 O, okay. 765 00:54:18,000 --> 00:54:23,000 Ek kan nie sien dat jy op my lys. 766 00:54:23,000 --> 00:54:26,000 Ag, dit is omdat-oh, dit maak sin. 767 00:54:26,000 --> 00:54:31,000 Het jy 'n idee van waarom hierdie while lus dalk nie werk soos bedoel, 768 00:54:31,000 --> 00:54:38,000 soos dit geskryf is met die toestand? 769 00:54:38,000 --> 00:54:43,000 [Jerry] Jy bedoel soos jy wil al die dinge wat, nadat dit in die- 770 00:54:43,000 --> 00:54:46,000 Ja, so dit is een. 771 00:54:46,000 --> 00:54:49,000 Ons kan hê om al hierdie dinge te sit in die while lus, wat is heeltemal waar. 772 00:54:49,000 --> 00:54:55,000 Die ander ding wat 'n bietjie meer problematies is, is dat hierdie toestand nie werk nie. 773 00:54:55,000 --> 00:54:57,000 [Studente] Julle het dit nodig om te draai. 774 00:54:57,000 --> 00:55:04,000 Reg, sodat hierdie voorwaarde sal nooit waar wees aanvanklik die manier waarop ons daaroor gepraat. 775 00:55:04,000 --> 00:55:08,000 Ons wil om iets te doen tot einde 00:55:13,000 maar ons wil te doen van iets, terwyl 777 00:55:13,000 --> 00:55:21,000 begin ≤ einde. 778 00:55:21,000 --> 00:55:24,000 >> Daar is dat die omkering van die logika daar. 779 00:55:24,000 --> 00:55:27,000 Ek is skuldig om daardie foute al die tyd. 780 00:55:27,000 --> 00:55:31,000 [Studente] Hoekom het dit te wees minder as of gelyk aan? 781 00:55:31,000 --> 00:55:33,000 Want onthou jy die geval dat ons het om te 782 00:55:33,000 --> 00:55:36,000 waar was daar net een element, en ons was, 783 00:55:36,000 --> 00:55:43,000 en ons is op soek na net die 15 in ons verskeidenheid? 784 00:55:43,000 --> 00:55:47,000 En ons begin en ons einde was dieselfde element. 785 00:55:47,000 --> 00:55:50,000 Ons wil hê om seker te maak dat ons daardie geval hanteer. 786 00:55:50,000 --> 00:55:54,000 As ons 'n reguit minder as, 787 00:55:54,000 --> 00:55:58,000 ons sal slegs in staat wees om af te kry na 'n 2-element array. 788 00:55:58,000 --> 00:56:06,000 Sodra ons het af tot die laaste element, indien dit was ons element, ons nooit sal vind dit. 789 00:56:06,000 --> 00:56:10,000 Nou hier, kan ons presies doen soos jy sê. 790 00:56:10,000 --> 00:56:15,000 Ons kan begin plop dinge reg in die middel van ons while lus. 791 00:56:15,000 --> 00:56:20,000 Ons kan plons in ons middelpunt. 792 00:56:20,000 --> 00:56:24,000 Ons kan al hierdie if-stellings, 793 00:56:24,000 --> 00:56:30,000 trek hulle uit van hierdie do-while lus, 794 00:56:30,000 --> 00:56:34,000 plop hulle in 795 00:56:34,000 --> 00:56:39,000 skoon te maak dinge 'n bietjie, 796 00:56:39,000 --> 00:56:48,000 en Ek sal voort te gaan en behalwe hierdie hersiening. 797 00:56:48,000 --> 00:56:53,000 En op hierdie punt, is ons om redelik naby. 798 00:56:53,000 --> 00:56:55,000 Sam. 799 00:56:55,000 --> 00:56:58,000 Ek dink jy moet ook int middelpunt = grootte - 1/2. 800 00:56:58,000 --> 00:57:01,000 Het dit, grootte - 1/2. 801 00:57:01,000 --> 00:57:05,000 Is daar enigiets anders wat ons nodig het om oor daardie lyn te verander? 802 00:57:05,000 --> 00:57:10,000 Dit was 'n goeie vangs. 803 00:57:10,000 --> 00:57:14,000 >> Wat beteken grootte doen? Is ons steeds veranderende grootte? 804 00:57:14,000 --> 00:57:17,000 Om die lyn te hou soos hierdie, ons het die grootte te verander. 805 00:57:17,000 --> 00:57:21,000 Ons het die grootte verander elke keer as ons gaan om die lus. 806 00:57:21,000 --> 00:57:25,000 Maar onthou wanneer ons gaan deur ons voorbeeld net 'n bietjie vroeër, 807 00:57:25,000 --> 00:57:30,000 en ons het die begin op 4 808 00:57:30,000 --> 00:57:33,000 en die einde al die pad oor by 108? 809 00:57:33,000 --> 00:57:35,000 Hoe het ons die middelpunt bereken? 810 00:57:35,000 --> 00:57:38,000 Is ons met behulp van die grootte? 811 00:57:38,000 --> 00:57:40,000 Of ons gebruik begin en eindig plaas? 812 00:57:40,000 --> 00:57:42,000 Dit is die verskil tussen die einde en die begin. 813 00:57:42,000 --> 00:57:50,000 Presies, en presies hoe moet ek skryf dat, Charlotte? 814 00:57:50,000 --> 00:57:52,000 Net die einde begin. 815 00:57:52,000 --> 00:57:55,000 Jy sal nie nodig om die te doen - 1 816 00:57:55,000 --> 00:57:58,000 omdat die 1 is ingesluit in die einde en die begin reeds. 817 00:57:58,000 --> 00:58:00,000 [Nate] Groot, jy is heeltemal reg. 818 00:58:00,000 --> 00:58:03,000 Ons hoef nie te doen - 1 omdat dit - 1 is ingesluit 819 00:58:03,000 --> 00:58:08,000 en is verantwoordelik vir wanneer ons die einde veranderlike inisialiseer. 820 00:58:08,000 --> 00:58:11,000 >> Is daar enigiets anders wat ek moet sintakties te doen het hierdie lyn sin maak? 821 00:58:11,000 --> 00:58:13,000 [Studente] Plus begin >> Plus. Begin? 822 00:58:13,000 --> 00:58:15,000 [Studente] Aan die einde. 823 00:58:15,000 --> 00:58:20,000 Want dit is net die helfte van die lengte bereken. 824 00:58:20,000 --> 00:58:26,000 Jy moet die begin toe te voeg. 825 00:58:26,000 --> 00:58:31,000 [Nate] Wat sou dit bereken vir ons? 826 00:58:31,000 --> 00:58:35,000 As ons dink oor die einde op hierdie heel eerste iterasie van die lus, 827 00:58:35,000 --> 00:58:40,000 einde gaan wees in posisie indeks 7. 828 00:58:40,000 --> 00:58:43,000 Begin is in posisie 0. 829 00:58:43,000 --> 00:58:47,000 Onthou, ons is op soek vir óf 830 00:58:47,000 --> 00:58:52,000 posisie 3 of posisie 4. 831 00:58:52,000 --> 00:58:56,000 As ons kyk na hierdie wiskunde, maak dit net 'n bietjie meer tasbare, 832 00:58:56,000 --> 00:59:02,000 sit 'n paar nommers hier, het ons 7, 0, 833 00:59:02,000 --> 00:59:10,000 so 7 - 0, en dan / 2 834 00:59:10,000 --> 00:59:19,000 is 3 in heelgetal-afdeling, dit is. 835 00:59:19,000 --> 00:59:26,000 Dan het ons nodig en voeg dan weer ons begin? 836 00:59:26,000 --> 00:59:28,000 Ons doen dit nie in hierdie geval. 837 00:59:28,000 --> 00:59:31,000 Op die eerste iterasie, sal dit goed wees, want begin is 0. 838 00:59:31,000 --> 00:59:36,000 Maar as ons vordering, doen ons regtig almal net nodig 839 00:59:36,000 --> 00:59:42,000 einde begin / 2. 840 00:59:42,000 --> 00:59:46,000 Daar is 'n ander trick hier, en dit is naamlik een van voorrang. 841 00:59:46,000 --> 00:59:49,000 [Studente] Moet ons hakies? 842 00:59:49,000 --> 00:59:53,000 [Nate] Presies, en dit is, want as ons nie hierdie hakies sit, 843 00:59:53,000 --> 00:59:58,000 dan is hierdie lyn in plaas daarvan sal geïnterpreteer word 844 00:59:58,000 --> 01:00:09,000 (einde) (begin / 2), wat ons beslis nie wil. 845 01:00:09,000 --> 01:00:11,000 Kyk uit vir diegene wat voorrang reëls. 846 01:00:11,000 --> 01:00:15,000 [Studente] Waarom is dit nie die einde + begin? 847 01:00:15,000 --> 01:00:17,000 Hoekom is dit nie die einde + begin? 848 01:00:17,000 --> 01:00:19,000 [Studente] Waarom is dit nie? 849 01:00:19,000 --> 01:00:24,000 Waarom sou dit wees +? 850 01:00:24,000 --> 01:00:26,000 Ek dink jy is reg. 851 01:00:26,000 --> 01:00:28,000 [Studente] Want dit is die gemiddelde? 852 01:00:28,000 --> 01:00:31,000 [Nate] End + begin, jy is heeltemal reg. 853 01:00:31,000 --> 01:00:34,000 Wow, Ek is dit heeltemal goofed. Jy is reg. 854 01:00:34,000 --> 01:00:39,000 As ons besig was om die minus, sou ons wil te voeg die rug begin. 855 01:00:39,000 --> 01:00:43,000 In hierdie geval, jy is baie goed dat ons wil die gemiddelde van die twee te neem, 856 01:00:43,000 --> 01:00:45,000 sodat ons wil hê dat hulle by te voeg, eerder as om hulle af te trek. 857 01:00:45,000 --> 01:00:49,000 [Studente] Dit sal ook werk as jy het einde begin / 2 + begin. 858 01:00:49,000 --> 01:00:55,000 Dit sou as ons dit doen - ek glo so. 859 01:00:55,000 --> 01:01:00,000 >> Byvoorbeeld, as ons kyk na begin, 860 01:01:00,000 --> 01:01:04,000 en ons het dit verskuif hier 861 01:01:04,000 --> 01:01:08,000 aan die 15. 862 01:01:08,000 --> 01:01:12,000 Nou begin is by posisie 2. 863 01:01:12,000 --> 01:01:15,000 Einde is by posisie 7. 864 01:01:15,000 --> 01:01:21,000 As ons hulle aftrek, kry ons 5. 865 01:01:21,000 --> 01:01:24,000 Verdeel 2 kry ons 2. 866 01:01:24,000 --> 01:01:27,000 En dan voeg ons 2 terug in, 867 01:01:27,000 --> 01:01:30,000 en wat kry ons na die 4de posisie, 868 01:01:30,000 --> 01:01:33,000 wat is reg hier, wat is die middelpunt. 869 01:01:33,000 --> 01:01:36,000 [Studente] Moet ons sorg te neem van wikkel? 870 01:01:36,000 --> 01:01:39,000 In watter opsig het ons nodig om te sorg vir wikkel? 871 01:01:39,000 --> 01:01:43,000 As die som of die verskil tussen 872 01:01:43,000 --> 01:01:45,000 afhangende van hoe ons dit doen is nie 'n ewe getal. 873 01:01:45,000 --> 01:01:49,000 Toe het die rekenaar verward raak of wanneer dit is 2,5; 874 01:01:49,000 --> 01:01:52,000 beweeg jy aan die linker-of die reg om te bepaal wat is die middelpunt? 875 01:01:52,000 --> 01:01:54,000 Het dit. 876 01:01:54,000 --> 01:01:56,000 Dit blyk dat met 'n heeltallige afdeling, 877 01:01:56,000 --> 01:01:59,000 ons nie ooit kry hierdie floating point. 878 01:01:59,000 --> 01:02:01,000 Ons het nooit die desimaal. 879 01:02:01,000 --> 01:02:04,000 Dit is heeltemal weggegooi. 880 01:02:04,000 --> 01:02:08,000 As jy 'n rekenaar deel twee int veranderlikes, 881 01:02:08,000 --> 01:02:11,000 en 'n mens is 7, en die ander is 2, 882 01:02:11,000 --> 01:02:13,000 jy sal nie 3,5 as 'n resultaat. 883 01:02:13,000 --> 01:02:16,000 Dit sal kry 3. 884 01:02:16,000 --> 01:02:19,000 Die res sal weggegooi word, en dit is dus effektief afronding 885 01:02:19,000 --> 01:02:24,000 nie 'n ronde, maar eerder 'n vloer, as jy ouens is vertroud met dié in wiskunde, 886 01:02:24,000 --> 01:02:27,000 waar jy heeltemal wegdoen met die desimale, 887 01:02:27,000 --> 01:02:31,000 en so het jy in wese truncating dit af tot die naaste 888 01:02:31,000 --> 01:02:33,000 hele posisie, tot die naaste heelgetal. 889 01:02:33,000 --> 01:02:38,000 [Studente] Maar dan is dit problematies, want as jy het 'n verskeidenheid van 7 elemente 890 01:02:38,000 --> 01:02:43,000 dan is dit neem outomaties die 3de element van die middelpunt plaas van die 4de. 891 01:02:43,000 --> 01:02:46,000 Hoe hanteer mens dit? 892 01:02:46,000 --> 01:02:49,000 Dit is problematies, want as ons het 'n verskeidenheid van 7, 893 01:02:49,000 --> 01:02:54,000 sou dit kies die 3de in plaas van die 4de. 894 01:02:54,000 --> 01:02:56,000 Kan jy verduidelik 'n bietjie meer? 895 01:02:56,000 --> 01:02:59,000 [Studente] Want as jy het 7 elemente dan die 4de element 896 01:02:59,000 --> 01:03:04,000 sou die middelpunt wees, reg? 897 01:03:04,000 --> 01:03:07,000 Onthou om jou kommentaar oor die nul is geïndekseer, though. 898 01:03:07,000 --> 01:03:10,000 [Studente] Ja, so in posisie 3. Dit sou die middelpunt wees. 899 01:03:10,000 --> 01:03:12,000 Ja. 900 01:03:12,000 --> 01:03:16,000 O, okay. Ek sien wat jy bedoel. 901 01:03:16,000 --> 01:03:19,000 Dit is nogal vreemd, as ons gewoond raak aan hierdie hele idee van 902 01:03:19,000 --> 01:03:22,000 om ontslae te raak van desimale. 903 01:03:22,000 --> 01:03:26,000 Dit is 'n groot punt. 904 01:03:26,000 --> 01:03:30,000 Kom ons klaar dit op. 905 01:03:30,000 --> 01:03:32,000 Ons het bereken ons middelpunt. 906 01:03:32,000 --> 01:03:37,000 >> Ons toets om te sien of ons naald is gelyk aan die middelste waarde. 907 01:03:37,000 --> 01:03:41,000 Ons druk dat ons het dit gevind, maar regtig, wat wil ons om te doen in hierdie situasie? 908 01:03:41,000 --> 01:03:46,000 Ons het gevind dat dit, so ons wil die oproeper te laat weet dat ons het dit gevind. 909 01:03:46,000 --> 01:03:49,000 Ons het 'n funksie wat is 'n boolean getikte funksie. 910 01:03:49,000 --> 01:03:54,000 Die manier waarop ons sein na die oproeper van ons funksie dat ons is gereed om te gaan 911 01:03:54,000 --> 01:03:58,000 is ons sê, "Hey, dit is waar." 912 01:03:58,000 --> 01:04:00,000 Hoe sou ons dit doen, Kevin? 913 01:04:00,000 --> 01:04:02,000 Jy knik jou kop. >> [Kevin] Voeg terugkeer waar. 914 01:04:02,000 --> 01:04:06,000 [Nate] Presies, terugkeer waar. 915 01:04:06,000 --> 01:04:12,000 Nou, al is dit nie gelyk is, hoe sou ons kyk na die linker helfte? 916 01:04:12,000 --> 01:04:16,000 Enige idees? 917 01:04:16,000 --> 01:04:18,000 Stella, enige idees? 918 01:04:18,000 --> 01:04:21,000 Jy moet 'n nuwe posisie vir die einde te stel. 919 01:04:21,000 --> 01:04:23,000 Ja. 920 01:04:23,000 --> 01:04:29,000 Sodat ons 'n posisie van die middelpunt te doen - die einde. 921 01:04:29,000 --> 01:04:33,000 Groot. 922 01:04:33,000 --> 01:04:36,000 Ons moet 'n nuwe posisie te stel vir die einde 923 01:04:36,000 --> 01:04:38,000 om te kyk na die linker helfte. 924 01:04:38,000 --> 01:04:41,000 Dit was wat ons oor gepraat het voor waar 925 01:04:41,000 --> 01:04:44,000 Ek hou terug te gaan na hierdie voorbeeld. 926 01:04:44,000 --> 01:04:50,000 Ek het die hier begin, en dan het ek die einde al die pad hier. 927 01:04:50,000 --> 01:04:53,000 >> Weereens, as ons is op soek na 15, en ons middelpunt is op 16, 928 01:04:53,000 --> 01:04:56,000 en ons besef, "Oeps, 16 is groter. 929 01:04:56,000 --> 01:04:59,000 Ons wil om te skuif na die linker helfte. " 930 01:04:59,000 --> 01:05:02,000 Ons sal dan die einde aan die 15 beweeg, 931 01:05:02,000 --> 01:05:06,000 en ons doen dit deur een weg van die middelpunt 932 01:05:06,000 --> 01:05:09,000 en die oprigting van as ons nuwe einde. 933 01:05:09,000 --> 01:05:12,000 Net so, as ons wil om te kyk op die regter helfte, hoe sou ons dit doen? 934 01:05:12,000 --> 01:05:14,000 Het jy 'n idee? 935 01:05:14,000 --> 01:05:22,000 [Studente] Jy moet net begin + 1 middelpunt. 936 01:05:22,000 --> 01:05:24,000 [Nate] Groot. 937 01:05:24,000 --> 01:05:29,000 En nou, in die geval dat ons nie vind nie iets doen, 938 01:05:29,000 --> 01:05:32,000 beteken dat sorg gedra vir ons? 939 01:05:32,000 --> 01:05:36,000 Daniel, wat sorg vir ons? 940 01:05:36,000 --> 01:05:38,000 [Daniel] Nr. 941 01:05:38,000 --> 01:05:40,000 [Nate] As ons dit deur die hele skikking en ons vind niks doen nie, 942 01:05:40,000 --> 01:05:42,000 waar sou dit geneem word versorging van, of moet ons sorg vir dit? 943 01:05:42,000 --> 01:05:44,000 [Daniel] Die terwyl toestand. 944 01:05:44,000 --> 01:05:48,000 [Nate] Ja, die tyd toestand, presies. 945 01:05:48,000 --> 01:05:51,000 Dit gaan deur die hele skikking sal sorg as ons nie alles te vind is. 946 01:05:51,000 --> 01:05:53,000 Hierdie while lus sal eindig. 947 01:05:53,000 --> 01:05:56,000 Ons sal nooit teëgekom het nie hierdie toestand, 948 01:05:56,000 --> 01:06:03,000 en ons kan terugkeer vals. 949 01:06:03,000 --> 01:06:10,000 Ons kan ook verlaat as hier soos hierdie 950 01:06:10,000 --> 01:06:14,000 want as hierdie stelling is waar, 951 01:06:14,000 --> 01:06:16,000 en ons funksie sal terugkeer, 952 01:06:16,000 --> 01:06:21,000 en so sal ons in wese Staak om hierdie funksie op hierdie punt 953 01:06:21,000 --> 01:06:24,000 wanneer ons terugkeer waar. 954 01:06:24,000 --> 01:06:28,000 Maar wat gebeur met hierdie struktuur hier? 955 01:06:28,000 --> 01:06:34,000 Sal dit heeltemal werk nie, of is daar 'n logiese fout daar? 956 01:06:34,000 --> 01:06:37,000 >> Daar is 'n logiese fout in daar, met die manier waarop dit opgestel. 957 01:06:37,000 --> 01:06:40,000 Wat kan dit wees? 958 01:06:40,000 --> 01:06:43,000 [Studente] Hoekom het jy nodig om die - en + 1s? 959 01:06:43,000 --> 01:06:47,000 Dit stel ons array tot ons nuwe linkerhelfte en regter helfte. 960 01:06:47,000 --> 01:06:51,000 [Studente] Maar waarom jy kan nie dit doen sonder die 1s en + 1s? 961 01:06:51,000 --> 01:06:53,000 [Nate] Ons kon dit gelyk is aan die middelpunt? 962 01:06:53,000 --> 01:07:04,000 Wat kan problematies wees oor wat? 963 01:07:04,000 --> 01:07:08,000 [Studente] Ek dink dit is ondoeltreffend omdat jy die kontrole van 'n waarde wat reeds nagegaan. 964 01:07:08,000 --> 01:07:11,000 [Nate] Presies, so Sam is heeltemal reg. 965 01:07:11,000 --> 01:07:15,000 As jy aan die einde en die begin gelyk aan die middelpunt 966 01:07:15,000 --> 01:07:18,000 in plaas van 1 en + 1 nadenkend, 967 01:07:18,000 --> 01:07:22,000 op 'n sekere punt in die toekoms sal ons uiteindelik weer die beheer van die middelpunt. 968 01:07:22,000 --> 01:07:26,000 [Studente] Ek het begin die pset, en dan het ek iets soos dit 969 01:07:26,000 --> 01:07:30,000 waar ek het vergeet om die + 1, en dit vasgeval in 'n oneindige lus. 970 01:07:30,000 --> 01:07:34,000 Reg, want op 'n sekere punt wat jy nooit gaan om te begin en eindig 971 01:07:34,000 --> 01:07:39,000 om werklik te oorvleuel. 972 01:07:39,000 --> 01:07:41,000 Cool. 973 01:07:41,000 --> 01:07:44,000 Daar is 'n meer logiese fout, en dit is dat dit beslis moet 974 01:07:44,000 --> 01:07:48,000 'n else if. 975 01:07:48,000 --> 01:07:55,000 Hoekom sou dit wees? 976 01:07:55,000 --> 01:07:59,000 >> Die rede hiervoor is as dit nie anders as het jy dit sien, Kevin? 977 01:07:59,000 --> 01:08:02,000 [Kevin] Ja, want jy is besig om die eindpunt. 978 01:08:02,000 --> 01:08:05,000 [Nate] Presies. 979 01:08:05,000 --> 01:08:07,000 Ons is besig om die eindpunt, 980 01:08:07,000 --> 01:08:12,000 en as dit is geskryf soos hierdie sal ons spasies tussen- 981 01:08:12,000 --> 01:08:14,000 sal dit check hierdie geval. 982 01:08:14,000 --> 01:08:18,000 Hierdie geval, indien dit slaag, sal staak uit van die funksie. 983 01:08:18,000 --> 01:08:21,000 Dan sal dit check hierdie volgende geval, 984 01:08:21,000 --> 01:08:24,000 en as dit slaag, sal dit pas die eindpunt, 985 01:08:24,000 --> 01:08:28,000 en dan sal dit voortgaan en check hierdie geval. 986 01:08:28,000 --> 01:08:31,000 Maar op hierdie punt, het ons nie wil om voort te gaan kontroleer. 987 01:08:31,000 --> 01:08:35,000 Gelukkig het ons nie weer die middelpunt, 988 01:08:35,000 --> 01:08:39,000 en ons weet dat hierdie geval nie daarin sal slaag. 989 01:08:39,000 --> 01:08:44,000 Maar ons wil beslis die anders voor te stel indien daar 990 01:08:44,000 --> 01:08:48,000 selfs al is dit krag-in hierdie geval 991 01:08:48,000 --> 01:08:52,000 want ons is nie die middelpunt aanpassing, sou dit 'n verskil maak? 992 01:08:52,000 --> 01:08:54,000 Nee, want hierdie gevalle is almal eksklusiewe. 993 01:08:54,000 --> 01:08:58,000 Weereens, my slegte. 994 01:08:58,000 --> 01:09:01,000 Ons nie, dink ek, moet hierdie anders as. 995 01:09:01,000 --> 01:09:05,000 Ons kan gee dit 'n probeer en voer dit uit en kyk wat gebeur. 996 01:09:05,000 --> 01:09:08,000 Gebou, 'n fout het voorgekom. 997 01:09:08,000 --> 01:09:12,000 Is dit waarskynlik omdat ek het hierdie b en e's hier. 998 01:09:12,000 --> 01:09:14,000 Moet ek nie meer aan die bokant van daardie up? 999 01:09:14,000 --> 01:09:16,000 Dit lyk nie soos dit. 1000 01:09:16,000 --> 01:09:20,000 Ons uitzoomen, bou, 1001 01:09:20,000 --> 01:09:24,000 daar dit gaan, so nou as ons soek vir 15, 1002 01:09:24,000 --> 01:09:28,000 ja. 1003 01:09:28,000 --> 01:09:30,000 Laat my zoom. 1004 01:09:30,000 --> 01:09:33,000 15, ja. Ons kan dit weer hardloop. 1005 01:09:33,000 --> 01:09:36,000 Oplaai bron-kode, gebou, hardloop. 1006 01:09:36,000 --> 01:09:41,000 Ons kan soek vir iets soos 13, 1007 01:09:41,000 --> 01:09:45,000 en ons kry nie iets uit te druk, is dit nie vind wat vir ons. 1008 01:09:45,000 --> 01:09:51,000 Dit is groot, want dit is nie in ons lys. 1009 01:09:51,000 --> 01:09:53,000 >> Ons is nou uit van die tyd. 1010 01:09:53,000 --> 01:09:55,000 Wat gaan dit vir hierdie week. 1011 01:09:55,000 --> 01:10:00,000 Dankie vir die aansluit, en sien jou later. 1012 01:10:00,000 --> 01:10:02,000 >> [CS50.TV]