1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [Pjesa 3] [Less komode] 2 00:00:03,000 --> 00:00:05,000 >> [Nate Hardison] [Universiteti i Harvardit] 3 00:00:05,000 --> 00:00:08,000 >> [Kjo është CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:10,000 >> Të gjithë të drejtë, le të ketë filluar. 5 00:00:10,000 --> 00:00:13,000 Mirë se vini në Javën 4 të CS50. 6 00:00:13,000 --> 00:00:19,000 Në qoftë se ju djema të hapur një shfletues web dhe e hapur deri pset 3, 7 00:00:19,000 --> 00:00:23,000 Përleshje me CS50, ne jemi duke shkuar për të filluar do të 8 00:00:23,000 --> 00:00:26,000 përmes seksionit të pyetjeve atje. 9 00:00:26,000 --> 00:00:32,000 Ashtu si javën e kaluar, ne do të punojmë në CS50 Spaces, 10 00:00:32,000 --> 00:00:35,000 në qoftë se ju do të tërheqë që deri si edhe, 11 00:00:35,000 --> 00:00:43,000 dhe në qoftë se ju shkoni përpara dhe për të vizituar këtë link që kam marrë deri këtu në krye. 12 00:00:43,000 --> 00:00:45,000 Është koha për të marrë filluar. 13 00:00:45,000 --> 00:00:51,000 Ne kemi marrë pak programin tonë hi këtu. Asgjë çmendur. 14 00:00:51,000 --> 00:00:55,000 Një nga gjërat e para që unë dua të bëj me ju djema shkoni sot është më shumë se një zgjidhje pak 15 00:00:55,000 --> 00:00:58,000 Për të vendosur, Problemi 1 lloj i zgjidhjeve shembull, 16 00:00:58,000 --> 00:01:03,000 vetëm kështu që ju mund të merrni një të ndjehen për atë që llojet e stafit kodi është shkruar, 17 00:01:03,000 --> 00:01:07,000 çfarë lloj të nxënësve kod tjera janë shkruar, 18 00:01:07,000 --> 00:01:10,000 dhe a keni marrë një vështrim në atë, sepse unë e di se është e çuditshme 19 00:01:10,000 --> 00:01:14,000 Kur ju të paraqesë një zgjidhje për një sërë problemeve dhe për të marrë komente 20 00:01:14,000 --> 00:01:18,000 në versionin tuaj, por ndonjëherë është e dobishme për të parë se si njerëzit e tjerë e bëri atë, 21 00:01:18,000 --> 00:01:22,000 sidomos ato që janë në kërkim të bukur. 22 00:01:22,000 --> 00:01:27,000 Për pjesën më të madhe, unë kam qenë i impresionuar me të vërtetë me zgjidhje që ju djema të prodhuara. 23 00:01:27,000 --> 00:01:31,000 Unë nuk kanë filluar ende në kërkim në Set 2s tuaja problem, por në qoftë se ata janë asgjë si i pari, 24 00:01:31,000 --> 00:01:34,000 kjo do të thotë asgjë, por gjëra të mira. 25 00:01:34,000 --> 00:01:40,000 >> Nëse ju shikoni në rishikimet e mia, le të fillojë të gjithë rrugën poshtë në Rishikimi 1, 26 00:01:40,000 --> 00:01:47,000 dhe ne jemi duke shkuar për të marrë një sy të shpejtë në një zgjidhje Mario. 27 00:01:47,000 --> 00:01:54,000 Nëse ju tërheq këtë ide, këto programe që ne jemi duke shkuar për të paraqitur janë të sakta. 28 00:01:54,000 --> 00:01:56,000 Nuk ishin çështjet korrektësinë me këto probleme, por më tepër, 29 00:01:56,000 --> 00:01:59,000 ne duam të flasim pak në lidhje me çështje të projektimit të ndryshme 30 00:01:59,000 --> 00:02:03,000 që janë duke u përdorur këtu. 31 00:02:03,000 --> 00:02:08,000 Një nga gjërat që ishte interesante në lidhje me zgjidhjen e 32 00:02:08,000 --> 00:02:11,000 është se ai e përdori këtë të ri ndërtimin quajtur kile define, 33 00:02:11,000 --> 00:02:15,000 nganjëherë referuar edhe si një hash të përcaktuar. 34 00:02:15,000 --> 00:02:18,000 Më lejoni të zoom në në atë këtu. 35 00:02:18,000 --> 00:02:24,000 A # define ju lejon për të dhënë emrat e këtyre numrave në programin tuaj. 36 00:02:24,000 --> 00:02:28,000 Në këtë rast, lartësia maksimale e një piramide në Mario 37 00:02:28,000 --> 00:02:34,000 ishte 23 dhe në vend se të vënë 23 në kodin tim- 38 00:02:34,000 --> 00:02:37,000 ne do të referohemi se si coding hard 23 - 39 00:02:37,000 --> 00:02:43,000 në vend të kësaj kjo i jep MAX_HEIGHT emrin në atë numër, 40 00:02:43,000 --> 00:02:48,000 kështu që këtu poshtë në A-, ndërsa lak tim 41 00:02:48,000 --> 00:02:51,000 ju në fakt mund t'i referohet MAX_HEIGHT 42 00:02:51,000 --> 00:02:55,000 në vend që të vënë numrin e 23 in 43 00:02:55,000 --> 00:02:57,000 [Student] Çfarë është avantazh për të bërë këtë? 44 00:02:57,000 --> 00:02:59,000 Kjo është një pyetje e madhe. 45 00:02:59,000 --> 00:03:03,000 Njëra është lexueshmëri. 46 00:03:03,000 --> 00:03:08,000 Një avantazh i përdorimit të kësaj # define është lexueshmëria. 47 00:03:08,000 --> 00:03:11,000 Kur unë jam duke e lexuar këtë kod, unë mund të shoh se çfarë po ndodh. 48 00:03:11,000 --> 00:03:15,000 >> Unë mund të shoh në këtë gjendje këtu se ne jemi testimin 49 00:03:15,000 --> 00:03:19,000 për lartësinë e të qenit <0, të cilat ne mund të përcaktohet edhe 50 00:03:19,000 --> 00:03:22,000 të jetë një lartësi minimale ose një lartësi min. 51 00:03:22,000 --> 00:03:25,000 Përparësia tjetër është se unë pastaj mund të lexoni pjesën tjetër të linjës për të parë 52 00:03:25,000 --> 00:03:30,000 se ne jemi gjithashtu të kontrolluar për të siguruar se lartësia nuk është më e madhe se lartësia max, 53 00:03:30,000 --> 00:03:35,000 sepse ne jemi duke shkuar për të vazhduar, ndërsa lartësia është më e madhe se lartësia max. 54 00:03:35,000 --> 00:03:40,000 Përparësia tjetër është-nëse unë zoom out pak këtu- 55 00:03:40,000 --> 00:03:49,000 në qoftë se unë të drejtuar këtë program dhe kam drejtuar atë, të themi, me 23 të drejtë tani, 56 00:03:49,000 --> 00:03:52,000 ajo do të shtypura nga të gjitha 23 rreshtave ashtu si kjo. 57 00:03:52,000 --> 00:03:54,000 Por thonë se unë të kërkuar për të ndryshuar lartësi max, 58 00:03:54,000 --> 00:03:57,000 dhe tani unë dua të kufizojë lartësinë maksimale të piramidave 59 00:03:57,000 --> 00:04:06,000 të jenë të them vetëm njeri, që ishte i shokuar. 60 00:04:06,000 --> 00:04:14,000 # Include , # define MAX_HEIGHT, 61 00:04:14,000 --> 00:04:18,000 dhe le të thonë se ne të kërkuar për të vendosur atë të barabartë me 10. 62 00:04:18,000 --> 00:04:22,000 Tani në këtë pikë, të gjitha unë duhej të bëja ishte të ndryshuar atë në këtë vend një të tillë. 63 00:04:22,000 --> 00:04:27,000 Unë mund recompile kodin, dhe tani në qoftë se unë të përpiqet dhe të shkruani në 12, 64 00:04:27,000 --> 00:04:30,000 kjo do të shkaktonte mua përsëri. 65 00:04:30,000 --> 00:04:33,000 Në këtë rast, ne jemi vetëm duke përdorur MAX_HEIGHT herë. 66 00:04:33,000 --> 00:04:37,000 Kjo nuk është se i madh i një sherr për të shkuar në 67 00:04:37,000 --> 00:04:40,000 dhe për të ndryshuar atë në lak, ndërsa në qoftë se keni nevojë për të. 68 00:04:40,000 --> 00:04:44,000 Por në programet ku ju jeni referenca të njëjtin numër magjik 69 00:04:44,000 --> 00:04:47,000 pa pushim, ky mekanizëm # define është me të vërtetë i dobishëm 70 00:04:47,000 --> 00:04:52,000 sepse ju vetëm të ndryshojë atë një herë në krye të file-kjo është zakonisht ku ju vënë ato- 71 00:04:52,000 --> 00:04:57,000 dhe ndryshimi percolates nëpër pjesën tjetër të file. 72 00:04:57,000 --> 00:05:02,000 >> Gjëra të tjera kam kërkuar të vihet në dukje në këtë detyrë që kam menduar dukej me të vërtetë e bukur, 73 00:05:02,000 --> 00:05:05,000 njëri ishte emërtimin e variablave. 74 00:05:05,000 --> 00:05:14,000 Ju shikoni këtu se ne kemi marrë variabla integer quajtur rresht dhe quajtur lartësi. 75 00:05:14,000 --> 00:05:20,000 Hapësira, hashes, ajo ndihmon të bëjë Kodi pak më i lexueshëm, 76 00:05:20,000 --> 00:05:25,000 e bën atë një pak më të kuptueshme se çfarë po ndodh në të vërtetë. 77 00:05:25,000 --> 00:05:31,000 Kjo është në kontrast me përdorimin e, të themi, letra të rastit 78 00:05:31,000 --> 00:05:35,000 ose thjesht gobbledygook krejt. 79 00:05:35,000 --> 00:05:39,000 Një gjë e fundit që unë do të theksoj është se në për sythe, 80 00:05:39,000 --> 00:05:45,000 shpesh këto variabla iterator, këto sportelet që ju përdorni në tuaj për sythe, 81 00:05:45,000 --> 00:05:51,000 kjo është standard dhe konvencionale për të filluar ato me ose unë dhe pastaj j dhe pastaj k 82 00:05:51,000 --> 00:05:54,000 dhe shkon në nga atje, nëse keni nevojë për më shumë variabla, 83 00:05:54,000 --> 00:05:56,000 dhe kjo është vetëm një konventë. 84 00:05:56,000 --> 00:05:58,000 Ka shumë konventa. 85 00:05:58,000 --> 00:06:00,000 Kjo varet nga gjuhë programimi që ju jeni duke përdorur. 86 00:06:00,000 --> 00:06:04,000 Por në C, ne zakonisht fillojnë me i. 87 00:06:04,000 --> 00:06:08,000 Kjo nuk ka kuptim për të përdorur, të themi, një ose b 88 00:06:08,000 --> 00:06:13,000 në varësi të situatës. 89 00:06:13,000 --> 00:06:15,000 Kjo është ajo për këtë një të tillë. 90 00:06:15,000 --> 00:06:25,000 Nëse ju tërheqë deri tani Shqyrtimi 2, ju do të shihni një tjetër Mario, 91 00:06:25,000 --> 00:06:29,000 dhe kjo është e ngjashme me një tjetër që sapo pamë, 92 00:06:29,000 --> 00:06:32,000 por ajo ka lloj diçka të ftohtë. 93 00:06:32,000 --> 00:06:38,000 Nëse ne shikojmë në këtë seksion të drejtë këtu brenda brendshme për lak, 94 00:06:38,000 --> 00:06:44,000 ata janë duke përdorur një sintaksë të çmendur kërkoni këtu të drejtë në këtë linjë. 95 00:06:44,000 --> 00:06:47,000 Kjo është quajtur një operator tresh. 96 00:06:47,000 --> 00:06:53,000 Kjo është një deklaratë në qoftë tjetër kondensuar në një linjë. 97 00:06:53,000 --> 00:06:57,000 Gjendja është kjo pjesë në kllapa. 98 00:06:57,000 --> 00:07:05,000 Kjo është ekuivalente me thënë në qoftë se j lartësi <- i - 1. 99 00:07:05,000 --> 00:07:10,000 Dhe pastaj çfarë përmbajtjen e që në qoftë se blloku do të jetë shumë hapësirë 100 00:07:10,000 --> 00:07:16,000 dhe pastaj përmbajtjen e çfarë tjetër do të jetë shumë këtë #. 101 00:07:16,000 --> 00:07:20,000 Është në thelb caktimin e një hapësirë ​​për këtë variabël. 102 00:07:20,000 --> 00:07:24,000 Është vënë një hapësirë ​​në përmbajtjen e ndryshueshme bllok, 103 00:07:24,000 --> 00:07:29,000 nëse ky kusht është plotësuar, dhe nëse gjendja nuk është plotësuar, 104 00:07:29,000 --> 00:07:32,000 pastaj ndryshueshme bllok merr këtë #. 105 00:07:32,000 --> 00:07:37,000 Dhe pastaj, sigurisht, në vend të ndërtimit të një varg të tërë 106 00:07:37,000 --> 00:07:43,000 dhe shtypje gjithçka në fund kjo zgjidhje printon atë një karakter në një kohë. 107 00:07:43,000 --> 00:07:48,000 Pretty cool. 108 00:07:48,000 --> 00:07:53,000 >> Një disa gjëra për të parë. Ne do të lëvizin në të babëzitur. 109 00:07:53,000 --> 00:07:58,000 Tani në qoftë se ne e shikojmë në babëzitur, kjo zgjidhje e parë 110 00:07:58,000 --> 00:08:00,000 përdor këto # përcakton mjaft. 111 00:08:00,000 --> 00:08:06,000 Ne kemi marrë një konstante të përcaktuar për secilin nga numra të ndryshëm në këtë program. 112 00:08:06,000 --> 00:08:12,000 Ne kemi marrë një për cent për dollar, një për lagjet, dimes, nickels, dhe pennies, 113 00:08:12,000 --> 00:08:15,000 dhe tani në qoftë se ne lëvizni poshtë dhe lexoni kodin, 114 00:08:15,000 --> 00:08:22,000 ne mund të shohim një standard për ta bërë gjithçka që loop ndërsa shtypi jashtë. 115 00:08:22,000 --> 00:08:25,000 Lloji i Thelbi i këtij problemi është kuptuar se 116 00:08:25,000 --> 00:08:29,000 ju nevojitet për të kthyer noton që ju lexoni në nga përdoruesit në një numër të plotë 117 00:08:29,000 --> 00:08:32,000 të saktë të bëjë matematikë, dhe kjo është për shkak se 118 00:08:32,000 --> 00:08:36,000 me numra decimal, si kemi biseduar për një kohë të shkurtër në leksion, 119 00:08:36,000 --> 00:08:41,000 kjo nuk është e mundur të saktë të paraqesin çdo vlerë të vetme në numrin linjë 120 00:08:41,000 --> 00:08:47,000 sepse nuk janë vlerat pafundësisht shumë ndërmjet 3 dhe, të themi, edhe 3.1. 121 00:08:47,000 --> 00:08:54,000 Ju mund të keni dhe 3,01 3,001 3,0001 dhe, dhe ju mund të mbajë. 122 00:08:54,000 --> 00:09:00,000 Ajo rezulton sa herë që ju jeni duke punuar me të holla, ju shpesh duan për të kthyer atë 123 00:09:00,000 --> 00:09:05,000 në formatin numër i plotë në mënyrë që ju nuk jeni të humbur dhe pennies atë lloj stuff. 124 00:09:05,000 --> 00:09:09,000 Bërë që dhe arrestimi ishte kyç. 125 00:09:09,000 --> 00:09:14,000 Kjo zgjidhje ka përdorur një algoritëm të përkryer të drejtpërdrejtë, të madh, 126 00:09:14,000 --> 00:09:17,000 cilat decremented numrin e mbetura cent, së pari sipas tremujorëve, 127 00:09:17,000 --> 00:09:19,000 pastaj nga dimes, pastaj nga nickels, pastaj me pennies, 128 00:09:19,000 --> 00:09:24,000 dhe duke shtuar numrin e monedhave çdo herë. 129 00:09:24,000 --> 00:09:31,000 >> Një zgjidhje që ne do të shohim, si unë zoom jashtë dhe të shkojnë në Revision 4, 130 00:09:31,000 --> 00:09:40,000 kishte një fillim shumë të ngjashme por div përdorur në vend dhe mod 131 00:09:40,000 --> 00:09:44,000 drejtë mbi këtu për të llogaritur numrin e cent. 132 00:09:44,000 --> 00:09:50,000 Kjo, numri i tremujorëve është i barabartë me numrin e pjesëtuar me 25 cent, 133 00:09:50,000 --> 00:09:53,000 dhe arsyeja është sepse kjo punon ne jemi duke bërë ndarjen numër i plotë, 134 00:09:53,000 --> 00:09:58,000 kështu që është e hidhni ndonjë tjetër. 135 00:09:58,000 --> 00:10:02,000 [Student] A kemi për të komentuar kërkimin? 136 00:10:02,000 --> 00:10:05,000 Me të vërtetë varet. 137 00:10:05,000 --> 00:10:08,000 [Student] Ju jeni komentuar më shumë se kodi drejtë këtu. 138 00:10:08,000 --> 00:10:16,000 Po, dhe kështu që nuk janë një bandë e ndryshme filozofi për këtë. 139 00:10:16,000 --> 00:10:21,000 Filozofia ime personale është se kodi juaj është me të vërtetë e vërtetë, 140 00:10:21,000 --> 00:10:24,000 si kodit tuaj është ajo që është në të vërtetë ekzekutimin në kompjuter, 141 00:10:24,000 --> 00:10:29,000 dhe kështu kodin tuaj duhet të jetë aq i lexueshëm të jetë e mundur që të mos kërkojnë si shumë komente. 142 00:10:29,000 --> 00:10:33,000 Tha se, kur ju jeni duke bërë gjëra që janë lloj i ndërlikuar matematikisht 143 00:10:33,000 --> 00:10:38,000 ose algorithmically, ajo është e mirë për të komentuar ato në mënyrë që ju mund të 144 00:10:38,000 --> 00:10:43,000 shtoni një dimension shtesë, një shtresë shtesë për këdo që është lexuar kodin tuaj. 145 00:10:43,000 --> 00:10:49,000 Në këto zgjidhje, shpesh ato janë komentuar më shumë vetëm për shkak se 146 00:10:49,000 --> 00:10:52,000 ne duam të jetë në gjendje për të shpërndarë ato dhe të ketë njerëz të marr ato 147 00:10:52,000 --> 00:10:56,000 dhe lexoni ato mjaft lehtë. 148 00:10:56,000 --> 00:11:05,000 Por definitivisht, unë do të pajtohem se kjo është e rëndë. 149 00:11:05,000 --> 00:11:07,000 [Student] Por, kur në dyshim, të shkojnë të rënda? 150 00:11:07,000 --> 00:11:10,000 Kur në dyshim, shkoni rëndë. 151 00:11:10,000 --> 00:11:17,000 Disa njerëz do të thonë ndonjëherë 0 kthimit ose diçka të tillë. 152 00:11:17,000 --> 00:11:20,000 Unë mendoj se kjo është një koment qesharake. 153 00:11:20,000 --> 00:11:22,000 Qartë se është ajo që po ndodh. 154 00:11:22,000 --> 00:11:25,000 Unë nuk kam nevojë anglisht të më thoni se. 155 00:11:25,000 --> 00:11:28,000 Ndonjëherë njerëzit do të shkruajë gjëra si "kthxbai!" 156 00:11:28,000 --> 00:11:32,000 Kjo është lloj i bukur, por edhe jo- 157 00:11:32,000 --> 00:11:35,000 se nuk është bërë dallimin në mes të pikave të komentuar apo jo. 158 00:11:35,000 --> 00:11:41,000 Këto llojet e Komentet janë vetëm ha, ha. 159 00:11:41,000 --> 00:11:43,000 Cool. 160 00:11:43,000 --> 00:11:48,000 >> Në këtë pikë, le të fillojnë të punojnë në problemin Set 3 seksionin e pyetjeve. 161 00:11:48,000 --> 00:11:52,000 Në qoftë se ju djema të tërheqë këtë përsëri, 162 00:11:52,000 --> 00:11:55,000 si me javën e kaluar, ne nuk jemi duke shkuar për të parë pantallona të shkurtra në këtë seksion. 163 00:11:55,000 --> 00:12:00,000 Ne do të le ju djema të bëjë që në kohën tuaj dhe të flasim në lidhje me pyetjet. 164 00:12:00,000 --> 00:12:05,000 Por tani në këtë seksion ne do të kalojnë një kohë pak më shumë 165 00:12:05,000 --> 00:12:11,000 flasim pak nga bazat kodim 166 00:12:11,000 --> 00:12:15,000 si ne e bëmë javën e kaluar, dhe në vend të kësaj, ne do të përqëndrohet më shumë në 167 00:12:15,000 --> 00:12:22,000 pak më i teorisë, kështu duke folur për kërkimin binar dhe pastaj klasifikim. 168 00:12:22,000 --> 00:12:27,000 Nga ata prej jush të cilët kanë ndjekur së bashku me ligjëratës, 169 00:12:27,000 --> 00:12:30,000 dikush mund të më jepni një përmbledhje të asaj që është dallimi 170 00:12:30,000 --> 00:12:35,000 mes kërkim binar dhe kërko lineare? 171 00:12:35,000 --> 00:12:37,000 Çfarë po ndodh? Sigurt. 172 00:12:37,000 --> 00:12:42,000 Kërkimet lineare kërko nëpër çdo element në listën e renditura 173 00:12:42,000 --> 00:12:45,000 një nga një nga një nga një nga një, 174 00:12:45,000 --> 00:12:50,000 dhe kërko binar ndan listë në 2 grupe, 175 00:12:50,000 --> 00:12:57,000 kontrollon nëse vlera çelësat që ju jeni në kërkim për të është më e madhe se ose më pak se vlera e midpoint 176 00:12:57,000 --> 00:13:00,000 që ju vetëm e gjeti, dhe nëse kjo është më pak se, ajo shkon me listën më të ulët 177 00:13:00,000 --> 00:13:03,000 dhe pastaj e ndan atë përsëri, ka të njëjtin funksion 178 00:13:03,000 --> 00:13:07,000 të gjithë rrugën poshtë derisa ai gjen midpoint të jetë e barabartë me vlerën e vetë. 179 00:13:07,000 --> 00:13:10,000 Drejtë. 180 00:13:10,000 --> 00:13:12,000 >> Pse nuk kemi kujdes? 181 00:13:12,000 --> 00:13:20,000 Pse nuk flasim për kërkimin binar kundrejt kërkim linear? 182 00:13:20,000 --> 00:13:22,000 Po. 183 00:13:22,000 --> 00:13:24,000 Binary është një shumë më të shpejtë, kështu që nëse ju të dyfishtë madhësinë e problemit 184 00:13:24,000 --> 00:13:27,000 ajo merr një hap më tepër se dy herë më shumë. 185 00:13:27,000 --> 00:13:29,000 Saktësisht. 186 00:13:29,000 --> 00:13:31,000 Kjo është një përgjigje e madhe. 187 00:13:31,000 --> 00:13:36,000 Kërkimi lineare është shumë e kontrolluar nga një element në një kohë, 188 00:13:36,000 --> 00:13:39,000 dhe siç e pamë në ditën e parë të leksionit 189 00:13:39,000 --> 00:13:42,000 kur Davidi shkoi nëpër shembull librin e tij të telefonit 190 00:13:42,000 --> 00:13:45,000 dhe grabitur nga një faqe e librit të telefonit në një kohë 191 00:13:45,000 --> 00:13:47,000 dhe mbahen bërë që mbi dhe mbi dhe mbi përsëri, 192 00:13:47,000 --> 00:13:51,000 ajo do të marrë atij një kohë vërtet të gjatë për të gjetur askënd në librin e telefonit, 193 00:13:51,000 --> 00:13:55,000 përveç nëse, natyrisht, ai ishte në kërkim për dikë që në fillim të alfabetit. 194 00:13:55,000 --> 00:14:00,000 Me kërkimin binar, ju mund të shkoni shumë më të shpejtë, 195 00:14:00,000 --> 00:14:05,000 dhe kjo nuk është vetëm dy herë më shpejt, ose 3 herë më shpejt ose 4 herë më shpejt. 196 00:14:05,000 --> 00:14:13,000 Por problemi merr të vogla dhe të vogla dhe të vogla shumë më të shpejtë. 197 00:14:13,000 --> 00:14:17,000 Për të ilustruar këtë, ne do të fillojmë të flasim në lidhje me atë që po ndodh në 198 00:14:17,000 --> 00:14:21,000 kur kemi shkruar kërkimin binar. 199 00:14:21,000 --> 00:14:27,000 Problemi në dorë është se në qoftë se unë kam një rrjet të numrave, 200 00:14:27,000 --> 00:14:40,000 thonë, 1, 2, 3, 5, 7, 23, 45, 78, 12323, 201 00:14:40,000 --> 00:14:47,000 dhe pastaj 9 me një ton të 0s pas saj, 202 00:14:47,000 --> 00:14:52,000 ne duam të jetë në gjendje të kuptoj se çfarë është me të vërtetë më shpejt në 203 00:14:52,000 --> 00:14:57,000 ky grup e numrave. 204 00:14:57,000 --> 00:15:00,000 Unë e di kjo duket një budalla pak dhe pak ndërtuar, 205 00:15:00,000 --> 00:15:02,000 sepse tani është. 206 00:15:02,000 --> 00:15:05,000 Ne kemi një grup që nuk ka elemente shumë e shumë në të, 207 00:15:05,000 --> 00:15:08,000 dhe në qoftë se unë kërkoj nga ju që të kuptoj se nëse apo jo 208 00:15:08,000 --> 00:15:11,000 23 është në rrjet, ju mund të bëni që shumë shpejt 209 00:15:11,000 --> 00:15:16,000 vetëm nga glancing në këtë dhe duke u thënë mua po ose jo. 210 00:15:16,000 --> 00:15:20,000 Analog për t'u marrë parasysh është e imagjinoni nëse kjo ishte, të themi, 211 00:15:20,000 --> 00:15:27,000 një spreadsheet Excel rreshtave me 10.000, 20.000 rreshtave. 212 00:15:27,000 --> 00:15:31,000 Sigurisht, ju mund të bëni F komandës ose F kontrollit dhe të kërkoni diçka. 213 00:15:31,000 --> 00:15:33,000 Ju gjithashtu mund të përdorni filtra dhe sende kërkimit, 214 00:15:33,000 --> 00:15:37,000 por nëse keni pasur për të kërkuar nëpër atë vijë fotografi nga rresht pas rreshti, 215 00:15:37,000 --> 00:15:40,000 ajo do të marrë ju një kohë të gjatë për të gjetur atë. 216 00:15:40,000 --> 00:15:42,000 Kjo është lloj i si në shembullin librin e telefonit, gjithashtu, ku 217 00:15:42,000 --> 00:15:44,000 askush nuk duket përmes një faqe libri të telefonit në një kohë. 218 00:15:44,000 --> 00:15:47,000 Në mënyrë tipike, ata do të hapur atë në mes, 219 00:15:47,000 --> 00:15:50,000 ose në rastin e një shumë të librave telefonit dhe fjalorë ku 220 00:15:50,000 --> 00:15:54,000 ju në të vërtetë kanë të akorduar në letrën e parë, 221 00:15:54,000 --> 00:16:01,000 ju rrokullisje në atë letër të parë dhe të hapur dhe të fillojnë duke kaluar aty. 222 00:16:01,000 --> 00:16:03,000 >> Kujtoj mua e emrit tuaj përsëri. >> Sam. 223 00:16:03,000 --> 00:16:05,000 Sam. 224 00:16:05,000 --> 00:16:11,000 Ashtu si Sam tha se procesi linear kërkimit do të jetë me të vërtetë i ngadalshëm, 225 00:16:11,000 --> 00:16:15,000 dhe në vend me kërkimin binar, mënyra punon kjo është se 226 00:16:15,000 --> 00:16:21,000 çdo herë ne do të shkojmë përmes një përsëritje të algorithm tonë kërkim, 227 00:16:21,000 --> 00:16:27,000 ne jemi duke shkuar për të ndarë listën në gjysmë, në thelb, 228 00:16:27,000 --> 00:16:33,000 në dy listat më të vogla. 229 00:16:33,000 --> 00:16:39,000 Dhe pastaj në përsëritje e ardhshëm të lak, ne do të ndajnë atë përsëri 230 00:16:39,000 --> 00:16:44,000 në listat e tjera të vogla. 231 00:16:44,000 --> 00:16:48,000 Siç mund ta shikoni, problemi vazhdon të bëhet më i vogël dhe të vogla 232 00:16:48,000 --> 00:16:55,000 sepse ne kemi mbajtur gjysmën discarding të listës çdo herë të vetme. 233 00:16:55,000 --> 00:16:59,000 Si e bën këtë punë hidhni? 234 00:16:59,000 --> 00:17:05,000 Ashtu si një kujtesë, ajo që ne jemi duke shkuar për të bërë në qoftë se ne ishim një kompjuter 235 00:17:05,000 --> 00:17:11,000 dhe ne u, të themi, në kërkim për numrin 5 në këtë listë 236 00:17:11,000 --> 00:17:15,000 është se ne do të zgjedhë një numër në mes. 237 00:17:15,000 --> 00:17:26,000 Në mes të këtij lista, sepse ka 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 numra, 238 00:17:26,000 --> 00:17:32,000 ne do të vini numrin as në pozitën e 4 ose në pozitën e 5, 239 00:17:32,000 --> 00:17:38,000 dhe ne do të thërrasë se mesme e listës sonë. 240 00:17:38,000 --> 00:17:42,000 Marr numrin në mes. 241 00:17:42,000 --> 00:17:51,000 Pastaj, ashtu si Sam tha, ne do të provuar për të parë nëse ky numër është i barabartë 242 00:17:51,000 --> 00:17:59,000 me numrin që ne duam për të marrë ose numrin tonë të dëshiruar. 243 00:17:59,000 --> 00:18:06,000 Nëse është e barabartë, atëherë ne kemi gjetur atë. Kemi fituar. 244 00:18:06,000 --> 00:18:12,000 Nëse kjo nuk është e barabartë, atëherë ka disa raste. 245 00:18:12,000 --> 00:18:15,000 Dy raste janë ose numri duhet të jetë më i madh sesa numri që ne jemi duke kërkuar në, 246 00:18:15,000 --> 00:18:19,000 ose ajo është më pak se. 247 00:18:19,000 --> 00:18:25,000 Në qoftë se kjo është më e madhe, ne shkojmë në të djathtë. 248 00:18:25,000 --> 00:18:33,000 Dhe në qoftë se kjo është pak, ne shkojmë në të majtë. 249 00:18:33,000 --> 00:18:41,000 Dhe pastaj ne të përsëritur të gjithë procesin përsëri 250 00:18:41,000 --> 00:18:48,000 në të dyja gjysmën e duhur ose gjysmën e majtë të listës. 251 00:18:48,000 --> 00:18:51,000 >> Problemi i parë në seksionin e sotme është të kuptoj se 252 00:18:51,000 --> 00:18:55,000 se si ne mund të vërtetë të fillojë për të shprehur këtë në kodin e C. 253 00:18:55,000 --> 00:18:58,000 Ne kemi marrë pseudokod këtu. 254 00:18:58,000 --> 00:19:04,000 Ajo që ne do të fillojnë të bëjnë është që unë do të tërheqë një markë të re hapësirë, 255 00:19:04,000 --> 00:19:09,000 ruani këtë rishikim kështu që ne kemi këto shënime për më vonë, 256 00:19:09,000 --> 00:19:20,000 ne do të fshini të gjitha këto, dhe pastaj kopjoni dhe ngjisni nga vendosur problemit 257 00:19:20,000 --> 00:19:26,000 këtë informacion në hapësirat tona, dhe shpresojmë se kjo nuk do të thyejnë. 258 00:19:26,000 --> 00:19:28,000 Përsosur. 259 00:19:28,000 --> 00:19:33,000 Në qoftë se ju djema të gjithë bëjmë atë, kopjoni dhe ngjisni këtë kod në hapësirë ​​tuaj të re, 260 00:19:33,000 --> 00:19:43,000 në një njërit bosh. 261 00:19:43,000 --> 00:19:47,000 Le të përpiqemi Danielin. Nëse ju përpilojnë dhe për të drejtuar këtë program, e bën këtë punë? 262 00:19:47,000 --> 00:19:49,000 Nr. >> Çfarë është ajo duke thënë? 263 00:19:49,000 --> 00:19:53,000 Ajo thotë se kontrolli i arrin fundin e jo void funksion. 264 00:19:53,000 --> 00:19:55,000 Yeah, kështu që më lejoni të provoni drejtimin e tij. 265 00:19:55,000 --> 00:19:59,000 A keni djema parë këtë më parë? A e dini se çfarë do të thotë kjo? 266 00:19:59,000 --> 00:20:01,000 Mirë, le të analizoj këtë pak pak. 267 00:20:01,000 --> 00:20:10,000 Është thënë në file.c on line 9, kolona 1 ne kemi një gabim, ashtu si ke thënë, 268 00:20:10,000 --> 00:20:16,000 dhe ai thotë se është e rrjedhur nga paralajmërimi gabim dhe llojin e kthimit paralajmërim. 269 00:20:16,000 --> 00:20:18,000 Ajo duket si diçka po ndodh me llojin e kthimit, që e bën kuptim. 270 00:20:18,000 --> 00:20:21,000 Ne kemi marrë një funksion jo void, që do të thotë se ne kemi marrë një funksion 271 00:20:21,000 --> 00:20:24,000 që nuk ka kthim pavlefshme. 272 00:20:24,000 --> 00:20:27,000 Një funksion i pavlefshëm është ai që duket si ky: 273 00:20:27,000 --> 00:20:35,000 void foo (), dhe kjo është e pavlefshme për shkak se kthimi lloji është e pavlefshme, 274 00:20:35,000 --> 00:20:38,000 që do të thotë se në qoftë se kemi pasur diçka këtu 275 00:20:38,000 --> 00:20:45,000 si kthim 1, ne do të merrni një gabim përpilues për këtë. 276 00:20:45,000 --> 00:20:49,000 Megjithatë, ne kemi një funksion jo pavlefshme. 277 00:20:49,000 --> 00:20:51,000 Funksioni jo pavlefshëm jonë në këtë rast është funksion tonë të kërkimit 278 00:20:51,000 --> 00:20:56,000 sepse ajo ka një lloj të kthimit të bool. 279 00:20:56,000 --> 00:20:59,000 Kur është thënë se kontrolli i arrin fundin e një funksion jo void, 280 00:20:59,000 --> 00:21:02,000 kjo është për shkak se kërkimi nuk ka një deklaratë e kthimit. 281 00:21:02,000 --> 00:21:04,000 Kjo nuk është asgjë e kthyer tipit bool. 282 00:21:04,000 --> 00:21:09,000 >> Ne mund të rregullojmë atë, dhe çfarë mendoni ju djema 283 00:21:09,000 --> 00:21:13,000 Kërkimi duhet të kthehen nga default? 284 00:21:13,000 --> 00:21:16,000 Çfarë duhet të jetë kthimi vlera e parazgjedhur kërkim? 285 00:21:16,000 --> 00:21:19,000 Sepse kjo është ajo që ne mund të vënë në fund. 286 00:21:19,000 --> 00:21:21,000 Charlotte, a keni ndonjë-? 287 00:21:21,000 --> 00:21:23,000 Vërtetë apo e rreme? >> Vërtetë apo e rreme. 288 00:21:23,000 --> 00:21:26,000 Cili? 289 00:21:26,000 --> 00:21:28,000 Rreme. Nuk e di. 290 00:21:28,000 --> 00:21:30,000 False? Le të provoni. 291 00:21:30,000 --> 00:21:32,000 Pse do thoni kthimit të rreme? Kjo është intuita e madhe. 292 00:21:32,000 --> 00:21:35,000 [Charlotte] Unë nuk e di. 293 00:21:35,000 --> 00:21:39,000 Ne jemi duke shkuar për të kthyer të rreme në këtë rast, sepse kjo do të jetë paracaktuar tonë 294 00:21:39,000 --> 00:21:44,000 në qoftë se për ndonjë arsye lista është bosh ose gjilpërë 295 00:21:44,000 --> 00:21:46,000 se ne jemi duke kërkuar për nuk ekziston. 296 00:21:46,000 --> 00:21:50,000 Pastaj në fund, në qoftë se ne nuk do të kthehen vërtetë më herët në këtë funksion, 297 00:21:50,000 --> 00:21:55,000 ne gjithmonë e dimë se ky funksion do të thonë Jo, ajo nuk është në rrjet. 298 00:21:55,000 --> 00:21:58,000 Kjo nuk është në kashtë. 299 00:21:58,000 --> 00:22:03,000 Tani në qoftë se ne hartimin dhe drejtuar atë, më lejoni të shpëtuar këtë mënyrë ne mund të tërheqë atë. 300 00:22:03,000 --> 00:22:08,000 Tani në qoftë se ne përpilojnë dhe të drejtuar programin tonë, ajo ndërton. 301 00:22:08,000 --> 00:22:12,000 Ne kemi marrë vëmendjen tonë të shpejtë pak. 302 00:22:12,000 --> 00:22:20,000 Nëse unë goditi 4-uh-oh. 303 00:22:20,000 --> 00:22:25,000 Ajo nuk ka asgjë të shtypura jashtë. Ajo duket si çdo gjë përfundoi mirë. 304 00:22:25,000 --> 00:22:35,000 Ne kemi marrë për të mbushur këtë in 305 00:22:35,000 --> 00:22:39,000 Ne biseduam në lidhje me algorithm në pseudokod pak më parë. 306 00:22:39,000 --> 00:22:44,000 Më lejoni të shohim, përveç kësaj, 307 00:22:44,000 --> 00:22:49,000 dhe unë do të tërheq atë algorithm përsëri. 308 00:22:49,000 --> 00:22:51,000 Le të goditur këtë djalë. Jo. 309 00:22:51,000 --> 00:22:58,000 Nuk është. 310 00:22:58,000 --> 00:23:03,000 Si e bëjmë këtë? 311 00:23:03,000 --> 00:23:11,000 Çfarë do të jetë një strategji e mirë për të filluar off këtë kod? 312 00:23:11,000 --> 00:23:16,000 Ju duhet të marr një numër në mes. 313 00:23:16,000 --> 00:23:23,000 Si mund të marr një numër në mes të një grup? 314 00:23:23,000 --> 00:23:25,000 Any suggestions? 315 00:23:25,000 --> 00:23:27,000 [Student] Strlen ndarë nga 2. 316 00:23:27,000 --> 00:23:32,000 Strlen ndarë nga 2. Kjo është një njeri i madh. 317 00:23:32,000 --> 00:23:35,000 Strlen punon me lloje të veçanta të vargjeve. 318 00:23:35,000 --> 00:23:38,000 Çfarë lloje të vargjeve? 319 00:23:38,000 --> 00:23:44,000 Vargjeve string, vargjeve karakter. 320 00:23:44,000 --> 00:23:48,000 Kjo është një lloj i njëjti koncept që ne duam të zbatohen, 321 00:23:48,000 --> 00:23:52,000 por ne nuk mund të përdorin strlen, sepse ne nuk kemi një grup të karaktereve. 322 00:23:52,000 --> 00:23:55,000 Ne kemi një rrjet të ints. 323 00:23:55,000 --> 00:23:58,000 Por çfarë do të strlen marrë për ne? 324 00:23:58,000 --> 00:24:01,000 A e dini se çfarë ajo merr për ne? 325 00:24:01,000 --> 00:24:03,000 [Student] Strlen na merr gjatësinë. 326 00:24:03,000 --> 00:24:05,000 Pikërisht, ajo merr na gjatësi. 327 00:24:05,000 --> 00:24:09,000 Strlen merr gjatësinë e vektorit për ne. 328 00:24:09,000 --> 00:24:14,000 >> Si nuk kemi marrë që në programin tonë të kërkimit binar? 329 00:24:14,000 --> 00:24:18,000 Si do ta merrni gjatësinë e një grup? 330 00:24:18,000 --> 00:24:20,000 [Student] Strlen? 331 00:24:20,000 --> 00:24:25,000 Ju mund të merrni gjatësinë e një grup formatuar si duhet C string me strlen. 332 00:24:25,000 --> 00:24:31,000 Problemi, megjithatë, është se ne nuk kemi një rrjet string. 333 00:24:31,000 --> 00:24:36,000 Nëse ne shikojmë prapa në këtë kod, ne kemi këtë koleksion integer. 334 00:24:36,000 --> 00:24:38,000 Si mund ta dimë se sa kohë është? 335 00:24:38,000 --> 00:24:44,000 [Student] A ka një një ekuivalent për endpoint, si l int apo diçka? 336 00:24:44,000 --> 00:24:49,000 Ajo rezulton se në fakt nuk është, dhe kështu në një mënyrë, kjo është 337 00:24:49,000 --> 00:24:52,000 një nga ato gjëra që vetëm e mirë për të dini rreth C, 338 00:24:52,000 --> 00:24:57,000 se nuk ka asnjë mënyrë për të marrë gjatësinë e një grup 339 00:24:57,000 --> 00:24:59,000 në qoftë se të gjitha unë ju jap është array. 340 00:24:59,000 --> 00:25:02,000 Arsyeja ajo punon me vargjet, arsyeja strlen punon, 341 00:25:02,000 --> 00:25:06,000 është sepse nëse një varg është formatuar si duhet, 342 00:25:06,000 --> 00:25:12,000 ajo do të ketë atë të veçantë karakter \ 0 në fund. 343 00:25:12,000 --> 00:25:16,000 >> Ju gjithashtu mund të imagjinoni nëse ju keni një varg të pashembullt formatuar 344 00:25:16,000 --> 00:25:20,000 dhe nuk ka \ 0 karakteri atje, atëherë të gjithë gjë nuk punon. 345 00:25:20,000 --> 00:25:22,000 [Student] A mund të shtoni 0 \? 346 00:25:22,000 --> 00:25:24,000 Ne mund të në këtë rast. 347 00:25:24,000 --> 00:25:29,000 Ne mund të shtoni disa lloj \ 0 348 00:25:29,000 --> 00:25:33,000 ose disa lloj të nënkuptuar karakterin dhe pastaj të përdorin atë. 349 00:25:33,000 --> 00:25:36,000 Por kjo nuk është mjaft do të punojë 350 00:25:36,000 --> 00:25:40,000 sepse 0 \ është për një lloj char, 351 00:25:40,000 --> 00:25:43,000 dhe këtu ne kemi marrë ints. 352 00:25:43,000 --> 00:25:46,000 Gjë tjetër është nëse ne do të përdorim një vlerë të veçantë 353 00:25:46,000 --> 00:25:49,000 si -1 për të shënuar fundin e një grup 354 00:25:49,000 --> 00:25:54,000 atëherë ne kurrë nuk mund të ruani një -1 në vargjeve tona integer. 355 00:25:54,000 --> 00:25:56,000 Ne do të jetë i mbërthyer. 356 00:25:56,000 --> 00:26:00,000 Ajo rezulton se e vetmja mënyrë për të marrë gjatësi 357 00:26:00,000 --> 00:26:03,000 e një grup në C është që në fakt mend atë 358 00:26:03,000 --> 00:26:08,000 kur keni vendosur atë dhe pastaj të kalojë atë rreth me grup 359 00:26:08,000 --> 00:26:14,000 kështu që kur unë kam një funksion që do të bëjë disa punë 360 00:26:14,000 --> 00:26:18,000 në një grup e integers ose gjithandej apo dyshe ose çfarë keni, 361 00:26:18,000 --> 00:26:22,000 Unë gjithashtu duhet të japë funksioni gjatësinë array-së, 362 00:26:22,000 --> 00:26:26,000 dhe kjo është pikërisht ajo që ne kemi bërë këtu në funksionin e kërkimit. 363 00:26:26,000 --> 00:26:30,000 Nëse ju shikoni, ajo që ne kemi bërë, kur ne të kalojë në grup tonë këtu, 364 00:26:30,000 --> 00:26:36,000 ne gjithashtu të kalojë në gjatësi, madhësia. 365 00:26:36,000 --> 00:26:41,000 Ajo vetëm ndodh që ne kemi quajtur këtë ndryshore këtu, 366 00:26:41,000 --> 00:26:43,000 Ky parametër apo argument. 367 00:26:43,000 --> 00:26:46,000 Kjo është quajtur një funksion listën e argumentin ose lista parametër, 368 00:26:46,000 --> 00:26:51,000 dhe këto janë quajtur edhe argumentet apo parametra. 369 00:26:51,000 --> 00:26:53,000 Njerëzit përdorin terma të ndryshëm në kohë të ndryshme. 370 00:26:53,000 --> 00:26:55,000 Unë nganjëherë zëvendësoj ato veten. 371 00:26:55,000 --> 00:27:00,000 Kjo ndodh pikërisht kështu që kjo është e ndryshueshme këtu është emëruar në mënyrë të ngjashme 372 00:27:00,000 --> 00:27:03,000 në këtë # define deri këtu. 373 00:27:03,000 --> 00:27:06,000 Por ata nuk janë e njëjta gjë. 374 00:27:06,000 --> 00:27:11,000 Kapitalizimi ka rëndësi. 375 00:27:11,000 --> 00:27:14,000 >> Në qoftë se ju shikoni se çfarë ndodh këtu, ne deklarojmë 376 00:27:14,000 --> 00:27:18,000 array int tonë, që ne kemi quajtur numra. 377 00:27:18,000 --> 00:27:23,000 Ne kemi dhënë atë madhësinë tonë, e cila korrespondon me tonë # define deri në krye. 378 00:27:23,000 --> 00:27:27,000 Ajo do të jetë 8. 379 00:27:27,000 --> 00:27:35,000 Dhe atëherë kur ne atëherë e quajmë funksion tonë të kërkimit poshtë, 380 00:27:35,000 --> 00:27:40,000 ne të kalojë në numrin ne duam të kërkoni për të, të cilën ne e kemi shtyrë, 381 00:27:40,000 --> 00:27:43,000 marrë nga përdoruesit. 382 00:27:43,000 --> 00:27:46,000 Ne kalojnë në grup, kjo numrat, 383 00:27:46,000 --> 00:27:51,000 dhe pastaj ne gjithashtu duhet të kalojnë në madhësinë e vektorit, 384 00:27:51,000 --> 00:27:57,000 dhe pastaj vlera e madhësisë 8 merr ruajtur 385 00:27:57,000 --> 00:28:01,000 ose kaluar në këtë madhësi të ndryshueshme quajtur integer. 386 00:28:01,000 --> 00:28:08,000 Ne kemi madhësinë e vektorit. 387 00:28:08,000 --> 00:28:11,000 Tani në qoftë se ne do të shkojmë prapa në atë që ne ishim duke folur në lidhje me herët, 388 00:28:11,000 --> 00:28:14,000 Unë mendoj Missy solli deri në pikën që ajo që ne duhet të bëni është të marrë gjatësinë e vektorit 389 00:28:14,000 --> 00:28:20,000 dhe ndani atë me 2, dhe që do të na japë midpoint. 390 00:28:20,000 --> 00:28:22,000 Le të shohim. 391 00:28:22,000 --> 00:28:25,000 Mund të ketë dikush shkruaj këtë dhe për të shpëtuar atë në hapësirën e tyre? 392 00:28:25,000 --> 00:28:27,000 Si në lidhje me Leila? 393 00:28:27,000 --> 00:28:31,000 Mund ta keni shkruar këtë në? 394 00:28:31,000 --> 00:28:35,000 Shkruani rreshtin e parë, ku ju merrni gjatësinë e vektorit dhe për të marrë midpoint 395 00:28:35,000 --> 00:28:41,000 dhe ruajtur atë në një variabël të re. 396 00:28:41,000 --> 00:28:44,000 Unë do të ju jap disa sekonda. A jeni gati? 397 00:28:44,000 --> 00:28:46,000 [Student padëgjueshme] 398 00:28:46,000 --> 00:28:50,000 Sure, ju mund të kam llogaritur midpoint 399 00:28:50,000 --> 00:28:55,000 e grup kashtë brenda funksionin e kërkimit 400 00:28:55,000 --> 00:29:03,000 përdorur gjatësinë e vektorit kashtë, e cila është e ndryshueshme madhësia? 401 00:29:03,000 --> 00:29:08,000 Asgjë ndërlikuar këtu. 402 00:29:08,000 --> 00:29:12,000 [Leila] Vetëm madhësia / 2 dhe vetëm- 403 00:29:12,000 --> 00:29:17,000 Dhe për të shpëtuar atë, dhe goditi butonin Save deri këtu në krye, 404 00:29:17,000 --> 00:29:19,000 dhe ne do të tërheqë atë. 405 00:29:19,000 --> 00:29:22,000 Përsosur. 406 00:29:22,000 --> 00:29:28,000 Nuk shkojmë. Awesome. 407 00:29:28,000 --> 00:29:30,000 >> Siç është, do të këtë përpiloj? 408 00:29:30,000 --> 00:29:32,000 [Leila] Jo, ajo duhet të jetë më i lartë. 409 00:29:32,000 --> 00:29:34,000 [Nate] Yeah, kështu që çfarë ne duhet të bëjmë? 410 00:29:34,000 --> 00:29:36,000 [Leila] Ashtu si midpoint int apo diçka. 411 00:29:36,000 --> 00:29:41,000 Awesome. Po, le ta bëjmë këtë, int size = midpoint. 412 00:29:41,000 --> 00:29:44,000 Do të këtë përpiloj? 413 00:29:44,000 --> 00:29:47,000 Le të fshini këtë koment dhe të marrin atë nga rruga. 414 00:29:47,000 --> 00:29:50,000 Çfarë nuk do të hartojë në lidhje me këtë? 415 00:29:50,000 --> 00:29:52,000 Ne nuk jemi duke bërë asgjë me numër të plotë, 416 00:29:52,000 --> 00:29:55,000 kështu që ne duhet të shtypura atë apo diçka të tillë. 417 00:29:55,000 --> 00:29:58,000 Po, pikërisht. 418 00:29:58,000 --> 00:30:00,000 Ne do të merrni një ndryshore të papërdorura. 419 00:30:00,000 --> 00:30:02,000 Çfarë tjetër nuk do të punojë për këtë? 420 00:30:02,000 --> 00:30:06,000 Unë mendoj se ju thënë diçka, Sam. Semicolons. 421 00:30:06,000 --> 00:30:08,000 Po, unë jam i humbur ato semicolons. 422 00:30:08,000 --> 00:30:14,000 Ajo do të jetë një gjë konstante gjatë gjithë rrjedhës së mandatit. 423 00:30:14,000 --> 00:30:17,000 Gjëja e fundit që unë do të bëj është që unë do të vënë një hapësirë ​​të bardhë në të dyja anët 424 00:30:17,000 --> 00:30:23,000 i këtij operatori këtu, pasi kjo është tipike si të bëjmë atë 425 00:30:23,000 --> 00:30:26,000 në përputhje me udhëzuesin tonë stil. 426 00:30:26,000 --> 00:30:29,000 Ne kemi marrë midpoint e array tonë. 427 00:30:29,000 --> 00:30:32,000 Tani në qoftë se ne kujtojmë përsëri në algorithm tonë, 428 00:30:32,000 --> 00:30:37,000 çfarë ishte hapi i dytë që na u desh të bëjë një herë ne kemi midpoint? 429 00:30:37,000 --> 00:30:42,000 [Student] Në qoftë se kjo është më e madhe [e padëgjueshme]. 430 00:30:42,000 --> 00:30:48,000 Yeah, kështu që ne duhet të bëjmë një lloj krahasimi, dhe çfarë jemi krahasuar këtu? 431 00:30:48,000 --> 00:30:53,000 Ju tha se në qoftë se ajo është më e madhe se. Çfarë është ajo në atë fjali duke iu referuar? 432 00:30:53,000 --> 00:30:57,000 Numri që vjen deri, në qoftë se është më e madhe se midpoint, atëherë shkoni deri në rrjet? 433 00:30:57,000 --> 00:31:05,000 Pikërisht, kështu që numri që vjen deri kur ne, 434 00:31:05,000 --> 00:31:10,000 Gjilpëra, kështu që ne jemi krahasuar me gjilpërë, 435 00:31:10,000 --> 00:31:12,000 dhe çfarë jemi krahasuar kundër gjilpërë? 436 00:31:12,000 --> 00:31:15,000 Sepse gjilpërë është ajo që ne jemi duke kërkuar për të. 437 00:31:15,000 --> 00:31:18,000 Ne jemi duke e krahasuar atë për të shkuar në midpoint. 438 00:31:18,000 --> 00:31:21,000 >> Por nuk ka kuptim për të kontrolluar për të parë 439 00:31:21,000 --> 00:31:27,000 nëse gjilpërë = midpoint? 440 00:31:27,000 --> 00:31:32,000 Bën që të bëjnë kuptim? 441 00:31:32,000 --> 00:31:35,000 A ka dikush nuk pajtoheni? 442 00:31:35,000 --> 00:31:40,000 Le t'i jepte një provoni, në qoftë se (== gjilpërë midpoint). 443 00:31:40,000 --> 00:31:42,000 [Student] A printf keni gjetur atë. 444 00:31:42,000 --> 00:31:51,000 [Nate] printf ("Ne e gjetëm atë \ n"); 445 00:31:51,000 --> 00:31:56,000 Përndryshe-Jam duke shkuar për të fillojnë të bëjnë diçka të ndryshme këtu. 446 00:31:56,000 --> 00:32:00,000 Unë jam duke shkuar për të filluar vënien formatimin e teksteve rreth nëse deklaratat gjithë kohës 447 00:32:00,000 --> 00:32:05,000 vetëm për shkak se në qoftë se ne shtoni gjëra më shumë, atëherë 448 00:32:05,000 --> 00:32:07,000 ne nuk do të marrë hartuesit. 449 00:32:07,000 --> 00:32:09,000 Po, Sam. Ju keni marrë një pikë. 450 00:32:09,000 --> 00:32:12,000 Problemi është se midpoint përfaqëson një pozicion në grup, 451 00:32:12,000 --> 00:32:15,000 por ju mund të merrni atë për të përfaqësuar vlerën në atë pozitë të vektorit. 452 00:32:15,000 --> 00:32:17,000 Kjo është një pikë e madhe. 453 00:32:17,000 --> 00:32:19,000 A të gjithë të dëgjuar se çfarë ka thënë Sam? 454 00:32:19,000 --> 00:32:22,000 Ai tha se si është midpoint 455 00:32:22,000 --> 00:32:28,000 paraqet vetëm një pozicion në grup, por kjo nuk është elementi aktual në rrjet. 456 00:32:28,000 --> 00:32:30,000 Nëse ju mendoni për kodin si me shkrim të drejtë tani, 457 00:32:30,000 --> 00:32:35,000 nëse ne shikojmë në këtë grup këtu poshtë, e cila ka 8 elemente në të, 458 00:32:35,000 --> 00:32:39,000 çfarë është vlera e midpoint do të jetë në këtë funksion? 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 Nëse ne shikojmë për numrin 4 - 462 00:32:51,000 --> 00:32:54,000 dhe ne mund vetëm të drejtuar këtë kod dhe të vënë një fytyrë të trishtuar pak këtu 463 00:32:54,000 --> 00:32:58,000 sepse ne nuk e gjejnë, nëse kemi drejtuar këtë kod 464 00:32:58,000 --> 00:33:04,000 siç është tani, ngarkimi atë, ndërtimin, më lejoni të lëvizni poshtë, 465 00:33:04,000 --> 00:33:09,000 dhe nëse ne shikojmë për numrin 4, 466 00:33:09,000 --> 00:33:18,000 kemi gjetur atë, por ne nuk e kam marrë këtë printf po. 467 00:33:18,000 --> 00:33:23,000 Një arsye është se ne nuk kemi kthyer vërtetë, 468 00:33:23,000 --> 00:33:26,000 por nuk kemi me të vërtetë të gjeni numrin 4? 469 00:33:26,000 --> 00:33:28,000 Dhe Sam është thënë nr. 470 00:33:28,000 --> 00:33:31,000 Çfarë ne gjejmë? 471 00:33:31,000 --> 00:33:35,000 Ne me të vërtetë gjetur midpoint, që nëse ne shikojmë në rrjet këtu poshtë, 472 00:33:35,000 --> 00:33:38,000 ajo do të jetë elementi në indeksin 4 që ne jemi duke kërkuar në, 473 00:33:38,000 --> 00:33:42,000 cila është 23. 474 00:33:42,000 --> 00:33:46,000 >> Si mund të merrni atë ne fakt element në midpoint 475 00:33:46,000 --> 00:33:48,000 dhe jo vetëm midpoint vetë? 476 00:33:48,000 --> 00:33:52,000 [Student] Ne do të hyjë char apo diçka? 477 00:33:52,000 --> 00:33:55,000 Çfarë do që të bëjë, vetëm nga kurioziteti? 478 00:33:55,000 --> 00:33:57,000 Ju mund të përpunojë një më pak? 479 00:33:57,000 --> 00:34:02,000 Ju keni për të transformuar qëndrimin në numër, 480 00:34:02,000 --> 00:34:05,000 kështu që ju keni marrë për të bërë disa lidhje-Unë mendoj se është char, por kjo nuk mund të jetë. 481 00:34:05,000 --> 00:34:07,000 Po, kjo është një pikë e mirë. 482 00:34:07,000 --> 00:34:12,000 Ne kemi qenë duke bërë një shumë të këtij pozicioneve konvertimin në karaktere, këto karaktere, 483 00:34:12,000 --> 00:34:14,000 në dy grupe para problemeve. 484 00:34:14,000 --> 00:34:18,000 Ajo rezulton se këtu, kjo është pothuajse i ngjashëm me 485 00:34:18,000 --> 00:34:24,000 hyrë në karakterin ith brenda një varg, në qoftë se ka kuptim. 486 00:34:24,000 --> 00:34:30,000 Këtu duam të hyni në elementin midpoint. 487 00:34:30,000 --> 00:34:34,000 Si e bëjmë këtë? 488 00:34:34,000 --> 00:34:39,000 Kevin, a keni ndonjë sugjerime se si ne mund ta bëjë këtë? 489 00:34:39,000 --> 00:34:44,000 Ju mund të bëni Kashtë, kllapa e hapur, në mes, mbyllet kllapa. 490 00:34:44,000 --> 00:34:46,000 Ju mund të shkruani se për ne? 491 00:34:46,000 --> 00:34:51,000 Për të shpëtuar atë në këtu, dhe ne do të tërheqë atë deri. 492 00:34:51,000 --> 00:34:56,000 Ne jemi duke kërkuar në këtë linjë 9, 493 00:34:56,000 --> 00:34:59,000 dhe ne jemi duke kuptuar se ne nuk duam për të krahasuar gjilpërës në midpoint, 494 00:34:59,000 --> 00:35:03,000 por në vend të kësaj, ne duam të krahasojmë gjilpërë 495 00:35:03,000 --> 00:35:07,000 në elementin në midpoint pozicion brenda array tonë kashtë. 496 00:35:07,000 --> 00:35:10,000 Cool. 497 00:35:10,000 --> 00:35:12,000 Nuk shkojmë. 498 00:35:12,000 --> 00:35:15,000 Yeah, se duket goxha e mirë, në qoftë se (== gjilpërë Kashtë [midpoint]). 499 00:35:15,000 --> 00:35:18,000 Ne kemi gjetur atë. 500 00:35:18,000 --> 00:35:22,000 Tani në qoftë se ne të drejtuar mbrapa-Kodi we'll deri pak pak- 501 00:35:22,000 --> 00:35:26,000 ajo harton, ajo shkon, dhe tani në qoftë se ne e shohim për 4, 502 00:35:26,000 --> 00:35:30,000 ne nuk kemi gjetur atë, sepse tani ne jemi të vërtetë duke marrë numrin 23. 503 00:35:30,000 --> 00:35:33,000 Ne jemi duke marrë vlerën e 23, dhe kjo është ajo që ne jemi krahasuar me gjilpërë tonë. 504 00:35:33,000 --> 00:35:35,000 Por kjo është e mirë. Kjo është një hap në drejtimin e duhur. 505 00:35:35,000 --> 00:35:37,000 >> Kjo është ajo që ne jemi duke u përpjekur për të bërë. 506 00:35:37,000 --> 00:35:40,000 Ne nuk jemi duke u përpjekur për të krahasuar gjilpërë kundër pozicioneve në rrjet 507 00:35:40,000 --> 00:35:44,000 por kundër elementëve aktuale në rrjet. 508 00:35:44,000 --> 00:35:49,000 Nëse ne shikojmë përsëri tani në hapin e ardhshëm në algorithm tonë, 509 00:35:49,000 --> 00:35:51,000 çfarë është hapi tjetër? 510 00:35:51,000 --> 00:35:57,000 Leila përmendur tashmë atë për pak kohë. 511 00:35:57,000 --> 00:36:00,000 [Student] Kontrollo për të parë nëse ajo është më e madhe se, ose më pak se dhe pastaj të vendosë se cilat rrugë për të lëvizur. 512 00:36:00,000 --> 00:36:03,000 [Nate] Yeah, kështu që si do të bëjmë këtë? 513 00:36:03,000 --> 00:36:07,000 Ju mund të vënë në disa-Do të shpëtuar këtë rishikim, 514 00:36:07,000 --> 00:36:13,000 dhe pastaj nëse ju vënë në disa linjave që do të bëjë këtë. 515 00:36:13,000 --> 00:36:15,000 Po, Charlotte. >> Unë kam një pyetje. 516 00:36:15,000 --> 00:36:19,000 Nuk duhet të jetë midpoint - 1 sepse gjëja e parë është 517 00:36:19,000 --> 00:36:26,000 ajo 0 indeksuar, kështu që nëse ne kemi vënë 4, që nuk është në të vërtetë personazhi ne jemi duke kërkuar për? 518 00:36:26,000 --> 00:36:30,000 Po, dhe problemi tjetër me që është- 519 00:36:30,000 --> 00:36:35,000 kjo është një kapur të madh, sepse ajo do të përfundojë ndoshta ndodh 520 00:36:35,000 --> 00:36:42,000 në qoftë se ne vazhdojmë të lëvizur dhe ne kurrë nuk përshtaten fillimisht? 521 00:36:42,000 --> 00:36:46,000 I guess atë që ne mund të përfundojë duke bërë është duke u përpjekur për të hyrë në 522 00:36:46,000 --> 00:36:49,000 elementi në pozitën e 8-të array, 523 00:36:49,000 --> 00:36:53,000 që në këtë rast nuk ekziston. 524 00:36:53,000 --> 00:36:56,000 Ne do të duan për të bërë një lloj të kontabilitetit për faktin 525 00:36:56,000 --> 00:36:59,000 se ne kemi disa indeksimin zero. 526 00:36:59,000 --> 00:37:05,000 [Charlotte] Na vjen keq, unë do të thotë midpoint - 1 në kllapa katrore. 527 00:37:05,000 --> 00:37:08,000 Ne mund ta bëjë këtë. 528 00:37:08,000 --> 00:37:10,000 Ne do të kthehemi në këtë çështje në vetëm një grimë. 529 00:37:10,000 --> 00:37:13,000 Sapo ne fillojmë të shkoj në looping aktuale, 530 00:37:13,000 --> 00:37:16,000 kjo është kur ne do të shohim këtë të vërtetë vijnë në lojë. 531 00:37:16,000 --> 00:37:21,000 Për momentin, ne mund ta bëjmë këtë, por ju jeni krejtësisht të drejtë. 532 00:37:21,000 --> 00:37:28,000 Se indeksimit zero do të ketë një efekt që ne kemi nevojë për llogari për të. 533 00:37:28,000 --> 00:37:30,000 Le të shohim. 534 00:37:30,000 --> 00:37:34,000 >> Si është më i madh se dhe më pak se-? 535 00:37:34,000 --> 00:37:36,000 [Student] kam marrë si të bëni më të madhe se sa dhe më pak se pjesë. 536 00:37:36,000 --> 00:37:41,000 Unë thjesht nuk ishte i sigurt se çfarë të printuar në qoftë se ju të gjeni se ai është më pak se midpoint kashtë ose më e madhe se. 537 00:37:41,000 --> 00:37:43,000 Këtu unë mund të shpëtojë atë që I've- 538 00:37:43,000 --> 00:37:47,000 [Nate] Po, në qoftë se ju ruani atë që ju keni marrë, dhe ne do të tërheqë atë. 539 00:37:47,000 --> 00:37:49,000 Nuk shkojmë. 540 00:37:49,000 --> 00:37:51,000 [Student] E kam vënë pikëpyetje për atë që unë nuk e di. 541 00:37:51,000 --> 00:37:54,000 [Nate] Kjo duket e madhe. 542 00:37:54,000 --> 00:37:58,000 Këtu ne kemi marrë pikëpyetje, sepse ne ende nuk e dimë 543 00:37:58,000 --> 00:38:06,000 ajo që ne jemi duke shkuar për të bërë mjaft ende. 544 00:38:06,000 --> 00:38:12,000 Çfarë do që ne duam të bëjmë-oops, ne kemi marrë disa formatimin e teksteve të gjithë shokuar mbi ne. 545 00:38:12,000 --> 00:38:15,000 Ne do të korrigjuar këto formatimin e teksteve. 546 00:38:15,000 --> 00:38:19,000 Nuk shkojmë. 547 00:38:19,000 --> 00:38:22,000 Dhe kështu çfarë ne duam të bëjmë, sipas algorithm tonë, 548 00:38:22,000 --> 00:38:27,000 nëse ne nuk e gjeni gjilpërë? 549 00:38:27,000 --> 00:38:32,000 Thonë se në rast se gjilpërë është më pak se ajo që ne jemi duke kërkuar në. Kevin. 550 00:38:32,000 --> 00:38:34,000 Vetëm shikoni në gjysmën e majtë. 551 00:38:34,000 --> 00:38:40,000 Drejtë, kështu që ne do të vënë një koment në këtu që thotë se "shikoni në gjysmën e majtë." 552 00:38:40,000 --> 00:38:46,000 Dhe nëse gjilpëra është më e madhe se kashtë në midpoint, çfarë ne duam të bëjmë? 553 00:38:46,000 --> 00:38:48,000 [Student] Pastaj ju shikoni në gjysmën e duhur. 554 00:38:48,000 --> 00:38:53,000 Shikoni në gjysmën e duhur, "shikoni në gjysmën e duhur." 555 00:38:53,000 --> 00:38:58,000 Jo shumë i vjetër. 556 00:38:58,000 --> 00:39:05,000 Mirë, kështu që në këtë pikë, gjërat janë në kërkim të shumë e mirë. 557 00:39:05,000 --> 00:39:13,000 Problemi me kodin e shkruar, si është ajo? 558 00:39:13,000 --> 00:39:15,000 [Student] Ju nuk keni endpoints për gjysmave. 559 00:39:15,000 --> 00:39:18,000 Drejtë, ne nuk kemi endpoints për gjysmave. 560 00:39:18,000 --> 00:39:20,000 Ne gjithashtu jemi të vetëm do të kalojnë nëpër këtë herë. 561 00:39:20,000 --> 00:39:23,000 Ne jemi vetëm do të shohim në një midpoint. 562 00:39:23,000 --> 00:39:27,000 Ose element është atje, ose ajo nuk është. 563 00:39:27,000 --> 00:39:34,000 Në mënyrë për të përfunduar këtë, ne do të duhet të bëjë disa lloj përsëritjeje. 564 00:39:34,000 --> 00:39:39,000 Ne kemi nevojë për të mbajtur të përsëritur deri sa të gjejmë se 565 00:39:39,000 --> 00:39:43,000 ose elementi është në atje, sepse ne kemi ngushtuar dhe më në fund e gjeti atë, 566 00:39:43,000 --> 00:39:46,000 ose ajo nuk është në atje, sepse ne kemi shikuar nëpër të gjitha gjërat e 567 00:39:46,000 --> 00:39:52,000 në gjysmave përkatëse të vektorit dhe gjeti se asgjë nuk është në atje. 568 00:39:52,000 --> 00:39:56,000 >> Kurdo që ne kemi marrë këtë përsëritje ndodh, çfarë jemi duke shkuar për të përdorur? 569 00:39:56,000 --> 00:39:58,000 [Student] Një lak. 570 00:39:58,000 --> 00:40:00,000 Disa lloj lak. Po. 571 00:40:00,000 --> 00:40:03,000 [Student] A mund të bëjmë një lak për ta bërë kohë dhe e kanë atë të bëjë atë dhe pastaj duke 572 00:40:03,000 --> 00:40:10,000 gjilpëra jo nuk barabarta Jam i sigurt se ku isha duke shkuar me këtë. 573 00:40:10,000 --> 00:40:18,000 Por lloj si të bëjë që për aq kohë sa ajo nuk e bën të barabartë vlera që input të përdoruesit. 574 00:40:18,000 --> 00:40:21,000 Yeah, kështu që le të shohim, se si mund të shkruaj kjo veten? 575 00:40:21,000 --> 00:40:23,000 Ju tha se le të përdorin një lak për ta bërë kohë. 576 00:40:23,000 --> 00:40:26,000 Ku ka të bëjë fillimin? 577 00:40:26,000 --> 00:40:33,000 [Student] Menjëherë pas madhësisë / 2. 578 00:40:33,000 --> 00:40:42,000 [Nate] Mirë, dhe çfarë do të shkojmë për të bërë? 579 00:40:42,000 --> 00:40:44,000 Ne do të plotësojë në kohë më vonë. 580 00:40:44,000 --> 00:40:46,000 Çfarë do të bëjmë ne? 581 00:40:46,000 --> 00:40:49,000 [Student] A nuk duam të bëjmë të gjitha stuff kemi në pjesën nëse? 582 00:40:49,000 --> 00:40:52,000 [Nate] A të gjitha stuff këtë, e madhe. 583 00:40:52,000 --> 00:40:55,000 Copy dhe paste. 584 00:40:55,000 --> 00:40:59,000 Oh, njeri. 585 00:40:59,000 --> 00:41:03,000 Le të shohim nëse kjo punon, në qoftë se ne mund tab mbi këtë. 586 00:41:03,000 --> 00:41:08,000 Bukur. 587 00:41:08,000 --> 00:41:16,000 Mirë, dhe ne të shpëtuar këtë mënyrë ju djema keni atë. 588 00:41:16,000 --> 00:41:21,000 Të gjithë të drejtë, dhe ne jemi duke shkuar për të bërë këtë, ndërsa- 589 00:41:21,000 --> 00:41:25,000 çfarë ishte gjendja, ndërsa ju keni qenë pas? 590 00:41:25,000 --> 00:41:31,000 [Student] Ndërsa gjilpëra nuk të barabartë, kështu që si pikë thirrje. 591 00:41:31,000 --> 00:41:37,000 Por unë nuk jam i sigurt saktësisht se çka është ende. 592 00:41:37,000 --> 00:41:39,000 [Nate] Yeah, kjo është një mënyrë për të bërë atë. 593 00:41:39,000 --> 00:41:41,000 Sam, a keni një koment? 594 00:41:41,000 --> 00:41:43,000 [Sam] m'u kujtua kur kam shikuar në video, 595 00:41:43,000 --> 00:41:48,000 Kam marrë një screenshot të një prej-si kur ne e bëmë pseudokod për të, 596 00:41:48,000 --> 00:41:52,000 ka pasur disa marrëdhënie mes max dhe min. 597 00:41:52,000 --> 00:41:58,000 Unë mendoj se kjo ishte diçka si në qoftë se max është gjithnjë e më pak se min. 598 00:41:58,000 --> 00:42:00,000 Marrë atë. 599 00:42:00,000 --> 00:42:04,000 [Sam] Apo si në qoftë se max është jo më pak se min ose diçka të tillë, 600 00:42:04,000 --> 00:42:06,000 sepse kjo do të thotë se ju keni kontrolluar gjithçka. 601 00:42:06,000 --> 00:42:13,000 >> Po, kështu që çfarë e bën atë të tingëllojë si max dhe min ishin duke iu referuar? 602 00:42:13,000 --> 00:42:16,000 [] Sam vlerat që-integers që do të ndryshojë 603 00:42:16,000 --> 00:42:18,000 relative ku ne kemi vënë midpoint. 604 00:42:18,000 --> 00:42:20,000 Saktësisht. 605 00:42:20,000 --> 00:42:24,000 [Sam] Në këtë pikë, ajo do të [padëgjueshme] llogaritur max dhe min. 606 00:42:24,000 --> 00:42:29,000 Midpoint është kjo ide max dhe min. 607 00:42:29,000 --> 00:42:35,000 Bën që të ketë kuptim për folks? 608 00:42:35,000 --> 00:42:39,000 Nëse ne do të fillojmë të shikojmë se si ne jemi duke shkuar për të bërë këtë përsëritje, 609 00:42:39,000 --> 00:42:43,000 ju jeni krejtësisht e drejtë që ne duam të përdorin disa lloj të do-ndërsa lak. 610 00:42:43,000 --> 00:42:49,000 Por unë mendoj se në qoftë se ne kujtojmë se çfarë po ndodh në vend të kësaj grup 611 00:42:49,000 --> 00:42:53,000 dhe çfarë është në të vërtetë ndodh-Jam duke shkuar për të shkruar mbi këtu- 612 00:42:53,000 --> 00:42:58,000 në përsëritje e parë të kërkimit binar, kemi- 613 00:42:58,000 --> 00:43:05,000 Unë jam duke shkuar për të përdorur B dhe E për të treguar fillim. 614 00:43:05,000 --> 00:43:10,000 Dhe pastaj fundi i array tonë. 615 00:43:10,000 --> 00:43:14,000 Ne e dimë se fillimi është në 4 djathtë gjatë këtu, 616 00:43:14,000 --> 00:43:18,000 dhe ne e dimë se është në fund 108. 617 00:43:18,000 --> 00:43:23,000 Thonë se ne jemi në kërkim për numrin 15. 618 00:43:23,000 --> 00:43:27,000 Hera e parë që ne bëjmë këtë, siç e pamë më herët, 619 00:43:27,000 --> 00:43:30,000 midpoint është ose do të jetë 16 ose 23 620 00:43:30,000 --> 00:43:34,000 varësisht se si ne të llogaritur gjërat jashtë. 621 00:43:34,000 --> 00:43:37,000 Që në mënyrë të barabartë e ndarë në mes do të na japin këtë hapësirë 622 00:43:37,000 --> 00:43:42,000 mes 16 dhe 23, ne nuk mund ta ndajë atë në mënyrë të barabartë 623 00:43:42,000 --> 00:43:47,000 ose ndajnë dhe për të marrë atë në një midpoint e vërtetë. 624 00:43:47,000 --> 00:43:49,000 Ne do të shikojmë në 16. 625 00:43:49,000 --> 00:43:55,000 Ne do të kuptojë "Hej, 16> 15 që ne jemi duke kërkuar për të." 626 00:43:55,000 --> 00:43:59,000 Për të pastaj të shohim në gjysmën e majtë të array 627 00:43:59,000 --> 00:44:03,000 ajo që ne do të përfundojë duke bërë është discarding 628 00:44:03,000 --> 00:44:07,000 kjo pjesë e tërë e sipërme 629 00:44:07,000 --> 00:44:16,000 dhe duke thënë: "Mirë, tani endpoint ynë do të jetë këtu". 630 00:44:16,000 --> 00:44:22,000 Përsëritje e ardhshme e lak tonë, ne jemi tani në kërkim në këtë grup, 631 00:44:22,000 --> 00:44:25,000 në mënyrë efektive duke hedhur poshtë këtë pjesë, sepse tani 632 00:44:25,000 --> 00:44:30,000 në qoftë se ne jemi duke marrë midpoint të jetë diferenca midis fillimit dhe fundit, 633 00:44:30,000 --> 00:44:34,000 ne gjejmë midpoint ynë të jetë 8, 634 00:44:34,000 --> 00:44:40,000 të cilat ne pastaj mund të provoni 8 për të parë se ku është në lidhje me numrin Ne jemi në kërkim për të, 635 00:44:40,000 --> 00:44:44,000 15, të gjeni se 15 është më e madhe, 636 00:44:44,000 --> 00:44:49,000 kështu që ne duhet të lëvizin në pjesën e djathtë të listës, 637 00:44:49,000 --> 00:44:51,000 të cilat ne e dimë, sepse ne jemi njerëz, dhe ne mund të shohim atë. 638 00:44:51,000 --> 00:44:54,000 Ne e dimë se pjesa e drejta do të jetë ku ne të gjeni atë, 639 00:44:54,000 --> 00:45:01,000 por kompjuteri nuk e di se, kështu që ajo që ne do të bëjmë është që ne do të të vërtetë 640 00:45:01,000 --> 00:45:04,000 kanë këtë të shkojnë lart, dhe tani fillimi dhe fundi 641 00:45:04,000 --> 00:45:11,000 janë të njëjtin vend, në mënyrë që midpoint bëhet numri i vetëm në listë në atë pikë, 642 00:45:11,000 --> 00:45:16,000 që është 15, dhe ne kemi gjetur atë. 643 00:45:16,000 --> 00:45:21,000 Bën që të hedhin dritë mbi ku kjo max tërësi dhe simbol min po shkon, 644 00:45:21,000 --> 00:45:24,000 mbajtja e endpoints e vektorit në mënyrë që të kuptoj se 645 00:45:24,000 --> 00:45:35,000 si për të ngushtuar gjëra poshtë? 646 00:45:35,000 --> 00:45:42,000 >> Çfarë do të ndodhte nëse kjo nuk ishte e barabartë me 15 tani? 647 00:45:42,000 --> 00:45:52,000 Çfarë ndodh nëse ne kemi qenë duke kërkuar për 15 dhe, në vend, ky numër ishin edhe 16? 648 00:45:52,000 --> 00:45:54,000 Ne do të thonë, "Oh, kjo është më e madhe. 649 00:45:54,000 --> 00:45:57,000 Ne duam të kthehemi në të majtë. " 650 00:45:57,000 --> 00:46:01,000 Dhe ne do të lëvizë e tona në të djathtë, 651 00:46:01,000 --> 00:46:06,000 në të cilën pikë ne kemi një endpoint që do të jetë konfliktuale. 652 00:46:06,000 --> 00:46:09,000 Kjo nuk do të jetë në gjendje për të kërkuar për çdo elementet më shumë 653 00:46:09,000 --> 00:46:13,000 sepse tani ne kemi endpoint tonë dhe pika jonë fillestar, 654 00:46:13,000 --> 00:46:16,000 max min tonë dhe tonë, tani janë kthyer. 655 00:46:16,000 --> 00:46:23,000 Ne kërko nëpër rrjet të tërë. Ne nuk mund të gjejnë asgjë. 656 00:46:23,000 --> 00:46:27,000 Kjo është pika në të cilën ne do të duan të thonë: "Mirë, ne jemi duke shkuar për të ndaluar këtë algorithm. 657 00:46:27,000 --> 00:46:34,000 Ne nuk kemi gjetur asgjë. Ne e dimë se nuk është këtu. " 658 00:46:34,000 --> 00:46:36,000 Si është kjo shkon? 659 00:46:36,000 --> 00:46:40,000 [Student] Si e bën pikërisht kompjuteri kaloni në fund? 660 00:46:40,000 --> 00:46:45,000 Si funksionon në fund përfundojnë para fillimit? 661 00:46:45,000 --> 00:46:48,000 Fundi përfundon deri para fillimit 662 00:46:48,000 --> 00:46:54,000 për shkak të math që ne do të bëjmë çdo herë kemi bërë këtë. 663 00:46:54,000 --> 00:47:00,000 Mënyra se si swap është në qoftë se ju shikoni në kohën e parë të bëjmë këtë shkëmbim 664 00:47:00,000 --> 00:47:03,000 ku ne kemi në fillimin dhe fundin 4 665 00:47:03,000 --> 00:47:13,000 të gjithë rrugën poshtë në 108 dhe midpoint tonë, të themi, në 16 - 666 00:47:13,000 --> 00:47:20,000 Unë jam duke shkuar për të rivendosur këtë përsëri në 15-nëse ne jemi duke kërkuar për 15, 667 00:47:20,000 --> 00:47:25,000 ne e dinim se ajo që ne e bëmë kur ne kontrolluar 16 dhe pashë se ajo ishte më e madhe 668 00:47:25,000 --> 00:47:28,000 dhe donte të hidhni pjesën e djathtë të gjithë listën, 669 00:47:28,000 --> 00:47:36,000 ne pamë se ajo që kemi dashur të bëni është të lëvizë këtë e drejtë këtu. 670 00:47:36,000 --> 00:47:44,000 Efektivisht, E u zhvendos në një para midpoint. 671 00:47:44,000 --> 00:47:48,000 Gjithashtu, kur ne e bëmë këtë përsëritje të algorithm 672 00:47:48,000 --> 00:47:51,000 dhe midpoint ishte në 8, 673 00:47:51,000 --> 00:47:55,000 ne kemi gjetur se 8 <15, kështu që ne të kërkuar për të lëvizur b 674 00:47:55,000 --> 00:48:00,000 një midpoint e kaluara. 675 00:48:00,000 --> 00:48:07,000 Tani, fillimi dhe mbarimi janë të dyja së bashku në këtë 15. 676 00:48:07,000 --> 00:48:10,000 >> Nëse ne do të ndodhur që të shikoni për disa vlera të tjera, jo 15, 677 00:48:10,000 --> 00:48:14,000 ose në qoftë se kjo ishte 15 në vend të një 16, 678 00:48:14,000 --> 00:48:20,000 ne do të kemi gjetur se e duam për të lëvizur një para midpoint. 679 00:48:20,000 --> 00:48:33,000 Tani e ka kthyer do të jetë më pak se b. 680 00:48:33,000 --> 00:48:39,000 Le të ecin nëpër se si ne fakt deri në fund coding këtë algoritëm. 681 00:48:39,000 --> 00:48:44,000 Ne e dimë se ne duam të kemi këtë llogaritje midpoint. 682 00:48:44,000 --> 00:48:48,000 Ne e dimë gjithashtu se ne duam për të ndjekur fillimin dhe fundin e array 683 00:48:48,000 --> 00:48:51,000 e grup tonë të tanishëm kështu që ne mund të kuptoj se 684 00:48:51,000 --> 00:48:56,000 ku kjo gjysma e majtë të listës është dhe ku gjysma e djathtë të listës është. 685 00:48:56,000 --> 00:49:03,000 Ne bëjmë që me as të fillojë dhe të përfundojë, 686 00:49:03,000 --> 00:49:07,000 ose ne mund të telefononi ata min dhe max. 687 00:49:07,000 --> 00:49:10,000 Unë do të përdorin të fillojë dhe do të përfundojë këtë kohë. 688 00:49:10,000 --> 00:49:15,000 Kur ne fillojmë, nëse ne shikojmë prapa në shembullin tonë këtu poshtë, 689 00:49:15,000 --> 00:49:20,000 Fillimi tonë ishte vendosur në fillim të array, si e natyrshme. 690 00:49:20,000 --> 00:49:25,000 Çfarë indeksi ishte kjo? Çfarë duhet të fillojë tonë? 691 00:49:25,000 --> 00:49:27,000 Daniel. 692 00:49:27,000 --> 00:49:30,000 [Daniel] Kashtë [0]. 693 00:49:30,000 --> 00:49:37,000 [Nate] Yeah, kështu që ne mund të krijojë atë barabartë me kashtë [0]. 694 00:49:37,000 --> 00:49:40,000 Problemi, megjithatë, është se kjo i jep të mos na pozicionin e elementit të parë. 695 00:49:40,000 --> 00:49:45,000 Kjo na jep indeksin e elementit të parë ose vlera aktuale në atë vendin e parë. 696 00:49:45,000 --> 00:49:47,000 [Student] Kjo do të konvertohet në 0,20? 697 00:49:47,000 --> 00:49:52,000 [Nate] Çfarë kjo do të bëni është të-mirë, ajo nuk do të bëjë ndonjë konvertimin. 698 00:49:52,000 --> 00:49:56,000 Se çfarë do të bëjë është se do të ruajë një 4 në fillojë, 699 00:49:56,000 --> 00:49:59,000 dhe pastaj ajo do të jetë e vështirë për të bërë krahasime ndaj fillojë 700 00:49:59,000 --> 00:50:03,000 sepse Begin do të mbajë vlerën e 4, 701 00:50:03,000 --> 00:50:06,000 e cila është fillimi i array tonë, 702 00:50:06,000 --> 00:50:08,000 por ne duam të ndjekur indekset në rrjet 703 00:50:08,000 --> 00:50:11,000 në krahasim me vlerat. 704 00:50:11,000 --> 00:50:17,000 Ne do të përdorni të vërtetë një 0, si kjo. 705 00:50:17,000 --> 00:50:20,000 Për fund të array-Charlotte sjellë këtë deri pak më parë. 706 00:50:20,000 --> 00:50:23,000 Kjo është ajo ku ne do të marrin parasysh indeksimin zero. 707 00:50:23,000 --> 00:50:25,000 >> Charlotte, çfarë është fundi i array? 708 00:50:25,000 --> 00:50:28,000 Cili është indeksi i fund? 709 00:50:28,000 --> 00:50:30,000 [Charlotte] Size - 1. 710 00:50:30,000 --> 00:50:32,000 Yeah, dhe të cilat madhësia duhet të përdorni? 711 00:50:32,000 --> 00:50:35,000 Ne duhet të përdorim madhësinë e kapitalit apo madhësinë vogle? 712 00:50:35,000 --> 00:50:37,000 Madhësia e kapitalit. 713 00:50:37,000 --> 00:50:42,000 Në këtë rast, ne mund të përdorim madhësinë e kapitalit. 714 00:50:42,000 --> 00:50:45,000 Nëse ne dëshirojmë ky funksion të jetë i lëvizshëm 715 00:50:45,000 --> 00:50:48,000 dhe të përdorni këtë funksion në programe të tjera, 716 00:50:48,000 --> 00:50:50,000 ne mund të përdorni të vërtetë madhësinë vogle. 717 00:50:50,000 --> 00:50:52,000 Kjo është në rregull shumë. 718 00:50:52,000 --> 00:51:01,000 Por Charlotte është krejtësisht e drejtë që ne duam të kemi madhësinë - 1. 719 00:51:01,000 --> 00:51:03,000 Në këtë pikë- 720 00:51:03,000 --> 00:51:05,000 [Student] Si është e mundur që ju mund të përdorni madhësinë uppercase? 721 00:51:05,000 --> 00:51:07,000 Si është e mundur që ne të mund të përdorin madhësinë uppercase? 722 00:51:07,000 --> 00:51:13,000 Ajo rezulton se këto janë me të vërtetë përcakton #, 723 00:51:13,000 --> 00:51:19,000 nën kapuç, një tekst si të gjeni dhe të zëvendësojë, në qoftë se ka kuptim. 724 00:51:19,000 --> 00:51:24,000 Kur ju përpilojnë kodin tuaj, faza preprocessing 725 00:51:24,000 --> 00:51:27,000 e përpiluesit shkon përmes dosjes, 726 00:51:27,000 --> 00:51:31,000 dhe kjo duket për kudo që ju keni shkruar madhësinë e kapitalit, 727 00:51:31,000 --> 00:51:39,000 dhe ajo zëvendëson atë tekstin fjalë për fjalë me një 8, ashtu si kjo. 728 00:51:39,000 --> 00:51:42,000 Në këtë kuptim, kjo është shumë e ndryshme nga një ndryshore. 729 00:51:42,000 --> 00:51:45,000 Ajo nuk ka marrë ndonjë hapësirë ​​në memorie. 730 00:51:45,000 --> 00:51:52,000 Kjo është një e thjeshtë zëvendësojë tekst mashtrim. 731 00:51:52,000 --> 00:51:57,000 Në këtë rast, ne jemi duke shkuar për të përdorur madhësinë. 732 00:51:57,000 --> 00:52:01,000 Nga këtu ne nuk duam të bëjmë një lloj përsëritjeje, 733 00:52:01,000 --> 00:52:03,000 dhe ne jemi në rrugën e duhur me ta bërë, ndërsa loop tonë. 734 00:52:03,000 --> 00:52:08,000 Ne duam të bëjmë diçka deri në një gjendje nuk mban më, 735 00:52:08,000 --> 00:52:12,000 dhe siç e pamë më parë, pamë se ky kusht 736 00:52:12,000 --> 00:52:19,000 ishte me të vërtetë që ne nuk duam fundin 737 00:52:19,000 --> 00:52:24,000 të jetë më pak se të fillojë. 738 00:52:24,000 --> 00:52:26,000 >> Kjo është gjendja jonë ndalur. 739 00:52:26,000 --> 00:52:35,000 Nëse kjo ndodh, ne duam të ndaluar dhe të deklarojë si, "Hej, ne nuk kemi gjetur asgjë." 740 00:52:35,000 --> 00:52:43,000 Për të shprehur këtë, ne do të duan të përdorin disa lloj lak. 741 00:52:43,000 --> 00:52:49,000 Në këtë rast, do të jetë një për ta bërë, ndërsa loop, një për lak, një lak, ndërsa? 742 00:52:49,000 --> 00:52:51,000 Ne kemi një lak për ta bërë, ndërsa këtu. 743 00:52:51,000 --> 00:52:53,000 A ju djema si ajo qasje? 744 00:52:53,000 --> 00:52:59,000 A mendoni se ne duhet të provoni një qasje të ndryshme? 745 00:52:59,000 --> 00:53:01,000 Kevin, ndonjë mendime? 746 00:53:01,000 --> 00:53:06,000 Ne mund të kemi një lak, ndërsa sepse ne e dimë më së shumti 747 00:53:06,000 --> 00:53:11,000 do të jetë më e madhe se sa min në anyways fillimit. 748 00:53:11,000 --> 00:53:14,000 Po, kështu që nuk ka initialization që duhet të ndodhë. 749 00:53:14,000 --> 00:53:17,000 Ato do-ndërsa sythe janë të mëdha kur ju duhet të nisja diçka 750 00:53:17,000 --> 00:53:21,000 para se atëherë testimi, ndërsa këtu 751 00:53:21,000 --> 00:53:26,000 ne e dimë se ne nuk jemi duke shkuar për të mbajtur të dy reinitializing fillojë dhe të përfundojë 752 00:53:26,000 --> 00:53:28,000 çdo raund i lak. 753 00:53:28,000 --> 00:53:32,000 Ne e dimë se ne duam të nisja e tyre, atëherë kontrolloni gjendjen tonë. 754 00:53:32,000 --> 00:53:38,000 Në këtë rast, unë do të të vërtetë të shkojnë me një lak, ndërsa të thjeshtë. 755 00:53:38,000 --> 00:53:44,000 Ajo rezulton se për ta bërë ndërsa sythe janë përdorur mjaft rrallë. 756 00:53:44,000 --> 00:53:49,000 Shumë vende nuk e mësojnë edhe duke sythe. 757 00:53:49,000 --> 00:53:53,000 Ata janë të mirë për trajtimin e input të përdoruesit, kështu që ne kemi parë një shumë prej tyre deri tani. 758 00:53:53,000 --> 00:53:59,000 Por normale për dhe, ndërsa sythe janë shumë më të zakonshme. 759 00:53:59,000 --> 00:54:03,000 Ajo rezulton se ky kusht shkruar si 760 00:54:03,000 --> 00:54:09,000 nuk do të bëni me të vërtetë na shumë mirë, dhe pse është kjo? 761 00:54:09,000 --> 00:54:11,000 Më vjen keq, unë nuk e di emrin tuaj. 762 00:54:11,000 --> 00:54:13,000 Unë jam Jerry. >> Na vjen keq? 763 00:54:13,000 --> 00:54:15,000 Ajo është B-O-R-U-I. 764 00:54:15,000 --> 00:54:18,000 Oh, në rregull. 765 00:54:18,000 --> 00:54:23,000 Unë nuk shoh se jeni në listën time. 766 00:54:23,000 --> 00:54:26,000 Oh, kjo është për shkak se, oh, që e bën kuptim. 767 00:54:26,000 --> 00:54:31,000 A keni një ide se pse kjo lak, ndërsa nuk mund të punojnë si qëllim, 768 00:54:31,000 --> 00:54:38,000 shkruar me kusht? 769 00:54:38,000 --> 00:54:43,000 [Jerry] Ju do të thotë si ju dëshironi të gjitha stuff pas saj në të-? 770 00:54:43,000 --> 00:54:46,000 Yeah, kështu që është një. 771 00:54:46,000 --> 00:54:49,000 Ne mund të keni për të vënë të gjithë këtë gjëra në lak, ndërsa, e cila është krejtësisht e vërtetë. 772 00:54:49,000 --> 00:54:55,000 Gjë tjetër që është pak më problematike, megjithatë, është se ky kusht nuk funksionon. 773 00:54:55,000 --> 00:54:57,000 [Student] Ju duhet të shfletoj atë. 774 00:54:57,000 --> 00:55:04,000 Drejtë, kështu që ky kusht nuk do të jetë kurrë e vërtetë fillimisht mënyrë kemi biseduar për këtë. 775 00:55:04,000 --> 00:55:08,000 Ne duam të bëjmë diçka deri 00:55:13,000 por ne duam të bëjmë diçka, ndërsa 777 00:55:13,000 --> 00:55:21,000 fillojnë ≤ fund. 778 00:55:21,000 --> 00:55:24,000 >> Nuk është se anulimi i logjikës atje. 779 00:55:24,000 --> 00:55:27,000 Unë jam fajtor për të bërë ato gabime gjatë gjithë kohës. 780 00:55:27,000 --> 00:55:31,000 [Student] Pse e bën atë duhet të jetë më pak se ose e barabartë me? 781 00:55:31,000 --> 00:55:33,000 Sepse nuk ju kujtohet rasti që kemi marrë për të 782 00:55:33,000 --> 00:55:36,000 ku ka qenë vetëm një element, dhe ne kemi qenë poshtë, 783 00:55:36,000 --> 00:55:43,000 dhe ne u kërkuar vetëm në datën 15 në grup tonë? 784 00:55:43,000 --> 00:55:47,000 Dhe fillimi tonë dhe fundi ynë ishin elementi njëjtë. 785 00:55:47,000 --> 00:55:50,000 Ne duam të sigurohemi që kemi trajtuar këtë rast. 786 00:55:50,000 --> 00:55:54,000 Nëse ne e bëmë një të drejtë më pak se, 787 00:55:54,000 --> 00:55:58,000 ne vetëm do të jetë në gjendje për të marrë poshtë me një grup të 2-element. 788 00:55:58,000 --> 00:56:06,000 Pasi kemi marrë deri në atë element të fundit, në qoftë se ishin element tonë, ne kurrë nuk do të gjeni atë. 789 00:56:06,000 --> 00:56:10,000 Tani këtu, ne mund të bëjë pikërisht si ju janë duke thënë. 790 00:56:10,000 --> 00:56:15,000 Ne mund të fillojë plopping sende të drejtë në mes të lak tonë, ndërsa. 791 00:56:15,000 --> 00:56:20,000 Ne mund të pllum në mesin tonë. 792 00:56:20,000 --> 00:56:24,000 Ne mund të marrë të gjitha këto, nëse deklarata, 793 00:56:24,000 --> 00:56:30,000 tërheqë ata nga ky lak për ta bërë, ndërsa, 794 00:56:30,000 --> 00:56:34,000 pllum ata në, 795 00:56:34,000 --> 00:56:39,000 pastruar gjërat pak, 796 00:56:39,000 --> 00:56:48,000 dhe unë do të shkoj përpara dhe për të shpëtuar këtë rishikim. 797 00:56:48,000 --> 00:56:53,000 Dhe në këtë pikë, ne jemi duke marrë shumë të ngushtë. 798 00:56:53,000 --> 00:56:55,000 Sam. 799 00:56:55,000 --> 00:56:58,000 Unë mendoj se edhe ju duhet të keni midpoint int size = - 1/2. 800 00:56:58,000 --> 00:57:01,000 Got it, madhësia - 1/2. 801 00:57:01,000 --> 00:57:05,000 A ka ndonjë gjë tjetër që ne kemi nevojë për të ndryshuar në lidhje me këtë linjë? 802 00:57:05,000 --> 00:57:10,000 Kjo ishte një kapur mirë. 803 00:57:10,000 --> 00:57:14,000 >> Çfarë do të bëjë madhësia? Jemi gjithnjë e në ndryshim madhësi? 804 00:57:14,000 --> 00:57:17,000 Në mënyrë për të mbajtur të vijë si kjo, ne duhet të ndryshojë madhësinë. 805 00:57:17,000 --> 00:57:21,000 Ne kemi për të ndryshuar madhësinë çdo herë kemi shkuar rreth për lak. 806 00:57:21,000 --> 00:57:25,000 Por mos harroni, kur ne ishim duke shkuar nëpër shembullin tonë vetëm pak më parë, 807 00:57:25,000 --> 00:57:30,000 dhe kemi pasur fillimin në 4 808 00:57:30,000 --> 00:57:33,000 dhe në fund të gjitha mënyra gjatë në 108? 809 00:57:33,000 --> 00:57:35,000 Si e kemi llogaritur midpoint? 810 00:57:35,000 --> 00:57:38,000 Ishin ne duke përdorur madhësinë? 811 00:57:38,000 --> 00:57:40,000 Apo ne kemi qenë duke përdorur të fillojë dhe të përfundojë në vend? 812 00:57:40,000 --> 00:57:42,000 Kjo është diferenca midis fundit dhe fillimit. 813 00:57:42,000 --> 00:57:50,000 Saktësisht, dhe se si pikërisht duhet të shkruajnë se, Charlotte? 814 00:57:50,000 --> 00:57:52,000 Vetëm në fund - të fillojë. 815 00:57:52,000 --> 00:57:55,000 Ju nuk do të duhet të bëjë - 1 816 00:57:55,000 --> 00:57:58,000 sepse - 1 është përfshirë në fund dhe të fillojnë tashmë. 817 00:57:58,000 --> 00:58:00,000 [Nate] Madhe, ju jeni plotësisht të drejtë. 818 00:58:00,000 --> 00:58:03,000 Ne nuk kemi për të bërë - 1 për shkak se - 1 është përfshirë 819 00:58:03,000 --> 00:58:08,000 dhe llogariten kur nisja ndryshueshme fund. 820 00:58:08,000 --> 00:58:11,000 >> A ka ndonjë gjë tjetër unë duhet të bëni syntactically të ketë kjo linjë kuptim? 821 00:58:11,000 --> 00:58:13,000 [Student] Plus fillojë. >> Plus fillojë? 822 00:58:13,000 --> 00:58:15,000 [Student] Në fund. 823 00:58:15,000 --> 00:58:20,000 Për shkak se ajo është llogaritur vetëm gjysmën gjatësinë. 824 00:58:20,000 --> 00:58:26,000 Ju duhet të shtoni të fillojë. 825 00:58:26,000 --> 00:58:31,000 [Nate] Çfarë kjo do llogaritur për ne? 826 00:58:31,000 --> 00:58:35,000 Nëse ne mendojmë për fund në këtë përsëritje e parë të loop, 827 00:58:35,000 --> 00:58:40,000 fund do të jetë në pozitë indeksin 7. 828 00:58:40,000 --> 00:58:43,000 Filloni është në pozitë 0. 829 00:58:43,000 --> 00:58:47,000 Mos harroni, ne jemi duke kërkuar për ose 830 00:58:47,000 --> 00:58:52,000 Pozicioni 3 ose 4 pozita. 831 00:58:52,000 --> 00:58:56,000 Nëse ne shikojmë në këtë matematikë, vetëm për të bërë atë një pak më të prekshme, 832 00:58:56,000 --> 00:59:02,000 vënë disa numra këtu, ne kemi 7, 0, 833 00:59:02,000 --> 00:59:10,000 kështu 7 - 0, dhe pastaj / 2 834 00:59:10,000 --> 00:59:19,000 është 3 në ndarjen integer, që është. 835 00:59:19,000 --> 00:59:26,000 Atëherë nuk kemi nevojë për të kthyer pastaj shtoni tonë të fillojë? 836 00:59:26,000 --> 00:59:28,000 Ne nuk bëjmë në këtë rast. 837 00:59:28,000 --> 00:59:31,000 Në përsëritje të parë, ajo do të jetë mirë për shkak të filluar është 0. 838 00:59:31,000 --> 00:59:36,000 Por si ne progres, ne bëjmë të vërtetë të gjithë duhet vetëm 839 00:59:36,000 --> 00:59:42,000 fund - fillojnë / 2. 840 00:59:42,000 --> 00:59:46,000 Ka një mashtrim tjetër këtu, dhe kjo është pikërisht një nga përparësisë. 841 00:59:46,000 --> 00:59:49,000 [Student] A kemi nevojë kllapa? 842 00:59:49,000 --> 00:59:53,000 [Nate] Pikërisht, dhe kjo është për shkak se nëse ne nuk do të vënë këto kllapa, 843 00:59:53,000 --> 00:59:58,000 atëherë kjo linjë do të interpretohet në vend 844 00:59:58,000 --> 01:00:09,000 si (fund) - (fillojnë / 2), e cila ne definitivisht nuk duam. 845 01:00:09,000 --> 01:00:11,000 Watch për ato rregulla përparësi. 846 01:00:11,000 --> 01:00:15,000 [Student] Pse nuk është ajo të përfundojë + fillojë? 847 01:00:15,000 --> 01:00:17,000 Pse nuk është ajo të përfundojë + fillojë? 848 01:00:17,000 --> 01:00:19,000 [Student] Pse nuk është ajo që? 849 01:00:19,000 --> 01:00:24,000 Pse do të jetë ai +? 850 01:00:24,000 --> 01:00:26,000 Unë mendoj se ju jeni të drejtë. 851 01:00:26,000 --> 01:00:28,000 [Student] Sepse kjo është mesatarja? 852 01:00:28,000 --> 01:00:31,000 [Nate] End + fillojë, ju jeni plotësisht të drejtë. 853 01:00:31,000 --> 01:00:34,000 Wow, unë plotësisht goofed. Ju jeni të drejtë. 854 01:00:34,000 --> 01:00:39,000 Në qoftë se ne ishim duke bërë Minus, ne do të duan për të shtuar fillojë përsëri in 855 01:00:39,000 --> 01:00:43,000 Në këtë rast, ju jeni shumë e drejtë që ne duam të marrë mesataren e të dyjave, 856 01:00:43,000 --> 01:00:45,000 kështu që ne duam të shtoni ato, në krahasim me ato të zbres. 857 01:00:45,000 --> 01:00:49,000 [Student] Kjo gjithashtu do të punojë në qoftë se ju e bëri në fund - të fillojnë / 2 + fillojë. 858 01:00:49,000 --> 01:00:55,000 Ajo do të qoftë se ne bëjmë, unë besoj kështu. 859 01:00:55,000 --> 01:01:00,000 >> Për shembull, në qoftë se ne kemi qenë në kërkim në të fillojnë, 860 01:01:00,000 --> 01:01:04,000 dhe ne u zhvendos atë mbi këtu 861 01:01:04,000 --> 01:01:08,000 në 15. 862 01:01:08,000 --> 01:01:12,000 Tani fillojnë është në pozitën 2. 863 01:01:12,000 --> 01:01:15,000 Fundi është në pozitën e 7. 864 01:01:15,000 --> 01:01:21,000 Nëse ne zbresim atyre, ne kemi marrë 5. 865 01:01:21,000 --> 01:01:24,000 Ndani që nga 2, ne kemi marrë 2. 866 01:01:24,000 --> 01:01:27,000 Dhe atëherë ne shtoni 2 përsëri në, 867 01:01:27,000 --> 01:01:30,000 dhe që na merr në pozitën e 4, 868 01:01:30,000 --> 01:01:33,000 cila është e drejtë këtu, e cila është midpoint. 869 01:01:33,000 --> 01:01:36,000 [Student] A kemi nevojë për të marrë kujdesin e mbështjellës? 870 01:01:36,000 --> 01:01:39,000 Në atë kuptim nuk kemi nevojë për të marrë kujdesin e dhënë? 871 01:01:39,000 --> 01:01:43,000 Nëse shuma apo diferenca midis 872 01:01:43,000 --> 01:01:45,000 në varësi se si të bëjmë atë nuk është një numër edhe më. 873 01:01:45,000 --> 01:01:49,000 Pastaj kompjuteri merr hutuar nëse kur kjo është 2,5; 874 01:01:49,000 --> 01:01:52,000 ju lëvizin në të majtë ose në të djathtë për të përcaktuar se cila është midpoint? 875 01:01:52,000 --> 01:01:54,000 Marrë atë. 876 01:01:54,000 --> 01:01:56,000 Ajo rezulton se me ndarjen numër i plotë, 877 01:01:56,000 --> 01:01:59,000 Ne kurrë nuk të marrë këto numra decimal. 878 01:01:59,000 --> 01:02:01,000 Ne kurrë nuk merrni decimal. 879 01:02:01,000 --> 01:02:04,000 Është hedhur poshtë tërësisht. 880 01:02:04,000 --> 01:02:08,000 Nëse ju keni një kompjuter të ndajë dy variablave int, 881 01:02:08,000 --> 01:02:11,000 dhe një është 7, dhe tjetra është 2, 882 01:02:11,000 --> 01:02:13,000 ju nuk do të merrni 3,5 si rezultat. 883 01:02:13,000 --> 01:02:16,000 Ajo do të marrë 3. 884 01:02:16,000 --> 01:02:19,000 Pjesa tjetër do të hidhet, kështu që është efektive arrestimi- 885 01:02:19,000 --> 01:02:24,000 jo një raund, por më tepër një kat, në qoftë se ju djema jeni të njohur me atë që në matematikë, 886 01:02:24,000 --> 01:02:27,000 ku jeni plotësisht hidhni decimal, 887 01:02:27,000 --> 01:02:31,000 dhe kështu ju jeni në thelb truncating atë poshtë për të afërt 888 01:02:31,000 --> 01:02:33,000 Pozita e tërë, të numrit të plotë më të afërt. 889 01:02:33,000 --> 01:02:38,000 [Student] Por atëherë kjo është problematike për shkak se në qoftë se ju keni një koleksion të elementeve 7 890 01:02:38,000 --> 01:02:43,000 pastaj që automatikisht merr elementin 3 nga midpoint në vend të 4. 891 01:02:43,000 --> 01:02:46,000 Si mund të merren me këtë? 892 01:02:46,000 --> 01:02:49,000 Është problematike, sepse nëse do të kishim një grup të 7, 893 01:02:49,000 --> 01:02:54,000 ajo do të marr 3 në vend të 4. 894 01:02:54,000 --> 01:02:56,000 A mund ta shpjegoni pak më shumë? 895 01:02:56,000 --> 01:02:59,000 [Student] Sepse në qoftë se ju keni 7 elemente pas elementi 4 896 01:02:59,000 --> 01:03:04,000 do të të midpoint, e drejtë? 897 01:03:04,000 --> 01:03:07,000 Remember komentin tuaj për të qenë zero indeksuar, pse. 898 01:03:07,000 --> 01:03:10,000 [Student] Yeah, kështu që në pozicionin 3. Kjo do të jetë midpoint. 899 01:03:10,000 --> 01:03:12,000 Po. 900 01:03:12,000 --> 01:03:16,000 Oh, në rregull. Unë shoh atë që ju thotë. 901 01:03:16,000 --> 01:03:19,000 Kjo është lloj i pazakontë, si ne të merrni përdorur për këtë nocion të tërë 902 01:03:19,000 --> 01:03:22,000 marrjen e shpëtoj decimale. 903 01:03:22,000 --> 01:03:26,000 Kjo është një pikë e madhe. 904 01:03:26,000 --> 01:03:30,000 Le të mbarojnë këtë ide. 905 01:03:30,000 --> 01:03:32,000 Ne kemi llogaritur midpoint tonë. 906 01:03:32,000 --> 01:03:37,000 >> Ne jemi duke testuar për të parë nëse gjilpëra jonë është e barabartë me vlerën e mesme. 907 01:03:37,000 --> 01:03:41,000 Ne jemi shtypjen se kemi gjetur atë, por me të vërtetë, çfarë ne duam të bëjmë në këtë situatë? 908 01:03:41,000 --> 01:03:46,000 Ne kemi gjetur atë, kështu që ne duam të le telefonuesi e di se kemi gjetur atë. 909 01:03:46,000 --> 01:03:49,000 Ne kemi marrë një funksion që është një funksion Boolean shtypen. 910 01:03:49,000 --> 01:03:54,000 Mënyra se si sinjal për thirrësit e funksionit tonë se ne jemi gati për të shkuar 911 01:03:54,000 --> 01:03:58,000 po ne themi, "Hej, kjo është e vërtetë." 912 01:03:58,000 --> 01:04:00,000 Si do të bëjmë këtë, Kevin? 913 01:04:00,000 --> 01:04:02,000 Ju jeni nodding kokën tuaj. >> [Kevin] Shto kthimi vërtetë. 914 01:04:02,000 --> 01:04:06,000 [Nate] Pikërisht, kthim i vërtetë. 915 01:04:06,000 --> 01:04:12,000 Tani, në qoftë se ajo nuk është e barabartë, si do të shohim në gjysmën e majtë? 916 01:04:12,000 --> 01:04:16,000 Ndonjë ide? 917 01:04:16,000 --> 01:04:18,000 Stella, ndonjë ide? 918 01:04:18,000 --> 01:04:21,000 Ju duhet për të vendosur një pozicion të ri për fund. 919 01:04:21,000 --> 01:04:23,000 Po. 920 01:04:23,000 --> 01:04:29,000 Pra, ne duhet të bëjmë pozicionin e mesit - fund. 921 01:04:29,000 --> 01:04:33,000 Madhe. 922 01:04:33,000 --> 01:04:36,000 Ne kemi nevojë për të vendosur një pozicion të ri për fund 923 01:04:36,000 --> 01:04:38,000 për të parë në gjysmën e majtë. 924 01:04:38,000 --> 01:04:41,000 Kjo ishte ajo që ne biseduam për para, ku 925 01:04:41,000 --> 01:04:44,000 Unë do të mbajë përsëri në këtë shembull. 926 01:04:44,000 --> 01:04:50,000 Unë kam filluar këtu, dhe pastaj unë kam në fund të gjithë rrugën mbi këtu. 927 01:04:50,000 --> 01:04:53,000 >> Përsëri, në qoftë se ne jemi duke kërkuar për 15, dhe midpoint ynë është në 16, 928 01:04:53,000 --> 01:04:56,000 dhe ne kemi realizuar ", Oops, 16 është më e madhe. 929 01:04:56,000 --> 01:04:59,000 Ne duam të shkojë në gjysmën e majtë. " 930 01:04:59,000 --> 01:05:02,000 Ne atëherë do të lëvizë në fund në 15, 931 01:05:02,000 --> 01:05:06,000 dhe ne bëjmë këtë duke marrë një larg nga midpoint 932 01:05:06,000 --> 01:05:09,000 dhe vendosjen se si në fund tonë të ri. 933 01:05:09,000 --> 01:05:12,000 Gjithashtu, në qoftë se ne duam të shikojmë në gjysmën e duhur, si do ta bëjmë këtë? 934 01:05:12,000 --> 01:05:14,000 A keni një ide? 935 01:05:14,000 --> 01:05:22,000 [Student] Ju vetëm të vendosur të fillojnë të midpoint + 1. 936 01:05:22,000 --> 01:05:24,000 [Nate] Madhe. 937 01:05:24,000 --> 01:05:29,000 Dhe tani në rast se ne nuk gjejmë asgjë, 938 01:05:29,000 --> 01:05:32,000 bën që të merrni mjekuar për ne? 939 01:05:32,000 --> 01:05:36,000 Daniel, bën që të merrni marrë kujdesin e për ne? 940 01:05:36,000 --> 01:05:38,000 [Daniel] Nr 941 01:05:38,000 --> 01:05:40,000 [Nate] Nëse kemi bërë atë nëpër rrjet të tërë dhe nuk gjejmë asgjë, 942 01:05:40,000 --> 01:05:42,000 ku do që të marrë kujdesin e, ose ne duhet të kujdeset për atë? 943 01:05:42,000 --> 01:05:44,000 [Daniel] Kushti ndërkohë. 944 01:05:44,000 --> 01:05:48,000 [Nate] Yeah, ndërsa kushti, pikërisht. 945 01:05:48,000 --> 01:05:51,000 Ajo do të kujdeset për të shkuar nëpër rrjet të tërë, nëse nuk gjejmë asgjë. 946 01:05:51,000 --> 01:05:53,000 Kjo lak, ndërsa do të përfundojë. 947 01:05:53,000 --> 01:05:56,000 Ne kurrë nuk do të keni hasur këtë kusht, 948 01:05:56,000 --> 01:06:03,000 dhe ne mund të kthehen rreme. 949 01:06:03,000 --> 01:06:10,000 Ne gjithashtu mund të largohet këtë nëse këtu si kjo 950 01:06:10,000 --> 01:06:14,000 sepse nëse kjo deklaratë në qoftë se është e vërtetë, 951 01:06:14,000 --> 01:06:16,000 dhe funksioni ynë do të kthehet, 952 01:06:16,000 --> 01:06:21,000 dhe kështu që ne do të ndërpresin shtatzëninë në thelb ky funksion në këtë pikë 953 01:06:21,000 --> 01:06:24,000 kur ne kthim i vërtetë. 954 01:06:24,000 --> 01:06:28,000 Por çfarë ndodh me këtë strukturë këtu? 955 01:06:28,000 --> 01:06:34,000 Do të këtë punë tërësisht, apo ka disa krisje logjike në atje? 956 01:06:34,000 --> 01:06:37,000 >> Ka disa metë logjike në atje, me mënyrën se si ajo është e ngritur. 957 01:06:37,000 --> 01:06:40,000 Çfarë mund të jetë ai? 958 01:06:40,000 --> 01:06:43,000 [Student] Pse keni nevojë - dhe + 1s? 959 01:06:43,000 --> 01:06:47,000 Që përcakton koleksion tonë deri në jetë gjysma tonë të ri majtë dhe të djathtë gjysmë. 960 01:06:47,000 --> 01:06:51,000 [Student] Por pse nuk mund ta bëjë atë pa - 1s dhe + 1s? 961 01:06:51,000 --> 01:06:53,000 [Nate] Ne mund të krijojë atë barabartë me midpoint? 962 01:06:53,000 --> 01:07:04,000 Çfarë mund të jetë problematike në lidhje me këtë? 963 01:07:04,000 --> 01:07:08,000 [Student] Unë mendoj se është joefikas, sepse ju jeni kontrolluar një vlerë që është tashmë janë kontrolluar. 964 01:07:08,000 --> 01:07:11,000 [Nate] Pikërisht, kështu Sam është krejtësisht e drejtë. 965 01:07:11,000 --> 01:07:15,000 Nëse keni vendosur në fund dhe të fillojnë të barabartë me midpoint 966 01:07:15,000 --> 01:07:18,000 në vend të - 1 + 1 dhe mendueshëm, 967 01:07:18,000 --> 01:07:22,000 në disa pika në të ardhmen ne do të përfundojë deri kontrolluar midpoint përsëri. 968 01:07:22,000 --> 01:07:26,000 [Student] Unë filluar pset, dhe pastaj kam pasur diçka të tillë 969 01:07:26,000 --> 01:07:30,000 ku kam harruar + 1, dhe mori mbërthyer në një lak pafund. 970 01:07:30,000 --> 01:07:34,000 Drejtë, sepse në disa pika ju nuk jeni do të merrni filluar dhe do të përfundojë 971 01:07:34,000 --> 01:07:39,000 të vërtetë përputhen. 972 01:07:39,000 --> 01:07:41,000 Cool. 973 01:07:41,000 --> 01:07:44,000 Ka një krisje më e logjikshme, dhe që është se kjo duhet të jetë patjetër 974 01:07:44,000 --> 01:07:48,000 një tjetër në qoftë se. 975 01:07:48,000 --> 01:07:55,000 Pse mund që të jetë? 976 01:07:55,000 --> 01:07:59,000 >> Arsyeja është në qoftë se ajo nuk është një tjetër nëse-keni parë atë, Kevin? 977 01:07:59,000 --> 01:08:02,000 [Kevin] Yeah, sepse ju jeni duke ndryshuar pikën fund. 978 01:08:02,000 --> 01:08:05,000 [Nate] Pikërisht. 979 01:08:05,000 --> 01:08:07,000 Ne jemi duke ndryshuar endpoint, 980 01:08:07,000 --> 01:08:12,000 dhe në qoftë se është e shkruar si ky-we'll bërë hapësira mes- 981 01:08:12,000 --> 01:08:14,000 ajo do të kontrollojë këtë rast. 982 01:08:14,000 --> 01:08:18,000 Në këtë rast, në qoftë se ajo pason, do të përfundojë jashtë funksionit. 983 01:08:18,000 --> 01:08:21,000 Atëherë ajo do të kontrollojë këtë rastin tjetër, 984 01:08:21,000 --> 01:08:24,000 dhe nëse kjo ka sukses, ajo do të rregullojë endpoint, 985 01:08:24,000 --> 01:08:28,000 dhe pastaj ajo do të vazhdojë më dhe shikoni këtë rast. 986 01:08:28,000 --> 01:08:31,000 Por në këtë pikë, ne nuk duam që ajo të vazhdojë të kontrolluar. 987 01:08:31,000 --> 01:08:35,000 Për fat të mirë, ne nuk kemi rivendosur midpoint këtu, 988 01:08:35,000 --> 01:08:39,000 dhe ne e dimë se ky rast nuk do të ketë sukses. 989 01:08:39,000 --> 01:08:44,000 Por ne patjetër duan të vënë tjetër në qoftë se në atje 990 01:08:44,000 --> 01:08:48,000 edhe pse se mund-në këtë rast 991 01:08:48,000 --> 01:08:52,000 pasi ne nuk jemi përshtatur midpoint, do që të bëjë një ndryshim? 992 01:08:52,000 --> 01:08:54,000 Jo, sepse këto raste janë të gjitha të veçantë. 993 01:08:54,000 --> 01:08:58,000 Përsëri, my bad. 994 01:08:58,000 --> 01:09:01,000 Ne nuk e bëjnë, unë mendoj se, duhet të këtë tjetër në qoftë se. 995 01:09:01,000 --> 01:09:05,000 Ne mund t'i jepte një provoni dhe të drejtuar atë dhe të shohim se çfarë ndodh. 996 01:09:05,000 --> 01:09:08,000 Ndërtimi, është hasur një gabim. 997 01:09:08,000 --> 01:09:12,000 Kjo është ndoshta për shkak se kam lënë këto b-së dhe të e në këtu. 998 01:09:12,000 --> 01:09:14,000 A keni ndonjë më shumë nga ato deri në krye? 999 01:09:14,000 --> 01:09:16,000 Ajo nuk duket si ajo. 1000 01:09:16,000 --> 01:09:20,000 Ne zoom jashtë, të ndërtuar, 1001 01:09:20,000 --> 01:09:24,000 atje ajo shkon, kështu që tani në qoftë se ne të kërkuar për 15, 1002 01:09:24,000 --> 01:09:28,000 po. 1003 01:09:28,000 --> 01:09:30,000 Më lejoni të zoom in 1004 01:09:30,000 --> 01:09:33,000 15, po. Ne mund të kandidojë atë përsëri. 1005 01:09:33,000 --> 01:09:36,000 Ngarkimi kodin burim, ndërtimin, running. 1006 01:09:36,000 --> 01:09:41,000 Ne mund të kërkoni për diçka si 13, 1007 01:09:41,000 --> 01:09:45,000 dhe ne nuk do të marrë asgjë shtypje jashtë, kështu që nuk është gjetur se për ne. 1008 01:09:45,000 --> 01:09:51,000 Kjo është e madhe, sepse ajo nuk është në listën tonë. 1009 01:09:51,000 --> 01:09:53,000 >> Ne jemi tani jashtë kohe. 1010 01:09:53,000 --> 01:09:55,000 Kjo do të jetë ajo për këtë javë. 1011 01:09:55,000 --> 01:10:00,000 Faleminderit për t'u bashkuar, dhe të shohim me vone. 1012 01:10:00,000 --> 01:10:02,000 >> [CS50.TV]