1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [3 skirsnis] [mažiau patogūs] 2 00:00:03,000 --> 00:00:05,000 >> [Nate Hardison] [Harvardo universiteto] 3 00:00:05,000 --> 00:00:08,000 >> [Tai CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:10,000 >> Viskas gerai, galime pradėti. 5 00:00:10,000 --> 00:00:13,000 Sveiki atvykę į CS50 4 savaičių. 6 00:00:13,000 --> 00:00:19,000 Jei jus vaikinai atverti interneto naršyklę ir atverti pset 3, 7 00:00:19,000 --> 00:00:23,000 Grumtynės su CS50, mes ketiname pradėti vyksta 8 00:00:23,000 --> 00:00:26,000 per ten klausimų skirsnyje. 9 00:00:26,000 --> 00:00:32,000 Tiesiog kaip ir praeitą savaitę, mes dirbti CS50 erdvėse, 10 00:00:32,000 --> 00:00:35,000 jei jūs taip pat traukti, kad iki, kaip gerai, 11 00:00:35,000 --> 00:00:43,000 ir jei jūs einate į priekį ir aplankykite šią nuorodą, kad aš turiu čia viršuje. 12 00:00:43,000 --> 00:00:45,000 Atėjo laikas pradėti. 13 00:00:45,000 --> 00:00:51,000 Mes turime mūsų mažai hi programą čia. Nieko iš proto. 14 00:00:51,000 --> 00:00:55,000 Vienas iš pirmųjų dalykų, aš noriu daryti su jumis, vaikinai, šiandien yra eiti per kelis sprendimus 15 00:00:55,000 --> 00:00:58,000 problemą, 1, natūra, pavyzdžiui, sprendimų, 16 00:00:58,000 --> 00:01:03,000 tik tokiu būdu jūs galite gauti už tai, ką rūšių kodinės matuoklės rašo jaustis, 17 00:01:03,000 --> 00:01:07,000 ką rašote rūšių kodų kitais studentais, 18 00:01:07,000 --> 00:01:10,000 ir turi atsižvelgti į jo išvaizdą, nes aš žinau, tai keista 19 00:01:10,000 --> 00:01:14,000 kai jūs pateikiate išspręsti problemą, ir gauti komentarus 20 00:01:14,000 --> 00:01:18,000 savo versiją, bet kartais tai naudinga pamatyti, kaip kiti žmonės tai padarė, 21 00:01:18,000 --> 00:01:22,000 ypač tie, kurie yra gražus ieškote. 22 00:01:22,000 --> 00:01:27,000 Nes didžioji dalis, buvau tikrai sužavėtas, kad jus vaikinai pagamintų sprendimų. 23 00:01:27,000 --> 00:01:31,000 Aš dar pradėjo ieškoti savo problemą, 2s, bet jei jie nieko kaip ir pirmasis, 24 00:01:31,000 --> 00:01:34,000 tai reiškia, kad nieko, bet gerų dalykų. 25 00:01:34,000 --> 00:01:40,000 >> Jei pažvelgti į mano peržiūrų, pradėkime visą kelią žemyn redakcijos 1, 26 00:01:40,000 --> 00:01:47,000 ir mes ketiname priimti greitai pažvelgti per Mario tirpalo. 27 00:01:47,000 --> 00:01:54,000 Jei jūs traukite tai padaryti, šios programos, kad mes ketiname pateikti duomenys yra teisingi. 28 00:01:54,000 --> 00:01:56,000 Nebuvo teisingumą klausimai su šių problemų, bet, 29 00:01:56,000 --> 00:01:59,000 norime pakalbėti šiek tiek apie skirtingus projektavimo klausimais 30 00:01:59,000 --> 00:02:03,000 buvo naudojami čia. 31 00:02:03,000 --> 00:02:08,000 Vienas iš dalykų, kad buvo įdomu, apie sprendimą 32 00:02:08,000 --> 00:02:11,000 yra tai, kad šią naują konstruktą, vadinamą svaras apibrėžti, 33 00:02:11,000 --> 00:02:15,000 kartais taip pat vadinamas maišos apibrėžti. 34 00:02:15,000 --> 00:02:18,000 Leiskite man priartinti jį čia. 35 00:02:18,000 --> 00:02:24,000 # Define leidžia jums suteikti vardus šių savo programos numerius. 36 00:02:24,000 --> 00:02:28,000 Tokiu atveju, didžiausią aukštį piramidės Mario 37 00:02:28,000 --> 00:02:34,000 buvo 23 ir užuot mano kodas 23 38 00:02:34,000 --> 00:02:37,000 mes norėtų atkreipti dėmesį, kad 23 kodavimo kietajame - 39 00:02:37,000 --> 00:02:43,000 vietoj tai suteikia pavadinimas MAX_HEIGHT į šį numerį, 40 00:02:43,000 --> 00:02:48,000 taip, kad žemyn čia mano do-while cikle 41 00:02:48,000 --> 00:02:51,000 jūs iš tikrųjų galite kreiptis į MAX_HEIGHT 42 00:02:51,000 --> 00:02:55,000 Vietoj to, kad skaičių 23. 43 00:02:55,000 --> 00:02:57,000 [Studentų] Ką daryti, kad privalumas? 44 00:02:57,000 --> 00:02:59,000 Tai puikus klausimas. 45 00:02:59,000 --> 00:03:03,000 Vienas iš jų yra skaitomumas. 46 00:03:03,000 --> 00:03:08,000 Privalumas naudojant šią programinę įrangą, # define aiškumą. 47 00:03:08,000 --> 00:03:11,000 Kai aš skaitau šį kodą, matau, kas vyksta. 48 00:03:11,000 --> 00:03:15,000 >> Aš galiu pamatyti, ši sąlyga, kad čia mes išbandome 49 00:03:15,000 --> 00:03:19,000 aukščio yra <0, kurioje galėtume taip pat įvardija 50 00:03:19,000 --> 00:03:22,000 minimalus aukštis arba min aukštis. 51 00:03:22,000 --> 00:03:25,000 Kitas privalumas yra tai, kad aš galiu tada skaityti tos linijos poilsio 52 00:03:25,000 --> 00:03:30,000 , kad mes taip pat tikrinami, siekiant įsitikinti, kad aukštis yra ne didesnis nei maksimalus aukštis, 53 00:03:30,000 --> 00:03:35,000 nes mes ketiname toliau, o aukštis yra didesnis nei maksimalus aukštis. 54 00:03:35,000 --> 00:03:40,000 Kitas privalumas yra tai, jei aš nutolinti šiek tiek 55 00:03:40,000 --> 00:03:49,000 , jei aš paleisti šią programą, ir aš jį, tarkim, su 23 dabar, 56 00:03:49,000 --> 00:03:52,000 jis bus atspausdinti visus tik 23 eilutes, pavyzdžiui, kad. 57 00:03:52,000 --> 00:03:54,000 Bet pasakyti, kad aš norėjau pakeisti maksimalų aukštį, 58 00:03:54,000 --> 00:03:57,000 ir dabar noriu apriboti maksimalią piramidės aukštis 59 00:03:57,000 --> 00:04:06,000 būti tik pasakyti, kad žmogus, kad buvo madingas. 60 00:04:06,000 --> 00:04:14,000 # Include # define MAX_HEIGHT, 61 00:04:14,000 --> 00:04:18,000 ir tegul sako, kad mes norėjome nustatyti lygi 10. 62 00:04:18,000 --> 00:04:22,000 Dabar šiuo metu, viskas, ką aš turėjau padaryti, buvo jį pakeisti tai vienoje vietoje. 63 00:04:22,000 --> 00:04:27,000 Galiu perkompiliuoti kodą, ir dabar, jei aš pabandyti ir įrašykite 12, 64 00:04:27,000 --> 00:04:30,000 jis bus greitai man vėl. 65 00:04:30,000 --> 00:04:33,000 Šiuo atveju, mes tik naudojant MAX_HEIGHT vieną kartą. 66 00:04:33,000 --> 00:04:37,000 Tai nereiškia, kad didelis vargo eiti 67 00:04:37,000 --> 00:04:40,000 ir pakeiskite jį while cikle, jei jums reikia. 68 00:04:40,000 --> 00:04:44,000 Tačiau programose, kur jūs nuorodas į tą patį magišką skaičių 69 00:04:44,000 --> 00:04:47,000 vėl ir vėl, tai # define mechanizmas yra tikrai patogu 70 00:04:47,000 --> 00:04:52,000 nes jums tiesiog pakeisti jį vieną kartą failo tai paprastai, kur jūs juos viršuje 71 00:04:52,000 --> 00:04:57,000 ir pakeisti sunkiasi per likusią rinkmenos dalį. 72 00:04:57,000 --> 00:05:02,000 >> Kitų dalykų, aš norėjau atkreipti dėmesį į šią užduotį, kad aš maniau, atrodė tikrai gražus, 73 00:05:02,000 --> 00:05:05,000 kintamųjų pavadinimų. 74 00:05:05,000 --> 00:05:14,000 Jūs čia matote, kad mes turime sveikasis skaičius kintamųjų, vadinamas eilutė ir vadinamas aukštis. 75 00:05:14,000 --> 00:05:20,000 Erdves, maišos, ji padeda kodas šiek tiek lengviau skaityti, 76 00:05:20,000 --> 00:05:25,000 daro tai šiek tiek labiau suprantama, kas iš tikrųjų vyksta. 77 00:05:25,000 --> 00:05:31,000 Tai priešingai nei naudojant, tarkim, atsitiktines raides 78 00:05:31,000 --> 00:05:35,000 arba tiesiog visiškai nesuprantama. 79 00:05:35,000 --> 00:05:39,000 Paskutinis dalykas, aš atkreipti dėmesį yra tai, kad už kilpos, 80 00:05:39,000 --> 00:05:45,000 Dažnai šie Iterator kintamieji, šie skaitikliai, kad jums naudoti savo kilpas, 81 00:05:45,000 --> 00:05:51,000 ji standartas ir tradicinių pradėti juos arba i ir j, ir tada k 82 00:05:51,000 --> 00:05:54,000 ir vyksta iš ten, jei jums reikia daugiau kintamųjų, 83 00:05:54,000 --> 00:05:56,000 ir tai tik konvencija. 84 00:05:56,000 --> 00:05:58,000 Yra daug konvencijos. 85 00:05:58,000 --> 00:06:00,000 Tai priklauso nuo programavimo kalba, jūs naudojate. 86 00:06:00,000 --> 00:06:04,000 Tačiau C, mes paprastai prasideda su i. 87 00:06:04,000 --> 00:06:08,000 Tai nereiškia, kad prasminga naudoti, tarkim, a arba b 88 00:06:08,000 --> 00:06:13,000 priklausomai nuo situacijos. 89 00:06:13,000 --> 00:06:15,000 Štai ir viskas už šį vieną. 90 00:06:15,000 --> 00:06:25,000 Jei dabar atsigriebti peržiūrima 2, matysite kitą Mario, 91 00:06:25,000 --> 00:06:29,000 ir tai vienas yra panašus į kitą, kad mes tiesiog matė, 92 00:06:29,000 --> 00:06:32,000 tačiau ji kažką tipo kietas. 93 00:06:32,000 --> 00:06:38,000 Jei pažvelgsime į šiame skyriuje čia vidinis viduje už linijos, 94 00:06:38,000 --> 00:06:44,000 jie naudoja nors crazy ieškote čia sintaksė šioje eilutėje. 95 00:06:44,000 --> 00:06:47,000 Tai vadinama trijų komponentų operatorius. 96 00:06:47,000 --> 00:06:53,000 Tai yra jei else, sutrauktos į vieną eilutę. 97 00:06:53,000 --> 00:06:57,000 Sąlyga yra ši skliausteliuose. 98 00:06:57,000 --> 00:07:05,000 Tai tolygu pasakymui, jei j 00:07:10,000 Ir kas tada kad jų turinys, jei blokas bus erdvė 100 00:07:10,000 --> 00:07:16,000 ir tada kas kita būtų turinys #. 101 00:07:16,000 --> 00:07:20,000 Tai iš esmės priskirdami erdvę, į šį kintamąjį rodiklį. 102 00:07:20,000 --> 00:07:24,000 Tai pradėti erdvę bendrosios kintamojo turinį, 103 00:07:24,000 --> 00:07:29,000 jei ši sąlyga yra įvykdyta, ir jeigu ši sąlyga netenkinama, 104 00:07:29,000 --> 00:07:32,000 blokas kintamasis gauna #. 105 00:07:32,000 --> 00:07:37,000 Ir tada, žinoma, o ne kurti visą eilutę 106 00:07:37,000 --> 00:07:43,000 ir spausdinti viską tame gale, šis sprendimas spausdina jį vieną simbolį vienu metu. 107 00:07:43,000 --> 00:07:48,000 Gana kietas. 108 00:07:48,000 --> 00:07:53,000 >> Dar pora dalykų pažvelgti. Mes pereiti godus. 109 00:07:53,000 --> 00:07:58,000 Dabar, jei mes žiūrime į godus, tai pirmasis sprendimas 110 00:07:58,000 --> 00:08:00,000 naudoja šias # apibrėžia gana šiek tiek. 111 00:08:00,000 --> 00:08:06,000 Mes turime viena konstanta apibrėžta kiekviena skirtingais numeriais šioje programoje. 112 00:08:06,000 --> 00:08:12,000 Mes turime vieną dolerio centų už, vienas ketvirčius, dimes, Nickels ir centus, 113 00:08:12,000 --> 00:08:15,000 ir dabar, jei mes slinkite žemyn ir skaityti kodą, 114 00:08:15,000 --> 00:08:22,000 matome standartinę do-while cikle spausdinimo viską. 115 00:08:22,000 --> 00:08:25,000 Šios problemos esmė rūšies supranta, kad 116 00:08:25,000 --> 00:08:29,000 jums reikia konvertuoti į plūdę, kad jums skaityti iš vartotojo iki sveikojo skaičiaus 117 00:08:29,000 --> 00:08:32,000 tiksliai padaryti matematiką, ir tai yra todėl, kad 118 00:08:32,000 --> 00:08:36,000 su slankaus kablelio skaičiais, kaip mes kalbėjome apie tai paskaitą trumpai 119 00:08:36,000 --> 00:08:41,000 neįmanoma tiksliai atspindėti kiekvieną skaičių linijoje vertę 120 00:08:41,000 --> 00:08:47,000 , nes yra be galo daug reikšmių tarp 3 ir, tarkim, 3,1 net. 121 00:08:47,000 --> 00:08:54,000 Jūs galite turėti 3,01 ir 3,001 ir 3,0001, ir jūs galite nesustoti. 122 00:08:54,000 --> 00:09:00,000 Pasirodo, kai dirbate su pinigais, dažnai norite konvertuoti 123 00:09:00,000 --> 00:09:05,000 į sveikojo skaičiaus formatą, kad jūs ne prarasti centus ir kad daiktų rūšis. 124 00:09:05,000 --> 00:09:09,000 Daryti, kad ir apvalinimo buvo raktas. 125 00:09:09,000 --> 00:09:14,000 Šis tirpalas naudojamas visiškai paprastas, puikus algoritmą, 126 00:09:14,000 --> 00:09:17,000 kuris decremented likusių centų skaičių, pirmiausia ketvirčius, 127 00:09:17,000 --> 00:09:19,000 dimes, Nickels, tada centus, 128 00:09:19,000 --> 00:09:24,000 ir pridedant prie monetų kiekvieną kartą. 129 00:09:24,000 --> 00:09:31,000 >> Kitas sprendimas, kad mes pamatyti, kaip aš nutolinti ir pereiti prie peržiūrima 4, 130 00:09:31,000 --> 00:09:40,000 pradžia buvo labai panaši, bet vietoj to naudojo div ir mod 131 00:09:40,000 --> 00:09:44,000 , dešinę pusę užmetus ant čia apskaičiuoti centų. 132 00:09:44,000 --> 00:09:50,000 Tai ketvirčius skaičius yra lygus centų skaičius, padalintas iš 25, 133 00:09:50,000 --> 00:09:53,000 ir priežastis, tai veikia, nes mes darome, sveikasis skaičius pasidalijimas, 134 00:09:53,000 --> 00:09:58,000 todėl reikia išpilti lauk bet kokia likusi. 135 00:09:58,000 --> 00:10:02,000 [Studentų] Ar mes turime pakomentavęs paiešką? 136 00:10:02,000 --> 00:10:05,000 Tai tikrai priklauso. 137 00:10:05,000 --> 00:10:08,000 [Studentų] Jūs komentuodamas daugiau nei kodą čia. 138 00:10:08,000 --> 00:10:16,000 Aha, ir todėl yra krūva skirtingų filosofijų apie tai. 139 00:10:16,000 --> 00:10:21,000 Mano asmeninė filosofija yra tai, kad jūsų kodas yra tikrai tiesa, 140 00:10:21,000 --> 00:10:24,000 kaip jūsų kodas yra, kas iš tikrųjų vykdyti kompiuteryje, 141 00:10:24,000 --> 00:10:29,000 ir, kad jūsų kodas turi būti skaitomi kaip įmanoma, nereikėjo tiek daug komentarų. 142 00:10:29,000 --> 00:10:33,000 Tai sakė, kai darai dalykus, kurie yra natūra sudėtinga matematiškai 143 00:10:33,000 --> 00:10:38,000 arba algoritmiškai, tai gera komentarą, kad būtų galima 144 00:10:38,000 --> 00:10:43,000 pridėti papildomą dimensiją, papildomą sluoksnį, kas skaito savo kodą. 145 00:10:43,000 --> 00:10:49,000 Šių sprendimų, dažnai jie komentavo griežčiau, vien dėl to, kad 146 00:10:49,000 --> 00:10:52,000 mes norime, kad būtų galima juos platinti ir, kad žmonės juos pasiimti 147 00:10:52,000 --> 00:10:56,000 ir skaityti juos gana lengvai. 148 00:10:56,000 --> 00:11:05,000 Bet tikrai, aš sutinku, kad tai yra sunkus. 149 00:11:05,000 --> 00:11:07,000 [Studentų] Bet kai kyla abejonių, eikite sunkesnis? 150 00:11:07,000 --> 00:11:10,000 Kai kyla abejonių, eikite sunkesnis. 151 00:11:10,000 --> 00:11:17,000 Kai kurie žmonės kartais sako return 0 arba kažką panašaus, kad. 152 00:11:17,000 --> 00:11:20,000 Manau, kad tai juokinga komentaras. 153 00:11:20,000 --> 00:11:22,000 Aiškiai nurodyta, kad tai, kas vyksta. 154 00:11:22,000 --> 00:11:25,000 Man nereikia anglų man pasakyti, kad. 155 00:11:25,000 --> 00:11:28,000 Kartais žmonės rašyti stuff like "kthxbai!" 156 00:11:28,000 --> 00:11:32,000 Kad koks mielas, bet taip pat ne 157 00:11:32,000 --> 00:11:35,000 kad ne, todėl skirtumą tarp komentavimo taškų ar ne. 158 00:11:35,000 --> 00:11:41,000 Šie rūšių komentarai tik ha, ha. 159 00:11:41,000 --> 00:11:43,000 Cool. 160 00:11:43,000 --> 00:11:48,000 >> Šiuo metu, pradėkime dirbti problemą, 3 skyrių klausimų. 161 00:11:48,000 --> 00:11:52,000 Jei jus vaikinai traukti tai padaryti dar kartą, 162 00:11:52,000 --> 00:11:55,000 kaip su praėjusia savaite, mes neketiname žiūrėti šortai šiame skyriuje. 163 00:11:55,000 --> 00:12:00,000 Mes pranešime jums, vaikinai, padaryti, kad savo laiku, ir kalbėti apie klausimus. 164 00:12:00,000 --> 00:12:05,000 Bet dabar šiame skyriuje mes ketinate praleisti šiek tiek daugiau laiko 165 00:12:05,000 --> 00:12:11,000 kalbėti apie mažiau kodavimo pagrindai 166 00:12:11,000 --> 00:12:15,000 kaip mes praeitą savaitę, ir vietoj to, mes ketiname daugiau dėmesio skirti 167 00:12:15,000 --> 00:12:22,000 šiek tiek daugiau teorijos, todėl kalbame apie dvejetainis paieškos ir tada rūšiavimas. 168 00:12:22,000 --> 00:12:27,000 Nuo Tiems iš jūsų, kurie buvo kartu su paskaitos, 169 00:12:27,000 --> 00:12:30,000 gali kas nors duoti man, kas skirtumas yra Priminti 170 00:12:30,000 --> 00:12:35,000 tarp dvejetainis paieškos ir tiesinė paieška? 171 00:12:35,000 --> 00:12:37,000 Kas vyksta? Tikrai. 172 00:12:37,000 --> 00:12:42,000 Tiesinių paieškos ieško per kiekvieną išrūšiuotų sąrašo elementas 173 00:12:42,000 --> 00:12:45,000 vienas vienas vieną po vieną, 174 00:12:45,000 --> 00:12:50,000 dvejetainis paieškos padalija sąrašą į 2 grupes, 175 00:12:50,000 --> 00:12:57,000 patikrinimai Jei raktus vertės, kad jūs ieškote, yra didesnis arba mažesnis nei viduryje vertė 176 00:12:57,000 --> 00:13:00,000 , kad jūs tiesiog rasti, ir, jei tai yra mažiau nei, jis eina su mažesniu sąrašą 177 00:13:00,000 --> 00:13:03,000 ir tada suskirsto, kad vėl, ar tą pačią funkciją 178 00:13:03,000 --> 00:13:07,000 visą kelią žemyn, kol jis suranda viduryje yra lygus pačios vertės. 179 00:13:07,000 --> 00:13:10,000 Į dešinę. 180 00:13:10,000 --> 00:13:12,000 >> Kodėl mums rūpi? 181 00:13:12,000 --> 00:13:20,000 Kodėl mes kalbame apie dvejetainis paieškos palyginti su linijiniu paieškos? 182 00:13:20,000 --> 00:13:22,000 Taip. 183 00:13:22,000 --> 00:13:24,000 Dvejetainis yra daug greičiau, todėl, jei jums dvigubai problemos mastą 184 00:13:24,000 --> 00:13:27,000 tai trunka dar vieną žingsnį, o ne du kartus daugiau. 185 00:13:27,000 --> 00:13:29,000 Tiksliai. 186 00:13:29,000 --> 00:13:31,000 Tai puikus atsakymas. 187 00:13:31,000 --> 00:13:36,000 Linijinis paieška yra labai tikrinti vieną elementą vienu metu, 188 00:13:36,000 --> 00:13:39,000 kaip matėme pačią pirmąją dieną paskaitos 189 00:13:39,000 --> 00:13:42,000 , kai Dovydas nuėjo per savo telefonų knygos pavyzdys 190 00:13:42,000 --> 00:13:45,000 ir kankina vieną puslapį, telefono knygos vienu metu 191 00:13:45,000 --> 00:13:47,000 ir nuolat daro, kad ir vėl ir vėl, 192 00:13:47,000 --> 00:13:51,000 ji ketina imtis jam tikrai ilgai rasti kas nors telefonų knygoje, 193 00:13:51,000 --> 00:13:55,000 nebent, žinoma, jis ieško ką nors, pačioje pradžioje abėcėlės. 194 00:13:55,000 --> 00:14:00,000 Dvejetainis paieškos, galite eiti daug greičiau, 195 00:14:00,000 --> 00:14:05,000 ir tai ne tik du kartus taip greitai, arba 3 kartus taip greitai, arba 4 kartus greičiau. 196 00:14:05,000 --> 00:14:13,000 Bet problema tampa mažesni ir mažesni ir mažesni daug greičiau. 197 00:14:13,000 --> 00:14:17,000 Siekdama tai iliustruoti mes pradėsime kalbėti apie tai, kas vyksta 198 00:14:17,000 --> 00:14:21,000 kai mes rašome Dvejetainė paieška. 199 00:14:21,000 --> 00:14:27,000 Po ranka problema yra ta, kad jei aš turiu skaičių masyvo, 200 00:14:27,000 --> 00:14:40,000 tarkim, 1, 2, 3, 5, 7, 23, 45, 78, 12.323, 201 00:14:40,000 --> 00:14:47,000 ir tada 9 0S toną po jo, 202 00:14:47,000 --> 00:14:52,000 mes norime, kad būtų galima tikrai greitai išsiaiškinti, kas yra 203 00:14:52,000 --> 00:14:57,000 tai skaičių masyvas. 204 00:14:57,000 --> 00:15:00,000 Aš žinau, tai atrodo šiek tiek kvailas ir šiek tiek nenatūralu, 205 00:15:00,000 --> 00:15:02,000 nes dabar ji yra. 206 00:15:02,000 --> 00:15:05,000 Mes turime labai daug elementų masyvą, kuris neturi, 207 00:15:05,000 --> 00:15:08,000 ir jei aš prašau vieną iš jūsų išsiaiškinti, ar 208 00:15:08,000 --> 00:15:11,000 23 yra masyve, galite tai padaryti gana greitai 209 00:15:11,000 --> 00:15:16,000 tik skaitydamas tai ir man sako, "taip" arba "ne". 210 00:15:16,000 --> 00:15:20,000 Analoginė apsvarstyti, yra, įsivaizduokite, jei tai būtų, tarkim, 211 00:15:20,000 --> 00:15:27,000 10.000 eilučių, 20.000 eilučių Excel. 212 00:15:27,000 --> 00:15:31,000 Žinoma, jūs galite padaryti, komandų F arba valdymo f ir atrodyti aukštyn. 213 00:15:31,000 --> 00:15:33,000 Taip pat galite naudoti filtrus ir paieškos stuff 214 00:15:33,000 --> 00:15:37,000 bet jeigu jums ieškoti per tą eilutę failo eilutė po eilutės, 215 00:15:37,000 --> 00:15:40,000 tai užtruktų ilgai jį rasti. 216 00:15:40,000 --> 00:15:42,000 Tai tipo, kaip telefonų knygos, pavyzdžiui, taip pat tais atvejais, kai 217 00:15:42,000 --> 00:15:44,000 niekas atrodo per telefonų knygos viename puslapyje vienu metu. 218 00:15:44,000 --> 00:15:47,000 Paprastai, jie atidaryti jį per vidurį, 219 00:15:47,000 --> 00:15:50,000 arba telefonų knygų ir žodynų, kuriuose daug 220 00:15:50,000 --> 00:15:54,000 jūs iš tikrųjų jį užpleištuotos pirmąją raidę, 221 00:15:54,000 --> 00:16:01,000 pasukt į šį pirmąjį laišką, atidaryti ir pradėti vyksta per ten. 222 00:16:01,000 --> 00:16:03,000 >> Priminti man savo vardą dar kartą. >> Sam. 223 00:16:03,000 --> 00:16:05,000 Samas. 224 00:16:05,000 --> 00:16:11,000 Kaip Sam sakė, kad linijinis paieškos procesas bus labai lėtas, 225 00:16:11,000 --> 00:16:15,000 ir vietoj to, dvejetainis paieškos Kaip tai veikia, kad 226 00:16:15,000 --> 00:16:21,000 kiekvieną kartą, kai mes pereiti per mūsų ieško algoritmo iteracija, 227 00:16:21,000 --> 00:16:27,000 mes ketiname padalinti sąrašą per pusę, iš esmės, 228 00:16:27,000 --> 00:16:33,000 į du mažesnius sąrašus. 229 00:16:33,000 --> 00:16:39,000 Ir tada kitą iteracijos kilpos, mes padalinsime jį vėl 230 00:16:39,000 --> 00:16:44,000 į kitų mažesnių sąrašus. 231 00:16:44,000 --> 00:16:48,000 Kaip matote, problema nuolat vis mažiau ir mažesnių 232 00:16:48,000 --> 00:16:55,000 nes mes nuolat Priegaudos išmetimas į jūrą pusę sąrašo kiekvieną kartą. 233 00:16:55,000 --> 00:16:59,000 Kaip veikia ši priegaudos išmetimo į jūrą darbas? 234 00:16:59,000 --> 00:17:05,000 Tik kaip priminimas, ką mes ketiname daryti, jei mes kompiuteris 235 00:17:05,000 --> 00:17:11,000 ir mums buvo, tarkim, ieškant skaičiumi 5, šiame sąraše 236 00:17:11,000 --> 00:17:15,000 yra tai, kad mes turėtume pasirinkti per vidurį. 237 00:17:15,000 --> 00:17:26,000 Šio sąrašo viduryje, nes yra 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 numerių, 238 00:17:26,000 --> 00:17:32,000 mes norime pasirinkti arba 4-ojoje padėtyje arba 5-oje padėtyje, 239 00:17:32,000 --> 00:17:38,000 ir mes vadiname, kad mūsų sąraše viduryje. 240 00:17:38,000 --> 00:17:42,000 Pasirinkti numerį viduryje. 241 00:17:42,000 --> 00:17:51,000 Tada, kaip pasakė Sam, mes patikrinti, kad, jei šis skaičius yra lygus 242 00:17:51,000 --> 00:17:59,000 į numerį, kad mes norime gauti ar mūsų norimą numerį. 243 00:17:59,000 --> 00:18:06,000 , Jei tai lygūs, tada mes ją radau. Mes laimėti. 244 00:18:06,000 --> 00:18:12,000 Jei ji nėra lygi, tada yra pora atvejų. 245 00:18:12,000 --> 00:18:15,000 Du atvejai, skaičius turi būti didesnis nei skaičius, mes ieškome, 246 00:18:15,000 --> 00:18:19,000 ar tai mažiau nei. 247 00:18:19,000 --> 00:18:25,000 Jei tai didesnis, mes einame į dešinę. 248 00:18:25,000 --> 00:18:33,000 Ir jei tai mažiau, mes einame į kairę. 249 00:18:33,000 --> 00:18:41,000 Ir tada mes pakartoti visą procesą iš naujo 250 00:18:41,000 --> 00:18:48,000 sąrašo arba dešinėje pusėje, arba kairę pusę. 251 00:18:48,000 --> 00:18:51,000 >> Šiandienos skyriuje Pirmoji problema yra išsiaiškinti, 252 00:18:51,000 --> 00:18:55,000 , kaip mes iš tikrųjų galėtų pradėti išreikšti tai C kodas. 253 00:18:55,000 --> 00:18:58,000 Mes turime pseudocode čia. 254 00:18:58,000 --> 00:19:04,000 Ką mes pradėti daryti aš atsigriebti visiškai naują erdvę, 255 00:19:04,000 --> 00:19:09,000 išsaugoti šią peržiūrą, kad mes turime šias pastabas vėliau, 256 00:19:09,000 --> 00:19:20,000 mes ištrinti visa tai, ir tada nukopijuokite ir įklijuokite problemą, 257 00:19:20,000 --> 00:19:26,000 šią informaciją į mūsų erdves, ir, tikiuosi, tai nėra pertrauka. 258 00:19:26,000 --> 00:19:28,000 Tobula. 259 00:19:28,000 --> 00:19:33,000 Jei jus vaikinai tai padaryti, nukopijuokite ir įklijuokite šį kodą į savo naują erdvę, 260 00:19:33,000 --> 00:19:43,000 į tuščią vienas. 261 00:19:43,000 --> 00:19:47,000 Pabandykime Danielių. Jei sudaryti ir vykdyti šią programą, ji veikia? 262 00:19:47,000 --> 00:19:49,000 Nr >> Koks jis sako? 263 00:19:49,000 --> 00:19:53,000 Ji sako kontrolė pasiekia ne void funkcija pabaigą. 264 00:19:53,000 --> 00:19:55,000 Taip, todėl leiskite man pabandyti paleisti jį. 265 00:19:55,000 --> 00:19:59,000 Ar jums, vaikinai, matė tai anksčiau? Ar žinote, ką tai reiškia? 266 00:19:59,000 --> 00:20:01,000 Gerai, tegul perpjauti šį šiek tiek. 267 00:20:01,000 --> 00:20:10,000 Jis sako file.c on line 9, 1 stulpelis turime klaidą, kaip jūs sakėte, 268 00:20:10,000 --> 00:20:16,000 ir ji sako, kad ji kyla iš klaidų perspėjimo ir grąžinimo tipą pateikiamas įspėjimas. 269 00:20:16,000 --> 00:20:18,000 Atrodo, kad kažkas vyksta su grįžimo tipo, kuris turi prasmę. 270 00:20:18,000 --> 00:20:21,000 Mes turime ne negaliojančiu funkciją, o tai reiškia, kad mes turime funkciją 271 00:20:21,000 --> 00:20:24,000 negrąžina negaliojančiu. 272 00:20:24,000 --> 00:20:27,000 Void funkcija yra vienas, kad atrodo taip: 273 00:20:27,000 --> 00:20:35,000 void foo (), ir jis yra niekinis, nes grįžimo tipas yra niekinis, 274 00:20:35,000 --> 00:20:38,000 tai reiškia, kad, jei mes turėjome kažką čia 275 00:20:38,000 --> 00:20:45,000 kaip return 1, mes norime gauti už tai kompiliatorius klaida. 276 00:20:45,000 --> 00:20:49,000 Tačiau, mes turime ne void funkcija. 277 00:20:49,000 --> 00:20:51,000 Mūsų ne niekinė funkcija šiuo atveju yra mūsų paieškos funkcija 278 00:20:51,000 --> 00:20:56,000 , nes jis turi grįžimo tipo Bool. 279 00:20:56,000 --> 00:20:59,000 , Kai jis sako, kad kontrolė pasiekia ne void funkcija pabaigą, 280 00:20:59,000 --> 00:21:02,000 tai reiškia, kad raktažodis neturi Grizimas. 281 00:21:02,000 --> 00:21:04,000 Jis negrįžta nieko tipo Bool. 282 00:21:04,000 --> 00:21:09,000 >> Mes galime nustatyti, kad ir ką jūs manote 283 00:21:09,000 --> 00:21:13,000 turėtų grįžti paieška pagal nutylėjimą? 284 00:21:13,000 --> 00:21:16,000 Koks turėtų būti pagal nutylėjimą paieškos gražinama reikšmė? 285 00:21:16,000 --> 00:21:19,000 Todėl, kad tai, ką mes galime įdėti pabaigoje. 286 00:21:19,000 --> 00:21:21,000 Charlotte, ar turite? 287 00:21:21,000 --> 00:21:23,000 True arba false? >> TRUE arba FALSE. 288 00:21:23,000 --> 00:21:26,000 Kuris iš jų? 289 00:21:26,000 --> 00:21:28,000 Klaidinga. Nežinau. 290 00:21:28,000 --> 00:21:30,000 Klaidingas? Pabandykime. 291 00:21:30,000 --> 00:21:32,000 Kodėl norėtumėte pasakyti Return FALSE? Tai puiku intuicija. 292 00:21:32,000 --> 00:21:35,000 [Charlotte] Nežinau. 293 00:21:35,000 --> 00:21:39,000 Mes ketiname gražins false šiuo atveju, nes tai bus mūsų nutylėjimą 294 00:21:39,000 --> 00:21:44,000 jei dėl kažkokių priežasčių sąrašas yra tuščias, arba adata 295 00:21:44,000 --> 00:21:46,000 , kad jūs ieškote, neegzistuoja. 296 00:21:46,000 --> 00:21:50,000 Tada pačioje pabaigoje, jei mes ne return true anksčiau šią funkciją, 297 00:21:50,000 --> 00:21:55,000 visada žinome, kad ši funkcija bus pasakyti, Ne, tai nėra masyve. 298 00:21:55,000 --> 00:21:58,000 Tai ne šieno kupetoje. 299 00:21:58,000 --> 00:22:03,000 Dabar, jei mes sukompiliuoti ir paleisti tai leiskite man išsaugoti, kad mes galėtume ją ištraukite. 300 00:22:03,000 --> 00:22:08,000 Dabar, jei mes sukompiliuoti ir paleisti mūsų programą, jis stato. 301 00:22:08,000 --> 00:22:12,000 Mes gauti mūsų šiek tiek greitai. 302 00:22:12,000 --> 00:22:20,000 Jei aš paspauskite 4-uh-oh. 303 00:22:20,000 --> 00:22:25,000 Nespausdinami nieko. Atrodo, kad viskas baigėsi gerai. 304 00:22:25,000 --> 00:22:35,000 Mes turime užpildyti šią in 305 00:22:35,000 --> 00:22:39,000 Mes kalbėjome apie algoritmas pseudocode šiek tiek atgal. 306 00:22:39,000 --> 00:22:44,000 Leiskite man pamatyti, išskyrus tai, 307 00:22:44,000 --> 00:22:49,000 ir aš traukti, kad algoritmas atgal į viršų dar kartą. 308 00:22:49,000 --> 00:22:51,000 Hito šį vaikiną. Nope. 309 00:22:51,000 --> 00:22:58,000 Ji yra. 310 00:22:58,000 --> 00:23:03,000 Kaip mes tai darome? 311 00:23:03,000 --> 00:23:11,000 Kokia turėtų būti gera strategija pradeda išjungti šį kodą? 312 00:23:11,000 --> 00:23:16,000 Jūs turite pasirinkti per vidurį. 313 00:23:16,000 --> 00:23:23,000 Kaip mes pasirinkti numerį masyvo viduryje? 314 00:23:23,000 --> 00:23:25,000 Kokių nors pasiūlymų? 315 00:23:25,000 --> 00:23:27,000 [Studentų] strlen padalinti iš 2. 316 00:23:27,000 --> 00:23:32,000 Strlen padalinti iš 2. Tai puikus. 317 00:23:32,000 --> 00:23:35,000 Strlen darbai su specialių rūšių masyvų. 318 00:23:35,000 --> 00:23:38,000 Kokių rūšių masyvų? 319 00:23:38,000 --> 00:23:44,000 String matricos, simbolių masyvai. 320 00:23:44,000 --> 00:23:48,000 Tai, kad tos pačios rūšies koncepcija, kad mes norime, 321 00:23:48,000 --> 00:23:52,000 bet mes negalime naudoti strlen nes mes neturime simbolių masyvą. 322 00:23:52,000 --> 00:23:55,000 Mes turime int masyvas. 323 00:23:55,000 --> 00:23:58,000 Bet ką strlen gauti už mus? 324 00:23:58,000 --> 00:24:01,000 Ar žinote, ką jis gauna už mus? 325 00:24:01,000 --> 00:24:03,000 [Studentų] strlen gauna ilgį. 326 00:24:03,000 --> 00:24:05,000 Tiksliai, ji pasireiškia mums ilgį. 327 00:24:05,000 --> 00:24:09,000 Strlen gauna masyvo ilgį už mus. 328 00:24:09,000 --> 00:24:14,000 >> Kaip mes gauname, kad į mūsų dvejetainis paieškos programa? 329 00:24:14,000 --> 00:24:18,000 Kaip sužinoti masyvo ilgį? 330 00:24:18,000 --> 00:24:20,000 [Studentų] strlen? 331 00:24:20,000 --> 00:24:25,000 Tinkamai suformatuotas C styginių masyvo ilgį galite gauti su strlen. 332 00:24:25,000 --> 00:24:31,000 Problema, nors, yra tai, kad mes neturime eilutę masyvo. 333 00:24:31,000 --> 00:24:36,000 Jei šiuo kodu mes žiūrime atgal, mes turime šį sveikąjį skaičių masyvą. 334 00:24:36,000 --> 00:24:38,000 Kaip mes žinome, kaip ilgai? 335 00:24:38,000 --> 00:24:44,000 [Studentų] Ar yra lygiavertis pasekmės, kaip int l ar kažką? 336 00:24:44,000 --> 00:24:49,000 Paaiškėjo, kad iš tikrųjų nėra, ir todėl tam tikra prasme, tai yra 337 00:24:49,000 --> 00:24:52,000 vienas iš tų dalykų, kad tiesiog gera žinoti, apie C, 338 00:24:52,000 --> 00:24:57,000 kad nėra jokio būdo sužinoti masyvo ilgį 339 00:24:57,000 --> 00:24:59,000 jei visi, Aš duosiu jums yra masyvas. 340 00:24:59,000 --> 00:25:02,000 Priežastis, ji dirba su stygos, strlen priežastis darbai, 341 00:25:02,000 --> 00:25:06,000 nes jei eilutė būtų tinkamai suformatuotas, 342 00:25:06,000 --> 00:25:12,000 ji turės, kad ypatingas \ 0 charakterį pačioje pabaigoje. 343 00:25:12,000 --> 00:25:16,000 >> Jūs taip pat galite įsivaizduoti,, jei turite netinkamai suformatuotas eilutę 344 00:25:16,000 --> 00:25:20,000 ir ten ne \ 0 charakteris, tada visa tai nėra dirbti. 345 00:25:20,000 --> 00:25:22,000 [Studentų] Ar galite pridėti \ 0? 346 00:25:22,000 --> 00:25:24,000 Mes galime šiuo atveju. 347 00:25:24,000 --> 00:25:29,000 Mes gali pridėti kažkokią \ 0 348 00:25:29,000 --> 00:25:33,000 arba kažkoks pažymintis pobūdžio, ir tada naudoti, kad. 349 00:25:33,000 --> 00:25:36,000 Bet tai ne visai ketina dirbti 350 00:25:36,000 --> 00:25:40,000 , nes \ 0 yra char tipo, 351 00:25:40,000 --> 00:25:43,000 ir čia mes turime int. 352 00:25:43,000 --> 00:25:46,000 Kitas dalykas yra, jei mes naudoti ypatingą vertę 353 00:25:46,000 --> 00:25:49,000 kaip -1 pažymėti masyvo pabaigos 354 00:25:49,000 --> 00:25:54,000 tada mes niekada negalėjo laikyti -1 mūsų sveikųjų skaičių masyvai. 355 00:25:54,000 --> 00:25:56,000 Mes norime būti įstrigo. 356 00:25:56,000 --> 00:26:00,000 Pasirodo, kad vienintelis būdas gauti ilgį 357 00:26:00,000 --> 00:26:03,000 C masyvo yra faktiškai prisiminti 358 00:26:03,000 --> 00:26:08,000 kai jūs jį, o po to perduoti jį aplink su masyvo 359 00:26:08,000 --> 00:26:14,000 taip, kad, kai aš turėti funkciją, kuri ketina padaryti tam tikrą darbą, 360 00:26:14,000 --> 00:26:18,000 masyvo sveikųjų skaičių ar plūdes arba padvigubėja ar tai, ką jūs, 361 00:26:18,000 --> 00:26:22,000 Aš taip pat reikia suteikti funkciją, kad masyvo ilgį, 362 00:26:22,000 --> 00:26:26,000 ir tai, ką mes padarėme čia, paieškos funkciją. 363 00:26:26,000 --> 00:26:30,000 Jei jums atrodo, ką mes padarėme, kai mes pereiname mūsų masyvas čia, 364 00:26:30,000 --> 00:26:36,000 mes taip pat perduoti ilgio, dydžio. 365 00:26:36,000 --> 00:26:41,000 Jis tiesiog taip atsitinka, kad mes čia vadinamas šį kintamąjį, 366 00:26:41,000 --> 00:26:43,000 šis parametras ar argumentas. 367 00:26:43,000 --> 00:26:46,000 Tai vadinama funkcijos argumentas sąrašą arba parametrų sąrašas, 368 00:26:46,000 --> 00:26:51,000 ir jie taip pat vadinami argumentai arba parametrus. 369 00:26:51,000 --> 00:26:53,000 Žmonės naudoja skirtingus terminus skirtingu laiku. 370 00:26:53,000 --> 00:26:55,000 Aš kartais sukeiskite juos sau. 371 00:26:55,000 --> 00:27:00,000 Jis tiesiog taip atsitinka, kad šis kintamasis pavadintas panašiai 372 00:27:00,000 --> 00:27:03,000 to # define čia. 373 00:27:03,000 --> 00:27:06,000 Bet jie nėra tas pats dalykas. 374 00:27:06,000 --> 00:27:11,000 Kapitalizacija tikrai svarbu. 375 00:27:11,000 --> 00:27:14,000 >> Jei jums atrodo, kas vyksta čia, mes skelbiame 376 00:27:14,000 --> 00:27:18,000 mūsų int masyvas, kuris mes vadinami numeriai. 377 00:27:18,000 --> 00:27:23,000 Mes savo dydį, kuris atitinka mūsų # define viršuje. 378 00:27:23,000 --> 00:27:27,000 Tai bus 8. 379 00:27:27,000 --> 00:27:35,000 Ir tada, kai mes tada skambinkite į mūsų paieškos funkcija apačioje, 380 00:27:35,000 --> 00:27:40,000 mes pereiname numerį mes norime ieškoti, mes raginami, 381 00:27:40,000 --> 00:27:43,000 įgytas iš vartotojo. 382 00:27:43,000 --> 00:27:46,000 Mes pereiname masyvą, šiuos numerius, 383 00:27:46,000 --> 00:27:51,000 ir tada mes taip pat turi perduoti masyvo dydžio, 384 00:27:51,000 --> 00:27:57,000 8 dydžio vertė pasireiškia saugomi 385 00:27:57,000 --> 00:28:01,000 arba perduoti šį kintamąjį, vadinamas dydis. 386 00:28:01,000 --> 00:28:08,000 Mes turime masyvo dydį. 387 00:28:08,000 --> 00:28:11,000 Dabar, jei mes grįžti į tai, ką mes kalbame apie anksčiau, 388 00:28:11,000 --> 00:28:14,000 Manau, kad Missy išvedė mintį, kad tai, ką reikia padaryti yra gauti iš masyvo ilgis 389 00:28:14,000 --> 00:28:20,000 ir padalinsime jį į 2, ir kad duos mums viduryje. 390 00:28:20,000 --> 00:28:22,000 Pažiūrėkime. 391 00:28:22,000 --> 00:28:25,000 Galiu turėti ką nors rašyti ir išsaugokite jį į savo erdvę? 392 00:28:25,000 --> 00:28:27,000 Kaip apie Leila? 393 00:28:27,000 --> 00:28:31,000 Ar aš jums rašyti šią? 394 00:28:31,000 --> 00:28:35,000 Rašyti pirmoje eilutėje, kur jūs imtis iš masyvo ilgį ir gauti viduryje 395 00:28:35,000 --> 00:28:41,000 ir laikyti jį į naują kintamąjį. 396 00:28:41,000 --> 00:28:44,000 Aš duosiu jums keletą sekundžių. Ar jūs pasiruošę? 397 00:28:44,000 --> 00:28:46,000 [Studentų nesigirdi] 398 00:28:46,000 --> 00:28:50,000 Žinoma, galėčiau Ar jūs apskaičiuoti viduryje 399 00:28:50,000 --> 00:28:55,000 kaugė masyvo viduje paieškos funkcija 400 00:28:55,000 --> 00:29:03,000 naudojant šieno kupetoje masyvo ilgį, kuris yra kintamas dydis? 401 00:29:03,000 --> 00:29:08,000 Nieko sudėtinga čia. 402 00:29:08,000 --> 00:29:12,000 [Leila] Tiesiog dydis / 2 ir "just- 403 00:29:12,000 --> 00:29:17,000 Ir išsaugokite jį ir paspauskite mygtuką "Išsaugoti" čia viršuje, 404 00:29:17,000 --> 00:29:19,000 ir mes ją ištraukite. 405 00:29:19,000 --> 00:29:22,000 Tobula. 406 00:29:22,000 --> 00:29:28,000 Čia mes eiti. Nuostabus. 407 00:29:28,000 --> 00:29:30,000 >> Kaip yra, tai bus sudaryti? 408 00:29:30,000 --> 00:29:32,000 [Leila] Ne, ji turi būti didesnė. 409 00:29:32,000 --> 00:29:34,000 [Nate] Taip, taip, ką mes turime daryti? 410 00:29:34,000 --> 00:29:36,000 [Leila] Kaip int Mediana ar kažką. 411 00:29:36,000 --> 00:29:41,000 Nuostabus. Taip, galime tai padaryti, int viduryje = dydis. 412 00:29:41,000 --> 00:29:44,000 Ar tai sudaryti? 413 00:29:44,000 --> 00:29:47,000 Tegul ištrinti šį komentarą ir gauti jį iš kelio. 414 00:29:47,000 --> 00:29:50,000 Kas nebus sudaryti apie tai? 415 00:29:50,000 --> 00:29:52,000 Mes nieko nedaryti su sveikojo skaičiaus, 416 00:29:52,000 --> 00:29:55,000 todėl mes turime jį išspausdinti ar kažkas panašaus. 417 00:29:55,000 --> 00:29:58,000 Taip, tiksliai. 418 00:29:58,000 --> 00:30:00,000 Mes susisieksime nenaudojamą kintamąjį. 419 00:30:00,000 --> 00:30:02,000 Ką dar nesiruošia dirbti apie tai? 420 00:30:02,000 --> 00:30:06,000 Manau, kad jūs kažką pasakė, Sam. Kabliataškiais. 421 00:30:06,000 --> 00:30:08,000 Taip, aš trūksta šių kabliataškiais. 422 00:30:08,000 --> 00:30:14,000 Jis bus pastovus dalykas visoje termino. 423 00:30:14,000 --> 00:30:17,000 Paskutinis dalykas, aš padarysiu, aš įdėti tam tikrą tarpą iš abiejų pusių 424 00:30:17,000 --> 00:30:23,000 šio operatoriaus čia, nes tai paprastai, kaip mes tai darome 425 00:30:23,000 --> 00:30:26,000 pagal mūsų stiliaus vadove. 426 00:30:26,000 --> 00:30:29,000 Mes turime mūsų masyvas įpusėjo. 427 00:30:29,000 --> 00:30:32,000 Dabar, jei mes prisimename mūsų algoritmas, 428 00:30:32,000 --> 00:30:37,000 tai, kas buvo antrasis žingsnis, kad mes turėjome daryti, kai mes turime viduryje? 429 00:30:37,000 --> 00:30:42,000 [Studentų] Jei tai didesnis [nesigirdi]. 430 00:30:42,000 --> 00:30:48,000 Taip, kad mes turime padaryti kažkokią palyginimo, ir ką mes čia palyginti? 431 00:30:48,000 --> 00:30:53,000 Jūs sakė, kad jei jis yra didesnis nei. Kas tai yra šiame sakinyje nuoroda į? 432 00:30:53,000 --> 00:30:57,000 Skaičius, kuris ateina, jei tai didesnis nei vidurį, tada eiti į masyvą? 433 00:30:57,000 --> 00:31:05,000 Tiksliai, todėl, kad ateina, kai mes- 434 00:31:05,000 --> 00:31:10,000 Adata, todėl mes palyginti adatos, 435 00:31:10,000 --> 00:31:12,000 ir ką mes, palyginti su adatos? 436 00:31:12,000 --> 00:31:15,000 Nes adata yra tai, ko mes ieškome. 437 00:31:15,000 --> 00:31:18,000 Mes lyginant jį patekti į vidurį. 438 00:31:18,000 --> 00:31:21,000 >> Bet ar tai prasminga patikrinti, 439 00:31:21,000 --> 00:31:27,000 jei adata = viduryje? 440 00:31:27,000 --> 00:31:32,000 Ar tai prasminga? 441 00:31:32,000 --> 00:31:35,000 Ar kas nors nesutinkate? 442 00:31:35,000 --> 00:31:40,000 Leiskite give it a try, jei (adatos == viduryje). 443 00:31:40,000 --> 00:31:42,000 [Studentų] Ar printf jūs ją radau. 444 00:31:42,000 --> 00:31:51,000 [Nate] printf ("Mes radome \ n"); 445 00:31:51,000 --> 00:31:56,000 Kitaip-Aš ketina pradėti daryti kažką kita čia. 446 00:31:56,000 --> 00:32:00,000 Aš ruošiuosi pradėti naudoti petnešos aplink, jei ataskaitų visą laiką 447 00:32:00,000 --> 00:32:05,000 tik todėl, kad, jei mes pridėti daugiau daiktų, po to 448 00:32:05,000 --> 00:32:07,000 mes negalime gauti kompiliatorius. 449 00:32:07,000 --> 00:32:09,000 Taip, Sam. Jūs turite tašką. 450 00:32:09,000 --> 00:32:12,000 Problema ta, kad viduryje atstovauja poziciją masyve, 451 00:32:12,000 --> 00:32:15,000 , bet jūs galite gauti jį atstovauti toje masyvo pozicijos vertę. 452 00:32:15,000 --> 00:32:17,000 Tai puikus klausimas. 453 00:32:17,000 --> 00:32:19,000 Ar visi išgirsti, ką pasakė Sam? 454 00:32:19,000 --> 00:32:22,000 Jis sakė, kad viduryje yra 455 00:32:22,000 --> 00:32:28,000 atstovauja tik masyvo poziciją, tačiau tai nėra faktinis elementas masyve. 456 00:32:28,000 --> 00:32:30,000 Jei manote, kad apie kodą, kaip parašyta dabar, 457 00:32:30,000 --> 00:32:35,000 , jei pažvelgsime į šio masyvo žemyn čia, kuris turi 8 elementai 458 00:32:35,000 --> 00:32:39,000 kas yra viduryje bus šią funkciją vertė? 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 Jei mes ieškome skaičiumi 4 - 462 00:32:51,000 --> 00:32:54,000 ir mes galime tiesiog paleisti šį kodą ir įdėti šiek tiek liūdna veido čia 463 00:32:54,000 --> 00:32:58,000 nes mes neturėjome rasti tai, jei mes paleisti šį kodą 464 00:32:58,000 --> 00:33:04,000 kaip yra dabar, įkelti jį, statybos, leiskite man slinkti žemyn, 465 00:33:04,000 --> 00:33:09,000 ir jei mes ieškome skaičiumi 4, 466 00:33:09,000 --> 00:33:18,000 mes nustatėme, bet mes ne gauti tai printf taip. 467 00:33:18,000 --> 00:33:23,000 Viena iš priežasčių yra tai, kad mes ne return true, 468 00:33:23,000 --> 00:33:26,000 bet ar mes tikrai rasti 4? 469 00:33:26,000 --> 00:33:28,000 Ir Sam sakydamas "ne". 470 00:33:28,000 --> 00:33:31,000 Ką mes rasti? 471 00:33:31,000 --> 00:33:35,000 Mes tikrai rado viduryje, o jei mes žiūrime į masyvo žemyn čia, 472 00:33:35,000 --> 00:33:38,000 tai bus 4 indeksuoti elementas, kad mes ieškome, 473 00:33:38,000 --> 00:33:42,000 kuris yra 23. 474 00:33:42,000 --> 00:33:46,000 >> Kaip mes faktiškai gauti per vidurį, kad elementas 475 00:33:46,000 --> 00:33:48,000 ir ne tik viduryje? 476 00:33:48,000 --> 00:33:52,000 [Studentų] Mes norėtume įvesti char arba kažkas? 477 00:33:52,000 --> 00:33:55,000 Ką tai padaryti, tiesiog iš smalsumo? 478 00:33:55,000 --> 00:33:57,000 Ar galite detaliau paaiškinti šiek tiek daugiau? 479 00:33:57,000 --> 00:34:02,000 Jūs turite pakeisti padėtį į numerį, 480 00:34:02,000 --> 00:34:05,000 todėl jūs turite padaryti tam tikrą ryšį, aš manau, kad char, bet ji gali būti. 481 00:34:05,000 --> 00:34:07,000 Taip, tai gera vieta. 482 00:34:07,000 --> 00:34:12,000 Mes jau daro daug šio konvertuojančio pozicijų į simbolių, šių simbolių, 483 00:34:12,000 --> 00:34:14,000 pirmųjų dviejų probleminių rinkinių. 484 00:34:14,000 --> 00:34:18,000 Pasirodo, kad čia, tai yra beveik panašios į 485 00:34:18,000 --> 00:34:24,000 patekti i-osios eilutės požymį, jei tai turi prasmę. 486 00:34:24,000 --> 00:34:30,000 Čia mes norime pasiekti viduryje elementas. 487 00:34:30,000 --> 00:34:34,000 Kaip mes tai darome? 488 00:34:34,000 --> 00:34:39,000 Kevin, jūs turite kokių nors pasiūlymų, kaip mes galime padaryti, kad? 489 00:34:39,000 --> 00:34:44,000 Jūs galite padaryti, kaugė, skliaustai atidaromi, viduryje, uždarytas laikiklį. 490 00:34:44,000 --> 00:34:46,000 Ar rašote, kad už mus? 491 00:34:46,000 --> 00:34:51,000 Išsaugokite jį čia, ir mes traukti, kad iki. 492 00:34:51,000 --> 00:34:56,000 Mes ieškome šioje eilutėje 9, 493 00:34:56,000 --> 00:34:59,000 ir mes supranta, kad mes nenorime, palyginti adatą į vidurį, 494 00:34:59,000 --> 00:35:03,000 bet vietoj to, mes norime palyginti adatą 495 00:35:03,000 --> 00:35:07,000 padėtyje Mediana per mūsų kaugė masyvo elementas. 496 00:35:07,000 --> 00:35:10,000 Cool. 497 00:35:10,000 --> 00:35:12,000 Čia mes eiti. 498 00:35:12,000 --> 00:35:15,000 Taip, kad atrodo gana gerai, jei (adatos == kaugė [viduryje]). 499 00:35:15,000 --> 00:35:18,000 Mes radome jį. 500 00:35:18,000 --> 00:35:22,000 Dabar, jei mes paleisti kodas-Mes šiek tiek atgal į viršų- 501 00:35:22,000 --> 00:35:26,000 , ji veikia, ji rengia ir dabar, jei mes ieškome 4, 502 00:35:26,000 --> 00:35:30,000 neradome, nes dabar mes iš tikrųjų gauti skaičių 23. 503 00:35:30,000 --> 00:35:33,000 Mes vis vertė 23, o tai, ką mes, lyginant su mūsų adata. 504 00:35:33,000 --> 00:35:35,000 Bet tai gerai. Tai yra žingsnis teisinga kryptimi. 505 00:35:35,000 --> 00:35:37,000 >> Kad tai, ką mes bandome padaryti. 506 00:35:37,000 --> 00:35:40,000 Mes nebandome palyginti adatą nuo masyvo pozicijų 507 00:35:40,000 --> 00:35:44,000 bet atsižvelgiant į faktinių masyvo elementų. 508 00:35:44,000 --> 00:35:49,000 Jei pažvelgsime atgal dabar sekantį žingsnį mūsų algoritmas, 509 00:35:49,000 --> 00:35:51,000 kas yra kitas žingsnis? 510 00:35:51,000 --> 00:35:57,000 Leila jau minėta trumpai. 511 00:35:57,000 --> 00:36:00,000 [Studentų] Patikrinkite, pamatyti, jei jis didesnis arba mažesnis nei ir tada nuspręsti, kuriuo keliu judėti. 512 00:36:00,000 --> 00:36:03,000 [Nate] Taip, taip, kaip tai darome, kad? 513 00:36:03,000 --> 00:36:07,000 Jūs galite įdėti kai kuriose I'll išsaugoti šią peržiūrą, 514 00:36:07,000 --> 00:36:13,000 ir tada, jei jūs įtraukėte į eilučių, kad bus padaryti, kad. 515 00:36:13,000 --> 00:36:15,000 Taip, Charlotte. >> Turiu klausimą. 516 00:36:15,000 --> 00:36:19,000 Neturėtų būti viduryje - 1, nes pirmas dalykas, 517 00:36:19,000 --> 00:36:26,000 tai 0 indeksuoti, todėl, jei mes įdėti 4, kad iš tikrųjų tai ne personažas, mes ieškome? 518 00:36:26,000 --> 00:36:30,000 Taip, ir su kita problema- 519 00:36:30,000 --> 00:36:35,000 tai puikus laimikis, nes tai, kas ketina baigti vyksta galbūt 520 00:36:35,000 --> 00:36:42,000 , jei mes nuolat juda, o mes neturime kada reguliuoti iš pradžių? 521 00:36:42,000 --> 00:36:46,000 Manau, ką mes galime galų gale padaryti bando prisijungti prie 522 00:36:46,000 --> 00:36:49,000 į 8-osios pozicijos masyvo elementas, 523 00:36:49,000 --> 00:36:53,000 , kuris šiuo atveju neegzistuoja. 524 00:36:53,000 --> 00:36:56,000 Mes už tai nori padaryti kažkokią apskaitos 525 00:36:56,000 --> 00:36:59,000 kad mes turime šiek tiek nulio indeksavimo. 526 00:36:59,000 --> 00:37:05,000 [Charlotte] Atsiprašau, aš reiškė įpusėjo - 1 laužtiniuose skliaustuose. 527 00:37:05,000 --> 00:37:08,000 Mes galime tai padaryti. 528 00:37:08,000 --> 00:37:10,000 Mes grįžti prie šio klausimo, tik šiek tiek. 529 00:37:10,000 --> 00:37:13,000 Kai mes pradedame patekti į faktinį Looping, 530 00:37:13,000 --> 00:37:16,000 tai, kai mes tikrai pamatyti ateiti į žaidimą. 531 00:37:16,000 --> 00:37:21,000 Šiuo metu, mes galime tai padaryti, bet jūs visiškai teisus. 532 00:37:21,000 --> 00:37:28,000 ,, Kad nulio indeksavimo turės įtakos, kad mes turime sudaryti. 533 00:37:28,000 --> 00:37:30,000 Pažiūrėkime. 534 00:37:30,000 --> 00:37:34,000 >> Kaip yra didesnis nei ir mažiau nei-? 535 00:37:34,000 --> 00:37:36,000 [Studentų] gaunu kaip padaryti didesnis nei ir mažiau nei dalis. 536 00:37:36,000 --> 00:37:41,000 Aš tiesiog nebuvo tikras, ką spausdinti, jei jūs suprato, kad tai yra mažiau nei šieno kupetoje Mediana, arba didesnis nei. 537 00:37:41,000 --> 00:37:43,000 Čia aš galiu išsaugoti tai, ką I've- 538 00:37:43,000 --> 00:37:47,000 [Nate] Taip, jei jums išsaugoti tai, ką turite, ir mes pasistengsime ją ištraukite. 539 00:37:47,000 --> 00:37:49,000 Čia mes eiti. 540 00:37:49,000 --> 00:37:51,000 [Studentų] Ir aš įdėti klaustukų, ką aš nežinojau. 541 00:37:51,000 --> 00:37:54,000 [Nate] Tai atrodo puikiai. 542 00:37:54,000 --> 00:37:58,000 Čia mes turime klaustukų, nes mes vis dar nežinome, 543 00:37:58,000 --> 00:38:06,000 tai, ką mes ketiname gana padaryti dar. 544 00:38:06,000 --> 00:38:12,000 Ką mes norime, do-Oi, mes turime keletą petnešos visi mus funky. 545 00:38:12,000 --> 00:38:15,000 Mes pakeisime šiuos petnešos. 546 00:38:15,000 --> 00:38:19,000 Čia mes eiti. 547 00:38:19,000 --> 00:38:22,000 Ir taip ką mes norime daryti, pagal algoritmą, 548 00:38:22,000 --> 00:38:27,000 jei mes negalime rasti adatą? 549 00:38:27,000 --> 00:38:32,000 Tuo atveju, pasakyti, kad adata yra mažesnė nei tai, ką mes ieškome. Kevin. 550 00:38:32,000 --> 00:38:34,000 Tik pažvelgti į kairę pusę. 551 00:38:34,000 --> 00:38:40,000 Teisus, todėl mes įdėti komentarą čia, kad sako: "pažvelgti į kairę pusę. 552 00:38:40,000 --> 00:38:46,000 Adata ir, jei yra didesnis nei per vidurį šieno kupetoje, ką norime daryti? 553 00:38:46,000 --> 00:38:48,000 [Studentų] Tada jums pažvelgti į dešinėje pusėje. 554 00:38:48,000 --> 00:38:53,000 Pažvelgti į dešinėje pusėje, dešinėje pusėje. " 555 00:38:53,000 --> 00:38:58,000 Ne per skurdus. 556 00:38:58,000 --> 00:39:05,000 Gerai, kad šiuo metu, ko ieškote gana gera. 557 00:39:05,000 --> 00:39:13,000 Kodą, kaip parašyta problema yra tai, ką? 558 00:39:13,000 --> 00:39:15,000 [Studentų] Jūs neturite baigtys, už per pusę. 559 00:39:15,000 --> 00:39:18,000 Teisus, mes neturime baigtys, už per pusę. 560 00:39:18,000 --> 00:39:20,000 Mes taip pat tik ketina pereiti per vieną kartą. 561 00:39:20,000 --> 00:39:23,000 Mes tik ketiname ieškoti vienu Mediana. 562 00:39:23,000 --> 00:39:27,000 Arba elementas yra, ar taip nėra. 563 00:39:27,000 --> 00:39:34,000 Siekiant užbaigti tai, mes jums reikia padaryti kažkokią pakartotos. 564 00:39:34,000 --> 00:39:39,000 Mums reikia nuolat kartoti, kol mes, kad 565 00:39:39,000 --> 00:39:43,000 arba elementas yra ten, nes mes susiaurinta ir pagaliau rado, 566 00:39:43,000 --> 00:39:46,000 ar tai ne ten, nes mes pažvelgė per visų dalykų 567 00:39:46,000 --> 00:39:52,000 atitinkamų masyvo pusės ir nustatė, kad ten nieko nėra. 568 00:39:52,000 --> 00:39:56,000 >> Kiekvieną kartą, kai mes turime tai kartojimas vyksta, ką mes ketiname naudoti? 569 00:39:56,000 --> 00:39:58,000 [Studentų] kilpa. 570 00:39:58,000 --> 00:40:00,000 Kai kilpa rūšiuoti. Taip. 571 00:40:00,000 --> 00:40:03,000 [Studentų] Ar mes darome do-while cikle ir turi tai padaryti, kad ir tada, o 572 00:40:03,000 --> 00:40:10,000 nėra lygi-Aš nežinote, kur einu su adata. 573 00:40:10,000 --> 00:40:18,000 Bet natūra, kaip padaryti, kad tol, kol ji nėra lygi, kad naudotojo įvesties vertė. 574 00:40:18,000 --> 00:40:21,000 Taip, todėl pažiūrėkime, kaip tai galėtų rašyti save? 575 00:40:21,000 --> 00:40:23,000 Jūs pasakėte, galime naudoti do-while cikle. 576 00:40:23,000 --> 00:40:26,000 Kur gi daryti pradėti? 577 00:40:26,000 --> 00:40:33,000 [Student] Iškart po / 2 dydžio. 578 00:40:33,000 --> 00:40:42,000 [Nate] Gerai, o ką mes ketiname daryti? 579 00:40:42,000 --> 00:40:44,000 Mes užpildyti, o vėliau. 580 00:40:44,000 --> 00:40:46,000 Ką mes ketiname daryti? 581 00:40:46,000 --> 00:40:49,000 [Studentų] Ar mes norime padaryti, visų dalykų, mes turime jei dalis? 582 00:40:49,000 --> 00:40:52,000 [Nate] Ar visa tai stuff, nuostabu. 583 00:40:52,000 --> 00:40:55,000 Kopijuoti ir įklijuoti. 584 00:40:55,000 --> 00:40:59,000 Oh, vyras. 585 00:40:59,000 --> 00:41:03,000 Leiskite pamatyti, jei tai veikia, jei mes galime skirtukas tai per. 586 00:41:03,000 --> 00:41:08,000 Gražus. 587 00:41:08,000 --> 00:41:16,000 Gerai, ir mes išgelbėti, todėl jūs vaikinai turite. 588 00:41:16,000 --> 00:41:21,000 Viskas bus gerai, ir mes ketiname tai padaryti, o 589 00:41:21,000 --> 00:41:25,000 tai, kas buvo, o būklė, jums buvo po? 590 00:41:25,000 --> 00:41:31,000 [Studentų] Nors adata nėra lygi, todėl kaip wykrzyknikiem. 591 00:41:31,000 --> 00:41:37,000 Tačiau aš nesu įsitikinęs, ką dar. 592 00:41:37,000 --> 00:41:39,000 [Nate] Taip, tai yra vienas iš būdų tai padaryti. 593 00:41:39,000 --> 00:41:41,000 Sam, turite pastabų? 594 00:41:41,000 --> 00:41:43,000 [Sam] aš prisiminiau, kai aš pažvelgė į vaizdo įrašus, 595 00:41:43,000 --> 00:41:48,000 Aš paėmė vieno-kaip ekrano, kai mes padarėme pseudocode už tai, 596 00:41:48,000 --> 00:41:52,000 ten buvo kai santykiai tarp max ir min. 597 00:41:52,000 --> 00:41:58,000 Manau, tai buvo kažkas panašaus, jei max yra vis mažiau ir mažiau nei min. 598 00:41:58,000 --> 00:42:00,000 Gavo jį. 599 00:42:00,000 --> 00:42:04,000 [Sam] Arba, pavyzdžiui, jei max yra ne mažiau nei min ar kažką panašaus, kad, 600 00:42:04,000 --> 00:42:06,000 nes tai reikštų, kad jūs ieškojote viską. 601 00:42:06,000 --> 00:42:13,000 >> Taip, taip, tai ką jis skamba kaip max ir min rėmėsi? 602 00:42:13,000 --> 00:42:16,000 [Sam] Vertybės, kad sveikieji skaičiai, kurie ketina keisti 603 00:42:16,000 --> 00:42:18,000 , palyginti su kai mes viduryje. 604 00:42:18,000 --> 00:42:20,000 Tiksliai. 605 00:42:20,000 --> 00:42:24,000 [Sam] Tuo metu jis ketina [nesigirdi] apskaičiuoti max ir min. 606 00:42:24,000 --> 00:42:29,000 Midpoint tai max ir min idėja. 607 00:42:29,000 --> 00:42:35,000 Ar tai prasminga, kad žmonės? 608 00:42:35,000 --> 00:42:39,000 Jeigu mes buvo pradėti žiūri, kaip mes ketiname tai padaryti iteracijos, 609 00:42:39,000 --> 00:42:43,000 jūs visiškai teisus, kad mes norime naudoti kažkokią do-while cikle. 610 00:42:43,000 --> 00:42:49,000 Bet aš manau, jei mes prisimename, kas vyksta šio masyvo vietoje 611 00:42:49,000 --> 00:42:53,000 ir tai, kas iš tikrųjų vyksta-Aš einu rašyti čia 612 00:42:53,000 --> 00:42:58,000 labai pirmajam iteracijos procesui dvejetainis paieškos, mes turime 613 00:42:58,000 --> 00:43:05,000 Aš ketinate naudoti B ir E žymi pradžią. 614 00:43:05,000 --> 00:43:10,000 Ir tada mūsų masyvas pabaiga. 615 00:43:10,000 --> 00:43:14,000 Mes žinome, kad pradžia yra 4 dešinę čia, 616 00:43:14,000 --> 00:43:18,000 ir mes žinome, kad galas yra bent 108. 617 00:43:18,000 --> 00:43:23,000 Pasakykite, mes ieškome už skaičių 15. 618 00:43:23,000 --> 00:43:27,000 Pirmas kartas, mes tai darome, kaip matėme anksčiau, 619 00:43:27,000 --> 00:43:30,000 viduryje arba bus 16 arba 23 620 00:43:30,000 --> 00:43:34,000 priklausomai nuo to, kaip mes galime apskaičiuoti daiktus iš. 621 00:43:34,000 --> 00:43:37,000 Kadangi tolygiai padalinant viduryje suteiktų mums šią erdvę 622 00:43:37,000 --> 00:43:42,000 nuo 16 iki 23, mes negali tolygiai padalinti jį 623 00:43:42,000 --> 00:43:47,000 arba padalinti ir gauti tikrą Mediana. 624 00:43:47,000 --> 00:43:49,000 Mes pažvelgti į 16. 625 00:43:49,000 --> 00:43:55,000 Mes suprasti: "Ei, 16> 15, kad mes ieškome." 626 00:43:55,000 --> 00:43:59,000 Tada pažvelgti į kairę pusę masyvo 627 00:43:59,000 --> 00:44:03,000 ką mes galų gale padaryti šalinti " 628 00:44:03,000 --> 00:44:07,000 tai visa viršutinė dalis 629 00:44:07,000 --> 00:44:16,000 ir sako: "Gerai, dabar mūsų vertinamoji baigtis bus čia". 630 00:44:16,000 --> 00:44:22,000 Kito pakartojimo mūsų kilpa, mes dabar ieškote šio masyvo, 631 00:44:22,000 --> 00:44:25,000 efektyviai išpylus šią dalį, nes dabar 632 00:44:25,000 --> 00:44:30,000 jei mes viduryje būti skirtumas tarp pradžios ir pabaigos, 633 00:44:30,000 --> 00:44:34,000 mes rasti mūsų viduryje, gali būti 8, 634 00:44:34,000 --> 00:44:40,000 kuriuos tada galima išbandyti 8 pamatyti, kur jis yra, palyginti su skaičiumi, mes ieškome, 635 00:44:40,000 --> 00:44:44,000 15, kad 15 yra didesnis, 636 00:44:44,000 --> 00:44:49,000 todėl mes turime pereiti prie dešiniajame sąraše, 637 00:44:49,000 --> 00:44:51,000 kuriuos mes žinome, nes mes, žmonės, ir mes galime matyti. 638 00:44:51,000 --> 00:44:54,000 Mes žinome, kad teisė dalis bus ten, kur mes galime ją rasti, 639 00:44:54,000 --> 00:45:01,000 bet kompiuteris nežino, kad tai, ką mes padarysime mes iš tikrųjų 640 00:45:01,000 --> 00:45:04,000 tai eiti, o dabar pradžia ir pabaiga 641 00:45:04,000 --> 00:45:11,000 yra toje pačioje vietoje,, todėl viduryje tampa tik numeris sąraše tuo momentu, 642 00:45:11,000 --> 00:45:16,000 kuris yra 15, ir mes ją radau. 643 00:45:16,000 --> 00:45:21,000 Ar tai mesti šiek tiek šviesos, kur vyksta visa ši max ir min notacijos, 644 00:45:21,000 --> 00:45:24,000 masyvo parametrus sekti, siekiant išsiaiškinti, 645 00:45:24,000 --> 00:45:35,000 kaip mažinti dalykų žemyn? 646 00:45:35,000 --> 00:45:42,000 >> , Kas nutiktų, jeigu tai nėra lygi 15? 647 00:45:42,000 --> 00:45:52,000 Ką daryti, jei mes ieškojome 15 ir, vietoj to, šis skaičius taip pat buvo 16? 648 00:45:52,000 --> 00:45:54,000 Mes norime pasakyti: "O, tai didesnis. 649 00:45:54,000 --> 00:45:57,000 Mes norime grįžti į kairę ". 650 00:45:57,000 --> 00:46:01,000 Ir mes perkelti mūsų e į dešinę, 651 00:46:01,000 --> 00:46:06,000 tuo momentu turime vertinamoji baigtis, kad būtų prieštaringi. 652 00:46:06,000 --> 00:46:09,000 Jis negalėtų ieškoti bet daugiau elementų 653 00:46:09,000 --> 00:46:13,000 nes dabar mes turime vertinamoji baigtis ir mūsų pradžios taškas, 654 00:46:13,000 --> 00:46:16,000 mūsų max ir mūsų min, dabar yra apversta. 655 00:46:16,000 --> 00:46:23,000 Mes paiešką per visą masyvą. Mes negalime rasti nieko. 656 00:46:23,000 --> 00:46:27,000 Tai taškas, kuriame mes norime noriu pasakyti: "Gerai, mes ketiname nutraukti šį algoritmą. 657 00:46:27,000 --> 00:46:34,000 Mums nepavyko rasti nieko. Mes žinome, tai ne čia. " 658 00:46:34,000 --> 00:46:36,000 Kaip tai vyksta? 659 00:46:36,000 --> 00:46:40,000 [Studentų] Kaip tiksliai veikia kompiuteris pereiti prie pabaigos? 660 00:46:40,000 --> 00:46:45,000 Kaip pabaigoje, prieš prasidedant? 661 00:46:45,000 --> 00:46:48,000 Pabaigoje baigiasi prieš prasidedant 662 00:46:48,000 --> 00:46:54,000 dėl matematikos, kad mes ketiname daryti kiekvieną kartą, kai mes tai darome. 663 00:46:54,000 --> 00:47:00,000 Mes apsikeitimo būdas yra, jei peržvelgsite pirmą kartą, mes tai darome apsikeitimo sandorius, 664 00:47:00,000 --> 00:47:03,000 kur mes turime už 4 pradžią ir pabaigą 665 00:47:03,000 --> 00:47:13,000 žemyn 108 būdas ir mūsų viduryje, tarkim, 16 - 666 00:47:13,000 --> 00:47:20,000 Aš einu iš naujo nustatyti šį atgal į 15-jei mes ieškome už 15, 667 00:47:20,000 --> 00:47:25,000 mes žinojome, kad tai, ką mes padarėme, kai mes patikrinome 16 ir pamačiau, kad jis buvo didesnis 668 00:47:25,000 --> 00:47:28,000 ir norėjo išmesti visą dešiniajame sąraše, 669 00:47:28,000 --> 00:47:36,000 pamatėme, kad tai, ką mes norėjome padaryti čia perkelti šį el. 670 00:47:36,000 --> 00:47:44,000 Efektyviai, e gavo perkelta iki vidurį. 671 00:47:44,000 --> 00:47:48,000 Be to, kai mes padarėme šį algoritmo iteracijos 672 00:47:48,000 --> 00:47:51,000 viduryje buvo 8, 673 00:47:51,000 --> 00:47:55,000 mes nustatėme, kad 8 <15, todėl norėjome perkelti B 674 00:47:55,000 --> 00:48:00,000 vienas pro vidurį. 675 00:48:00,000 --> 00:48:07,000 Dabar, pradžia ir pabaiga yra abu kartu šiuo 15. 676 00:48:07,000 --> 00:48:10,000 >> Jei būtume vyksta ieškoti kokios nors kitos vertės, o ne 15, 677 00:48:10,000 --> 00:48:14,000 arba, jei tai 15, o ne 16, 678 00:48:14,000 --> 00:48:20,000 būtume nustatė, kad e norime perkelti vieną prieš vidurį. 679 00:48:20,000 --> 00:48:33,000 Dabar bus ten e apversta mažiau nei b. 680 00:48:33,000 --> 00:48:39,000 Leiskite eiti per tai, kaip mes iš tikrųjų baigti kodavimo šį algoritmą. 681 00:48:39,000 --> 00:48:44,000 Mes žinome, kad mes norime, kad šis Midpoint skaičiavimą. 682 00:48:44,000 --> 00:48:48,000 Taip pat žinome, kad mes norime sekti masyvo pradžią ir pabaigą 683 00:48:48,000 --> 00:48:51,000 mūsų dabartinės masyvas, todėl mes galime išsiaiškinti, 684 00:48:51,000 --> 00:48:56,000 tai kairėje pusėje sąraše yra ir kur sąrašo dešinėje pusėje. 685 00:48:56,000 --> 00:49:03,000 Mes tai padarysime su arba prasideda ir baigiasi, 686 00:49:03,000 --> 00:49:07,000 arba mes galime paskambinti min ir max. 687 00:49:07,000 --> 00:49:10,000 Aš naudoti pradėti ir baigti šį kartą. 688 00:49:10,000 --> 00:49:15,000 Kai mes pradedame, jei mes žiūrime atgal mūsų pavyzdyje čia, 689 00:49:15,000 --> 00:49:20,000 mūsų pradžia buvo iš masyvo į pačią pradžią, kaip natūralus. 690 00:49:20,000 --> 00:49:25,000 , Ką indeksas? Ką reikėtų mūsų pradėti? 691 00:49:25,000 --> 00:49:27,000 Danielius. 692 00:49:27,000 --> 00:49:30,000 [Daniel] šieno kupetoje [0]. 693 00:49:30,000 --> 00:49:37,000 [Nate] Taip, kad mes galime nustatyti, kad jis lygus šieno kupetoje [0]. 694 00:49:37,000 --> 00:49:40,000 Problema, nors, yra tai, kad suteikia mums ne pirmojo elemento poziciją. 695 00:49:40,000 --> 00:49:45,000 Tai suteikia mums pirmojo elemento arba faktinės vertės indeksą tuo pirmąją poziciją. 696 00:49:45,000 --> 00:49:47,000 [Studentų] Tai bus konvertuoti į 0,20? 697 00:49:47,000 --> 00:49:52,000 [Nate] Kas tai padarys-gerai, ji negali padaryti bet Konvertavimas. 698 00:49:52,000 --> 00:49:56,000 Ką ji darys, jie bus saugomi 4, pradėti, 699 00:49:56,000 --> 00:49:59,000 ir tada ji bus sunku, kad būtų galima palyginti prieš pradėti 700 00:49:59,000 --> 00:50:03,000 nes begin surengs 4 vertę, 701 00:50:03,000 --> 00:50:06,000 kuris yra mūsų masyvas pradžia, 702 00:50:06,000 --> 00:50:08,000 tačiau mes norime sekti masyvo indeksai 703 00:50:08,000 --> 00:50:11,000 , palyginti su vertėmis. 704 00:50:11,000 --> 00:50:17,000 Mes iš tikrųjų naudoti "0", kaip kad. 705 00:50:17,000 --> 00:50:20,000 Už-Charlotte masyvo pabaigos, iki šiek tiek anksčiau. 706 00:50:20,000 --> 00:50:23,000 Tai kur mes atsižvelgti į nulinį indeksavimo. 707 00:50:23,000 --> 00:50:25,000 >> Charlotte, kas masyvo pabaigos? 708 00:50:25,000 --> 00:50:28,000 Kas yra pabaigos indeksas? 709 00:50:28,000 --> 00:50:30,000 [Charlotte] Dydis - 1. 710 00:50:30,000 --> 00:50:32,000 Aha, ir kurių dydis turėtume naudoti? 711 00:50:32,000 --> 00:50:35,000 Mes turėtume naudoti kapitalo dydžio arba mažosiomis dydį? 712 00:50:35,000 --> 00:50:37,000 Kapitalo dydis. 713 00:50:37,000 --> 00:50:42,000 Šiuo atveju, mes galime naudoti kapitalo dydžio. 714 00:50:42,000 --> 00:50:45,000 Jei norime, ši funkcija turi būti nešiojamas 715 00:50:45,000 --> 00:50:48,000 ir naudoti šią funkciją kitose programose, 716 00:50:48,000 --> 00:50:50,000 mes iš tikrųjų galite naudoti mažąją dydį. 717 00:50:50,000 --> 00:50:52,000 Tai gerai. 718 00:50:52,000 --> 00:51:01,000 Bet Charlotte yra visiškai teisinga, kad mes norime, kad dydis - 1. 719 00:51:01,000 --> 00:51:03,000 Šiuo metu- 720 00:51:03,000 --> 00:51:05,000 [Studentų] Kaip tai yra, kad jūs galite naudoti didžiąją dydį? 721 00:51:05,000 --> 00:51:07,000 Kaip tai, kad mes galime naudoti didžiąsias dydį? 722 00:51:07,000 --> 00:51:13,000 Pasirodo, kad tai # apibrėžia tikrai, 723 00:51:13,000 --> 00:51:19,000 po gaubtu, tekstą, kaip rasti ir pakeisti, jei tai turi prasmę. 724 00:51:19,000 --> 00:51:24,000 Kai renka savo kodą, pirminio apdorojimo etapas 725 00:51:24,000 --> 00:51:27,000 kompiliatorių eina per failą, 726 00:51:27,000 --> 00:51:31,000 ir atrodo visur, kad rašėte kapitalo dydžio, 727 00:51:31,000 --> 00:51:39,000 ir pakeičia šį tekstą pažodžiui su 8, kaip kad. 728 00:51:39,000 --> 00:51:42,000 Ta prasme, tai labai skiriasi nuo kintamojo. 729 00:51:42,000 --> 00:51:45,000 Tai nereiškia, imtis bet kokios vietos atmintyje. 730 00:51:45,000 --> 00:51:52,000 Tai paprastas tekstas, pakeiskite triukas. 731 00:51:52,000 --> 00:51:57,000 Šiuo atveju, mes ketiname naudoti dydžio. 732 00:51:57,000 --> 00:52:01,000 Iš čia mes norime padaryti kažkokią pakartotos, 733 00:52:01,000 --> 00:52:03,000 ir mes teisingame kelyje su do-while cikle. 734 00:52:03,000 --> 00:52:08,000 Mes norime daryti kažką, kol sąlyga neturi nebėra, 735 00:52:08,000 --> 00:52:12,000 kaip matėme anksčiau, mes matome, kad ši sąlyga 736 00:52:12,000 --> 00:52:19,000 iš tikrųjų buvo, kad mes nenorime pabaigą 737 00:52:19,000 --> 00:52:24,000 būti mažesnis nei pradėti. 738 00:52:24,000 --> 00:52:26,000 >> Tai yra mūsų sustojimo sąlyga. 739 00:52:26,000 --> 00:52:35,000 Jei taip atsitinka, mes norime sustoti ir paskelbti, pavyzdžiui, "Ei, mes nebuvo rasta nieko". 740 00:52:35,000 --> 00:52:43,000 Išreikšti tai, mes norime naudoti kažkokią kilpoje. 741 00:52:43,000 --> 00:52:49,000 Šiuo atveju, tai do-while cikle, už linijos, o linijos? 742 00:52:49,000 --> 00:52:51,000 Mes turime do-while cikle čia. 743 00:52:51,000 --> 00:52:53,000 Ar jūs vaikinai, kaip šį požiūrį? 744 00:52:53,000 --> 00:52:59,000 Ar manote, kad turėtume pabandyti kitokį požiūrį? 745 00:52:59,000 --> 00:53:01,000 Kevin, kokių nors minčių? 746 00:53:01,000 --> 00:53:06,000 Galėtume turėti while cikle, nes mes žinome, ne daugiau 747 00:53:06,000 --> 00:53:11,000 būtų didesnis nei pradžios anyways min. 748 00:53:11,000 --> 00:53:14,000 Taip, kad nėra iniciacijos, kad turi įvykti. 749 00:53:14,000 --> 00:53:17,000 Šie do-o kilpos puikus, kai jūs turite kažką inicijuoti 750 00:53:17,000 --> 00:53:21,000 prieš testując, nors čia 751 00:53:21,000 --> 00:53:26,000 mes žinome, kad esate nesiruošia išlaikyti reinitializing tiek prasideda ir baigiasi 752 00:53:26,000 --> 00:53:28,000 kiekvienas iš kilpos apvalios. 753 00:53:28,000 --> 00:53:32,000 Mes žinome, kad mes norime inicijuoti juos, tada patikrinkite mūsų būklę. 754 00:53:32,000 --> 00:53:38,000 Šiuo atveju, aš iš tikrųjų eiti su paprasta while cikle. 755 00:53:38,000 --> 00:53:44,000 It turns out, kad do-o kilpos naudojamos gana retai. 756 00:53:44,000 --> 00:53:49,000 Vietų, daug nereikia net mokyti nereikia, o kilpos. 757 00:53:49,000 --> 00:53:53,000 Jie gerai tvarkyti vartotojo įvestį, todėl mes matėme daug jų iki šiol. 758 00:53:53,000 --> 00:53:59,000 Bet normalus, o kilpos daug daugiau bendro. 759 00:53:59,000 --> 00:54:03,000 Pasirodo, kad ši sąlyga, kaip parašyta 760 00:54:03,000 --> 00:54:09,000 nebus tikrai mums daug gero, ir kodėl taip yra? 761 00:54:09,000 --> 00:54:11,000 Aš atsiprašau, aš nežinau savo vardą. 762 00:54:11,000 --> 00:54:13,000 Aš esu Džeris. >> Atsiprašome? 763 00:54:13,000 --> 00:54:15,000 Tai B-O-R-U-Aš. 764 00:54:15,000 --> 00:54:18,000 O, gerai. 765 00:54:18,000 --> 00:54:23,000 Aš nematau, mano sąraše. 766 00:54:23,000 --> 00:54:26,000 O, tai nes-oh, kad prasminga. 767 00:54:26,000 --> 00:54:31,000 Ar turite idėją, kodėl tai while cikle gali neveikti taip, kaip buvo numatyta, 768 00:54:31,000 --> 00:54:38,000 kaip parašyta su sąlyga? 769 00:54:38,000 --> 00:54:43,000 [Džeris] Tu turi omeny, kaip jūs norite visus medžiagos po to, kai į? 770 00:54:43,000 --> 00:54:46,000 Taip, taip, kad vienas. 771 00:54:46,000 --> 00:54:49,000 Mes gali turėti įdėti visą šią medžiagą į while cikle, kuris yra visiškai teisinga. 772 00:54:49,000 --> 00:54:55,000 Kitas dalykas, kad yra šiek tiek daugiau problemų, nors, yra tai, kad ši sąlyga neveikia. 773 00:54:55,000 --> 00:54:57,000 [Studentų] Jums reikia apversti jį. 774 00:54:57,000 --> 00:55:04,000 Teisus, todėl ši sąlyga nebus kada nors bus tiesa, iš pradžių mes kalbėjome apie tai. 775 00:55:04,000 --> 00:55:08,000 Mes norime daryti kažką, kol prasideda end < 776 00:55:08,000 --> 00:55:13,000 bet mes norime padaryti ką nors 777 00:55:13,000 --> 00:55:21,000 pradėti ≤ pabaigą. 778 00:55:21,000 --> 00:55:24,000 >> Yra, kad logika, atstatymas. 779 00:55:24,000 --> 00:55:27,000 Esu kaltas, kad šias klaidas visą laiką. 780 00:55:27,000 --> 00:55:31,000 [Studentų] Kodėl ji turi būti mažesnė kaip arba lygi? 781 00:55:31,000 --> 00:55:33,000 Nes Do You Remember bylą, kad mes turime 782 00:55:33,000 --> 00:55:36,000 ten, kur buvo tik vienas iš elementų, ir mes, buvo nustatytas, 783 00:55:36,000 --> 00:55:43,000 ir mes ieškojome ne tik 15 mūsų masyvas? 784 00:55:43,000 --> 00:55:47,000 Ir mūsų pradžia ir mūsų pabaiga buvo tas pats elementas. 785 00:55:47,000 --> 00:55:50,000 Mes norime įsitikinti, kad mes tvarkome, kad bylą. 786 00:55:50,000 --> 00:55:54,000 Jei mes tai tiesiai mažiau nei 787 00:55:54,000 --> 00:55:58,000 mes tik galės kibti į 2-elementų masyvas. 788 00:55:58,000 --> 00:56:06,000 Kai mes turime Tas paskutinis elementas, jei tai buvo mūsų elementas, mes niekada suprato, kad tai yra. 789 00:56:06,000 --> 00:56:10,000 Dabar čia, mes galime padaryti tiksliai taip, kaip jums buvo pasakyti. 790 00:56:10,000 --> 00:56:15,000 Mes galime pradėti plopping stuff tiesiai į mūsų while cikle viduryje. 791 00:56:15,000 --> 00:56:20,000 Mes galime pūkštelėti į mūsų Mediana. 792 00:56:20,000 --> 00:56:24,000 Mes galime imtis visų šių if, 793 00:56:24,000 --> 00:56:30,000 juos ištraukti šio do-while cikle, 794 00:56:30,000 --> 00:56:34,000 pūkštelėti juos, 795 00:56:34,000 --> 00:56:39,000 valyti viską šiek tiek, 796 00:56:39,000 --> 00:56:48,000 ir aš eiti į priekį ir išsaugoti šią peržiūrą. 797 00:56:48,000 --> 00:56:53,000 Ir šiuo metu, mes vis gana arti. 798 00:56:53,000 --> 00:56:55,000 Samas. 799 00:56:55,000 --> 00:56:58,000 Manau, kad jūs taip pat turi turėti LC Midpoint = Dydis - 1/2. 800 00:56:58,000 --> 00:57:01,000 Gavo tai, dydis - 1/2. 801 00:57:01,000 --> 00:57:05,000 Ar dar ką nors, mes turime pakeisti apie tos linijos? 802 00:57:05,000 --> 00:57:10,000 Tai buvo geras laimikis. 803 00:57:10,000 --> 00:57:14,000 >> Ką dydis daryti? Mes nuolat kinta dydį? 804 00:57:14,000 --> 00:57:17,000 Siekiant išlaikyti šią eilutę, mes turime keisti dydį. 805 00:57:17,000 --> 00:57:21,000 Mes turime pakeisti dydį kiekvieną kartą, mes einame aplink už linijos. 806 00:57:21,000 --> 00:57:25,000 Bet atsimenu, kai mes išgyvena mūsų pavyzdyje, tik šiek tiek anksčiau, 807 00:57:25,000 --> 00:57:30,000 ir mes turėjome pradžią 4 808 00:57:30,000 --> 00:57:33,000 ir pabaiga per ne 108? 809 00:57:33,000 --> 00:57:35,000 Kaip mes apskaičiuoti viduryje? 810 00:57:35,000 --> 00:57:38,000 Mes buvome dydį? 811 00:57:38,000 --> 00:57:40,000 Ar mes buvome naudojant prasideda ir baigiasi, o ne? 812 00:57:40,000 --> 00:57:42,000 Tai skirtumas tarp Pabaiga ir pradžia. 813 00:57:42,000 --> 00:57:50,000 Tiksliai, ir kaip tiksliai man reikia rašyti, kad, Charlotte? 814 00:57:50,000 --> 00:57:52,000 Tiesiog baigti pradėti. 815 00:57:52,000 --> 00:57:55,000 Jums nereikia daryti - 1 816 00:57:55,000 --> 00:57:58,000 nes - 1 buvo galų gale ir pradėti jau. 817 00:57:58,000 --> 00:58:00,000 [Nate] Puiku, jūs visiškai į dešinę. 818 00:58:00,000 --> 00:58:03,000 Mes neturime padaryti, nes tai - 1 - 1 buvo įtrauktas 819 00:58:03,000 --> 00:58:08,000 ir sudarė, kai mes inicijuoti pabaigos kintamąjį. 820 00:58:08,000 --> 00:58:11,000 >> Ar dar ką nors, man reikia padaryti, sintaksės, kad ši eilutė prasmės? 821 00:58:11,000 --> 00:58:13,000 [Studentų] Plius pradėti. >> Plius pradėti? 822 00:58:13,000 --> 00:58:15,000 [Studentų] pabaigoje. 823 00:58:15,000 --> 00:58:20,000 , Nes jis skaičiuojamos tik pusę ilgio. 824 00:58:20,000 --> 00:58:26,000 Jums reikia pridėti pradžioje. 825 00:58:26,000 --> 00:58:31,000 [Nate] Ką tai apskaičiuoti už mus? 826 00:58:31,000 --> 00:58:35,000 Jei mes galvojame apie pabaigos šiame pirmajame iteracijos kilpos, 827 00:58:35,000 --> 00:58:40,000 pabaiga bus padėtyje indekso 7. 828 00:58:40,000 --> 00:58:43,000 Pradėti yra "0" padėtį. 829 00:58:43,000 --> 00:58:47,000 Nepamirškite, kad mes ieškome arba 830 00:58:47,000 --> 00:58:52,000 padėtis 3 arba 4 pozicija. 831 00:58:52,000 --> 00:58:56,000 Jei pažvelgsime į šio matematikos, tik, kad ji šiek tiek labiau apčiuopiamas, 832 00:58:56,000 --> 00:59:02,000 įdėti kelis telefonų numerius čia, turime 7, 0, 833 00:59:02,000 --> 00:59:10,000 taip 7 - 0, ir tada / 2 834 00:59:10,000 --> 00:59:19,000 sveikasis skaičius padalijimo 3 yra tai, kad yra. 835 00:59:19,000 --> 00:59:26,000 Tada mums reikia, tada pridėkite mūsų pradėti? 836 00:59:26,000 --> 00:59:28,000 Mes ne šiuo atveju. 837 00:59:28,000 --> 00:59:31,000 Labai pirmajam iteracijos procesui, tai bus gerai, nes pradėti yra 0. 838 00:59:31,000 --> 00:59:36,000 Bet kaip mes pažangą, mes tikrai visi, tiesiog reikia 839 00:59:36,000 --> 00:59:42,000 pabaiga - pradėti / 2. 840 00:59:42,000 --> 00:59:46,000 Yra vienas kitas triukas čia, ir kad yra būtent vienas iš pirmumo. 841 00:59:46,000 --> 00:59:49,000 [Studentų] Ar mums reikia skliaustus? 842 00:59:49,000 --> 00:59:53,000 [Nate] Būtent, ir tai todėl, kad, jei mes neturime šiuos skliaustus, 843 00:59:53,000 --> 00:59:58,000 tada ši eilutė bus būti aiškinama 844 00:59:58,000 --> 01:00:09,000 (pabaiga) - (pradėti / 2), kurį mes tikrai nenoriu. 845 01:00:09,000 --> 01:00:11,000 Watch out for šių pirmumo taisyklės. 846 01:00:11,000 --> 01:00:15,000 [Studentų] Kodėl ne baigti + pradėti? 847 01:00:15,000 --> 01:00:17,000 Kodėl nėra tai baigti + pradėti? 848 01:00:17,000 --> 01:00:19,000 [Studentų] Kodėl tai yra ne tai, kad? 849 01:00:19,000 --> 01:00:24,000 Kodėl tai būtų +? 850 01:00:24,000 --> 01:00:26,000 Aš manau, kad tu teisus. 851 01:00:26,000 --> 01:00:28,000 [Studentų] Nes tai vidurkis? 852 01:00:28,000 --> 01:00:31,000 [Nate] Galinė + prasideda, jūs visiškai teisus. 853 01:00:31,000 --> 01:00:34,000 Oho, aš visiškai goofed. Tu teisus. 854 01:00:34,000 --> 01:00:39,000 Jei mes darome minuso ženklą, mes norime pridėti prasidėti atgal. 855 01:00:39,000 --> 01:00:43,000 Šiuo atveju, jūs esate labai teisus, kad mes norime imtis dviejų vidutinių, 856 01:00:43,000 --> 01:00:45,000 todėl mes norime pridėti, o ne atimti. 857 01:00:45,000 --> 01:00:49,000 [Studentų] Jis taip pat dirbti, jei tu galą - pradėti / 2 + pradėti. 858 01:00:49,000 --> 01:00:55,000 Tai jei mes darome Manau, taip. 859 01:00:55,000 --> 01:01:00,000 >> Pavyzdžiui, jei mes ieškojome ne pradėti, 860 01:01:00,000 --> 01:01:04,000 ir mes persikėlė čia 861 01:01:04,000 --> 01:01:08,000 15 d. 862 01:01:08,000 --> 01:01:12,000 Dabar pradėti 2 padėtyje. 863 01:01:12,000 --> 01:01:15,000 Pabaiga yra 7 padėtyje. 864 01:01:15,000 --> 01:01:21,000 Jei mes atimti juos, mes gauname 5. 865 01:01:21,000 --> 01:01:24,000 Padalinti, kad iš 2, gausime: 2. 866 01:01:24,000 --> 01:01:27,000 Ir tada pridedame 2 atgal, 867 01:01:27,000 --> 01:01:30,000 ir, kad jis pasireiškia mums į 4 padėtį, 868 01:01:30,000 --> 01:01:33,000 , kuris yra čia, kuris yra viduryje. 869 01:01:33,000 --> 01:01:36,000 [Studentų] Ar mums reikia rūpintis vyniojimo? 870 01:01:36,000 --> 01:01:39,000 Kokia prasme mums reikia rūpintis įpakavimo? 871 01:01:39,000 --> 01:01:43,000 Jei suma arba skirtumas tarp 872 01:01:43,000 --> 01:01:45,000 priklausomai nuo to, kaip mes tai darome ne lyginis skaičius. 873 01:01:45,000 --> 01:01:49,000 Tada kompiuteris sutrinki ar kai jis 2,5; 874 01:01:49,000 --> 01:01:52,000 jums judėti į kairę arba į dešinę nuspręsti, kuris yra viduryje? 875 01:01:52,000 --> 01:01:54,000 Gavo jį. 876 01:01:54,000 --> 01:01:56,000 Pasirodo, kad sveikasis skaičius padalijimo, 877 01:01:56,000 --> 01:01:59,000 mes neturime kada nors gauti šias slankiojo kablelio skaičius. 878 01:01:59,000 --> 01:02:01,000 Mes niekada dešimtųjų. 879 01:02:01,000 --> 01:02:04,000 Tai visiškai išmesti. 880 01:02:04,000 --> 01:02:08,000 Jei turite kompiuteris padalinti du int kintamieji, 881 01:02:08,000 --> 01:02:11,000 ir vienas yra 7, o kita yra 2, 882 01:02:11,000 --> 01:02:13,000 jūs negausite 3,5, kaip rezultatas. 883 01:02:13,000 --> 01:02:16,000 Jis gaus 3. 884 01:02:16,000 --> 01:02:19,000 Likusi dalis bus išmesti, todėl efektyviai apvalinimo 885 01:02:19,000 --> 01:02:24,000 ne apvalus, o grindų, jei jus vaikinai yra susipažinę su matematika, 886 01:02:24,000 --> 01:02:27,000 kur jūs visiškai išmesti dešimtainį kablelį, 887 01:02:27,000 --> 01:02:31,000 ir taip jūs iš esmės trumpinimo jį žemyn iki artimiausio 888 01:02:31,000 --> 01:02:33,000 visa pozicija, iki artimiausio sveikojo skaičiaus. 889 01:02:33,000 --> 01:02:38,000 [Studentų] Bet tada tai problematiška, nes jei turite 7 elementų masyvas 890 01:02:38,000 --> 01:02:43,000 tada automatiškai užima 3-ią elementą iš, o ne 4-oji Mediana. 891 01:02:43,000 --> 01:02:46,000 Kaip mes susidoroti su tuo? 892 01:02:46,000 --> 01:02:49,000 Tai problemiška, nes, jei mes turėjome iš 7 masyvo, 893 01:02:49,000 --> 01:02:54,000 jis būtų pasiimti vietoj 4-oji 3. 894 01:02:54,000 --> 01:02:56,000 Gal galėtumėte paaiškinti šiek tiek daugiau? 895 01:02:56,000 --> 01:02:59,000 [Studentų] Nes jeigu tu turi 7 elementus, po to 4-ąjį elementą 896 01:02:59,000 --> 01:03:04,000 būtų viduryje, tiesa? 897 01:03:04,000 --> 01:03:07,000 Įsiminti komentarą apie būti nulis indeksuoti, nors. 898 01:03:07,000 --> 01:03:10,000 [Studentų] Taip, kad 3 pozicijoje. , Kad būtų viduryje. 899 01:03:10,000 --> 01:03:12,000 Taip. 900 01:03:12,000 --> 01:03:16,000 O, gerai. Suprantu, ką turi galvoje. 901 01:03:16,000 --> 01:03:19,000 Tai tipo keista, kaip mes priprasti prie visos šios sąvokos 902 01:03:19,000 --> 01:03:22,000 atsikratyti po kablelio. 903 01:03:22,000 --> 01:03:26,000 Tai puikus klausimas. 904 01:03:26,000 --> 01:03:30,000 Leiskite baigti tai padaryti. 905 01:03:30,000 --> 01:03:32,000 Mes apskaičiavome, mūsų įpusėjo. 906 01:03:32,000 --> 01:03:37,000 >> Bandome, nes norime pamatyti, jei mūsų adata yra lygi vidutinės reikšmės. 907 01:03:37,000 --> 01:03:41,000 Mes spausdinti, kad mes nustatėme, bet iš tikrųjų, ką mes norime daryti šioje situacijoje? 908 01:03:41,000 --> 01:03:46,000 Mes pastebėjome, kad mes norime, skambinantysis žino, kad mes nustatėme, kad. 909 01:03:46,000 --> 01:03:49,000 Mes turime funkciją, kuri Būlio įvedėte funkcija. 910 01:03:49,000 --> 01:03:54,000 Tai, kaip mes signalizuoja, kad mūsų funkcija skambinančiojo, kad mes pasiruošę eiti 911 01:03:54,000 --> 01:03:58,000 mes sakome: "Ei, tai yra tiesa." 912 01:03:58,000 --> 01:04:00,000 Kaip mes tai padarysime, Kevin? 913 01:04:00,000 --> 01:04:02,000 Jūs linksinčią galvą. >> [Kevin] Pridėti grąža tiesa. 914 01:04:02,000 --> 01:04:06,000 [Nate] Būtent, return true. 915 01:04:06,000 --> 01:04:12,000 Dabar, jei jis nėra lygus, kaip mes pažvelgti į kairę pusę? 916 01:04:12,000 --> 01:04:16,000 Any ideas? 917 01:04:16,000 --> 01:04:18,000 Stella, kokių nors idėjų? 918 01:04:18,000 --> 01:04:21,000 Jums reikia nustatyti naują pabaigos poziciją. 919 01:04:21,000 --> 01:04:23,000 Taip. 920 01:04:23,000 --> 01:04:29,000 Taigi, mes turime padaryti, viduriniojo taško padėtį - The End. 921 01:04:29,000 --> 01:04:33,000 Didysis. 922 01:04:33,000 --> 01:04:36,000 Mums reikia nustatyti naują poziciją, galų gale 923 01:04:36,000 --> 01:04:38,000 pažvelgti į kairę pusę. 924 01:04:38,000 --> 01:04:41,000 Tai, ką mes kalbėjome apie tai prieš kur 925 01:04:41,000 --> 01:04:44,000 Aš nuolat grįžta į šiame pavyzdyje. 926 01:04:44,000 --> 01:04:50,000 Aš pradėti čia, ir tada aš galų gale, visi per čia. 927 01:04:50,000 --> 01:04:53,000 >> Vėlgi, jei mes ieškome 15, ir mūsų Mediana yra 16, 928 01:04:53,000 --> 01:04:56,000 ir mes suprantame, kad "Oi, 16 yra didesnis. 929 01:04:56,000 --> 01:04:59,000 Mes norime judėti į kairę pusę. " 930 01:04:59,000 --> 01:05:02,000 Mes tuomet perkelti pabaigoje į 15, 931 01:05:02,000 --> 01:05:06,000 ir tai mes darome, imdamasi vienos atokiau nuo vidurį 932 01:05:06,000 --> 01:05:09,000 ir nustatyti, kad mūsų naują pabaigoje. 933 01:05:09,000 --> 01:05:12,000 Be to, jei norime pažvelgti į dešinėje pusėje, kaip mes darome tai? 934 01:05:12,000 --> 01:05:14,000 Ar turite idėją? 935 01:05:14,000 --> 01:05:22,000 [Studentų] Jūs tiesiog nustatyti pradėti Midpoint + 1. 936 01:05:22,000 --> 01:05:24,000 [Nate] Didysis. 937 01:05:24,000 --> 01:05:29,000 Ir dabar tuo atveju, kad mes negali rasti nieko, 938 01:05:29,000 --> 01:05:32,000 kad gauti pasirūpinta už mus? 939 01:05:32,000 --> 01:05:36,000 Daniel, kad gauti pasirūpinta už mus? 940 01:05:36,000 --> 01:05:38,000 [Daniel] L. 941 01:05:38,000 --> 01:05:40,000 [Nate] Jei mes jį per visą masyvą ir mes negalime rasti nieko, 942 01:05:40,000 --> 01:05:42,000 kur būtų pasirūpinta, ar mes turėtume rūpintis ji? 943 01:05:42,000 --> 01:05:44,000 [Daniel] o sąlyga. 944 01:05:44,000 --> 01:05:48,000 [Nate] Taip, o būklė, tiksliai. 945 01:05:48,000 --> 01:05:51,000 Ji rūpinsis išgyvena visą masyvą, jei mes negalime rasti nieko. 946 01:05:51,000 --> 01:05:53,000 Tai, o kilpa baigsis. 947 01:05:53,000 --> 01:05:56,000 Mes niekada susidūrė su šią sąlygą, 948 01:05:56,000 --> 01:06:03,000 ir mes galime grįžti klaidinga. 949 01:06:03,000 --> 01:06:10,000 Mes taip pat galime palikti tai, jei čia kaip tai 950 01:06:10,000 --> 01:06:14,000 nes jei tuo atveju, jei teiginys yra teisingas, 951 01:06:14,000 --> 01:06:16,000 ir mūsų funkcija sugrįš, 952 01:06:16,000 --> 01:06:21,000 ir todėl mes iš esmės nutraukti tai šiuo metu funkcija 953 01:06:21,000 --> 01:06:24,000 kai mes grįžti tiesa. 954 01:06:24,000 --> 01:06:28,000 Bet kas atsitinka, šios struktūros čia? 955 01:06:28,000 --> 01:06:34,000 Ar šis darbas visiškai, ar yra tam tikra loginė klaida ten? 956 01:06:34,000 --> 01:06:37,000 >> Yra tam tikra loginė klaida ten, su tuo, kaip jis įsteigtas. 957 01:06:37,000 --> 01:06:40,000 Ką jis galėtų būti? 958 01:06:40,000 --> 01:06:43,000 [Studentų] Kodėl jums reikia - ir + 1s? 959 01:06:43,000 --> 01:06:47,000 , Kuris nustato mūsų masyvas iki mūsų naują kairėje pusėje ir Dešinė pusė. 960 01:06:47,000 --> 01:06:51,000 [Studentų] Bet kodėl negalėjo jums tai padaryti be - 1s ir + 1s? 961 01:06:51,000 --> 01:06:53,000 [Nate] Mes galime nustatyti, kad jis lygus vidurį? 962 01:06:53,000 --> 01:07:04,000 Kas gali būti problematiška? 963 01:07:04,000 --> 01:07:08,000 [Studentų] Manau, kad tai neefektyvus, nes jūs patikrinti vertę, kuri jau buvo patikrinta. 964 01:07:08,000 --> 01:07:11,000 [Nate] Būtent, todėl Sam yra visiškai teisus. 965 01:07:11,000 --> 01:07:15,000 Jei nustatysite pabaigos ir pradėti lygus vidurį 966 01:07:15,000 --> 01:07:18,000 vietoj - 1 iki + 1 refleksyviai, 967 01:07:18,000 --> 01:07:22,000 tam tikru momentu ateityje mes galų gale vėl patikrinti viduryje. 968 01:07:22,000 --> 01:07:26,000 [Studentų] aš pradėjau pset, ir tada aš kažką panašaus, kad 969 01:07:26,000 --> 01:07:30,000 Aš pamiršau + 1, ir ji įstrigo begalinis ciklas. 970 01:07:30,000 --> 01:07:34,000 Teisūs, nes tam tikru momentu jūs niekada gauti prasideda ir baigiasi 971 01:07:34,000 --> 01:07:39,000 iš tikrųjų iš dalies sutampa. 972 01:07:39,000 --> 01:07:41,000 Cool. 973 01:07:41,000 --> 01:07:44,000 Yra dar vienas loginis trūkumas, ir tai yra tai, kad tikrai turėtų būti 974 01:07:44,000 --> 01:07:48,000 else if. 975 01:07:48,000 --> 01:07:55,000 Kodėl gali būti? 976 01:07:55,000 --> 01:07:59,000 >> Taip yra todėl, jei tai ne dar, jei jūs jį pamatyti, Kevin? 977 01:07:59,000 --> 01:08:02,000 [Kevin] Taip, nes jūs pakeičiant pabaigos tašką. 978 01:08:02,000 --> 01:08:05,000 [Nate] Būtent. 979 01:08:05,000 --> 01:08:07,000 Mes keičiamės vertinamoji baigtis, 980 01:08:07,000 --> 01:08:12,000 ir, jei jis parašytas kaip šis-Mes tarpų tarp- 981 01:08:12,000 --> 01:08:14,000 ji bus patikrinti šį atvejį. 982 01:08:14,000 --> 01:08:18,000 Šiuo atveju, jei tai pavyks, bus nutraukti funkcijos. 983 01:08:18,000 --> 01:08:21,000 Tada jis bus patikrinti šį kitą bylą, 984 01:08:21,000 --> 01:08:24,000 ir jei tai pavyksta, jis bus pritaikyti vertinamoji baigtis, 985 01:08:24,000 --> 01:08:28,000 ir tada jis bus toliau ir patikrinti šį atvejį. 986 01:08:28,000 --> 01:08:31,000 Tačiau šiuo metu, mes ne norime, kad ji toliau tikrinsime. 987 01:08:31,000 --> 01:08:35,000 Laimei, mes ne iš naujo viduryje čia, 988 01:08:35,000 --> 01:08:39,000 ir mes žinome, kad šiuo atveju nepadės. 989 01:08:39,000 --> 01:08:44,000 Bet mes tikrai norite įdėti else, jei ten 990 01:08:44,000 --> 01:08:48,000 nors, kad galėtų šiuo atveju 991 01:08:48,000 --> 01:08:52,000 nes mes ne koreguojant viduryje, norėčiau, kad ką nors pakeisti? 992 01:08:52,000 --> 01:08:54,000 Ne, nes visi šie atvejai yra nesuderinami. 993 01:08:54,000 --> 01:08:58,000 Vėl, mano blogas. 994 01:08:58,000 --> 01:09:01,000 Mes neturime, manau, reikia šio else if. 995 01:09:01,000 --> 01:09:05,000 Mes galime suteikti jai pabandyti ir paleisti jį ir pamatyti, kas atsitiks. 996 01:09:05,000 --> 01:09:08,000 Statyba, įvyko klaida. 997 01:09:08,000 --> 01:09:12,000 Tai tikriausiai todėl, kad aš ant jų b ir e čia. 998 01:09:12,000 --> 01:09:14,000 Turiu bet tų up viršuje? 999 01:09:14,000 --> 01:09:16,000 Ji ne atrodo kaip jis. 1000 01:09:16,000 --> 01:09:20,000 Mes nutolinti, statyti, 1001 01:09:20,000 --> 01:09:24,000 ten jis eina, todėl dabar, jei mes ieškome 15 1002 01:09:24,000 --> 01:09:28,000 Taip. 1003 01:09:28,000 --> 01:09:30,000 Leiskite man padidinti. 1004 01:09:30,000 --> 01:09:33,000 15, taip. Mes galime paleisti jį dar kartą. 1005 01:09:33,000 --> 01:09:36,000 Įkelti kodą, statybos, veikia. 1006 01:09:36,000 --> 01:09:41,000 Mes galime ieškoti kažką panašaus į 13, 1007 01:09:41,000 --> 01:09:45,000 ir mes neturime nieko spausdinti, todėl ji negali rasti už mus. 1008 01:09:45,000 --> 01:09:51,000 Tai puiku, nes tai nėra mūsų sąraše. 1009 01:09:51,000 --> 01:09:53,000 >> Dabar mes esame pavėluotai. 1010 01:09:53,000 --> 01:09:55,000 Kad ketina šią savaitę. 1011 01:09:55,000 --> 01:10:00,000 Ačiū prisijungti, see you later. 1012 01:10:00,000 --> 01:10:02,000 >> [CS50.TV]