1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [3 jakso] [vähemmän mukavaksi] 2 00:00:03,000 --> 00:00:05,000 >> [Nate Hardison] [Harvardin yliopisto] 3 00:00:05,000 --> 00:00:08,000 >> [Tämä on CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:10,000 >> Selvä, mennään alkuun. 5 00:00:10,000 --> 00:00:13,000 Tervetuloa Viikko 4 CS50. 6 00:00:13,000 --> 00:00:19,000 Jos te avata selain ja avata PSET 3, 7 00:00:19,000 --> 00:00:23,000 Scramble kanssa CS50, aiomme aloittaa menee 8 00:00:23,000 --> 00:00:26,000 osan läpi kysymyksiä siellä. 9 00:00:26,000 --> 00:00:32,000 Aivan kuten viime viikolla, me työskentelevät CS50 Spaces, 10 00:00:32,000 --> 00:00:35,000 jos voit myös vetää että jopa niin hyvin, 11 00:00:35,000 --> 00:00:43,000 ja jos mennä eteenpäin ja vierailla tämän linkin että minulla täällä ylhäällä. 12 00:00:43,000 --> 00:00:45,000 On aika aloittaa. 13 00:00:45,000 --> 00:00:51,000 Meillä pikku hi-ohjelma täältä. Mikään hullu. 14 00:00:51,000 --> 00:00:55,000 Yksi ensimmäisistä asioista mitä haluan tehdä teidän kanssa tänään mennä yli muutamia ratkaisuja 15 00:00:55,000 --> 00:00:58,000 Tehtävä Set 1, millaisia ​​esimerkiksi ratkaisuja, 16 00:00:58,000 --> 00:01:03,000 niin voit saada tuntea, millaisia ​​koodin henkilöstön kirjallisesti, 17 00:01:03,000 --> 00:01:07,000 millaisia ​​koodin muiden opiskelijoiden kirjoittamista, 18 00:01:07,000 --> 00:01:10,000 ja olet katsomaan sitä, koska tiedän, että se on outoa 19 00:01:10,000 --> 00:01:14,000 Kun lähetät ratkaisun ongelmaan asettaa ja saada kommentteja 20 00:01:14,000 --> 00:01:18,000 oman version, mutta joskus se on hyödyllistä nähdä, miten muut ihmiset tekivät sitä, 21 00:01:18,000 --> 00:01:22,000 varsinkin ne, jotka ovat komeita. 22 00:01:22,000 --> 00:01:27,000 Suurimmaksi osaksi, olin todella vaikuttunut ratkaisuja te tuotettu. 23 00:01:27,000 --> 00:01:31,000 En ole vielä alkaneet kartoittaa ongelman Set 2s, mutta jos he ovat kaikkea muuta kuin ensimmäinen, 24 00:01:31,000 --> 00:01:34,000 se tarkoittaa vain hyviä asioita. 25 00:01:34,000 --> 00:01:40,000 >> Jos katsot minun korjauksia, aloitamme aina alas Versio 1, 26 00:01:40,000 --> 00:01:47,000 ja aiomme ottaa vilkaista Mario ratkaisuun. 27 00:01:47,000 --> 00:01:54,000 Jos vedät tähän asti, nämä ohjelmat että aiomme esitellä ovat oikeita. 28 00:01:54,000 --> 00:01:56,000 Ei ollut oikeellisuutta kysymyksiä näistä ongelmista, vaan pikemminkin 29 00:01:56,000 --> 00:01:59,000 haluamme puhua hieman siitä eri suunnittelu kysymykset 30 00:01:59,000 --> 00:02:03,000 , joita on käytetty tässä. 31 00:02:03,000 --> 00:02:08,000 Yksi niistä asioista, että oli mielenkiintoista ratkaisua 32 00:02:08,000 --> 00:02:11,000 on, että se käyttää uuden rakenteen nimeltään punta määritellä, 33 00:02:11,000 --> 00:02:15,000 joskus myös nimitystä hash määritellä. 34 00:02:15,000 --> 00:02:18,000 Saanen suurentaa sitä täällä. 35 00:02:18,000 --> 00:02:24,000 # Define voit antaa nimiä näitä numeroita teidän ohjelmassa. 36 00:02:24,000 --> 00:02:28,000 Tällöin suurin korkeus pyramidi Mario 37 00:02:28,000 --> 00:02:34,000 oli 23 ja sen sijaan että 23 minun koodi- 38 00:02:34,000 --> 00:02:37,000 me viittaa että kova koodaus 23 - 39 00:02:37,000 --> 00:02:43,000 vaan tämä antaa nimen max_height tähän numeroon, 40 00:02:43,000 --> 00:02:48,000 joten tänne minun do-while silmukka 41 00:02:48,000 --> 00:02:51,000 voit itse viitata max_height 42 00:02:51,000 --> 00:02:55,000 sen sijaan, että numero 23 tuumaa 43 00:02:55,000 --> 00:02:57,000 [Opiskelija] Mitä hyötyä tehdä se? 44 00:02:57,000 --> 00:02:59,000 Se on hyvä kysymys. 45 00:02:59,000 --> 00:03:03,000 Yksi on luettavuus. 46 00:03:03,000 --> 00:03:08,000 Etu tämän # define on luettavuus. 47 00:03:08,000 --> 00:03:11,000 Kun luen tätä koodia, näen, mitä on tekeillä. 48 00:03:11,000 --> 00:03:15,000 >> Näen tässä kunnossa täällä, että testaamme 49 00:03:15,000 --> 00:03:19,000 varten korkeus on <0, jonka voisimme myös määritellä 50 00:03:19,000 --> 00:03:22,000 olla minimikorkeus tai min korkeutta. 51 00:03:22,000 --> 00:03:25,000 Muiden etu on se, että voin sitten lukea loput linja nähdä 52 00:03:25,000 --> 00:03:30,000 että olemme myös Varmistamme, että korkeus ei ole suurempi kuin Max korkeus, 53 00:03:30,000 --> 00:03:35,000 koska aiomme jatkaa samalla korkeus on suurempi kuin maksimi korkeus. 54 00:03:35,000 --> 00:03:40,000 Muiden etu on, jos olen loitontaa vähän täällä- 55 00:03:40,000 --> 00:03:49,000 jos juoksen tämän ohjelman ja olen suorittanut sen, sano, jossa 23 juuri nyt, 56 00:03:49,000 --> 00:03:52,000 se tulostaa kaikki 23 riviä tuosta vain. 57 00:03:52,000 --> 00:03:54,000 Mutta sano halusin muuttaa Max korkeus, 58 00:03:54,000 --> 00:03:57,000 ja nyt haluan rajoittaa maksimikorkeus pyramidit 59 00:03:57,000 --> 00:04:06,000 olevan vain sanoa-mies, joka oli funky. 60 00:04:06,000 --> 00:04:14,000 # Include , # define max_height, 61 00:04:14,000 --> 00:04:18,000 ja sanokaamme halusimme asettaa se vastaa 10. 62 00:04:18,000 --> 00:04:22,000 Nyt tässä vaiheessa, kaikki mitä oli tehtävä oli muuttaa tässä yhdessä paikassa. 63 00:04:22,000 --> 00:04:27,000 Voin kääntää koodin, ja nyt jos yritän ja kirjoita 12, 64 00:04:27,000 --> 00:04:30,000 se pyytää minua uudelleen. 65 00:04:30,000 --> 00:04:33,000 Tässä tapauksessa olemme vain käyttämällä max_height kerran. 66 00:04:33,000 --> 00:04:37,000 Se ei ole iso hässäkkä mennä 67 00:04:37,000 --> 00:04:40,000 ja muuttaa sitä kun silmukka, jos haluat. 68 00:04:40,000 --> 00:04:44,000 Mutta ohjelmissa missä olet viittaa samaan maaginen numero 69 00:04:44,000 --> 00:04:47,000 uudestaan ​​ja uudestaan, tämä # define mekanismi on todella kätevä 70 00:04:47,000 --> 00:04:52,000 koska olet vain muuttaa sitä kerran yläreunassa tiedostojen on tyypillisesti minne laitat ne- 71 00:04:52,000 --> 00:04:57,000 ja muutos siivilöityy läpi loput tiedoston. 72 00:04:57,000 --> 00:05:02,000 >> Muita asioita Halusin todeta tämän tehtävän, että ajattelin näytti todella mukava, 73 00:05:02,000 --> 00:05:05,000 yksi oli nimeäminen muuttujia. 74 00:05:05,000 --> 00:05:14,000 Näetkö tässä että meillä kokonaisluku muuttujia kutsutaan rivin ja kutsutut korkeus. 75 00:05:14,000 --> 00:05:20,000 Spaces, hash, se auttaa tekemään koodia hieman luettavaa, 76 00:05:20,000 --> 00:05:25,000 tekee siitä hieman ymmärrettävämmäksi, mitä todella tapahtuu. 77 00:05:25,000 --> 00:05:31,000 Tämä on päinvastoin kuin käyttäen sanoa, satunnaisia ​​kirjaimia 78 00:05:31,000 --> 00:05:35,000 tai vain siansaksaa kokonaan. 79 00:05:35,000 --> 00:05:39,000 Viimeinen asia, minä huomauttaa on, että silmukoita, 80 00:05:39,000 --> 00:05:45,000 usein nämä iteraattori muuttujia, nämä laskurit että käytät omassa silmukoita, 81 00:05:45,000 --> 00:05:51,000 se on vakio ja perinteisen käynnistää ne joko i ja sitten j ja k 82 00:05:51,000 --> 00:05:54,000 ja menee sieltä jos tarvitset enemmän muuttujia, 83 00:05:54,000 --> 00:05:56,000 ja tämä on vain yleissopimus. 84 00:05:56,000 --> 00:05:58,000 On olemassa paljon sopimuksia. 85 00:05:58,000 --> 00:06:00,000 Se riippuu ohjelmointikieli käytät. 86 00:06:00,000 --> 00:06:04,000 Mutta C, me yleensä aloita i. 87 00:06:04,000 --> 00:06:08,000 Se ei ole järkevää käyttää vaikkapa tai b 88 00:06:08,000 --> 00:06:13,000 tilanteesta riippuen. 89 00:06:13,000 --> 00:06:15,000 Siinä kaikki tämä. 90 00:06:15,000 --> 00:06:25,000 Jos nyt vetää Versio 2, näet toisen Mario, 91 00:06:25,000 --> 00:06:29,000 ja tämä on samanlainen kuin toinen, että me vain näki, 92 00:06:29,000 --> 00:06:32,000 mutta se tekee jotain eräänlainen jäähtyä. 93 00:06:32,000 --> 00:06:38,000 Jos me tarkastelemme tässä osiossa täällä sisemmän for silmukka, 94 00:06:38,000 --> 00:06:44,000 he käyttävät joitakin hullu näköinen syntaksin täällä juuri tätä linjaa. 95 00:06:44,000 --> 00:06:47,000 Tätä kutsutaan ternäärinen operaattori. 96 00:06:47,000 --> 00:06:53,000 Se on, jos muu selvitys tiivistetty yhden rivin. 97 00:06:53,000 --> 00:06:57,000 Ehto on tämä osa suluissa. 98 00:06:57,000 --> 00:07:05,000 Se vastaa sanomalla jos j 00:07:10,000 Ja sitten, mitä sisältöä että jos lohko olisi ovat tilaa 100 00:07:10,000 --> 00:07:16,000 ja sitten sisältö, mitä muu olisi ovat tämän #. 101 00:07:16,000 --> 00:07:20,000 Se on pohjimmiltaan määrittämällä tilaa tämän muuttujan. 102 00:07:20,000 --> 00:07:24,000 Se on laittamalla tilaa sisällön lohkon muuttuja, 103 00:07:24,000 --> 00:07:29,000 Jos tämä ehto täyttyy, ja jos ehto ei täyty, 104 00:07:29,000 --> 00:07:32,000 Sitten lohko muuttuja saa tätä #. 105 00:07:32,000 --> 00:07:37,000 Ja sitten, tietenkin, sen sijaan, että rakentaa koko merkkijonon 106 00:07:37,000 --> 00:07:43,000 ja tulostaa kaiken pois lopussa tämän ratkaisun tulostaa sen yksi merkki kerrallaan. 107 00:07:43,000 --> 00:07:48,000 Aika siistiä. 108 00:07:48,000 --> 00:07:53,000 >> Toinen pari asioita tarkastella. Me siirrymme ahne. 109 00:07:53,000 --> 00:07:58,000 Nyt jos katsomme ahne, tämä ensimmäinen ratkaisu 110 00:07:58,000 --> 00:08:00,000 käyttää näitä # määrittelee melko vähän. 111 00:08:00,000 --> 00:08:06,000 Meillä on yksi vakio määritellään kullekin eri numerot tähän ohjelmaan. 112 00:08:06,000 --> 00:08:12,000 Meillä yksi senttiä per dollari, yksi neljäsosaa, Dimes, Nickels, ja penniä, 113 00:08:12,000 --> 00:08:15,000 ja nyt kun me selaa ja lue koodi 114 00:08:15,000 --> 00:08:22,000 Voimme nähdä standardi do-while silmukka tulostuksen kaiken pois. 115 00:08:22,000 --> 00:08:25,000 Kind of ydin tämä ongelma ymmärtämättä, että 116 00:08:25,000 --> 00:08:29,000 sinun piti muuntaa uimuri että olet lukenut käyttäjältä kokonaisluvuksi 117 00:08:29,000 --> 00:08:32,000 tarkasti tehdä matematiikkaa, ja tämä johtuu 118 00:08:32,000 --> 00:08:36,000 kanssa liukulukuja, kuten puhuimme luento lyhyesti, 119 00:08:36,000 --> 00:08:41,000 se ei ole mahdollista tarkasti edustamaan jokaisen arvon numero rivillä 120 00:08:41,000 --> 00:08:47,000 koska on olemassa äärettömän monta arvot ovat välillä 3 ja esimerkiksi 3,1 edes. 121 00:08:47,000 --> 00:08:54,000 Sinulla voi olla 3,01 ja 3,001 ja 3,0001, ja voit pitää käynnissä. 122 00:08:54,000 --> 00:09:00,000 On käynyt ilmi, kun olet työskennellyt rahaa, usein haluat muuntaa sen 123 00:09:00,000 --> 00:09:05,000 osaksi kokonaisluku muodossa niin, että et ole menettämässä penniä ja tuollaista kamaa. 124 00:09:05,000 --> 00:09:09,000 Doing että ja pyöristäminen oli avain. 125 00:09:09,000 --> 00:09:14,000 Tämä ratkaisu käyttää täysin suoraviivainen, edullisesti algoritmi, 126 00:09:14,000 --> 00:09:17,000 joka pienennetään määrä senttiä jäljellä, ensin neljäsosaa, 127 00:09:17,000 --> 00:09:19,000 sitten Dimes, sitten Nickels, sitten penniä, 128 00:09:19,000 --> 00:09:24,000 ja lisäämällä kolikoiden määrä kerrallaan. 129 00:09:24,000 --> 00:09:31,000 >> Toinen ratkaisu että näemme, kuten loitontaa ja mennä Revision 4, 130 00:09:31,000 --> 00:09:40,000 oli hyvin samankaltainen alusta vaan käyttää div ja mod 131 00:09:40,000 --> 00:09:44,000 oikeus tänne laskea määrän senttiä. 132 00:09:44,000 --> 00:09:50,000 Tämä määrä on neljäsosaa on yhtä suuri määrä senttiä jaettuna 25, 133 00:09:50,000 --> 00:09:53,000 ja syy tähän toimii, koska me teemme kokonaisluku jako, 134 00:09:53,000 --> 00:09:58,000 joten se hylätään mitään jäljellä. 135 00:09:58,000 --> 00:10:02,000 [Student] Onko meillä kommentoida haku? 136 00:10:02,000 --> 00:10:05,000 Se oikeastaan ​​riippuu. 137 00:10:05,000 --> 00:10:08,000 [Student] Olet kommentoi yli koodia täällä. 138 00:10:08,000 --> 00:10:16,000 Joo, ja niin on joukko erilaisia ​​filosofioita tästä. 139 00:10:16,000 --> 00:10:21,000 Oma filosofiani on, että koodi on todella totuus, 140 00:10:21,000 --> 00:10:24,000 kuten koodi on mitä tosiasiassa ajetaan tietokoneessa, 141 00:10:24,000 --> 00:10:29,000 ja niin koodin pitäisi olla luettavissa kuin mahdollista eikä edellytä niin paljon kommentteja. 142 00:10:29,000 --> 00:10:33,000 Se sanoi, kun teet asioita, jotka ovat tavallaan hankala matemaattisesti 143 00:10:33,000 --> 00:10:38,000 tai algoritmisesti, on hyvä kommentoida niitä, jotta voit 144 00:10:38,000 --> 00:10:43,000 lisäävät uuden ulottuvuuden, ylimääräinen kerros kuka lukee koodin. 145 00:10:43,000 --> 00:10:49,000 Näissä ratkaisuissa usein ne kommentoitu voimakkaammin juuri siksi 146 00:10:49,000 --> 00:10:52,000 Haluamme pystyä jakamaan niitä ja on ihmisiä noutaa ne 147 00:10:52,000 --> 00:10:56,000 ja lukea melko helposti. 148 00:10:56,000 --> 00:11:05,000 Mutta ehdottomasti, olen sitä mieltä, että tämä on raskasta. 149 00:11:05,000 --> 00:11:07,000 [Student] Mutta jos on epävarma, mennä raskaampaa? 150 00:11:07,000 --> 00:11:10,000 Jos olet epävarma, mene raskaampaa. 151 00:11:10,000 --> 00:11:17,000 Jotkut ihmiset joskus sanovat return 0 tai jotain. 152 00:11:17,000 --> 00:11:20,000 Mielestäni on naurettavaa kommenttia. 153 00:11:20,000 --> 00:11:22,000 Selvästi, että mitä tapahtuu. 154 00:11:22,000 --> 00:11:25,000 En tarvitse Englanti kertoa minulle. 155 00:11:25,000 --> 00:11:28,000 Joskus ihmiset kirjoittavat juttuja kuten "kthxbai!" 156 00:11:28,000 --> 00:11:32,000 Sellainen söpö, mutta myös ei- 157 00:11:32,000 --> 00:11:35,000 että ei ole tehdä eroa kommentointi pistettä tai ei. 158 00:11:35,000 --> 00:11:41,000 Tuollaiset kommentit ovat vain ha, ha. 159 00:11:41,000 --> 00:11:43,000 Cool. 160 00:11:43,000 --> 00:11:48,000 >> Tässä vaiheessa aloitamme työstää Harjoitus 3 § kysymyksiä. 161 00:11:48,000 --> 00:11:52,000 Jos kaverit vetää tätä uudelleen, 162 00:11:52,000 --> 00:11:55,000 Kuten viime viikolla, emme aio katsoa shortsit tässä osiossa. 163 00:11:55,000 --> 00:12:00,000 Annamme te tehdä omaa aikaa ja puhua kysymyksistä. 164 00:12:00,000 --> 00:12:05,000 Mutta nyt tässä jaksossa aiomme viettää vähän enemmän aikaa 165 00:12:05,000 --> 00:12:11,000 puhuu vähemmän koodaus perusasiat 166 00:12:11,000 --> 00:12:15,000 kuten teimme viime viikolla, ja sen sijaan, aiomme keskittyä enemmän 167 00:12:15,000 --> 00:12:22,000 hieman enemmän teoriaa, joten puhumme binäärihakupuu ja sitten lajittelusta. 168 00:12:22,000 --> 00:12:27,000 Mistä ne teistä, jotka ovat seuranneet mukana luento, 169 00:12:27,000 --> 00:12:30,000 voi joku antaa minulle kertaus mitä eroa on 170 00:12:30,000 --> 00:12:35,000 välillä binäärihakupuu ja lineaarinen haku? 171 00:12:35,000 --> 00:12:37,000 Mitä on tekeillä? Toki. 172 00:12:37,000 --> 00:12:42,000 Lineaarinen haku etsii läpi jokaisen elementin järjestetty luettelo 173 00:12:42,000 --> 00:12:45,000 yksi kerrallaan yksi yksitellen, 174 00:12:45,000 --> 00:12:50,000 ja binäärihakupuu jakaa luettelon 2 ryhmään, 175 00:12:50,000 --> 00:12:57,000 tarkastuksia, jos avaimet arvo, joka etsit on suurempi tai pienempi kuin keskipisteen arvo 176 00:12:57,000 --> 00:13:00,000 että olet juuri löytänyt, ja jos se on alle, se menee alemman listan 177 00:13:00,000 --> 00:13:03,000 ja sitten jakaa se taas tekee saman toiminnon 178 00:13:03,000 --> 00:13:07,000 pohjaan, kunnes se löytää keskipisteen on oltava yhtä suuri kuin arvo sinänsä. 179 00:13:07,000 --> 00:13:10,000 Oikea. 180 00:13:10,000 --> 00:13:12,000 >> Miksi välitämme? 181 00:13:12,000 --> 00:13:20,000 Miksi puhumme binäärihakupuu vs. lineaarinen haku? 182 00:13:20,000 --> 00:13:22,000 Joo. 183 00:13:22,000 --> 00:13:24,000 Binary on paljon nopeampi, joten jos kaksinkertaiseksi ongelman 184 00:13:24,000 --> 00:13:27,000 se vie yksi askel kuin kaksi kertaa niin paljon. 185 00:13:27,000 --> 00:13:29,000 Aivan. 186 00:13:29,000 --> 00:13:31,000 Se on hyvä vastaus. 187 00:13:31,000 --> 00:13:36,000 Lineaarinen haku on hyvin tarkistaa yksi elementti kerrallaan, 188 00:13:36,000 --> 00:13:39,000 ja kuten näimme heti ensimmäisenä päivänä luento 189 00:13:39,000 --> 00:13:42,000 kun Daavid meni läpi hänen puhelinluetteloon esimerkiksi 190 00:13:42,000 --> 00:13:45,000 ja revitään yhden sivun puhelinluettelosta kerrallaan 191 00:13:45,000 --> 00:13:47,000 ja pitää tehdä, että yhä uudestaan ​​ja uudestaan, 192 00:13:47,000 --> 00:13:51,000 se vie hänet todella kauan löytää ketään puhelinluettelosta, 193 00:13:51,000 --> 00:13:55,000 paitsi tietenkin, hän oli etsimässä joku aivan alussa aakkoset. 194 00:13:55,000 --> 00:14:00,000 Binary search, voit mennä paljon nopeammin, 195 00:14:00,000 --> 00:14:05,000 ja se ei ole vain kaksi kertaa niin nopeasti tai 3 kertaa nopeammin tai 4 kertaa nopeammin. 196 00:14:05,000 --> 00:14:13,000 Mutta ongelma saa pienempiä ja pienempiä paljon nopeammin. 197 00:14:13,000 --> 00:14:17,000 Tämän havainnollistamiseksi, alamme puhua mitä tapahtuu 198 00:14:17,000 --> 00:14:21,000 kun kirjoittaa binäärihakupuu. 199 00:14:21,000 --> 00:14:27,000 Ongelma käsillä on, että jos minulla on joukko numeroita, 200 00:14:27,000 --> 00:14:40,000 sanovat, 1, 2, 3, 5, 7, 23, 45, 78, 12323, 201 00:14:40,000 --> 00:14:47,000 ja sitten 9 kanssa ton 0s sen jälkeen, 202 00:14:47,000 --> 00:14:52,000 haluamme pystyä selvittää todella nopeasti mitä on 203 00:14:52,000 --> 00:14:57,000 Tämä joukko numeroita. 204 00:14:57,000 --> 00:15:00,000 Tiedän, että tämä tuntuu vähän typerältä ja hieman keinotekoinen, 205 00:15:00,000 --> 00:15:02,000 koska juuri nyt se on. 206 00:15:02,000 --> 00:15:05,000 Meillä on joukko, joka ei ole kovin monia tekijöitä siinä, 207 00:15:05,000 --> 00:15:08,000 ja jos pyydän teistä selvittää, onko 208 00:15:08,000 --> 00:15:11,000 23 on array, voit tehdä sen melko nopeasti 209 00:15:11,000 --> 00:15:16,000 vain vilkaisemalla tämän ja kertoa minulle kyllä ​​tai ei. 210 00:15:16,000 --> 00:15:20,000 Analoginen harkita on kuvitella, jos tämä olisi vaikkapa 211 00:15:20,000 --> 00:15:27,000 Excel 10.000 riviä, 20000 riviä. 212 00:15:27,000 --> 00:15:31,000 Tietenkin voit tehdä komennolla F tai ohjai ja etsiä jotain. 213 00:15:31,000 --> 00:15:33,000 Voit myös käyttää suodattimia ja etsiä tavaraa, 214 00:15:33,000 --> 00:15:37,000 mutta jos sinulla on ollut käydä läpi kyseisen tiedoston rivi rivi riviltä, 215 00:15:37,000 --> 00:15:40,000 se vie kauan aikaa löytää se. 216 00:15:40,000 --> 00:15:42,000 Se on tavallaan kuten puhelinluetteloon esimerkkinä myös, jos 217 00:15:42,000 --> 00:15:44,000 kukaan näyttää läpi puhelinluettelosta yhden sivun kerrallaan. 218 00:15:44,000 --> 00:15:47,000 Tyypillisesti ne eivät avata sen keskellä, 219 00:15:47,000 --> 00:15:50,000 tai kun kyseessä on paljon puhelimen kirjoja ja sanakirjoja, joissa 220 00:15:50,000 --> 00:15:54,000 sinulla todella on se kiilattu ensimmäinen kirjain, 221 00:15:54,000 --> 00:16:01,000 voit kääntää tähän ensimmäiseen kirjeeseen ja avata ja aloittaa läpi siellä. 222 00:16:01,000 --> 00:16:03,000 >> Muistuta minua nimesi uudelleen. >> Sam. 223 00:16:03,000 --> 00:16:05,000 Sam. 224 00:16:05,000 --> 00:16:11,000 Kuten Sam sanoi, että lineaarinen etsintä prosessi tulee olemaan todella hidas, 225 00:16:11,000 --> 00:16:15,000 ja sen sijaan on binäärihakupuu, miten tämä toimii on, että 226 00:16:15,000 --> 00:16:21,000 joka kerta käymme läpi iteraation meidän etsiä algoritmin, 227 00:16:21,000 --> 00:16:27,000 aiomme jakaa luettelon puoli pääasiallisesti, 228 00:16:27,000 --> 00:16:33,000 kahteen pienempään luetteloihin. 229 00:16:33,000 --> 00:16:39,000 Ja sitten seuraavan iterointia silmukan, me jakaa sen uudelleen 230 00:16:39,000 --> 00:16:44,000 muihin pienempiin luetteloihin. 231 00:16:44,000 --> 00:16:48,000 Kuten näette, ongelma pitää saada pienempiä 232 00:16:48,000 --> 00:16:55,000 koska pidämme heitetään puolet luettelon joka kerta. 233 00:16:55,000 --> 00:16:59,000 Miten tämä hävitä työtä? 234 00:16:59,000 --> 00:17:05,000 Aivan kuten muistutus, mitä aiomme tehdä, jos olisimme tietokoneella 235 00:17:05,000 --> 00:17:11,000 ja olimme vaikkapa etsimällä numero 5 tässä luettelossa 236 00:17:11,000 --> 00:17:15,000 että voisimme poimia numero keskellä. 237 00:17:15,000 --> 00:17:26,000 Keskellä tätä luetteloa, koska on olemassa 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 numeroa, 238 00:17:26,000 --> 00:17:32,000 olimme poimia numero joko 4-asemassa tai 5. asemassa, 239 00:17:32,000 --> 00:17:38,000 ja olimme kutsua että keskellä meidän listan. 240 00:17:38,000 --> 00:17:42,000 Poimi numero keskellä. 241 00:17:42,000 --> 00:17:51,000 Sitten, aivan kuten Sam sanoi, me testata nähdä, jos se numero on sama 242 00:17:51,000 --> 00:17:59,000 määrää, että haluamme saada tai meidän haluamasi numero. 243 00:17:59,000 --> 00:18:06,000 Jos se on yhtä, niin olemme löytäneet sen. Me voitamme. 244 00:18:06,000 --> 00:18:12,000 Jos se ei ole yhtä, sitten on pari tapausta. 245 00:18:12,000 --> 00:18:15,000 Kaksi tapausta ovat joko numero on oltava suurempi kuin määrä me tarkastelemme, 246 00:18:15,000 --> 00:18:19,000 tai se on vähemmän kuin. 247 00:18:19,000 --> 00:18:25,000 Jos se on suurempi, siirrytään oikealle. 248 00:18:25,000 --> 00:18:33,000 Ja jos se on pienempi, me liikkumaan vasemmalle. 249 00:18:33,000 --> 00:18:41,000 Ja sitten me toistaa koko prosessi uudestaan 250 00:18:41,000 --> 00:18:48,000 joko oikealle puoli tai vasemman puolen luettelosta. 251 00:18:48,000 --> 00:18:51,000 >> Ensimmäinen ongelma nykypäivän osiossa on selvittää 252 00:18:51,000 --> 00:18:55,000 miten voimme todella alkaa ilmaista tämä C-koodia. 253 00:18:55,000 --> 00:18:58,000 Meillä pseudokoodina täällä. 254 00:18:58,000 --> 00:19:04,000 Mitä me alkaa tehdä on minä vetää jopa upouusi tilaa, 255 00:19:04,000 --> 00:19:09,000 Tallenna tämä tarkistus niin, että meillä on nämä muistiinpanot myöhemmin, 256 00:19:09,000 --> 00:19:20,000 me poistaa kaikki tähän, ja sitten kopioida ja liittää Harjoitus 257 00:19:20,000 --> 00:19:26,000 tämä tieto meidän tiloihin, ja toivottavasti tämä ei rikkoudu. 258 00:19:26,000 --> 00:19:28,000 Perfect. 259 00:19:28,000 --> 00:19:33,000 Jos te kaikki tehdä, kopioi ja liitä tämä koodi uuteen tilaan, 260 00:19:33,000 --> 00:19:43,000 tyhjään yksi. 261 00:19:43,000 --> 00:19:47,000 Kokeillaan Daniel. Jos kääntää ja ajaa tämän ohjelman, se toimii? 262 00:19:47,000 --> 00:19:49,000 No >> Mitä se sanoo? 263 00:19:49,000 --> 00:19:53,000 Se sanoo valvonta on päättymässä kuin void funktio. 264 00:19:53,000 --> 00:19:55,000 Joo, niin haluan kokeilla käynnissä sitä. 265 00:19:55,000 --> 00:19:59,000 Oletteko nähnyt tätä ennen? Tiedätkö mitä tämä tarkoittaa? 266 00:19:59,000 --> 00:20:01,000 Okei, leikellä tätä hieman. 267 00:20:01,000 --> 00:20:10,000 Se sanonta file.c rivillä 9, 1 sarakkeessa meillä virhe, kuten sanoit, 268 00:20:10,000 --> 00:20:16,000 ja se sanoo että se johtuvat virhe-varoitus ja palautuva varoituksen. 269 00:20:16,000 --> 00:20:18,000 Se näyttää jotain on tekeillä palautuva, jossa on järkeä. 270 00:20:18,000 --> 00:20:21,000 Meillä ei void funktio, mikä tarkoittaa, että meillä toiminto 271 00:20:21,000 --> 00:20:24,000 joka ei palauta mitätön. 272 00:20:24,000 --> 00:20:27,000 Void funktio on, joka näyttää tältä: 273 00:20:27,000 --> 00:20:35,000 void foo (), ja se on mitätön, koska paluu tyyppi on mitätön, 274 00:20:35,000 --> 00:20:38,000 mikä tarkoittaa sitä, että jos meillä olisi jotakin täällä 275 00:20:38,000 --> 00:20:45,000 kuten paluu 1, olimme saada kääntäjä virheen tämän. 276 00:20:45,000 --> 00:20:49,000 Kuitenkin meillä on ei-mitätön toiminto. 277 00:20:49,000 --> 00:20:51,000 Meidän ei void funktio on tässä tapauksessa meidän hakutoiminto 278 00:20:51,000 --> 00:20:56,000 koska sillä on paluu tyypin bool. 279 00:20:56,000 --> 00:20:59,000 Kun se on selvää, että ohjaus on lopussa ei-mitätön toiminto, 280 00:20:59,000 --> 00:21:02,000 se johtuu haku ei ole paluuta selvitys. 281 00:21:02,000 --> 00:21:04,000 Se ei palaa mitään tyyppi bool. 282 00:21:04,000 --> 00:21:09,000 >> Voimme korjata sen ja mitä mieltä olette 283 00:21:09,000 --> 00:21:13,000 search pitäisi palauttaa oletuksena? 284 00:21:13,000 --> 00:21:16,000 Mikä olisi oletusarvo paluuarvon haku? 285 00:21:16,000 --> 00:21:19,000 Koska sitähän voimme lopussa. 286 00:21:19,000 --> 00:21:21,000 Charlotte, onko teillä,? 287 00:21:21,000 --> 00:21:23,000 Totta vai tarua? >> Totta vai tarua. 288 00:21:23,000 --> 00:21:26,000 Kumpi? 289 00:21:26,000 --> 00:21:28,000 Vääriä. En tiedä. 290 00:21:28,000 --> 00:21:30,000 Väärä? Yritetään. 291 00:21:30,000 --> 00:21:32,000 Miksi sanot tuottoa väärä? Se on hyvä intuitio. 292 00:21:32,000 --> 00:21:35,000 [Charlotte] En tiedä. 293 00:21:35,000 --> 00:21:39,000 Aiomme palata vääriä tässä tapauksessa, koska tämä on meidän oletus 294 00:21:39,000 --> 00:21:44,000 Jos jostain syystä lista on tyhjä, tai neula 295 00:21:44,000 --> 00:21:46,000 että etsimme ei ole olemassa. 296 00:21:46,000 --> 00:21:50,000 Sitten aivan lopussa, jos emme palauta true aiemmin tätä toimintoa, 297 00:21:50,000 --> 00:21:55,000 me aina tiedämme, että tämä toiminto sanovat Ehei, se ei ole array. 298 00:21:55,000 --> 00:21:58,000 Se ei ole heinäsuovasta. 299 00:21:58,000 --> 00:22:03,000 Nyt jos me kääntää ja ajaa se-anna minun tallentaa, jotta voimme vetää sen ylös. 300 00:22:03,000 --> 00:22:08,000 Nyt jos me kääntää ja ajaa meidän ohjelma, se rakentaa. 301 00:22:08,000 --> 00:22:12,000 Saamme vähän nopeasti. 302 00:22:12,000 --> 00:22:20,000 Jos Löin 4-uh-oh. 303 00:22:20,000 --> 00:22:25,000 Se ei tulosta mitään. Se näyttää kaiken päättyi kunnossa. 304 00:22:25,000 --> 00:22:35,000 Meidän täytyy täyttää tämä tuumaa 305 00:22:35,000 --> 00:22:39,000 Puhuimme algoritmi pseudokoodilla hieman sitten. 306 00:22:39,000 --> 00:22:44,000 Haluan nähdä, tallenna, 307 00:22:44,000 --> 00:22:49,000 ja minä vetää että algoritmi takaisin ylös. 308 00:22:49,000 --> 00:22:51,000 Katsotaanpa osuma tämän kaveri. Nope. 309 00:22:51,000 --> 00:22:58,000 Siellä se on. 310 00:22:58,000 --> 00:23:03,000 Miten teemme tämän? 311 00:23:03,000 --> 00:23:11,000 Mikä olisi hyvä strategia liikkeellelähtö tämän koodin? 312 00:23:11,000 --> 00:23:16,000 Sinun täytyy valita numero keskellä. 313 00:23:16,000 --> 00:23:23,000 Miten valita numero keskellä array? 314 00:23:23,000 --> 00:23:25,000 Mitään ehdotuksia? 315 00:23:25,000 --> 00:23:27,000 [Student] strlen jaettuna 2. 316 00:23:27,000 --> 00:23:32,000 Strlen jaettuna 2. Se on hieno. 317 00:23:32,000 --> 00:23:35,000 Strlen toimii erityinen erilaisia ​​matriiseja. 318 00:23:35,000 --> 00:23:38,000 Millaisia ​​ryhmät? 319 00:23:38,000 --> 00:23:44,000 String taulukot, merkki taulukot. 320 00:23:44,000 --> 00:23:48,000 Se on niin samanlaista käsite, haluamme soveltaa, 321 00:23:48,000 --> 00:23:52,000 mutta emme voi käyttää strlen koska meillä ei ole joukko merkkejä. 322 00:23:52,000 --> 00:23:55,000 Meillä on joukko ints. 323 00:23:55,000 --> 00:23:58,000 Mutta mitä strlen saa meille? 324 00:23:58,000 --> 00:24:01,000 Tiedätkö mitä se saa meille? 325 00:24:01,000 --> 00:24:03,000 [Opiskelija] strlen saa meidät pituuden. 326 00:24:03,000 --> 00:24:05,000 Aivan, se saa meidät pituuden. 327 00:24:05,000 --> 00:24:09,000 Strlen saa pituus array meille. 328 00:24:09,000 --> 00:24:14,000 >> Miten saamme, että meidän binary hakuohjelma? 329 00:24:14,000 --> 00:24:18,000 Miten saat pituus array? 330 00:24:18,000 --> 00:24:20,000 [Student] strlen? 331 00:24:20,000 --> 00:24:25,000 Voit saada pituutta oikein muotoiltu C string array strlen. 332 00:24:25,000 --> 00:24:31,000 Ongelmana on kuitenkin se, että meillä ei ole string array. 333 00:24:31,000 --> 00:24:36,000 Jos katsomme taaksepäin tätä koodia, meillä on tämä kokonaisluku array. 334 00:24:36,000 --> 00:24:38,000 Mistä tiedämme, kuinka kauan se on? 335 00:24:38,000 --> 00:24:44,000 [Student] Onko vastaavaa yksi päätepiste, kuten int l tai jotain? 336 00:24:44,000 --> 00:24:49,000 On käynyt siellä oikeastaan ​​ole, joten tavallaan tämä on 337 00:24:49,000 --> 00:24:52,000 yksi niistä asioista, joka on vain hyvä tietää C, 338 00:24:52,000 --> 00:24:57,000 että ei ole mitään keinoa saada pituus array 339 00:24:57,000 --> 00:24:59,000 jos kaikki annan teille on jono. 340 00:24:59,000 --> 00:25:02,000 Siksi toimii jouset, syy strlen toimii, 341 00:25:02,000 --> 00:25:06,000 on sillä, jos merkkijono on muotoiltu oikein, 342 00:25:06,000 --> 00:25:12,000 se on, että erityinen \ 0 luonnetta aivan lopussa. 343 00:25:12,000 --> 00:25:16,000 >> Voit myös kuvitella, jos sinulla on väärin muotoiltu merkkijono 344 00:25:16,000 --> 00:25:20,000 ja ei ole \ 0 luonnetta siellä, niin koko juttu ei toimi. 345 00:25:20,000 --> 00:25:22,000 [Opiskelija] Voitteko lisätä \ 0? 346 00:25:22,000 --> 00:25:24,000 Voisimme tässä tapauksessa. 347 00:25:24,000 --> 00:25:29,000 Voisimme lisätä jonkinlainen \ 0 348 00:25:29,000 --> 00:25:33,000 tai jonkinlainen merkitsee merkki ja sitten käyttää sitä. 349 00:25:33,000 --> 00:25:36,000 Mutta se ei ole aivan tule toimimaan 350 00:25:36,000 --> 00:25:40,000 koska \ 0 on char tyyppinen, 351 00:25:40,000 --> 00:25:43,000 ja tässä meillä ints. 352 00:25:43,000 --> 00:25:46,000 Toinen asia on, jos me käyttäisimme erityinen arvo 353 00:25:46,000 --> 00:25:49,000 kuten -1 merkitä loppua array 354 00:25:49,000 --> 00:25:54,000 emme voisi koskaan säilytä -1 meidän kokonaisluku ryhmät. 355 00:25:54,000 --> 00:25:56,000 Olisimme jumissa. 356 00:25:56,000 --> 00:26:00,000 On käynyt ilmi, että ainoa tapa saada pituutta 357 00:26:00,000 --> 00:26:03,000 of array C on todella muistaa sen 358 00:26:03,000 --> 00:26:08,000 kun asetat sen ja sitten siirtää se ympäriinsä array 359 00:26:08,000 --> 00:26:14,000 niin että kun minulla on toiminto, joka aikoo tehdä töitä 360 00:26:14,000 --> 00:26:18,000 on joukko kokonaislukuja tai kelluu tai kaksinkertaistuu tai mitä olet, 361 00:26:18,000 --> 00:26:22,000 Olen myös antaa funktion taulukon pituus, 362 00:26:22,000 --> 00:26:26,000 ja se mitä olemme tehneet täällä hakutoiminto. 363 00:26:26,000 --> 00:26:30,000 Jos katsotte, mitä olemme tehneet, kun jätämme meidän array täällä 364 00:26:30,000 --> 00:26:36,000 Olemme myös siirtää sen pituus, koon. 365 00:26:36,000 --> 00:26:41,000 Se vain käy niin, että me olemme kutsuneet tätä muuttujaa täällä, 366 00:26:41,000 --> 00:26:43,000 Tämä parametri tai väitteitä. 367 00:26:43,000 --> 00:26:46,000 Tätä kutsutaan funktion argumentti luettelon tai Parametrilistassa 368 00:26:46,000 --> 00:26:51,000 ja näitä kutsutaan myös väitteitä tai parametreja. 369 00:26:51,000 --> 00:26:53,000 Ihmiset käyttävät eri termejä eri aikoina. 370 00:26:53,000 --> 00:26:55,000 Olen joskus vaihtaa ne itse. 371 00:26:55,000 --> 00:27:00,000 Se vain on niin, että tämä muuttuja tässä on nimetty samalla 372 00:27:00,000 --> 00:27:03,000 Tähän # define täällä. 373 00:27:03,000 --> 00:27:06,000 Mutta ne eivät ole sama asia. 374 00:27:06,000 --> 00:27:11,000 Osakekannan väliä. 375 00:27:11,000 --> 00:27:14,000 >> Jos katsot mitä tapahtuu täällä, me julistamme 376 00:27:14,000 --> 00:27:18,000 meidän int array, jota olemme kutsuneet numeroita. 377 00:27:18,000 --> 00:27:23,000 Olemme antaneet sille meidän koko, joka vastaa meidän # define ylös yläreunassa. 378 00:27:23,000 --> 00:27:27,000 Se tulee olemaan 8. 379 00:27:27,000 --> 00:27:35,000 Ja sitten kun me sitten kutsumme hakutoiminto alhaalla, 380 00:27:35,000 --> 00:27:40,000 ohitamme määrä haluamme etsiä, joita olemme pyydettäessä, 381 00:27:40,000 --> 00:27:43,000 saanut käyttäjältä. 382 00:27:43,000 --> 00:27:46,000 Me kulkea array, tämä numeroita, 383 00:27:46,000 --> 00:27:51,000 ja sitten meillä on myös kulkemaan koko array, 384 00:27:51,000 --> 00:27:57,000 ja sitten arvo koko 8 saa säilyttää 385 00:27:57,000 --> 00:28:01,000 tai siirtynyt tämän kokonaisluku muuttuja nimeltä kokoa. 386 00:28:01,000 --> 00:28:08,000 Meillä on taulukon koko. 387 00:28:08,000 --> 00:28:11,000 Nyt jos palaamme siihen, mitä me puhuimme aiemmin, 388 00:28:11,000 --> 00:28:14,000 Luulen Missy esille seikka mitä piti tehdä, on saada pituus array 389 00:28:14,000 --> 00:28:20,000 ja jakaa sen 2, ja se antaa meille keskipiste. 390 00:28:20,000 --> 00:28:22,000 Katsotaanpa. 391 00:28:22,000 --> 00:28:25,000 Voiko olla joku kirjoittaa tämän ja tallentaa ne avaruudessa? 392 00:28:25,000 --> 00:28:27,000 Entä Leila? 393 00:28:27,000 --> 00:28:31,000 Saanko kirjoittaa tästä? 394 00:28:31,000 --> 00:28:35,000 Kirjoita ensimmäinen rivi, jossa otat pituus array ja saada keskipisteen 395 00:28:35,000 --> 00:28:41,000 ja tallentaa sen uuteen muuttuja. 396 00:28:41,000 --> 00:28:44,000 Annan teille muutaman sekunnin. Oletko valmis? 397 00:28:44,000 --> 00:28:46,000 [Student äänetön] 398 00:28:46,000 --> 00:28:50,000 Toki olisin voinut voit laskea keskipisteen 399 00:28:50,000 --> 00:28:55,000 on heinäsuovasta array sisällä hakutoiminto 400 00:28:55,000 --> 00:29:03,000 käyttämällä pituus heinäsuovasta array, joka on kooltaan vaihteleva? 401 00:29:03,000 --> 00:29:08,000 Mikään hankala täällä. 402 00:29:08,000 --> 00:29:12,000 [Leila] Vain koko / 2 ja juuri- 403 00:29:12,000 --> 00:29:17,000 Ja tallenna se ja paina Tallenna-painiketta täällä huipulla, 404 00:29:17,000 --> 00:29:19,000 ja me vedä se ylös. 405 00:29:19,000 --> 00:29:22,000 Perfect. 406 00:29:22,000 --> 00:29:28,000 Siellä mennään. Mahtavaa. 407 00:29:28,000 --> 00:29:30,000 >> Kuten on, tulee tämä kääntää? 408 00:29:30,000 --> 00:29:32,000 [Leila] Ei, se on suurempi. 409 00:29:32,000 --> 00:29:34,000 [Nate] Joo, niin mitä meidän pitää tehdä? 410 00:29:34,000 --> 00:29:36,000 [Leila] Kuten int keskipiste tai jotain. 411 00:29:36,000 --> 00:29:41,000 Mahtavaa. Joo, tehdään se, int keskipiste = koko. 412 00:29:41,000 --> 00:29:44,000 Tuleeko tämä kääntää? 413 00:29:44,000 --> 00:29:47,000 Katsotaanpa poistaa tämän kommentin ja saada se pois tieltä. 414 00:29:47,000 --> 00:29:50,000 Mitä ei koota tästä? 415 00:29:50,000 --> 00:29:52,000 Emme ole tekemässä mitään kokonaisluku, 416 00:29:52,000 --> 00:29:55,000 joten meidän täytyy tulostaa sen tai jotain. 417 00:29:55,000 --> 00:29:58,000 Joo, aivan. 418 00:29:58,000 --> 00:30:00,000 Saamme käyttämätön muuttuja. 419 00:30:00,000 --> 00:30:02,000 Mitä muuta ei tule toimimaan tästä? 420 00:30:02,000 --> 00:30:06,000 Mielestäni sanoit jotain, Sam. Puolipistettä. 421 00:30:06,000 --> 00:30:08,000 Joo, olen puuttuu nuo puolipistettä. 422 00:30:08,000 --> 00:30:14,000 Se tulee olemaan pysyvä asia koko aikana aikavälillä. 423 00:30:14,000 --> 00:30:17,000 Viimeinen asia Teen on laitan joitakin valkoisia tilaa kummallakin puolella 424 00:30:17,000 --> 00:30:23,000 Tämän operaattorin täällä, koska se on tyypillisesti miten me sen teemme 425 00:30:23,000 --> 00:30:26,000 mukaan meidän tyyliin opas. 426 00:30:26,000 --> 00:30:29,000 Meillä keskipiste meidän array. 427 00:30:29,000 --> 00:30:32,000 Nyt jos muistamme takaisin meidän algoritmi, 428 00:30:32,000 --> 00:30:37,000 Mikä oli toinen askel, että meidän piti tehdä, kun meillä keskipisteen? 429 00:30:37,000 --> 00:30:42,000 [Student] Jos se on suurempi [kuulumattomissa]. 430 00:30:42,000 --> 00:30:48,000 Joo, niin meidän täytyy tehdä jonkinlainen vertailu, ja mitä me vertaamalla täällä? 431 00:30:48,000 --> 00:30:53,000 Sanoit jos se on suurempi kuin. Mikä on se, että lause viittaa? 432 00:30:53,000 --> 00:30:57,000 Numero tulee esiin, jos se on suurempi kuin keskipiste, sitten mennä jopa array? 433 00:30:57,000 --> 00:31:05,000 Aivan, niin numero, joka tulee, kun me- 434 00:31:05,000 --> 00:31:10,000 Neula, joten olemme vertaamalla neula, 435 00:31:10,000 --> 00:31:12,000 ja mitä me vertaaminen neulaa? 436 00:31:12,000 --> 00:31:15,000 Koska neula on mitä etsimme. 437 00:31:15,000 --> 00:31:18,000 Olemme vertaamalla sitä päästä keskipisteen. 438 00:31:18,000 --> 00:31:21,000 >> Mutta se järkevää tarkistaa 439 00:31:21,000 --> 00:31:27,000 jos neula = keskipisteessä? 440 00:31:27,000 --> 00:31:32,000 Onko siinä järkeä? 441 00:31:32,000 --> 00:31:35,000 Onko kukaan eri mieltä? 442 00:31:35,000 --> 00:31:40,000 Annetaan sitä kokeilla, jos (neula == keskipiste). 443 00:31:40,000 --> 00:31:42,000 [Student] Onko printf löysit sen. 444 00:31:42,000 --> 00:31:51,000 [Nate] printf ("Löysimme sen! \ N"); 445 00:31:51,000 --> 00:31:56,000 Muuten-Olen menossa alkaa tehdä jotain erilaista täällä. 446 00:31:56,000 --> 00:32:00,000 Aion aloittaa laskemisesta housunkannattimet noin jos lausuntoja koko ajan 447 00:32:00,000 --> 00:32:05,000 vain sillä jos lisää tavaraa, niin 448 00:32:05,000 --> 00:32:07,000 emme saa kerääjiä. 449 00:32:07,000 --> 00:32:09,000 Joo, Sam. Sinulla pisteen. 450 00:32:09,000 --> 00:32:12,000 Ongelmana on, että keskipiste edustaa asema array, 451 00:32:12,000 --> 00:32:15,000 mutta voit saada sen edustamaan arvoa että kanta array. 452 00:32:15,000 --> 00:32:17,000 Se on hyvä piste. 453 00:32:17,000 --> 00:32:19,000 Oliko kaikki kuulla Sam sanoi? 454 00:32:19,000 --> 00:32:22,000 Hän sanoi, että midpoint kuten 455 00:32:22,000 --> 00:32:28,000 edustaa vain aseman jono, mutta se ei ole varsinainen alkio. 456 00:32:28,000 --> 00:32:30,000 Jos ajattelee koodi kirjoitettu juuri nyt, 457 00:32:30,000 --> 00:32:35,000 jos me tarkastelemme tätä array tänne, mikä on 8 elementtiä se, 458 00:32:35,000 --> 00:32:39,000 Mikä on arvo keskipisteen tulee olla tätä toimintoa? 459 00:32:39,000 --> 00:32:41,000 [Student] 4. 460 00:32:41,000 --> 00:32:45,000 [Nate] 4. 461 00:32:45,000 --> 00:32:51,000 Jos etsimme numero 4 - 462 00:32:51,000 --> 00:32:54,000 ja voimme vain ajaa tämän koodin ja laittaa vähän surullinen kasvot täällä 463 00:32:54,000 --> 00:32:58,000 koska emme löydä sitä, jos me suorittaa tämän koodin 464 00:32:58,000 --> 00:33:04,000 kuten nyt, lataamalla sen, rakennus, haluan selaa alaspäin 465 00:33:04,000 --> 00:33:09,000 ja jos etsimme numero 4, 466 00:33:09,000 --> 00:33:18,000 löysimme sen, mutta emme saaneet tätä printf kyllä. 467 00:33:18,000 --> 00:33:23,000 Yksi syy on se, että emme palauta true, 468 00:33:23,000 --> 00:33:26,000 mutta me todella löytää numero 4? 469 00:33:26,000 --> 00:33:28,000 Ja Sam sanoo ei. 470 00:33:28,000 --> 00:33:31,000 Mitä huomaamme? 471 00:33:31,000 --> 00:33:35,000 Olemme todella löytänyt keskipisteen, joka jos katsomme array tänne, 472 00:33:35,000 --> 00:33:38,000 se tulee olemaan elementti indeksi 4, että me tarkastelemme, 473 00:33:38,000 --> 00:33:42,000 joka on 23. 474 00:33:42,000 --> 00:33:46,000 >> Miten oikeastaan ​​tuon elementin keskipisteessä 475 00:33:46,000 --> 00:33:48,000 eikä vain keskipisteen itse? 476 00:33:48,000 --> 00:33:52,000 [Student] Olisimme tulee char tai jotain? 477 00:33:52,000 --> 00:33:55,000 Mikä se tehdä vain uteliaisuudesta? 478 00:33:55,000 --> 00:33:57,000 Voitko täsmentää hieman? 479 00:33:57,000 --> 00:34:02,000 Sinun täytyy muuttaa asennosta numero, 480 00:34:02,000 --> 00:34:05,000 joten sinun täytyy tehdä jonkinlainen yhteys-Minusta se on char, mutta se ei ehkä ole. 481 00:34:05,000 --> 00:34:07,000 Joo, hyvä pointti. 482 00:34:07,000 --> 00:34:12,000 Olemme tehneet paljon tämän muuntaa kannat otetaan merkkiä, nämä merkit, 483 00:34:12,000 --> 00:34:14,000 Kahden ensimmäisen ongelman sarjaa. 484 00:34:14,000 --> 00:34:18,000 On käynyt ilmi, että täällä, tämä on melkein samanlainen 485 00:34:18,000 --> 00:34:24,000 Käyttämällä i kirjaimen merkkijono, jos se on järkevää. 486 00:34:24,000 --> 00:34:30,000 Tässä haluamme päästä keskipisteen elementti. 487 00:34:30,000 --> 00:34:34,000 Miten me sen teemme? 488 00:34:34,000 --> 00:34:39,000 Kevin, sinulla on ehdotuksia siitä, miten voisimme tehdä? 489 00:34:39,000 --> 00:34:44,000 Voisit tehdä heinäsuovasta, alkusulkumerkki, mid, suljettu kiinnike. 490 00:34:44,000 --> 00:34:46,000 Voitko kirjoittaa, että meille? 491 00:34:46,000 --> 00:34:51,000 Tallenna se täällä, ja me vetää se ylös. 492 00:34:51,000 --> 00:34:56,000 Etsimme tällä rivillä 9, 493 00:34:56,000 --> 00:34:59,000 ja olemme ymmärtämättä, että emme halua verrata neulan keskipisteen, 494 00:34:59,000 --> 00:35:03,000 vaan haluamme verrata neulan 495 00:35:03,000 --> 00:35:07,000 sen elementin asemassa keskikohdassa sisäpuolella heinäsuovasta array. 496 00:35:07,000 --> 00:35:10,000 Cool. 497 00:35:10,000 --> 00:35:12,000 Siellä mennään. 498 00:35:12,000 --> 00:35:15,000 Joo, se näyttää aika hyvältä, jos (neula == heinäpaali [keskipisteen]). 499 00:35:15,000 --> 00:35:18,000 Löysimme sen. 500 00:35:18,000 --> 00:35:22,000 Nyt jos otamme koodi-Me varmuuskopioida hieman, 501 00:35:22,000 --> 00:35:26,000 Se kokoaa, se toimii, ja jos nyt etsimme 4, 502 00:35:26,000 --> 00:35:30,000 emme löydä sitä, koska nyt olemme todella saada numero 23. 503 00:35:30,000 --> 00:35:33,000 Saamme arvo 23, ja sitähän me vertaamalla meidän neula. 504 00:35:33,000 --> 00:35:35,000 Mutta se on hyvä. Se on askel oikeaan suuntaan. 505 00:35:35,000 --> 00:35:37,000 >> Sitähän me yritämme tehdä. 506 00:35:37,000 --> 00:35:40,000 Emme yritä verrata neulan vastaan ​​tehtävissä array 507 00:35:40,000 --> 00:35:44,000 vaan pikemminkin vastaan ​​todellinen alkiot taulukossa. 508 00:35:44,000 --> 00:35:49,000 Jos katsomme takaisin nyt seuraava askel meidän algoritmi, 509 00:35:49,000 --> 00:35:51,000 Mikä on seuraava askel? 510 00:35:51,000 --> 00:35:57,000 Leila on jo mainitsi sen lyhyesti. 511 00:35:57,000 --> 00:36:00,000 [Opiskelija] Tarkista, onko se suurempi tai pienempi kuin ja sitten päättää, mikä tapa liikkua. 512 00:36:00,000 --> 00:36:03,000 [Nate] Joo, niin miten me sen teemme? 513 00:36:03,000 --> 00:36:07,000 Voitko laittaa joskus Minä tallentaa tämän tarkistuksen, 514 00:36:07,000 --> 00:36:13,000 ja sitten jos laitat jotkut linjat, jotka tekevät niin. 515 00:36:13,000 --> 00:36:15,000 Joo, Charlotte. >> Minulla on kysymys. 516 00:36:15,000 --> 00:36:19,000 Eikö sen pitäisi olla keskipiste - 1, koska ensimmäinen asia on 517 00:36:19,000 --> 00:36:26,000 se on 0 indeksoitu, joten jos laittaa 4, se ei oikeastaan ​​merkki etsimme? 518 00:36:26,000 --> 00:36:30,000 Kyllä, ja toinen ongelma, että on- 519 00:36:30,000 --> 00:36:35,000 että on hyvä saalis, sillä mitä päätyä tapahtumassa mahdollisesti 520 00:36:35,000 --> 00:36:42,000 jos pidämme liikkuvat ja emme koskaan säädä aluksi? 521 00:36:42,000 --> 00:36:46,000 Oletan, mitä voisimme päätyä tekemään yrittää käyttää 522 00:36:46,000 --> 00:36:49,000 elementin 8. kannan array, 523 00:36:49,000 --> 00:36:53,000 joka tässä tapauksessa ei ole olemassa. 524 00:36:53,000 --> 00:36:56,000 Me haluamme tehdä jonkinlainen osuus siitä 525 00:36:56,000 --> 00:36:59,000 että meillä on joitakin nolla indeksointi. 526 00:36:59,000 --> 00:37:05,000 [Charlotte] Anteeksi, en tarkoittanut keskipiste - 1 hakasulkeisiin. 527 00:37:05,000 --> 00:37:08,000 Voimme tehdä sen. 528 00:37:08,000 --> 00:37:10,000 Palaamme tähän asiaan vain hieman. 529 00:37:10,000 --> 00:37:13,000 Kun alamme päästä varsinaiseen kiehkura, 530 00:37:13,000 --> 00:37:16,000 silloin me todella nähdä tämän kuvaan. 531 00:37:16,000 --> 00:37:21,000 Toistaiseksi voimme tehdä tämän, mutta olet täysin oikeassa. 532 00:37:21,000 --> 00:37:28,000 Että nolla indeksointi on, että meidän täytyy selittää. 533 00:37:28,000 --> 00:37:30,000 Katsotaanpa. 534 00:37:30,000 --> 00:37:34,000 >> Miten on suurempi kuin ja pienempi kuin-? 535 00:37:34,000 --> 00:37:36,000 [Opiskelija] saan miten suurempi ja pienempi kuin osa. 536 00:37:36,000 --> 00:37:41,000 En vain ollut varma mitä tulostaa jos huomaat, että se on vähemmän kuin heinäsuovasta keskipisteen tai suurempi kuin. 537 00:37:41,000 --> 00:37:43,000 Täällä voin pelastaa mitä I've- 538 00:37:43,000 --> 00:37:47,000 [Nate] Joo, jos tallennat mitä sinulla, ja me vedä se ylös. 539 00:37:47,000 --> 00:37:49,000 Siellä mennään. 540 00:37:49,000 --> 00:37:51,000 [Opiskelija] ja laitoin kysymysmerkkejä mitä en tiedä. 541 00:37:51,000 --> 00:37:54,000 [Nate] Tuo näyttää hyvältä. 542 00:37:54,000 --> 00:37:58,000 Täällä meillä kysymysmerkkejä, koska emme vielä tiedä 543 00:37:58,000 --> 00:38:06,000 mitä aiomme melko tehdä vielä. 544 00:38:06,000 --> 00:38:12,000 Mitä me haluamme tehdä-Oops, meillä on joitakin olkaimet kaikki funky meille. 545 00:38:12,000 --> 00:38:15,000 Me korjata nämä olkaimet. 546 00:38:15,000 --> 00:38:19,000 Siellä mennään. 547 00:38:19,000 --> 00:38:22,000 Ja niin mitä me haluamme tehdä, mukaan meidän algoritmin, 548 00:38:22,000 --> 00:38:27,000 Jos emme löydä neulaa? 549 00:38:27,000 --> 00:38:32,000 Sano siinä tapauksessa, että neula on pienempi kuin mitä me tarkastelemme. Kevin. 550 00:38:32,000 --> 00:38:34,000 Vain katsoa vasen puoli. 551 00:38:34,000 --> 00:38:40,000 Oikea, joten laitamme kommentin tänne joka sanoo "katsomaan vasemmalle puoli." 552 00:38:40,000 --> 00:38:46,000 Ja jos neula on suurempi kuin heinäsuovasta keskipisteessä, mitä haluamme tehdä? 553 00:38:46,000 --> 00:38:48,000 [Opiskelija] Sitten sinä katsot oikealla puolella. 554 00:38:48,000 --> 00:38:53,000 Katsokaa oikea puoli ", katso oikea puoli." 555 00:38:53,000 --> 00:38:58,000 Ei liian nuhjuinen. 556 00:38:58,000 --> 00:39:05,000 Okei, joten tässä vaiheessa, mitä etsit melko hyvä. 557 00:39:05,000 --> 00:39:13,000 Ongelma koodi kirjoitettu on mitä? 558 00:39:13,000 --> 00:39:15,000 [Student] Sinulla ei ole päätetapahtumat puolikkaat. 559 00:39:15,000 --> 00:39:18,000 Oikea, meillä ei ole päätetapahtumat puolikkaat. 560 00:39:18,000 --> 00:39:20,000 Olemme myös vain mene läpi tämän kerran. 561 00:39:20,000 --> 00:39:23,000 Olemme vain menossa katsomaan yhtä keskikohdassa. 562 00:39:23,000 --> 00:39:27,000 Joko elementti on olemassa, tai se ei ole. 563 00:39:27,000 --> 00:39:34,000 Jotta täydellinen tähän, meidän täytyy tehdä jonkinlainen toistoa. 564 00:39:34,000 --> 00:39:39,000 Meidän pitää toistaa kunnes huomaamme, että 565 00:39:39,000 --> 00:39:43,000 joko elementti on olemassa, koska olemme rajanneet ja lopulta löytyi se, 566 00:39:43,000 --> 00:39:46,000 tai se ei ole siellä, koska teimme läpi kaikki asiat 567 00:39:46,000 --> 00:39:52,000 asianmukaiseen puoliskot array ja totesi, että mikään ei ole siellä. 568 00:39:52,000 --> 00:39:56,000 >> Aina meillä tämä toisto tapahtuu, mitä aiomme käyttää? 569 00:39:56,000 --> 00:39:58,000 [Opiskelija] silmukka. 570 00:39:58,000 --> 00:40:00,000 Jonkinlainen silmukka. Kyllä. 571 00:40:00,000 --> 00:40:03,000 [Student] Voimmeko tehdä do-while-silmukka ja saada se tehdä sitä ja sitten kun 572 00:40:03,000 --> 00:40:10,000 neula ei vastaa-En ole varma minne olin menossa sitä. 573 00:40:10,000 --> 00:40:18,000 Mutta tavallaan kuin tehdä niin kauan kuin se ei ole sama arvo, että käyttäjä syöttää. 574 00:40:18,000 --> 00:40:21,000 Joo, niin katsotaanpas, miten tämä voisi kirjoittaa itse? 575 00:40:21,000 --> 00:40:23,000 Sanoit Katsotaanpa käyttää do-while-silmukka. 576 00:40:23,000 --> 00:40:26,000 Mistä tehdä alku? 577 00:40:26,000 --> 00:40:33,000 [Student] Heti koko / 2. 578 00:40:33,000 --> 00:40:42,000 [Nate] Okei, ja mitä me teemme? 579 00:40:42,000 --> 00:40:44,000 Me täyttää taas myöhemmin. 580 00:40:44,000 --> 00:40:46,000 Mitä me nyt teemme? 581 00:40:46,000 --> 00:40:49,000 [Student] Emmekö halua tehdä kaikkia juttuja meillä, jos osaan? 582 00:40:49,000 --> 00:40:52,000 [Nate] Tee kaikki jutut, hyvä. 583 00:40:52,000 --> 00:40:55,000 Kopioi ja liitä. 584 00:40:55,000 --> 00:40:59,000 Voi veljet. 585 00:40:59,000 --> 00:41:03,000 Katsotaan, jos tämä toimii, jos voimme välilehti tämän yli. 586 00:41:03,000 --> 00:41:08,000 Kaunis. 587 00:41:08,000 --> 00:41:16,000 Okei, ja säästämme tämän niin teillä sitä. 588 00:41:16,000 --> 00:41:21,000 Selvä, ja aiomme tehdä tämän, kun- 589 00:41:21,000 --> 00:41:25,000 mikä oli samalla ehto olit jälkeen? 590 00:41:25,000 --> 00:41:31,000 [Opiskelija] Kun neula ei ole sama, niin kuin huutomerkki. 591 00:41:31,000 --> 00:41:37,000 Mutta en ole varma, mitä se on vielä. 592 00:41:37,000 --> 00:41:39,000 [Nate] Joo, tämä on yksi tapa tehdä se. 593 00:41:39,000 --> 00:41:41,000 Sam, sinulla on kommentoitavaa? 594 00:41:41,000 --> 00:41:43,000 [Sam] Muistelin kun katsoin videoita, 595 00:41:43,000 --> 00:41:48,000 Otin kuvakaappaus yhden kaltainen kun teimme pseudokoodi se, 596 00:41:48,000 --> 00:41:52,000 siellä oli joitakin suhde max ja min. 597 00:41:52,000 --> 00:41:58,000 Minusta se oli jotain, jos maksimi on yhä vähemmän kuin min. 598 00:41:58,000 --> 00:42:00,000 Selvä. 599 00:42:00,000 --> 00:42:04,000 [Sam] Tai esimerkiksi jos max on vähintään min tai jotain, 600 00:42:04,000 --> 00:42:06,000 koska se merkitsisi, että olet etsinyt kaiken. 601 00:42:06,000 --> 00:42:13,000 >> Niin, mitä se kuulostaa max ja min oli kyse? 602 00:42:13,000 --> 00:42:16,000 [Sam] Arvot,-kokonaislukuja, jotka tulevat muuttumaan 603 00:42:16,000 --> 00:42:18,000 suhteessa mihin laitoimme keskipiste. 604 00:42:18,000 --> 00:42:20,000 Aivan. 605 00:42:20,000 --> 00:42:24,000 [Sam] Tuolloin se tulee [kuulumattomissa] laskea max ja min. 606 00:42:24,000 --> 00:42:29,000 Keskipiste on tämä max ja min idea. 607 00:42:29,000 --> 00:42:35,000 Onko siinä järkeä ihmiset? 608 00:42:35,000 --> 00:42:39,000 Jos me alkaa tarkastella, miten aiomme tehdä tämän iteraation 609 00:42:39,000 --> 00:42:43,000 olet täysin oikeassa, että haluamme käyttää jonkinlaista do-while-silmukka. 610 00:42:43,000 --> 00:42:49,000 Mutta kai jos muistamme, mitä tapahtuu klo paikalla tämän taulukon 611 00:42:49,000 --> 00:42:53,000 ja mitä todella tapahtuu-Menen kirjoittaa tänne, 612 00:42:53,000 --> 00:42:58,000 aivan ensimmäinen variaatio binäärihakupuu, olemme- 613 00:42:58,000 --> 00:43:05,000 Aion käyttää b ja e merkitsemään alkua. 614 00:43:05,000 --> 00:43:10,000 Ja sitten loppuun meidän array. 615 00:43:10,000 --> 00:43:14,000 Tiedämme, että alku on 4 oikealla tänne, 616 00:43:14,000 --> 00:43:18,000 ja me tiedämme, että pää on 108. 617 00:43:18,000 --> 00:43:23,000 Sano olemme etsivät numero 15. 618 00:43:23,000 --> 00:43:27,000 Ensimmäistä kertaa teemme tämän, kuten näimme aikaisemmin, 619 00:43:27,000 --> 00:43:30,000 Keskipiste joko olemaan 16 tai 23 620 00:43:30,000 --> 00:43:34,000 riippuen miten laskemme asioita. 621 00:43:34,000 --> 00:43:37,000 Koska tasaisesti jakamalla keskellä antaisi meille tätä tilaa 622 00:43:37,000 --> 00:43:42,000 välillä 16 ja 23, emme voi tasaisesti jakaa sitä 623 00:43:42,000 --> 00:43:47,000 tai jakaa sitä ja saada aikaa todellinen keskipiste. 624 00:43:47,000 --> 00:43:49,000 Me tutustumme 16. 625 00:43:49,000 --> 00:43:55,000 Me huomaat "Hei, 16> 15, että etsimme." 626 00:43:55,000 --> 00:43:59,000 Voit sitten katsoa vasemmalla puolella array 627 00:43:59,000 --> 00:44:03,000 mitä me lopulta teemme on poisheittämistä 628 00:44:03,000 --> 00:44:07,000 tämä koko yläosa 629 00:44:07,000 --> 00:44:16,000 ja sanoi, "Okei, nyt meidän päätepiste tulee olemaan täällä." 630 00:44:16,000 --> 00:44:22,000 Seuraava iteraatio meidän silmukan, olemme nyt etsimässä tätä array, 631 00:44:22,000 --> 00:44:25,000 tehokkaasti joilla hylättiin tämän osan, koska nyt 632 00:44:25,000 --> 00:44:30,000 jos olemme ottaen puoliväliin olla ero alussa ja lopussa, 633 00:44:30,000 --> 00:44:34,000 löydämme keskipiste on 8, 634 00:44:34,000 --> 00:44:40,000 jonka voimme testata 8 nähdä missä se on suhteessa määrään etsimme, 635 00:44:40,000 --> 00:44:44,000 15, huomaavat, että 15 on suurempi, 636 00:44:44,000 --> 00:44:49,000 joten meidän täytyy siirtyä oikealle osan luettelossa, 637 00:44:49,000 --> 00:44:51,000 jonka tiedämme koska olemme ihmisiä, ja voimme nähdä sen. 638 00:44:51,000 --> 00:44:54,000 Tiedämme, että oikea osa tulee olemaan, jos löydämme sen, 639 00:44:54,000 --> 00:45:01,000 mutta tietokone ei tiedä, että, niin mitä me teemme on hyvitämme oikeastaan 640 00:45:01,000 --> 00:45:04,000 ovat tämän nousevat, ja nyt alku ja loppu 641 00:45:04,000 --> 00:45:11,000 ovat samassa paikassa, joten keskipiste tulee ainoa numero luettelossa siinä vaiheessa, 642 00:45:11,000 --> 00:45:16,000 joka on 15, ja olemme löytäneet sen. 643 00:45:16,000 --> 00:45:21,000 Onko se valottaa jos koko max ja min merkintätapa on menossa, 644 00:45:21,000 --> 00:45:24,000 tarkkailemalla päätepisteet array jotta selvittää 645 00:45:24,000 --> 00:45:35,000 kuinka kapea asioita alas? 646 00:45:35,000 --> 00:45:42,000 >> Mitä tapahtuisi, jos tämä ei vastaa 15 nyt? 647 00:45:42,000 --> 00:45:52,000 Mitä jos etsimme 15 ja sen sijaan, tämä määrä oli myös 16? 648 00:45:52,000 --> 00:45:54,000 Saatoimme sanoa, "Voi, se on suurempi. 649 00:45:54,000 --> 00:45:57,000 Haluamme mennä takaisin vasemmalle. " 650 00:45:57,000 --> 00:46:01,000 Ja olimme siirrymme e oikealle, 651 00:46:01,000 --> 00:46:06,000 jolloin meillä on päätepiste, joka olisi ristiriitaista. 652 00:46:06,000 --> 00:46:09,000 Se ei voisi etsiä enempää elementtejä 653 00:46:09,000 --> 00:46:13,000 koska nyt meillä on päätepiste ja meidän alkupiste, 654 00:46:13,000 --> 00:46:16,000 meidän max ja meidän min, nyt käännetään. 655 00:46:16,000 --> 00:46:23,000 Me etsiä koko joukko. Emme voi löytää mitään. 656 00:46:23,000 --> 00:46:27,000 Se missä vaiheessa me haluaisi sanoa, "Okei, me aiomme lopettaa tämän algoritmin. 657 00:46:27,000 --> 00:46:34,000 Emme ole löytäneet mitään. Tiedämme, että se ei ole täällä. " 658 00:46:34,000 --> 00:46:36,000 Miten tämä menee? 659 00:46:36,000 --> 00:46:40,000 [Opiskelija] Miten tarkasti tietokone vaihtaa pää? 660 00:46:40,000 --> 00:46:45,000 Miten loppuun päätyvät ennen alkua? 661 00:46:45,000 --> 00:46:48,000 Pää päättyy ennen alkua 662 00:46:48,000 --> 00:46:54,000 koska matematiikan että aiomme tehdä joka kerta me teemme tätä. 663 00:46:54,000 --> 00:47:00,000 Tapamme Vaihdetaan on jos tarkastellaan ensimmäistä kertaa teemme tämän swap 664 00:47:00,000 --> 00:47:03,000 jossa meillä on alusta 4 ja lopussa 665 00:47:03,000 --> 00:47:13,000 aina alas 108 ja meidän keskipiste, eli klo 16 - 666 00:47:13,000 --> 00:47:20,000 Aion palauttaa tämän takaisin 15-jos me etsimme 15, 667 00:47:20,000 --> 00:47:25,000 tiesimme, että mitä teimme, kun pyysimme 16 ja näki, että se oli suurempi 668 00:47:25,000 --> 00:47:28,000 ja halusi hävittää koko oikean osan luettelossa, 669 00:47:28,000 --> 00:47:36,000 näimme, että mitä halusimme tehdä, on siirtää tämä e täällä. 670 00:47:36,000 --> 00:47:44,000 Tehokkaasti, e pelaaja siirretään johonkin ennen keskipisteen. 671 00:47:44,000 --> 00:47:48,000 Samoin, kun me teimme tämän iterointia algoritmin 672 00:47:48,000 --> 00:47:51,000 ja keskipiste oli 8, 673 00:47:51,000 --> 00:47:55,000 Olemme havainneet, että 8 <15, joten halusimme siirtyä b 674 00:47:55,000 --> 00:48:00,000 yksi entinen keskipiste. 675 00:48:00,000 --> 00:48:07,000 Nyt, alku ja loppu ovat molemmat yhdessä tämän 15. 676 00:48:07,000 --> 00:48:10,000 >> Jos olisimme olleet tapahtumassa etsiä jokin muu arvo, ei 15, 677 00:48:10,000 --> 00:48:14,000 tai jos tämä 15 oli sen sijaan ollut 16, 678 00:48:14,000 --> 00:48:20,000 olisimme havainneet, että e haluamme siirtää yksi ennen keskipisteen. 679 00:48:20,000 --> 00:48:33,000 Nyt e olisivat siellä selattava vähemmän kuin b. 680 00:48:33,000 --> 00:48:39,000 Käydään läpi, miten me oikeastaan ​​päätyä koodaus tätä algoritmia. 681 00:48:39,000 --> 00:48:44,000 Me tiedämme, että haluamme saada tämän keskipisteen laskemista. 682 00:48:44,000 --> 00:48:48,000 Tiedämme myös, että haluamme seurata alussa ja lopussa array 683 00:48:48,000 --> 00:48:51,000 nykyiseen array jotta voimme selvittää 684 00:48:51,000 --> 00:48:56,000 jos tämä vasen puoli luettelo on ja missä oikea puoli luettelossa on. 685 00:48:56,000 --> 00:49:03,000 Teemme joka joko alkaa ja päättyy, 686 00:49:03,000 --> 00:49:07,000 tai voimme soittaa heille min ja max. 687 00:49:07,000 --> 00:49:10,000 Minä käytän alkavan ja päättyvän tällä kertaa. 688 00:49:10,000 --> 00:49:15,000 Kun alamme, jos katsomme taaksepäin meidän esimerkiksi tänne, 689 00:49:15,000 --> 00:49:20,000 Meidän alku oli asetettu alusta array, luonnollisena. 690 00:49:20,000 --> 00:49:25,000 Mikä indeksi oli tämä? Mitä pitäisi meidän alkaa olla? 691 00:49:25,000 --> 00:49:27,000 Daniel. 692 00:49:27,000 --> 00:49:30,000 [Daniel] heinäsuovasta [0]. 693 00:49:30,000 --> 00:49:37,000 [Nate] Joo, niin voisimme asettaa sen yhtä heinäsuovasta [0]. 694 00:49:37,000 --> 00:49:40,000 Ongelmana on kuitenkin se, että tämä antaa meille ei asemaa ensimmäisen elementin. 695 00:49:40,000 --> 00:49:45,000 Se antaa meille indeksi ensimmäisen elementin tai todellinen arvo, että ensimmäisessä asennossa. 696 00:49:45,000 --> 00:49:47,000 [Opiskelija] Se muuntaa 0,20? 697 00:49:47,000 --> 00:49:52,000 [Nate] Mitä tämä tekee on-hyvin, se ei tee mitään jatkojalostus. 698 00:49:52,000 --> 00:49:56,000 Mitä se tekee on se tallentaa 4 alkaa, 699 00:49:56,000 --> 00:49:59,000 ja silloin on vaikea tehdä vertailuja vastaan ​​alkaa 700 00:49:59,000 --> 00:50:03,000 koska begin järjestämme arvo 4, 701 00:50:03,000 --> 00:50:06,000 joka on alku meidän array, 702 00:50:06,000 --> 00:50:08,000 mutta haluamme seurata indeksejä array 703 00:50:08,000 --> 00:50:11,000 toisin kuin arvoihin. 704 00:50:11,000 --> 00:50:17,000 Me todella käyttää 0, niin. 705 00:50:17,000 --> 00:50:20,000 Lopulle array-Charlotte asian esille hieman aikaisemmin. 706 00:50:20,000 --> 00:50:23,000 Tämä on, jos otamme huomioon nolla indeksointi. 707 00:50:23,000 --> 00:50:25,000 >> Charlotte, mikä pää array? 708 00:50:25,000 --> 00:50:28,000 Mikä on indeksi loppu? 709 00:50:28,000 --> 00:50:30,000 [Charlotte] Size - 1. 710 00:50:30,000 --> 00:50:32,000 Joo, ja jonka koko meidän pitäisi käyttää? 711 00:50:32,000 --> 00:50:35,000 Pitäisikö meidän käyttää pääomaa koko tai pieniä koko? 712 00:50:35,000 --> 00:50:37,000 Capital kokoa. 713 00:50:37,000 --> 00:50:42,000 Tässä tapauksessa voisimme käyttää pääomaa koko. 714 00:50:42,000 --> 00:50:45,000 Jos haluamme tätä toimintoa kannettavaksi 715 00:50:45,000 --> 00:50:48,000 ja käyttää tätä toimintoa muissa ohjelmissa, 716 00:50:48,000 --> 00:50:50,000 voimme itse käyttää pieniä kooltaan. 717 00:50:50,000 --> 00:50:52,000 Se on hieno myös. 718 00:50:52,000 --> 00:51:01,000 Mutta Charlotte on täysin oikeassa siinä, että haluamme koko - 1. 719 00:51:01,000 --> 00:51:03,000 Tässä vaiheessa, 720 00:51:03,000 --> 00:51:05,000 [Opiskelija] Kuinka on mahdollista, että voit käyttää isoja kokoa? 721 00:51:05,000 --> 00:51:07,000 Miten on mahdollista, että voisimme käyttää isoja kokoa? 722 00:51:07,000 --> 00:51:13,000 On käynyt ilmi, että nämä # määrittelee ovat todella, 723 00:51:13,000 --> 00:51:19,000 konepellin alle, tekstin kuten etsi ja korvaa, jos se on järkevää. 724 00:51:19,000 --> 00:51:24,000 Kun kääntää koodin, esikäsittely vaihe 725 00:51:24,000 --> 00:51:27,000 ja kääntäjä kulkee tiedosto, 726 00:51:27,000 --> 00:51:31,000 ja se etsii kaikkialla, että olet kirjoittanut pääoman määrän, 727 00:51:31,000 --> 00:51:39,000 ja se korvaa tekstiä kirjaimellisesti 8, aivan kuten se. 728 00:51:39,000 --> 00:51:42,000 Tässä mielessä tämä on hyvin erilainen kuin muuttuja. 729 00:51:42,000 --> 00:51:45,000 Se ei vie tilaa muistissa. 730 00:51:45,000 --> 00:51:52,000 Se on yksinkertainen teksti korvaa temppu. 731 00:51:52,000 --> 00:51:57,000 Tässä tapauksessa aiomme käyttää kokoa. 732 00:51:57,000 --> 00:52:01,000 Sieltä me haluamme tehdä jonkinlainen toistoa, 733 00:52:01,000 --> 00:52:03,000 ja olemme oikealla tiellä meidän do-while silmukka. 734 00:52:03,000 --> 00:52:08,000 Haluamme tehdä jotain, kunnes ehto ei päde enää, 735 00:52:08,000 --> 00:52:12,000 ja kuten näimme aikaisemmin, näimme, että tämä edellytys 736 00:52:12,000 --> 00:52:19,000 oli todellakin, että emme halua loppua 737 00:52:19,000 --> 00:52:24,000 olla vähemmän kuin alkaa. 738 00:52:24,000 --> 00:52:26,000 >> Tämä on meidän pysäyttää kunnossa. 739 00:52:26,000 --> 00:52:35,000 Jos näin tapahtuu, me haluamme lopettaa ja julistaa, kuten "Hei, emme ole löytäneet mitään." 740 00:52:35,000 --> 00:52:43,000 Ilmaista tätä, haluamme käyttää jonkinlaista silmukan. 741 00:52:43,000 --> 00:52:49,000 Tässä tapauksessa se olisi do-while-silmukka, ja silmukka, kun silmukka? 742 00:52:49,000 --> 00:52:51,000 Meillä on do-while-silmukka täällä. 743 00:52:51,000 --> 00:52:53,000 Onko teillä sellaista lähestymistapaa? 744 00:52:53,000 --> 00:52:59,000 Luuletteko meidän pitäisi kokeilla erilaista lähestymistapaa? 745 00:52:59,000 --> 00:53:01,000 Kevin, mitään ajatuksia? 746 00:53:01,000 --> 00:53:06,000 Meillä voisi olla kun silmukka, koska me tiedämme suurin 747 00:53:06,000 --> 00:53:11,000 olisi suurempi kuin min alussa anyways. 748 00:53:11,000 --> 00:53:14,000 Joo, joten ei ole alustus, joka tarvitsee tapahtua. 749 00:53:14,000 --> 00:53:17,000 Nämä do-while silmukat ovat suuria, kun olet alustaa jotain 750 00:53:17,000 --> 00:53:21,000 sitä ennen testausta, kun taas täällä 751 00:53:21,000 --> 00:53:26,000 me tiedämme, että emme aio pitää reinitializing sekä alkaa ja päättyy 752 00:53:26,000 --> 00:53:28,000 joka kierroksella silmukan. 753 00:53:28,000 --> 00:53:32,000 Me tiedämme, että haluamme ne alustaa, niin tutustu kunnossa. 754 00:53:32,000 --> 00:53:38,000 Tässä tapauksessa minä itse mennä yksinkertainen, kun silmukka. 755 00:53:38,000 --> 00:53:44,000 On käynyt ilmi, että do-while silmukoita käytetään melko harvoin. 756 00:53:44,000 --> 00:53:49,000 Paljon paikkoja ei edes opeta tehdä samalla silmukoita. 757 00:53:49,000 --> 00:53:53,000 He ovat hyviä käsittelyyn käyttäjän syötettä, joten olemme nähneet paljon niitä toistaiseksi. 758 00:53:53,000 --> 00:53:59,000 Mutta normaalia ja kun silmukat ovat paljon yleisempiä. 759 00:53:59,000 --> 00:54:03,000 Osoittautuu, että tämä edellytys kirjoitettu 760 00:54:03,000 --> 00:54:09,000 ei todellakaan tee meille paljon hyvää, ja miksi? 761 00:54:09,000 --> 00:54:11,000 Olen pahoillani, en tiedä nimeäsi. 762 00:54:11,000 --> 00:54:13,000 Olen Jerry. >> Anteeksi? 763 00:54:13,000 --> 00:54:15,000 Se on B-O-R-U-I. 764 00:54:15,000 --> 00:54:18,000 Selvä. 765 00:54:18,000 --> 00:54:23,000 En näe sinua listallani. 766 00:54:23,000 --> 00:54:26,000 Voi, se on siksi, oh, että järkeä. 767 00:54:26,000 --> 00:54:31,000 Onko sinulla idea miksi tämä kun silmukka ei välttämättä toimi tarkoitetulla 768 00:54:31,000 --> 00:54:38,000 sillä kirjoitettu ehto? 769 00:54:38,000 --> 00:54:43,000 [Jerry] Tarkoitatko haluat kaikki jutut jälkeen se-? 770 00:54:43,000 --> 00:54:46,000 Joo, niin se on yksi. 771 00:54:46,000 --> 00:54:49,000 Meidän täytyy ehkä laittaa kaikki tätä kamaa osaksi kun silmukka, joka on täysin totta. 772 00:54:49,000 --> 00:54:55,000 Toinen asia, joka on hieman ongelmallista, vaikka se, että tämä ehto ei toimi. 773 00:54:55,000 --> 00:54:57,000 [Student] Sinun kääntää sitä. 774 00:54:57,000 --> 00:55:04,000 Oikea, joten tämä ehto ei koskaan totta aluksi niin puhuimme siitä. 775 00:55:04,000 --> 00:55:08,000 Haluamme tehdä jotain loppuun 00:55:13,000 mutta me haluamme tehdä jotain, kun 777 00:55:13,000 --> 00:55:21,000 Aloita ≤ loppu. 778 00:55:21,000 --> 00:55:24,000 >> On tuo käänteinen logiikka siellä. 779 00:55:24,000 --> 00:55:27,000 Olen syyllistynyt tekemään niitä virheitä koko ajan. 780 00:55:27,000 --> 00:55:31,000 [Student] Miksi sen on oltava pienempi tai yhtä suuri kuin? 781 00:55:31,000 --> 00:55:33,000 Koska muistatko tapauksessa, että saimme 782 00:55:33,000 --> 00:55:36,000 jossa oli vain yksi elementti, ja olimme alas, 783 00:55:36,000 --> 00:55:43,000 ja etsimme juuri 15 meidän array? 784 00:55:43,000 --> 00:55:47,000 Ja alussa ja meidän loppu olivat samat elementti. 785 00:55:47,000 --> 00:55:50,000 Haluamme varmistaa, että hoidamme asiassa. 786 00:55:50,000 --> 00:55:54,000 Jos emme suora alle, 787 00:55:54,000 --> 00:55:58,000 meillä olisi vain saada alas 2-elementti array. 788 00:55:58,000 --> 00:56:06,000 Kun pääsimme alas että viime elementti, jos se olisi meidän elementti, emme ikinä löydä sitä. 789 00:56:06,000 --> 00:56:10,000 Nyt täällä, voimme tehdä juuri niin kuin sanoitte. 790 00:56:10,000 --> 00:56:15,000 Voimme aloittaa plopping tavaraa suoraan keskellä meidän kun silmukka. 791 00:56:15,000 --> 00:56:20,000 Voimme plop meidän keskipiste. 792 00:56:20,000 --> 00:56:24,000 Voimme ottaa kaikki nämä, jos lausunnot, 793 00:56:24,000 --> 00:56:30,000 vedä ne ulos tästä do-while-silmukka, 794 00:56:30,000 --> 00:56:34,000 jysäyttää ne, 795 00:56:34,000 --> 00:56:39,000 puhdistaa asioita hieman, 796 00:56:39,000 --> 00:56:48,000 ja minä menen eteenpäin ja pelastaa tämän tarkistuksen. 797 00:56:48,000 --> 00:56:53,000 Ja tässä vaiheessa, me lähdemme melko lähellä. 798 00:56:53,000 --> 00:56:55,000 Sam. 799 00:56:55,000 --> 00:56:58,000 Mielestäni sinun on myös oltava int keskipisteeseen = koko - 1/2. 800 00:56:58,000 --> 00:57:01,000 Selvä, koko - 1/2. 801 00:57:01,000 --> 00:57:05,000 Onko mitään muuta meidän täytyy muuttaa siitä linja? 802 00:57:05,000 --> 00:57:10,000 Se oli hyvä saalis. 803 00:57:10,000 --> 00:57:14,000 >> Mitä koko tehdä? Olemmeko koskaan muuttuu koko? 804 00:57:14,000 --> 00:57:17,000 Pitääkseen kaltainen rivi, meidän täytyy muuttaa kokoa. 805 00:57:17,000 --> 00:57:21,000 Meidän täytyy muuttaa kokoa joka kerta mennä ympäri varten silmukka. 806 00:57:21,000 --> 00:57:25,000 Mutta muistan, kun olimme menossa läpi esimerkiksi vain hieman aikaisemmin, 807 00:57:25,000 --> 00:57:30,000 ja meillä oli alkaa 4 808 00:57:30,000 --> 00:57:33,000 ja pää aina haltuunsa 108? 809 00:57:33,000 --> 00:57:35,000 Miten voimme laskea keskipisteen? 810 00:57:35,000 --> 00:57:38,000 Olimme käyttää kokoa? 811 00:57:38,000 --> 00:57:40,000 Tai käytimme alkaa ja päättyy sen sijaan? 812 00:57:40,000 --> 00:57:42,000 Se on ero pään ja alussa. 813 00:57:42,000 --> 00:57:50,000 Täsmälleen, ja miten tarkalleen pitäisi kirjoittaa siitä, Charlotte? 814 00:57:50,000 --> 00:57:52,000 Aivan loppuun - alkavat. 815 00:57:52,000 --> 00:57:55,000 Sinun ei tarvitse tehdä - 1 816 00:57:55,000 --> 00:57:58,000 koska - 1 on sisällytetty lopussa ja alkaa jo. 817 00:57:58,000 --> 00:58:00,000 [Nate] Hienoa, olet täysin oikeassa. 818 00:58:00,000 --> 00:58:03,000 Meillä ei tarvitse tehdä - 1 koska - 1 on sisällytetty 819 00:58:03,000 --> 00:58:08,000 ja osuus kun alustaa loppu muuttuja. 820 00:58:08,000 --> 00:58:11,000 >> Onko mitään muuta minun täytyy tehdä syntaktisesti on tämän linjan järkeä? 821 00:58:11,000 --> 00:58:13,000 [Student] Plus alkaa. >> Plus alkaa? 822 00:58:13,000 --> 00:58:15,000 [Opiskelija] lopussa. 823 00:58:15,000 --> 00:58:20,000 Koska se on vain lasketaan puoli pituudesta. 824 00:58:20,000 --> 00:58:26,000 Sinun täytyy lisätä aloittaa. 825 00:58:26,000 --> 00:58:31,000 [Nate] Mitä tämä laskee meille? 826 00:58:31,000 --> 00:58:35,000 Jos ajattelemme päättyy tähän ensimmäiseen iterointia silmukan, 827 00:58:35,000 --> 00:58:40,000 pää tulee olemaan paikallaan olevaa 7. 828 00:58:40,000 --> 00:58:43,000 Aloita on 0-asennossa. 829 00:58:43,000 --> 00:58:47,000 Muista, etsimme joko 830 00:58:47,000 --> 00:58:52,000 asento 3 tai asema 4. 831 00:58:52,000 --> 00:58:56,000 Jos me tarkastelemme tätä matematiikkaa, vain tehdä se hieman konkreettisemmin, 832 00:58:56,000 --> 00:59:02,000 laittaa numeroita tänne, meillä on 7, 0, 833 00:59:02,000 --> 00:59:10,000 joten 7-0, ja sitten / 2 834 00:59:10,000 --> 00:59:19,000 on 3 kokonaisluku jako, joka on. 835 00:59:19,000 --> 00:59:26,000 Sitten meidän täytyy lisätä sitten takaisin meidän alkaa? 836 00:59:26,000 --> 00:59:28,000 Emme ole tässä tapauksessa. 837 00:59:28,000 --> 00:59:31,000 On aivan ensimmäinen iteraatio, se on hieno, koska begin on 0. 838 00:59:31,000 --> 00:59:36,000 Mutta edetään, teemme oikeastaan ​​kaikki täytyy vain 839 00:59:36,000 --> 00:59:42,000 loppu - alkaa / 2. 840 00:59:42,000 --> 00:59:46,000 On yksi muu temppu täällä, ja se on nimittäin yksi edelle. 841 00:59:46,000 --> 00:59:49,000 [Student] Tarvitaanko sulkeet? 842 00:59:49,000 --> 00:59:53,000 [Nate] Aivan, ja se johtuu siitä, jos emme aseta näitä sulkeita, 843 00:59:53,000 --> 00:59:58,000 tämä rivi tulkitaan sijaan 844 00:59:58,000 --> 01:00:09,000 kuten (loppu) - (alkaa / 2), jota varmasti halua. 845 01:00:09,000 --> 01:00:11,000 Varo näitä priorisointisääntöjä. 846 01:00:11,000 --> 01:00:15,000 [Student] Miksei se päättyy + alkaa? 847 01:00:15,000 --> 01:00:17,000 Miksei se päättyy + alkaa? 848 01:00:17,000 --> 01:00:19,000 [Opiskelija] Miksi ei, että? 849 01:00:19,000 --> 01:00:24,000 Miksi se olisi +? 850 01:00:24,000 --> 01:00:26,000 Luulen, että olet oikeassa. 851 01:00:26,000 --> 01:00:28,000 [Student] Koska se on keskimäärin? 852 01:00:28,000 --> 01:00:31,000 [Nate] End + alkaa, olet täysin oikeassa. 853 01:00:31,000 --> 01:00:34,000 Vau, olen täysin goofed. Olet oikeassa. 854 01:00:34,000 --> 01:00:39,000 Jos teimme miinus, haluaisimme lisätä aloittaa takaisin sisään 855 01:00:39,000 --> 01:00:43,000 Tässä tapauksessa, olet aivan oikeassa, että haluamme ottaa keskiarvo kahdesta, 856 01:00:43,000 --> 01:00:45,000 joten haluamme lisätä ne, toisin kuin vähennyslaskua niitä. 857 01:00:45,000 --> 01:00:49,000 [Student] Se toimisi myös jos teit lopussa - aloittaa / 2 + alkaa. 858 01:00:49,000 --> 01:00:55,000 Se olisi, jos me-uskon niin. 859 01:00:55,000 --> 01:01:00,000 >> Esimerkiksi, jos katsoitte alkaa, 860 01:01:00,000 --> 01:01:04,000 ja siirsimme sen tänne 861 01:01:04,000 --> 01:01:08,000 sen 15. 862 01:01:08,000 --> 01:01:12,000 Nyt alkaa on asennossa 2. 863 01:01:12,000 --> 01:01:15,000 Pää on 7-asemassa. 864 01:01:15,000 --> 01:01:21,000 Jos vähennämme niitä, saamme 5. 865 01:01:21,000 --> 01:01:24,000 Jaetaan että 2, saamme 2. 866 01:01:24,000 --> 01:01:27,000 Ja sitten me lisätään 2 takaisin, 867 01:01:27,000 --> 01:01:30,000 ja joka saa meidät 4. asemassa, 868 01:01:30,000 --> 01:01:33,000 mikä on täällä, mikä on keskipiste. 869 01:01:33,000 --> 01:01:36,000 [Student] Onko meidän huolehtia kääre? 870 01:01:36,000 --> 01:01:39,000 Missä mielessä me tarvitsemme huolehtia kääre? 871 01:01:39,000 --> 01:01:43,000 Jos summa tai erotus 872 01:01:43,000 --> 01:01:45,000 riippuen siitä, miten me sen teemme ei ole parillinen. 873 01:01:45,000 --> 01:01:49,000 Sitten tietokone saa sekoittaa onko kun se 2,5; 874 01:01:49,000 --> 01:01:52,000 sinä siirtyä vasemmalle tai oikealle mitkä on keskipiste? 875 01:01:52,000 --> 01:01:54,000 Selvä. 876 01:01:54,000 --> 01:01:56,000 On käynyt ilmi, että kokonaisluku jako, 877 01:01:56,000 --> 01:01:59,000 emme koskaan saa näitä liukulukuja. 878 01:01:59,000 --> 01:02:01,000 Emme koskaan desimaalin. 879 01:02:01,000 --> 01:02:04,000 Se on täysin hylätty. 880 01:02:04,000 --> 01:02:08,000 Jos sinulla on tietokone jakaa kaksi int muuttujaa, 881 01:02:08,000 --> 01:02:11,000 ja yksi on 7, ja toinen on 2, 882 01:02:11,000 --> 01:02:13,000 et saa 3,5 seurauksena. 883 01:02:13,000 --> 01:02:16,000 Se saa 3. 884 01:02:16,000 --> 01:02:19,000 Loput hävitetään, joten se tehokkaasti pyöristäminen 885 01:02:19,000 --> 01:02:24,000 ei pyöreä vaan lattia, jos te tuntevat, että matematiikka, 886 01:02:24,000 --> 01:02:27,000 jossa täysin hävittää desimaali, 887 01:02:27,000 --> 01:02:31,000 ja niin olet lähinnä katkaisemalla sen alaspäin lähimpään 888 01:02:31,000 --> 01:02:33,000 kaikkiaan positioita, lähimpään kokonaislukuun. 889 01:02:33,000 --> 01:02:38,000 [Student] Mutta sitten se ongelmallinen, koska jos sinulla on joukko 7 elementtiä 890 01:02:38,000 --> 01:02:43,000 Sitten ottaa automaattisesti 3. osa ulos keskipisteen sijaan 4.. 891 01:02:43,000 --> 01:02:46,000 Miten käsitellä sitä? 892 01:02:46,000 --> 01:02:49,000 Se ongelmallista, koska jos meillä olisi joukko 7, 893 01:02:49,000 --> 01:02:54,000 se poimia 3. sijasta 4.. 894 01:02:54,000 --> 01:02:56,000 Voisitko selittää hieman? 895 01:02:56,000 --> 01:02:59,000 [Student] Koska jos sinulla on 7 elementtiä sitten 4. osa 896 01:02:59,000 --> 01:03:04,000 olisi keskipiste, oikea? 897 01:03:04,000 --> 01:03:07,000 Muista kommentti on nolla indeksoitu, tosin. 898 01:03:07,000 --> 01:03:10,000 [Student] Joo, niin asentoon 3. Se olisi keskipiste. 899 01:03:10,000 --> 01:03:12,000 Joo. 900 01:03:12,000 --> 01:03:16,000 Selvä. Näen mitä tarkoitat. 901 01:03:16,000 --> 01:03:19,000 Se on tavallaan outoa, koska me tottua tähän koko käsite 902 01:03:19,000 --> 01:03:22,000 päästä eroon desimaaleja. 903 01:03:22,000 --> 01:03:26,000 Se on hyvä piste. 904 01:03:26,000 --> 01:03:30,000 Lopetetaan tämä. 905 01:03:30,000 --> 01:03:32,000 Olemme lasketaan myös keskipiste. 906 01:03:32,000 --> 01:03:37,000 >> Testaamme onko meidän neula on sama keskimmäinen arvo. 907 01:03:37,000 --> 01:03:41,000 Olemme tulostat että löysimme sen, mutta oikeasti, mitä haluamme tehdä tässä tilanteessa? 908 01:03:41,000 --> 01:03:46,000 Olemme huomanneet sen, joten haluamme antaa soittajalle tietää, että löysimme sen. 909 01:03:46,000 --> 01:03:49,000 Meillä toiminto, joka on Boolen kirjoitettu funktio. 910 01:03:49,000 --> 01:03:54,000 Tapaamme signaalin soittajalle meidän toiminnon olemme valmiina 911 01:03:54,000 --> 01:03:58,000 on sanomme, "Hei, tämä on totta." 912 01:03:58,000 --> 01:04:00,000 Miten teemme sen, Kevin? 913 01:04:00,000 --> 01:04:02,000 Olet nyökkää päätäsi. >> [Kevin] Lisää return true. 914 01:04:02,000 --> 01:04:06,000 [Nate] Aivan, return true. 915 01:04:06,000 --> 01:04:12,000 Nyt, jos se ei ole yhtä, miten katsomme vasen puoli? 916 01:04:12,000 --> 01:04:16,000 Onko ideoita? 917 01:04:16,000 --> 01:04:18,000 Stella, mitään ideoita? 918 01:04:18,000 --> 01:04:21,000 Sinun täytyy asettaa uuden aseman loppua. 919 01:04:21,000 --> 01:04:23,000 Joo. 920 01:04:23,000 --> 01:04:29,000 Joten meidän täytyy tehdä kannan keskipisteen - loppua. 921 01:04:29,000 --> 01:04:33,000 Suuri. 922 01:04:33,000 --> 01:04:36,000 Meidän on asetettava uuteen asentoon loppuun 923 01:04:36,000 --> 01:04:38,000 tarkastella vasen puoli. 924 01:04:38,000 --> 01:04:41,000 Tämä oli mitä puhuimme ennen kun 925 01:04:41,000 --> 01:04:44,000 Pidän menossa takaisin tähän esimerkkiin. 926 01:04:44,000 --> 01:04:50,000 Olen aluksi täällä, ja sitten minulla on pää koko matkan tänne. 927 01:04:50,000 --> 01:04:53,000 >> Jälleen, jos etsimme 15, ja meidän keskipiste on 16, 928 01:04:53,000 --> 01:04:56,000 ja ymmärrämme, "Oho, 16 on suurempi. 929 01:04:56,000 --> 01:04:59,000 Haluamme siirtyä vasemmalle puoli. " 930 01:04:59,000 --> 01:05:02,000 Olisimme sitten siirtyä pää 15, 931 01:05:02,000 --> 01:05:06,000 ja me teemme sen ottamalla yksi pois keskikohdasta 932 01:05:06,000 --> 01:05:09,000 ja asettamalla että uusi loppu. 933 01:05:09,000 --> 01:05:12,000 Samoin, jos haluamme tarkastella oikea puoli, miten me sen teemme? 934 01:05:12,000 --> 01:05:14,000 Onko sinulla idea? 935 01:05:14,000 --> 01:05:22,000 [Student] Olet juuri asettanut alkaa keskipisteen + 1. 936 01:05:22,000 --> 01:05:24,000 [Nate] Suuri. 937 01:05:24,000 --> 01:05:29,000 Ja nyt siinä tapauksessa, että emme löydä mitään, 938 01:05:29,000 --> 01:05:32,000 tuo saa hoitanut meille? 939 01:05:32,000 --> 01:05:36,000 Daniel, tuo saa hoitanut meille? 940 01:05:36,000 --> 01:05:38,000 [Daniel] No 941 01:05:38,000 --> 01:05:40,000 [Nate] Jos teemme sen läpi koko joukko, ja emme löydä mitään, 942 01:05:40,000 --> 01:05:42,000 jos se olisi hoidettu, vai pitäisikö meidän huolehtia siitä? 943 01:05:42,000 --> 01:05:44,000 [Daniel] taas kunnossa. 944 01:05:44,000 --> 01:05:48,000 [Nate] Joo, taas kunnossa, tarkalleen. 945 01:05:48,000 --> 01:05:51,000 Se hoitaa läpi koko ryhmän jos emme löydä mitään. 946 01:05:51,000 --> 01:05:53,000 Tämä taas silmukka päättyy. 947 01:05:53,000 --> 01:05:56,000 Emme koskaan ole kohdanneet tämän edellytyksen, 948 01:05:56,000 --> 01:06:03,000 ja voimme palata vääriä. 949 01:06:03,000 --> 01:06:10,000 Voimme myös jättää tätä, jos tänne näin 950 01:06:10,000 --> 01:06:14,000 sillä jos tämä jos lause on tosi, 951 01:06:14,000 --> 01:06:16,000 ja meidän funktio palauttaa, 952 01:06:16,000 --> 01:06:21,000 ja niin me pohjimmiltaan keskeyttää tämän toiminnon tässä vaiheessa 953 01:06:21,000 --> 01:06:24,000 kun palaamme totta. 954 01:06:24,000 --> 01:06:28,000 Mutta mitä tapahtuu tämän rakenteen täällä? 955 01:06:28,000 --> 01:06:34,000 Toimiiko tämä kokonaan, vai onko olemassa jokin looginen virhe siellä? 956 01:06:34,000 --> 01:06:37,000 >> On joitakin looginen virhe siellä, miten se on perustettu. 957 01:06:37,000 --> 01:06:40,000 Mikä mahtaa olla? 958 01:06:40,000 --> 01:06:43,000 [Student] Mihin tarvitset - ja + 1s? 959 01:06:43,000 --> 01:06:47,000 Joka asettaa meidän array jopa olla uusi vasen puoli ja oikea puoli. 960 01:06:47,000 --> 01:06:51,000 [Student] Mutta miksi et voinut tehdä sitä ilman - 1s ja + 1s? 961 01:06:51,000 --> 01:06:53,000 [Nate] Voisimme asettaa sen yhtä keskipisteen? 962 01:06:53,000 --> 01:07:04,000 Mikä voisi olla ongelmallista siitä? 963 01:07:04,000 --> 01:07:08,000 [Opiskelija] Kai se on tehotonta, koska olet tarkkailun arvo, joka on jo tarkistettu. 964 01:07:08,000 --> 01:07:11,000 [Nate] Aivan, joten Sam on täysin oikeassa. 965 01:07:11,000 --> 01:07:15,000 Jos asetat loppuun ja alkaa sama keskipisteen 966 01:07:15,000 --> 01:07:18,000 sijasta - 1 ja + 1 reflektoiden, 967 01:07:18,000 --> 01:07:22,000 jossain vaiheessa tulevaisuudessa me lopulta tarkistaa keskipisteen uudelleen. 968 01:07:22,000 --> 01:07:26,000 [Opiskelija] aloitin PSET, ja sitten minulla oli jotain 969 01:07:26,000 --> 01:07:30,000 missä Unohdin + 1, ja se juuttui ikuiseen silmukkaan. 970 01:07:30,000 --> 01:07:34,000 Oikea, koska jossain vaiheessa et koskaan saa alkaa ja päättyy 971 01:07:34,000 --> 01:07:39,000 todella päällekkäin. 972 01:07:39,000 --> 01:07:41,000 Cool. 973 01:07:41,000 --> 01:07:44,000 On vielä yksi looginen virhe, ja se on, että tämä pitäisi ehdottomasti olla 974 01:07:44,000 --> 01:07:48,000 if. 975 01:07:48,000 --> 01:07:55,000 Miksi se voisi olla? 976 01:07:55,000 --> 01:07:59,000 >> Syynä on, jos se ei ole if-Näitkö sen, Kevin? 977 01:07:59,000 --> 01:08:02,000 [Kevin] Joo, koska muutat päätepiste. 978 01:08:02,000 --> 01:08:05,000 [Nate] Aivan. 979 01:08:05,000 --> 01:08:07,000 Olemme muuttamassa päätepiste, 980 01:08:07,000 --> 01:08:12,000 ja jos se on kirjoitettu näin-Me tekevät välit- 981 01:08:12,000 --> 01:08:14,000 se tarkistaa asian. 982 01:08:14,000 --> 01:08:18,000 Tässä tapauksessa, jos se onnistuu, keskeytyy ulos toiminto. 983 01:08:18,000 --> 01:08:21,000 Sitten se tarkistaa tämän seuraavan kerran, 984 01:08:21,000 --> 01:08:24,000 ja jos tämä onnistuu, se säätää päätepiste, 985 01:08:24,000 --> 01:08:28,000 ja sitten se jatkuu ja tarkista tässä tapauksessa. 986 01:08:28,000 --> 01:08:31,000 Mutta tässä vaiheessa, emme halua sitä jatkaa tarkkailun. 987 01:08:31,000 --> 01:08:35,000 Onneksi emme ole nollaa keskipisteen täällä, 988 01:08:35,000 --> 01:08:39,000 ja me tiedämme, että tämä asia ei onnistu. 989 01:08:39,000 --> 01:08:44,000 Mutta halusimme ehdottomasti laittaa if siellä 990 01:08:44,000 --> 01:08:48,000 vaikka se saattaa, tässä tapauksessa 991 01:08:48,000 --> 01:08:52,000 koska emme säätämällä keskipiste, sillä olisi merkitystä? 992 01:08:52,000 --> 01:08:54,000 Ei, koska nämä tapaukset ovat kaikki erinomaisia. 993 01:08:54,000 --> 01:08:58,000 Jälleen my bad. 994 01:08:58,000 --> 01:09:01,000 Emme mielestäni tarvitse tätä if. 995 01:09:01,000 --> 01:09:05,000 Voimme kokeilla ja käyttää sitä ja katso mitä tapahtuu. 996 01:09:05,000 --> 01:09:08,000 Rakennus, virhe. 997 01:09:08,000 --> 01:09:12,000 Se johtuu luultavasti siitä, jätin nämä b: n ja e: n täällä. 998 01:09:12,000 --> 01:09:14,000 Onko minulla enää niitä ylös huipulla? 999 01:09:14,000 --> 01:09:16,000 Se ei näytä siltä. 1000 01:09:16,000 --> 01:09:20,000 Me loitontaa, rakentaa, 1001 01:09:20,000 --> 01:09:24,000 siellä se menee, joten nyt jos hakee 15, 1002 01:09:24,000 --> 01:09:28,000 Kyllä. 1003 01:09:28,000 --> 01:09:30,000 Saanen Lähennä 1004 01:09:30,000 --> 01:09:33,000 15, kyllä. Voimme käyttää sitä uudelleen. 1005 01:09:33,000 --> 01:09:36,000 Lataaminen lähdekoodia, rakennus, juoksu. 1006 01:09:36,000 --> 01:09:41,000 Voimme etsiä jotain 13, 1007 01:09:41,000 --> 01:09:45,000 emmekä saa mitään tulostamisen, joten se ei katsonut, että meille. 1008 01:09:45,000 --> 01:09:51,000 Se on hienoa, koska se ei ole meidän luetteloon. 1009 01:09:51,000 --> 01:09:53,000 >> Olemme nyt myöhässä. 1010 01:09:53,000 --> 01:09:55,000 Se tulee olemaan se tällä viikolla. 1011 01:09:55,000 --> 01:10:00,000 Kiitos liittymisestä, ja nähdään myöhemmin. 1012 01:10:00,000 --> 01:10:02,000 >> [CS50.TV]