1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [3. dio] [Manje Ugodno] 2 00:00:03,000 --> 00:00:05,000 >> [Nate Hardison] [Sveučilište Harvard] 3 00:00:05,000 --> 00:00:08,000 >> [Ovo je CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:10,000 >> U redu, neka je početak. 5 00:00:10,000 --> 00:00:13,000 Dobrodošli na Tjednu 4. CS50. 6 00:00:13,000 --> 00:00:19,000 Ako vi otvorite web preglednik i otvoriti pset 3, 7 00:00:19,000 --> 00:00:23,000 Scramble s CS50, idemo početi idući 8 00:00:23,000 --> 00:00:26,000 kroz dio pitanja tamo. 9 00:00:26,000 --> 00:00:32,000 Baš kao i prošli tjedan, mi ćemo raditi u CS50 Spaces, 10 00:00:32,000 --> 00:00:35,000 ako ćete također povući da se kao dobro, 11 00:00:35,000 --> 00:00:43,000 a ako idete naprijed i posjetite ovaj link koji sam dobio ovdje na vrhu. 12 00:00:43,000 --> 00:00:45,000 To je vrijeme da biste započeli. 13 00:00:45,000 --> 00:00:51,000 Imamo naš mali hi program ovdje. Ništa luda. 14 00:00:51,000 --> 00:00:55,000 Jedna od prvih stvari koje želim učiniti s vama danas je ići preko nekoliko rješenja 15 00:00:55,000 --> 00:00:58,000 do problema Set 1, vrsta primjer rješenja, 16 00:00:58,000 --> 00:01:03,000 samo tako da možete dobiti osjećaj za ono što vrste koda osoblja je pisanje, 17 00:01:03,000 --> 00:01:07,000 što vrste kod drugih studenata pisanje, 18 00:01:07,000 --> 00:01:10,000 i imaju li pogledati to, jer znam da je čudno 19 00:01:10,000 --> 00:01:14,000 kada podnijeti rješenje za problem set i dobiti komentare 20 00:01:14,000 --> 00:01:18,000 na svoju verziju, ali ponekad je korisno vidjeti kako drugi ljudi to učinio, 21 00:01:18,000 --> 00:01:22,000 pogotovo one koje su lijepo izgleda. 22 00:01:22,000 --> 00:01:27,000 Za veći dio, stvarno sam bio impresioniran s rješenjima koje vi proizvedenih. 23 00:01:27,000 --> 00:01:31,000 Nisam još počela gledati na svoje 2s Problem Set, ali ako oni nešto poput prve, 24 00:01:31,000 --> 00:01:34,000 to ne znači ništa, ali dobre stvari. 25 00:01:34,000 --> 00:01:40,000 >> Ako pogledate moje revizija, počnimo skroz na reviziju 1, 26 00:01:40,000 --> 00:01:47,000 i da ćemo se brzo pogledati Mario rješenje. 27 00:01:47,000 --> 00:01:54,000 Ako povučeš ovaj gore, ti programi koje ćemo predstaviti točne. 28 00:01:54,000 --> 00:01:56,000 Nije bilo ispravnost problema s tim problemima, nego, 29 00:01:56,000 --> 00:01:59,000 želimo razgovarati malo o različitim pitanjima dizajna 30 00:01:59,000 --> 00:02:03,000 koji su se ovdje koristi. 31 00:02:03,000 --> 00:02:08,000 Jedna od stvari koja je bila zanimljiva oko rješenja 32 00:02:08,000 --> 00:02:11,000 je da se koristi ovaj novi konstrukt zvan funta definirati, 33 00:02:11,000 --> 00:02:15,000 ponekad se također naziva hash definirati. 34 00:02:15,000 --> 00:02:18,000 Dopustite mi povećali na njega ovdje. 35 00:02:18,000 --> 00:02:24,000 # Define vam dati imena tih brojeva u svom programu. 36 00:02:24,000 --> 00:02:28,000 U ovom slučaju, maksimalno visina piramide u Mario 37 00:02:28,000 --> 00:02:34,000 je 23. i umjesto stavljajući 23 u mom kodu- 38 00:02:34,000 --> 00:02:37,000 mi bi se odnositi na to što tvrdi kodiranje 23 - 39 00:02:37,000 --> 00:02:43,000 umjesto to daje ime MAX_HEIGHT tom broju, 40 00:02:43,000 --> 00:02:48,000 tako da ovdje u mom učiniti-while petlje 41 00:02:48,000 --> 00:02:51,000 zapravo može odnositi na MAX_HEIGHT 42 00:02:51,000 --> 00:02:55,000 umjesto stavljanja broj 23 u. 43 00:02:55,000 --> 00:02:57,000 [Studentski] Koja je prednost da radi? 44 00:02:57,000 --> 00:02:59,000 To je veliko pitanje. 45 00:02:59,000 --> 00:03:03,000 Jedan je čitljivost. 46 00:03:03,000 --> 00:03:08,000 Prednost od koristeći ovaj # define je čitljivost. 47 00:03:08,000 --> 00:03:11,000 Kad čitam ovaj kod, ja mogu vidjeti što se događa. 48 00:03:11,000 --> 00:03:15,000 >> Ja mogu vidjeti u ovom stanju ovdje da smo testiranje 49 00:03:15,000 --> 00:03:19,000 za visinu bude <0, što mi je također moglo definirati 50 00:03:19,000 --> 00:03:22,000 biti minimalne visine ili min visina. 51 00:03:22,000 --> 00:03:25,000 Druga prednost je da sam tada možete pročitati ostatak linije vidjeti 52 00:03:25,000 --> 00:03:30,000 da i mi smo provjere kako bi bili sigurni da visina nije veća od max visine, 53 00:03:30,000 --> 00:03:35,000 jer ćemo nastaviti dok je visina veća od max visine. 54 00:03:35,000 --> 00:03:40,000 Druga prednost je, ako sam udaljili malo ovdje- 55 00:03:40,000 --> 00:03:49,000 ako sam pokrenuti ovaj program, a ja ga pokrenuti, recimo, sa 23 upravo sada, 56 00:03:49,000 --> 00:03:52,000 to će ispisati sve retke 23 baš kao da je. 57 00:03:52,000 --> 00:03:54,000 No, reći da sam želio promjeniti najveću visinu, 58 00:03:54,000 --> 00:03:57,000 i sada želim ograničiti maksimalnu visinu piramida 59 00:03:57,000 --> 00:04:06,000 biti samo reći-čovjek, koji je bio funky. 60 00:04:06,000 --> 00:04:14,000 # Include , # define MAX_HEIGHT, 61 00:04:14,000 --> 00:04:18,000 i recimo, željeli smo postaviti ga je jednak 10. 62 00:04:18,000 --> 00:04:22,000 Sada u ovom trenutku, sve sam morao učiniti je to promijeniti u tom jednom mjestu. 63 00:04:22,000 --> 00:04:27,000 Ja mogu rekompiliranje kôd, a sada ako sam probati i upišite u 12, 64 00:04:27,000 --> 00:04:30,000 to će potaknuti me opet. 65 00:04:30,000 --> 00:04:33,000 U tom slučaju, mi samo koristimo MAX_HEIGHT jednom. 66 00:04:33,000 --> 00:04:37,000 To ne znači da je velika gnjavaža ići u 67 00:04:37,000 --> 00:04:40,000 i to promijeniti u while petlji ako je potrebno. 68 00:04:40,000 --> 00:04:44,000 Ali u programima gdje ste s pozivom na isti čarobni broj 69 00:04:44,000 --> 00:04:47,000 iznova i iznova, ovaj # define mehanizam je jako zgodan 70 00:04:47,000 --> 00:04:52,000 jer ste upravo to promijeniti jednog vremena na vrhu file-to je obično gdje ste stavili ih- 71 00:04:52,000 --> 00:04:57,000 i promjene percolates kroz ostatak datoteke. 72 00:04:57,000 --> 00:05:02,000 >> Druge stvari sam htjela napomenuti u ovom zadatku da sam mislio izgledala jako lijepo, 73 00:05:02,000 --> 00:05:05,000 jedan je imenovanje varijabli. 74 00:05:05,000 --> 00:05:14,000 Vidite da se ovdje imamo cjelobrojne varijable zvane red i tzv visina. 75 00:05:14,000 --> 00:05:20,000 Prostori, hashes, to pomaže da kod malo više čitati, 76 00:05:20,000 --> 00:05:25,000 čini malo više razumljivo što se zapravo događa. 77 00:05:25,000 --> 00:05:31,000 To je u suprotnosti s pomoću, recimo, slučajnih slova 78 00:05:31,000 --> 00:05:35,000 ili samo črčkarija uopce. 79 00:05:35,000 --> 00:05:39,000 Konačna stvar ću naglasiti da je u za petlje, 80 00:05:39,000 --> 00:05:45,000 Često ove iteratora varijable, te brojači koje koristite u vašoj za petlje, 81 00:05:45,000 --> 00:05:51,000 to je standard i konvencionalna ih početi s obje I, a zatim j a zatim k 82 00:05:51,000 --> 00:05:54,000 i ide od tamo ako trebate više varijabli, 83 00:05:54,000 --> 00:05:56,000 i to je samo konvencija. 84 00:05:56,000 --> 00:05:58,000 Postoji mnogo konvencija. 85 00:05:58,000 --> 00:06:00,000 To ovisi o programskom jeziku koji koristite. 86 00:06:00,000 --> 00:06:04,000 Ali u C, obično počinju s ja. 87 00:06:04,000 --> 00:06:08,000 To nema smisla koristiti, recimo, ili b 88 00:06:08,000 --> 00:06:13,000 ovisno o situaciji. 89 00:06:13,000 --> 00:06:15,000 To je to za ovaj jedan. 90 00:06:15,000 --> 00:06:25,000 Ako sada podići revizija 2, vidjet ćete još jedan Mario, 91 00:06:25,000 --> 00:06:29,000 a ovo je slična drugoj onaj koji mi samo vidjeli, 92 00:06:29,000 --> 00:06:32,000 ali to ne nešto vrsta cool. 93 00:06:32,000 --> 00:06:38,000 Ako gledamo na ovom dijelu ovdje u unutarnje for petlje, 94 00:06:38,000 --> 00:06:44,000 oni koriste neki ludi potrazi sintaksu ovdje upravo u toj liniji. 95 00:06:44,000 --> 00:06:47,000 To se zove trojni operater. 96 00:06:47,000 --> 00:06:53,000 To je, ako drugi izjavu sažeti u jednoj liniji. 97 00:06:53,000 --> 00:06:57,000 Uvjet je ovaj dio unutar zagrada. 98 00:06:57,000 --> 00:07:05,000 To je ekvivalent za reći, ako j 00:07:10,000 A onda ono što je sadržaj koji ako blok će biti su prostor 100 00:07:10,000 --> 00:07:16,000 i onda sadržaj onoga što bi inače biti su to #. 101 00:07:16,000 --> 00:07:20,000 To je bitno je dodjeljivanje prostora za ove varijable. 102 00:07:20,000 --> 00:07:24,000 To je stavljanjem prostora u sadržaju blok varijable, 103 00:07:24,000 --> 00:07:29,000 Ako je ovaj uvjet ispunjen, a ako uvjet nije zadovoljen, 104 00:07:29,000 --> 00:07:32,000 zatim blok varijabla dobiva ovo #. 105 00:07:32,000 --> 00:07:37,000 I onda, naravno, umjesto da gradi cijeli niz 106 00:07:37,000 --> 00:07:43,000 i ispis sve se na kraju ovo rješenje ga ispisuje jedan znak na vrijeme. 107 00:07:43,000 --> 00:07:48,000 Prilično cool. 108 00:07:48,000 --> 00:07:53,000 >> Drugi par stvari za pogledati. Mi ćemo prijeći na pohlepni. 109 00:07:53,000 --> 00:07:58,000 Sada, ako gledamo pohlepni, ovo prvo rješenje 110 00:07:58,000 --> 00:08:00,000 koristi to # definira vrlo malo. 111 00:08:00,000 --> 00:08:06,000 Imamo jednog konstantu definiranu za svaki od različitih brojeva u ovom programu. 112 00:08:06,000 --> 00:08:12,000 Imamo jedan za centi po dolaru, jedan za četvrtine, dimes, nickels i penija, 113 00:08:12,000 --> 00:08:15,000 i sad ako mi se pomaknite prema dolje i pročitati kôd, 114 00:08:15,000 --> 00:08:22,000 možemo vidjeti standardni učiniti-dok sve tisak petlje van. 115 00:08:22,000 --> 00:08:25,000 Vrsta poanta ovog problema je shvatio da 116 00:08:25,000 --> 00:08:29,000 vam je potrebno pretvoriti plovak da ste pročitali u od korisnika na cijeli 117 00:08:29,000 --> 00:08:32,000 točno učiniti math, a to je zato 118 00:08:32,000 --> 00:08:36,000 s pomičnim zarezom, kao što smo spomenuli u predavanju kratko, 119 00:08:36,000 --> 00:08:41,000 to nije moguće točno predstavljaju svakog pojedinog vrijednost na brojevnom pravcu 120 00:08:41,000 --> 00:08:47,000 jer postoji beskonačno mnogo vrijednosti između 3 i, recimo, 3,1 čak. 121 00:08:47,000 --> 00:08:54,000 Možete imati 3,01 i 3,001 i 3,0001, a možete zadržati ide. 122 00:08:54,000 --> 00:09:00,000 Ispada kad radite s novcem, često želite ga pretvoriti 123 00:09:00,000 --> 00:09:05,000 u integer formatu, tako da ne gubiš novčana i takve stvari. 124 00:09:05,000 --> 00:09:09,000 Doing da i zaokruživanje bio ključ. 125 00:09:09,000 --> 00:09:14,000 Ovo rješenje se koristi savršeno jednostavan, veliki algoritam, 126 00:09:14,000 --> 00:09:17,000 koji smanjene broj preostalih centi, prvi po tromjesečjima, 127 00:09:17,000 --> 00:09:19,000 zatim dimes, zatim Nickels, zatim novčana jedinica, 128 00:09:19,000 --> 00:09:24,000 i dodavanje na broj kovanica svaki put. 129 00:09:24,000 --> 00:09:31,000 >> Drugo je rješenje da ćemo vidjeti, kao što sam smanjivanje i ići na reviziju 4, 130 00:09:31,000 --> 00:09:40,000 imao vrlo sličan početku, ali umjesto da se koristi DIV i mod 131 00:09:40,000 --> 00:09:44,000 upravo ovdje, kako biste izračunali broj centi. 132 00:09:44,000 --> 00:09:50,000 Ovo, broj od četvrtine je jednak broju centi podijeljenih 25, 133 00:09:50,000 --> 00:09:53,000 i razlog to radi jer radimo cijeli odjel, 134 00:09:53,000 --> 00:09:58,000 tako da je odbacivanje bilo ostatak. 135 00:09:58,000 --> 00:10:02,000 [Studentski] Ne moramo komentirati pretraživanje? 136 00:10:02,000 --> 00:10:05,000 To stvarno ovisi. 137 00:10:05,000 --> 00:10:08,000 [Studentski] Ti si komentirajući više nego kod ovdje. 138 00:10:08,000 --> 00:10:16,000 Da, i tako postoji hrpa različitih filozofije na to. 139 00:10:16,000 --> 00:10:21,000 Moj osobni filozofija je da vaš broj je stvarno istina, 140 00:10:21,000 --> 00:10:24,000 kao kodu je ono što zapravo izvršavanju na računalu, 141 00:10:24,000 --> 00:10:29,000 i tako vaš broj bi trebao biti čitljiv moguće ne zahtijevati onoliko komentare. 142 00:10:29,000 --> 00:10:33,000 To je rekao, kada radite stvari koje su vrsta lukav matematički 143 00:10:33,000 --> 00:10:38,000 ili algoritamski, to je dobro za one komentirati, tako da možete 144 00:10:38,000 --> 00:10:43,000 dodati dodatnu dimenziju, dodatni sloj onome tko čita svoj kod. 145 00:10:43,000 --> 00:10:49,000 U tim rješenjima, često su komentirali jače samo zato 146 00:10:49,000 --> 00:10:52,000 želimo biti u mogućnosti da ih distribuirati i imaju ljudi ih pokupiti 147 00:10:52,000 --> 00:10:56,000 i čitati ih prilično lako. 148 00:10:56,000 --> 00:11:05,000 Ali definitivno, složio bih se da je ovo teška. 149 00:11:05,000 --> 00:11:07,000 [Studentski] Ali kad ste u nedoumici, ići teže? 150 00:11:07,000 --> 00:11:10,000 Kada su u nedoumici, ići teže. 151 00:11:10,000 --> 00:11:17,000 Neki ljudi ponekad će reći povratnu 0 ili nešto slično. 152 00:11:17,000 --> 00:11:20,000 Mislim da je to smiješno komentar. 153 00:11:20,000 --> 00:11:22,000 Jasno je da je ono što se događa. 154 00:11:22,000 --> 00:11:25,000 Ne trebam Engleski mi reći da. 155 00:11:25,000 --> 00:11:28,000 Ponekad ljudi će pisati stvari poput "kthxbai!" 156 00:11:28,000 --> 00:11:32,000 To je sladak, ali isto tako ne- 157 00:11:32,000 --> 00:11:35,000 da ne čineći razliku između komentiranje bodova ili ne. 158 00:11:35,000 --> 00:11:41,000 Takvi komentari su samo ha, ha. 159 00:11:41,000 --> 00:11:43,000 Cool. 160 00:11:43,000 --> 00:11:48,000 >> U ovom trenutku, počnimo raditi na problemu Set 3 dio pitanja. 161 00:11:48,000 --> 00:11:52,000 Ako vi povući ovaj gore opet, 162 00:11:52,000 --> 00:11:55,000 kao i kod prošlog tjedna, nećemo gledati gaćice u ovom poglavlju. 163 00:11:55,000 --> 00:12:00,000 Pustit ćemo ti dečki to učiniti na svoj vlastiti put i razgovarati o pitanjima. 164 00:12:00,000 --> 00:12:05,000 Ali sada, u ovom dijelu ćemo provesti malo više vremena 165 00:12:05,000 --> 00:12:11,000 govori o manje od kodiranja osnove 166 00:12:11,000 --> 00:12:15,000 kao što smo učinili prošlog tjedna, a umjesto toga, idemo da se više fokusiraju na 167 00:12:15,000 --> 00:12:22,000 malo više od teorije, pa se govori o binarnom pretraživanje, a zatim sortiranje. 168 00:12:22,000 --> 00:12:27,000 Od one od vas koji su nakon zajedno s predavanjem, 169 00:12:27,000 --> 00:12:30,000 može netko dati mi rekapitulacija onoga što je razlika 170 00:12:30,000 --> 00:12:35,000 između binarnog pretraživanja i linearnog pretraživanja? 171 00:12:35,000 --> 00:12:37,000 Što se događa? Naravno. 172 00:12:37,000 --> 00:12:42,000 Linearni pretraživanje pretražuje kroz svaki element u sortirani popis 173 00:12:42,000 --> 00:12:45,000 jedan po jedan po jedan po jedan po jedan, 174 00:12:45,000 --> 00:12:50,000 i binarno pretraživanje dijeli popis u dvije skupine, 175 00:12:50,000 --> 00:12:57,000 provjerava jesu li tipke vrijednosti da ste u potrazi za veći ili manji od srednjem vrijednosti 176 00:12:57,000 --> 00:13:00,000 da ste upravo pronašli, a ako je manje od, to ide s donje liste 177 00:13:00,000 --> 00:13:03,000 i onda dijeli to opet, ne istu funkciju 178 00:13:03,000 --> 00:13:07,000 skroz dok se ne pronađe tačku biti jednaka vrijednosti same. 179 00:13:07,000 --> 00:13:10,000 Točno. 180 00:13:10,000 --> 00:13:12,000 >> Zašto mi je stalo? 181 00:13:12,000 --> 00:13:20,000 Zašto govorimo o binarnom potrazi nasuprot linearnom traženja? 182 00:13:20,000 --> 00:13:22,000 Da. 183 00:13:22,000 --> 00:13:24,000 Binarni je puno brže, tako da ako udvostručiti veličinu problema 184 00:13:24,000 --> 00:13:27,000 to traje još jedan korak umjesto dvostruko više. 185 00:13:27,000 --> 00:13:29,000 Točno. 186 00:13:29,000 --> 00:13:31,000 To je veliki odgovor. 187 00:13:31,000 --> 00:13:36,000 Linearni traži se jako puno provjere jedan element u isto vrijeme, 188 00:13:36,000 --> 00:13:39,000 i kao što smo vidjeli na prvi dan predavanja 189 00:13:39,000 --> 00:13:42,000 kada je David otišao kroz svoj primjer telefonskog imenika 190 00:13:42,000 --> 00:13:45,000 i iščupao jednu stranicu u telefonskom imeniku na vrijeme 191 00:13:45,000 --> 00:13:47,000 i zadržao taj događaj iznova i iznova i iznova, 192 00:13:47,000 --> 00:13:51,000 to će potrajati mu stvarno dugo vremena naći nikoga u telefonskom imeniku, 193 00:13:51,000 --> 00:13:55,000 osim, naravno, on je bio u potrazi za nekoga na samom početku abecede. 194 00:13:55,000 --> 00:14:00,000 S binarnog pretraživanja, možete ići puno brže, 195 00:14:00,000 --> 00:14:05,000 i to ne samo dvostruko brže ili tri puta brže ili četiri puta brže. 196 00:14:05,000 --> 00:14:13,000 No, problem dobiva sve manji i manji i manji puno brže. 197 00:14:13,000 --> 00:14:17,000 Za ilustraciju, mi ćemo početi govoriti o tome što se događa 198 00:14:17,000 --> 00:14:21,000 kada pišemo binarnog pretraživanja. 199 00:14:21,000 --> 00:14:27,000 Problem pri ruci je da ako imam niz brojeva, 200 00:14:27,000 --> 00:14:40,000 recimo, jedan, dva, tri, pet, sedam, 23, 45, 78, 12323, 201 00:14:40,000 --> 00:14:47,000 a zatim 9 sa tonu 0S nakon njega, 202 00:14:47,000 --> 00:14:52,000 želimo biti u stanju shvatiti vrlo brzo ono što je u 203 00:14:52,000 --> 00:14:57,000 ovaj niz brojeva. 204 00:14:57,000 --> 00:15:00,000 Znam da je ovo izgleda malo glup i malo neprirodan, 205 00:15:00,000 --> 00:15:02,000 jer sada je to. 206 00:15:02,000 --> 00:15:05,000 Imamo niz koji nema jako mnogo elemenata u njemu, 207 00:15:05,000 --> 00:15:08,000 a ako ja pitam jednog od vas odgonetnuti da li ili ne 208 00:15:08,000 --> 00:15:11,000 23 je u polju, možete to učiniti vrlo brzo 209 00:15:11,000 --> 00:15:16,000 samo pogledavši to i mi reći da ili ne. 210 00:15:16,000 --> 00:15:20,000 Analogni razmotriti je zamisliti da bi to bilo, recimo, 211 00:15:20,000 --> 00:15:27,000 Excel proračunske tablice s 10.000 redaka, 20000 redaka. 212 00:15:27,000 --> 00:15:31,000 Naravno, možete to učiniti naredbu F ili kontrolnu F i pogledati nešto gore. 213 00:15:31,000 --> 00:15:33,000 Također možete koristiti filtere i pretraživanje stvari, 214 00:15:33,000 --> 00:15:37,000 ali ako ste morali gledati kroz tu datoteku redak po redak po redak, 215 00:15:37,000 --> 00:15:40,000 to bi vam dugo vremena da ga pronaći. 216 00:15:40,000 --> 00:15:42,000 To je vrsta kao u primjeru telefonskog imenika, previše, gdje 217 00:15:42,000 --> 00:15:44,000 nitko ne gleda kroz jedan telefonski stranice knjige na vrijeme. 218 00:15:44,000 --> 00:15:47,000 Tipično, oni ne otvorite ga na sredini, 219 00:15:47,000 --> 00:15:50,000 ili u slučaju puno telefonskih knjiga i leksikona gdje 220 00:15:50,000 --> 00:15:54,000 zapravo su ga ključem na prvom pismu, 221 00:15:54,000 --> 00:16:01,000 ste okrenuti prema tom prvom slovu i otvoriti i početi prolazi kroz tu. 222 00:16:01,000 --> 00:16:03,000 >> Podsjeti me u svoje ime ponovno. >> Sam. 223 00:16:03,000 --> 00:16:05,000 Sam. 224 00:16:05,000 --> 00:16:11,000 Kao Sam je rekao, da je linearni traži proces će biti jako sporo, 225 00:16:11,000 --> 00:16:15,000 i umjesto s binarnim pretraživanje, način to radi je da 226 00:16:15,000 --> 00:16:21,000 svaki put idemo kroz iteracije našeg traži algoritma, 227 00:16:21,000 --> 00:16:27,000 idemo podijeliti popis na pola, u suštini, 228 00:16:27,000 --> 00:16:33,000 u dva manja lista. 229 00:16:33,000 --> 00:16:39,000 A onda se na sljedeći iteracija petlje, mi ćemo ga podijeliti ponovo 230 00:16:39,000 --> 00:16:44,000 u drugim manjim listama. 231 00:16:44,000 --> 00:16:48,000 Kao što možete vidjeti, problem čuva uzimajući manji i manji 232 00:16:48,000 --> 00:16:55,000 jer smo zadržati odbacivanje polovicu popisa svaki put. 233 00:16:55,000 --> 00:16:59,000 Kako to otpis rad? 234 00:16:59,000 --> 00:17:05,000 Samo kao podsjetnik, što ćemo učiniti ako smo računalo 235 00:17:05,000 --> 00:17:11,000 i bili smo, recimo, u potrazi za brojem pet u ovom popisu 236 00:17:11,000 --> 00:17:15,000 da bismo pokupiti broj u sredini. 237 00:17:15,000 --> 00:17:26,000 U sredini tog popisa, jer su 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 brojeva, 238 00:17:26,000 --> 00:17:32,000 ćemo odabrati broj ili na 4. poziciji ili na 5. poziciji, 239 00:17:32,000 --> 00:17:38,000 i mi bismo to nazvati sredinu našeg popisa. 240 00:17:38,000 --> 00:17:42,000 Pick broj u sredini. 241 00:17:42,000 --> 00:17:51,000 Zatim, baš kao i Sam je rekao, mi ćemo testirati da vidi je li taj broj je jednak 242 00:17:51,000 --> 00:17:59,000 na broj koji želimo dobiti ili željenom broju. 243 00:17:59,000 --> 00:18:06,000 Ako je jednaka, onda smo ga pronašli. Mi smo pobijediti. 244 00:18:06,000 --> 00:18:12,000 Ako to nije jednaka, onda postoji nekoliko slučajeva. 245 00:18:12,000 --> 00:18:15,000 Dva su slučajevi ili broj mora biti veći od broja gledamo, 246 00:18:15,000 --> 00:18:19,000 ili je to manje nego. 247 00:18:19,000 --> 00:18:25,000 Ako je veća, idemo na desno. 248 00:18:25,000 --> 00:18:33,000 A ako je manje, krećemo s lijeve strane. 249 00:18:33,000 --> 00:18:41,000 I onda smo ponoviti cijeli proces ponovno 250 00:18:41,000 --> 00:18:48,000 ili na desnoj polovici ili lijevoj polovici liste. 251 00:18:48,000 --> 00:18:51,000 >> Prvi problem u današnjem odlomku je shvatiti 252 00:18:51,000 --> 00:18:55,000 kako mi zapravo može početi izraziti to u C koda. 253 00:18:55,000 --> 00:18:58,000 Imamo pseudocode ovdje. 254 00:18:58,000 --> 00:19:04,000 Što ćemo početi raditi je ću podići brand-novi prostor, 255 00:19:04,000 --> 00:19:09,000 spasiti ovu reviziju, tako da smo ove bilješke za kasnije, 256 00:19:09,000 --> 00:19:20,000 ćemo izbrisati sve to, i onda kopirati i zalijepiti iz problema setu 257 00:19:20,000 --> 00:19:26,000 ove informacije na našim prostorima, a nadamo se da to ne slomiti. 258 00:19:26,000 --> 00:19:28,000 Savršeno. 259 00:19:28,000 --> 00:19:33,000 Ako vi sve to, kopirajte i zalijepite ovaj kod u svoj novi prostor, 260 00:19:33,000 --> 00:19:43,000 u prazni. 261 00:19:43,000 --> 00:19:47,000 Pokušajmo Daniela. Ako sastaviti i pokrenuti ovaj program, to funkcionira? 262 00:19:47,000 --> 00:19:49,000 Ne >> Što to govori? 263 00:19:49,000 --> 00:19:53,000 Ona kaže kontrola dosegne kraj non-void funkciju. 264 00:19:53,000 --> 00:19:55,000 Da, pa neka mi ga pokušati trčanje. 265 00:19:55,000 --> 00:19:59,000 Jeste vi vidjeli ovo prije? Znate li što to znači? 266 00:19:59,000 --> 00:20:01,000 Ok, ajmo secirati ovo malo. 267 00:20:01,000 --> 00:20:10,000 To govori u file.c na liniji 9, stupac 1 imamo pogrešku, baš kao što je rekao, 268 00:20:10,000 --> 00:20:16,000 i ona kaže da je to proizašlo iz pogreške upozorenja i upozorenja povratka tipa. 269 00:20:16,000 --> 00:20:18,000 To izgleda kao nešto što se događa s povratnom tipu, koji ima smisla. 270 00:20:18,000 --> 00:20:21,000 Imamo non-void funkciju, što znači da imamo funkciju 271 00:20:21,000 --> 00:20:24,000 da se ne vraća prazninu. 272 00:20:24,000 --> 00:20:27,000 Void funkcija je onaj koji izgleda ovako: 273 00:20:27,000 --> 00:20:35,000 void foo (), i to je praznina, jer povratni tip je void, 274 00:20:35,000 --> 00:20:38,000 što znači da ako smo imali nešto ovdje 275 00:20:38,000 --> 00:20:45,000 poput povratka 1, mi bismo dobili prevodilac pogrešku za to. 276 00:20:45,000 --> 00:20:49,000 Međutim, mi imamo non-void funkciju. 277 00:20:49,000 --> 00:20:51,000 Naš non-void funkcija u ovom slučaju je naša funkcija pretraživanja 278 00:20:51,000 --> 00:20:56,000 jer ima povratni tip bool. 279 00:20:56,000 --> 00:20:59,000 Kada je rekao da je kontrola dosegne kraj non-void funkciju, 280 00:20:59,000 --> 00:21:02,000 to je zato što traži ne imati povratnu izjavu. 281 00:21:02,000 --> 00:21:04,000 To nije ništa povratku tipa bool. 282 00:21:04,000 --> 00:21:09,000 >> Možemo to popraviti, a što ne vi mislite 283 00:21:09,000 --> 00:21:13,000 traži se trebali vratiti po defaultu? 284 00:21:13,000 --> 00:21:16,000 Što bi trebao biti zadana vrijednost od traženja povratak? 285 00:21:16,000 --> 00:21:19,000 Jer to je ono što možemo staviti na kraju. 286 00:21:19,000 --> 00:21:21,000 Charlotte, imate li bilo-? 287 00:21:21,000 --> 00:21:23,000 Istina ili laž? >> Istina ili laž. 288 00:21:23,000 --> 00:21:26,000 Koja? 289 00:21:26,000 --> 00:21:28,000 Netočno. Ne znam. 290 00:21:28,000 --> 00:21:30,000 Lažna? Pokušajmo. 291 00:21:30,000 --> 00:21:32,000 Zašto bi vam reći povratak netočno? To je velika intuicija. 292 00:21:32,000 --> 00:21:35,000 [Charlotte] ne znam. 293 00:21:35,000 --> 00:21:39,000 Mi ćemo se vratiti false u ovom slučaju, jer to će biti naš zadani 294 00:21:39,000 --> 00:21:44,000 ako iz nekog razloga je popis prazan ili igla 295 00:21:44,000 --> 00:21:46,000 da smo u potrazi za ne postoji. 296 00:21:46,000 --> 00:21:50,000 Zatim, na samom kraju, ako mi ne vrate istina je ranije u ovoj funkciji, 297 00:21:50,000 --> 00:21:55,000 uvijek smo znali da je ova funkcija će reći nope, to nije u polju. 298 00:21:55,000 --> 00:21:58,000 To nije u plastu sijena. 299 00:21:58,000 --> 00:22:03,000 Sada, ako smo sastaviti i pokrenuti ga-neka me spasiti to tako da ga možemo podići. 300 00:22:03,000 --> 00:22:08,000 Sada, ako smo sastaviti i pokrenuti naš program, on gradi. 301 00:22:08,000 --> 00:22:12,000 Mi smo dobili našu malu brz. 302 00:22:12,000 --> 00:22:20,000 Ako sam pogodio 4-uh-oh. 303 00:22:20,000 --> 00:22:25,000 To nije ništa ispisati. Izgleda sve završilo dobro. 304 00:22:25,000 --> 00:22:35,000 Moramo popuniti to u. 305 00:22:35,000 --> 00:22:39,000 Razgovarali smo o algoritma u pseudocode malo prije. 306 00:22:39,000 --> 00:22:44,000 Da vidim, osim toga, 307 00:22:44,000 --> 00:22:49,000 i ja ću povući taj algoritam natrag gore opet. 308 00:22:49,000 --> 00:22:51,000 Ajmo hit ovog tipa. Ne. 309 00:22:51,000 --> 00:22:58,000 Tu je. 310 00:22:58,000 --> 00:23:03,000 Kako ćemo to učiniti? 311 00:23:03,000 --> 00:23:11,000 Što će biti dobra strategija za pokretanje off ovaj kod? 312 00:23:11,000 --> 00:23:16,000 Morate odabrati broj u sredini. 313 00:23:16,000 --> 00:23:23,000 Kako odabrati broj u sredini niza? 314 00:23:23,000 --> 00:23:25,000 Bilo koji sugestija? 315 00:23:25,000 --> 00:23:27,000 [Studentski] strlen podijeljena dva. 316 00:23:27,000 --> 00:23:32,000 Strlen podijeljena dva. To je jedan veliki. 317 00:23:32,000 --> 00:23:35,000 Strlen djela s posebnim vrstama polja. 318 00:23:35,000 --> 00:23:38,000 Koje vrste polja? 319 00:23:38,000 --> 00:23:44,000 Gudački polja, karakter polja. 320 00:23:44,000 --> 00:23:48,000 To je to ista vrsta koncepta koji želimo primijeniti, 321 00:23:48,000 --> 00:23:52,000 ali ne možemo koristiti strlen jer nemamo niz znakova. 322 00:23:52,000 --> 00:23:55,000 Imamo niz Ints. 323 00:23:55,000 --> 00:23:58,000 No, ono što ne strlen dobiti za nas? 324 00:23:58,000 --> 00:24:01,000 Znate li što se dobiva za nas? 325 00:24:01,000 --> 00:24:03,000 [Studentski] strlen dobiva nam duljinu. 326 00:24:03,000 --> 00:24:05,000 Točno, to dobiva nas dužinu. 327 00:24:05,000 --> 00:24:09,000 Strlen dobiva duljinu niza za nas. 328 00:24:09,000 --> 00:24:14,000 >> Kako smo dobili da je u našem programu binarnog pretraživanja? 329 00:24:14,000 --> 00:24:18,000 Kako bi ste dobili duljinu niza? 330 00:24:18,000 --> 00:24:20,000 [Studentski] strlen? 331 00:24:20,000 --> 00:24:25,000 Možete dobiti duljinu ispravno formatiran C string niz sa strlen. 332 00:24:25,000 --> 00:24:31,000 Problem je, međutim, da nemaju string niz. 333 00:24:31,000 --> 00:24:36,000 Ako se osvrnemo na ovom kodeksu, imamo ovaj cijeli niz. 334 00:24:36,000 --> 00:24:38,000 Kako znamo koliko je to? 335 00:24:38,000 --> 00:24:44,000 [Studentski] Ima li ekvivalent jedan za krajnje točke, kao što su int l ili nešto? 336 00:24:44,000 --> 00:24:49,000 Ispada da zapravo nije, i tako na neki način, to je 337 00:24:49,000 --> 00:24:52,000 jedna od onih stvari koje je samo dobro znati o C, 338 00:24:52,000 --> 00:24:57,000 da ne postoji način da se duljina niza 339 00:24:57,000 --> 00:24:59,000 ako sve sam vam dati je niz. 340 00:24:59,000 --> 00:25:02,000 Razlog radi sa žice, razlog strlen djela, 341 00:25:02,000 --> 00:25:06,000 je zato što ako niz pravilno formatiran, 342 00:25:06,000 --> 00:25:12,000 ona će imati tu posebnu \ 0 znak na samom kraju. 343 00:25:12,000 --> 00:25:16,000 >> Također možete zamisliti ako imate nepravilno oblikovan niz 344 00:25:16,000 --> 00:25:20,000 i nema \ 0 znak postoji, onda je cijela stvar ne radi. 345 00:25:20,000 --> 00:25:22,000 [Studentski] Mogu li dodati \ 0? 346 00:25:22,000 --> 00:25:24,000 Mi bi u ovom slučaju. 347 00:25:24,000 --> 00:25:29,000 Mogli bismo dodati nekakvu \ 0 348 00:25:29,000 --> 00:25:33,000 ili neka vrsta označava karakter, a zatim ga koristiti. 349 00:25:33,000 --> 00:25:36,000 No, to nije sasvim ide na posao 350 00:25:36,000 --> 00:25:40,000 jer \ 0 je za char tipa, 351 00:25:40,000 --> 00:25:43,000 i ovdje imamo Ints. 352 00:25:43,000 --> 00:25:46,000 Druga je stvar ako smo bili na korištenje posebnu vrijednost 353 00:25:46,000 --> 00:25:49,000 kao -1 označiti kraj niza 354 00:25:49,000 --> 00:25:54,000 onda mi nikada ne bi mogao pohraniti -1 u našim integer polja. 355 00:25:54,000 --> 00:25:56,000 Mi bi se zaglavi. 356 00:25:56,000 --> 00:26:00,000 Ispada da je jedini način da se trajanje 357 00:26:00,000 --> 00:26:03,000 od niza u C je zapravo sjetiti 358 00:26:03,000 --> 00:26:08,000 kada ga postaviti i zatim ga zaobići s nizom 359 00:26:08,000 --> 00:26:14,000 tako da, kad god imam funkciju koja će napraviti neki posao 360 00:26:14,000 --> 00:26:18,000 na niz brojeva ili pluta ili dubl ili što ste, 361 00:26:18,000 --> 00:26:22,000 Ja također treba dati funkciju niza dužinu, 362 00:26:22,000 --> 00:26:26,000 i to je upravo ono što smo učinili ovdje u funkciju pretraživanja. 363 00:26:26,000 --> 00:26:30,000 Ako pogledate, što smo učinili kada smo proći u našem polju ovdje, 364 00:26:30,000 --> 00:26:36,000 mi također proći u dužini, veličini. 365 00:26:36,000 --> 00:26:41,000 To se događa samo da smo pozvani ovu varijablu ovdje, 366 00:26:41,000 --> 00:26:43,000 ovaj parametar ili argument. 367 00:26:43,000 --> 00:26:46,000 To se zove funkcija je argument popis ili popis parametara 368 00:26:46,000 --> 00:26:51,000 a to se također nazivaju argumenti ili parametri. 369 00:26:51,000 --> 00:26:53,000 Ljudi koriste različite uvjete u različitim vremenima. 370 00:26:53,000 --> 00:26:55,000 Ja ponekad zamijenite ih osobno. 371 00:26:55,000 --> 00:27:00,000 To samo tako dogodi da je ova varijabla ovdje je nazvana slično 372 00:27:00,000 --> 00:27:03,000 da je ovo # define ovdje. 373 00:27:03,000 --> 00:27:06,000 No, oni nisu ista stvar. 374 00:27:06,000 --> 00:27:11,000 Kapitalizacija svejedno. 375 00:27:11,000 --> 00:27:14,000 >> Ako pogledate što se događa ovdje, izjavljujemo 376 00:27:14,000 --> 00:27:18,000 naša int polje, koje smo pozvani brojevi. 377 00:27:18,000 --> 00:27:23,000 Dali smo mu našu veličinu, što odgovara našem # define gore na vrhu. 378 00:27:23,000 --> 00:27:27,000 To će biti osam. 379 00:27:27,000 --> 00:27:35,000 I onda kad smo onda nazovite našu funkciju pretraživanja dolje, 380 00:27:35,000 --> 00:27:40,000 prolazimo u broju želimo tražiti, koje smo od vas zatraži, 381 00:27:40,000 --> 00:27:43,000 stečen od korisnika. 382 00:27:43,000 --> 00:27:46,000 Prolazimo u nizu, ovaj brojeve, 383 00:27:46,000 --> 00:27:51,000 i onda smo se također moraju proći u veličini polja, 384 00:27:51,000 --> 00:27:57,000 a zatim vrijednost veličine 8 dobiva pohranjen 385 00:27:57,000 --> 00:28:01,000 ili prošao ovaj integer varijable zvane veličini. 386 00:28:01,000 --> 00:28:08,000 Imamo veličinu niza. 387 00:28:08,000 --> 00:28:11,000 Sada, ako se vratimo na ono što smo govorili o ranije, 388 00:28:11,000 --> 00:28:14,000 Mislim Missy doveo do točke da je ono što mi je potrebno učiniti je dobiti duljinu niza 389 00:28:14,000 --> 00:28:20,000 i razdijelite po 2, te da će nam dati polovište. 390 00:28:20,000 --> 00:28:22,000 Idemo vidjeti. 391 00:28:22,000 --> 00:28:25,000 Mogu li netko napisati ovo i spremite ga u svemiru? 392 00:28:25,000 --> 00:28:27,000 Kako o Leila? 393 00:28:27,000 --> 00:28:31,000 Mogu li vam napisati to u? 394 00:28:31,000 --> 00:28:35,000 Napišite prvu liniju gdje ćete uzeti duljinu niza i dobiti polovište 395 00:28:35,000 --> 00:28:41,000 i pohraniti ga u novom varijablom. 396 00:28:41,000 --> 00:28:44,000 Ja ću vam dati par sekundi. Jeste li spremni? 397 00:28:44,000 --> 00:28:46,000 [Studentski nečujan] 398 00:28:46,000 --> 00:28:50,000 Naravno, mogao sam vam izračunati srednji 399 00:28:50,000 --> 00:28:55,000 od plastu sijena niz unutar funkciju pretraživanja 400 00:28:55,000 --> 00:29:03,000 koristeći duljinu plast polja, što je veličina varijabla? 401 00:29:03,000 --> 00:29:08,000 Ništa lukav ovdje. 402 00:29:08,000 --> 00:29:12,000 [Leila] Samo veličina / 2 i samo- 403 00:29:12,000 --> 00:29:17,000 I to spasiti, a pogodak gumb Spremi ovdje na vrhu, 404 00:29:17,000 --> 00:29:19,000 a mi ćemo ga podići. 405 00:29:19,000 --> 00:29:22,000 Savršeno. 406 00:29:22,000 --> 00:29:28,000 Tu smo ići. Strašan. 407 00:29:28,000 --> 00:29:30,000 >> Kao što je, ove će sastaviti? 408 00:29:30,000 --> 00:29:32,000 [Leila] Ne, ona mora biti viša. 409 00:29:32,000 --> 00:29:34,000 [Nate] Da, pa što trebamo učiniti? 410 00:29:34,000 --> 00:29:36,000 [Leila] Kao int srednjem ili nešto. 411 00:29:36,000 --> 00:29:41,000 Strašan. Da, hajdemo to učiniti, int srednji = veličina. 412 00:29:41,000 --> 00:29:44,000 Hoće li to sastaviti? 413 00:29:44,000 --> 00:29:47,000 Ajmo izbrisati ovaj komentar i dobiti ga zabit. 414 00:29:47,000 --> 00:29:50,000 Što neće sastaviti o tome? 415 00:29:50,000 --> 00:29:52,000 Mi ne radimo ništa s cjelobrojnom, 416 00:29:52,000 --> 00:29:55,000 tako da ćemo morati ispisati ili nešto slično. 417 00:29:55,000 --> 00:29:58,000 Da, točno. 418 00:29:58,000 --> 00:30:00,000 Mi ćemo dobiti neiskorišteni varijablu. 419 00:30:00,000 --> 00:30:02,000 Što još ne ide raditi o tome? 420 00:30:02,000 --> 00:30:06,000 Mislim da je rekao nešto, Sam. Zarezom. 421 00:30:06,000 --> 00:30:08,000 Da, ja sam nedostaje one zarezom. 422 00:30:08,000 --> 00:30:14,000 To će biti konstanta stvar tijekom cijeloga mandata. 423 00:30:14,000 --> 00:30:17,000 Konačna što ću učiniti je da ću staviti malo bijelog prostora na obje strane 424 00:30:17,000 --> 00:30:23,000 ovog operatora ovdje, budući da je obično kako ćemo to učiniti 425 00:30:23,000 --> 00:30:26,000 prema našem stilu vodič. 426 00:30:26,000 --> 00:30:29,000 Imamo tačku našeg polja. 427 00:30:29,000 --> 00:30:32,000 Sada, ako se sjetimo natrag na naš algoritam, 428 00:30:32,000 --> 00:30:37,000 što je drugi korak koji smo morali učiniti jednom imamo središnju točku? 429 00:30:37,000 --> 00:30:42,000 [Studentski] Ako je veća [nečujno]. 430 00:30:42,000 --> 00:30:48,000 Da, tako da moramo napraviti nekakvu usporedbu, a što smo uspoređujući ovdje? 431 00:30:48,000 --> 00:30:53,000 Si rekao ako je veći od. Što je to u toj rečenici se odnosi na? 432 00:30:53,000 --> 00:30:57,000 Broj koji dolazi gore, ako je to veća od sredine, a zatim otići do niza? 433 00:30:57,000 --> 00:31:05,000 Točno, tako da je broj koji nastaje kada se mi- 434 00:31:05,000 --> 00:31:10,000 Igla, tako da smo u odnosu na iglu, 435 00:31:10,000 --> 00:31:12,000 i što smo uspoređujući protiv iglom? 436 00:31:12,000 --> 00:31:15,000 Budući da je igla je ono što tražimo. 437 00:31:15,000 --> 00:31:18,000 Mi smo uspoređujući ga dobiti na sredinu. 438 00:31:18,000 --> 00:31:21,000 >> No, nema smisla da provjerite 439 00:31:21,000 --> 00:31:27,000 ako igla = srednji? 440 00:31:27,000 --> 00:31:32,000 Ima li to smisla? 441 00:31:32,000 --> 00:31:35,000 Zna li itko slažete? 442 00:31:35,000 --> 00:31:40,000 Idemo dati ga probati, ako (igla == srednji). 443 00:31:40,000 --> 00:31:42,000 [Studentski] printf li ga pronašao. 444 00:31:42,000 --> 00:31:51,000 [Nate] printf ("Našli smo ga \ n!"); 445 00:31:51,000 --> 00:31:56,000 Inače-Idem početi raditi nešto drugo ovdje. 446 00:31:56,000 --> 00:32:00,000 Ja ću početi stavljanjem aparatića oko ako izjavama svih vremena 447 00:32:00,000 --> 00:32:05,000 Upravo zato, ako dodamo više stvari, a zatim 448 00:32:05,000 --> 00:32:07,000 ne dobiti prevoditelje. 449 00:32:07,000 --> 00:32:09,000 Da, Sam. Imaš točku. 450 00:32:09,000 --> 00:32:12,000 Problem je u tome što predstavlja srednji položaj u polju, 451 00:32:12,000 --> 00:32:15,000 , ali možete ga dobiti za zastupanje vrijednost u tom položaju niza. 452 00:32:15,000 --> 00:32:17,000 To je velika stvar. 453 00:32:17,000 --> 00:32:19,000 Je li svatko čuti što Sam je rekao? 454 00:32:19,000 --> 00:32:22,000 On je rekao da je srednji kao što je 455 00:32:22,000 --> 00:32:28,000 predstavlja samo mjesto u polju, ali to nije stvarni element u polju. 456 00:32:28,000 --> 00:32:30,000 Ako mislite o kodu kao pisane upravo sada, 457 00:32:30,000 --> 00:32:35,000 ako ćemo gledati na tom polju ovdje dolje, koja ima osam elemenata u njemu, 458 00:32:35,000 --> 00:32:39,000 što je vrijednost srednji će biti u ovoj funkciji? 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 Ako gledamo po broju 4 - 462 00:32:51,000 --> 00:32:54,000 a mi samo možemo pokrenuti ovaj kod i staviti malo tužno lice ovdje 463 00:32:54,000 --> 00:32:58,000 jer nismo pronašli to-ako smo pokrenuti ovaj kod 464 00:32:58,000 --> 00:33:04,000 kao što je upravo sada, to upload, zgrada, neka mi se pomaknite prema dolje, 465 00:33:04,000 --> 00:33:09,000 a ako ćemo gledati po broju 4, 466 00:33:09,000 --> 00:33:18,000 smo ga našli, ali nismo dobili to printf da. 467 00:33:18,000 --> 00:33:23,000 Jedan od razloga je što nismo vratili istina, 468 00:33:23,000 --> 00:33:26,000 ali nije mi stvarno naći broj 4? 469 00:33:26,000 --> 00:33:28,000 A Sam je rekao ne. 470 00:33:28,000 --> 00:33:31,000 Što smo pronašli? 471 00:33:31,000 --> 00:33:35,000 Mi smo stvarno našli tačku, što ako ćemo gledati na polju ovdje dolje, 472 00:33:35,000 --> 00:33:38,000 to će biti element na indeksu 4 koje tražimo u, 473 00:33:38,000 --> 00:33:42,000 koji je 23. 474 00:33:42,000 --> 00:33:46,000 >> Kako smo zapravo dobili tog elementa u srednjem 475 00:33:46,000 --> 00:33:48,000 i ne samo srednji sama? 476 00:33:48,000 --> 00:33:52,000 [Studentski] Mi bi ući char ili nešto? 477 00:33:52,000 --> 00:33:55,000 Što bi to učiniti, samo iz znatiželje? 478 00:33:55,000 --> 00:33:57,000 Možete li pojasniti malo više? 479 00:33:57,000 --> 00:34:02,000 Morate transformirati poziciju u broju, 480 00:34:02,000 --> 00:34:05,000 pa moraš napraviti neke veze, mislim da je char, ali to ne može biti. 481 00:34:05,000 --> 00:34:07,000 Da, to je dobra stvar. 482 00:34:07,000 --> 00:34:12,000 Mi smo radili puno toga pretvaranja pozicijama u znakovi, ovi likovi, 483 00:34:12,000 --> 00:34:14,000 u prva dva seta problema. 484 00:34:14,000 --> 00:34:18,000 Ispada da je ovdje, to je gotovo slična 485 00:34:18,000 --> 00:34:24,000 pristupanje ith karakter unutar stringa, ako to ima smisla. 486 00:34:24,000 --> 00:34:30,000 Ovdje želimo pristupiti srednjeg elementa. 487 00:34:30,000 --> 00:34:34,000 Kako ćemo to učiniti? 488 00:34:34,000 --> 00:34:39,000 Kevin, imate li bilo kakve prijedloge kako bismo mogli to učiniti? 489 00:34:39,000 --> 00:34:44,000 Ti bi mogao napraviti plast, otvorena zagrada, sredinom, zatvorena zagrada. 490 00:34:44,000 --> 00:34:46,000 Možete li napisati da za nas? 491 00:34:46,000 --> 00:34:51,000 Spremite ga ovdje, a mi ćemo povući da se. 492 00:34:51,000 --> 00:34:56,000 Gledamo ovoj liniji 9, 493 00:34:56,000 --> 00:34:59,000 i mi smo shvativši da ne želimo uspoređivati ​​iglu na sredinu, 494 00:34:59,000 --> 00:35:03,000 ali umjesto toga, želimo usporediti iglu 495 00:35:03,000 --> 00:35:07,000 na element na poziciji sredine u našem sijenu niz. 496 00:35:07,000 --> 00:35:10,000 Cool. 497 00:35:10,000 --> 00:35:12,000 Tu smo ići. 498 00:35:12,000 --> 00:35:15,000 Da, to izgleda prilično dobro, ako (igla == plast [srednji]). 499 00:35:15,000 --> 00:35:18,000 Našli smo ga. 500 00:35:18,000 --> 00:35:22,000 Sada, ako smo pokrenuti kod-hrapavi back up malo- 501 00:35:22,000 --> 00:35:26,000 to sastavlja, ona radi, a sada, ako gledamo za 4, 502 00:35:26,000 --> 00:35:30,000 nismo ga pronašli, jer sada mi zapravo uzimajući broj 23. 503 00:35:30,000 --> 00:35:33,000 Odlazimo u vrijednosti 23, a to je ono što smo u odnosu na naše iglom. 504 00:35:33,000 --> 00:35:35,000 No, to je dobro. To je korak u pravom smjeru. 505 00:35:35,000 --> 00:35:37,000 >> To je ono što mi pokušavamo učiniti. 506 00:35:37,000 --> 00:35:40,000 Mi ne pokušavamo usporediti iglu protiv pozicijama u polju 507 00:35:40,000 --> 00:35:44,000 nego protiv aktualnih elemenata u polju. 508 00:35:44,000 --> 00:35:49,000 Ako gledamo natrag sada na sljedeći korak u našoj algoritma, 509 00:35:49,000 --> 00:35:51,000 što je sljedeći korak? 510 00:35:51,000 --> 00:35:57,000 Leila ga već spomenuo kratko. 511 00:35:57,000 --> 00:36:00,000 [Studentski] Provjerite da vidi da li je veći ili manji od a zatim odlučiti na koji način da se presele. 512 00:36:00,000 --> 00:36:03,000 [Nate] Da, pa kako bi mi to učiniti? 513 00:36:03,000 --> 00:36:07,000 Može li se staviti u neki-Ja ću spasiti ovu reviziju, 514 00:36:07,000 --> 00:36:13,000 i onda ako ste stavili u nekim linijama koje će učiniti da. 515 00:36:13,000 --> 00:36:15,000 Da, Charlotte. >> Imam pitanje. 516 00:36:15,000 --> 00:36:19,000 Ne treba to biti midpoint - 1 jer prva stvar je 517 00:36:19,000 --> 00:36:26,000 to je 0 indeksirane, pa ako smo stavili 4, to nije zapravo lik tražimo? 518 00:36:26,000 --> 00:36:30,000 Da, i drugih problema s tim je- 519 00:36:30,000 --> 00:36:35,000 to je veliki ulov, jer ono što se događa završiti događa eventualno 520 00:36:35,000 --> 00:36:42,000 ako ćemo držati se kreće, a mi nikada ne prilagodi na početku? 521 00:36:42,000 --> 00:36:46,000 Pretpostavljam da ono što smo mogli završiti događaj pokušava pristupiti 522 00:36:46,000 --> 00:36:49,000 element na 8. poziciji polja, 523 00:36:49,000 --> 00:36:53,000 koja je u ovom slučaju ne postoji. 524 00:36:53,000 --> 00:36:56,000 Mi ćemo želite učiniti nekakvu računovodstva za činjenicu 525 00:36:56,000 --> 00:36:59,000 da imamo neke nula indeksiranje. 526 00:36:59,000 --> 00:37:05,000 [Charlotte] Oprosti, mislio sam tačku - jedan u uglatim zagradama. 527 00:37:05,000 --> 00:37:08,000 Možemo to učiniti. 528 00:37:08,000 --> 00:37:10,000 Vratit ćemo se na tom pitanju u samo malo. 529 00:37:10,000 --> 00:37:13,000 Nakon što smo početi doći do stvarnog petlje, 530 00:37:13,000 --> 00:37:16,000 to je kad smo stvarno ćete vidjeti dolaze u igru. 531 00:37:16,000 --> 00:37:21,000 Za sada, možemo to učiniti, ali ti si potpuno u pravu. 532 00:37:21,000 --> 00:37:28,000 To nula indeksiranje će imati učinak da trebamo objasniti. 533 00:37:28,000 --> 00:37:30,000 Idemo vidjeti. 534 00:37:30,000 --> 00:37:34,000 >> Kako je veći od i manje od-? 535 00:37:34,000 --> 00:37:36,000 [Studentski] ja dobiti kako to učiniti veće od i manje od dijela. 536 00:37:36,000 --> 00:37:41,000 Upravo sam nije bio siguran što ispisati ako smatraju da je to manje od plastu sijena srednji ili veći od. 537 00:37:41,000 --> 00:37:43,000 Ovdje mogu spasiti ono što I've- 538 00:37:43,000 --> 00:37:47,000 [Nate] Da, ako spasiti ono što imaš, a mi ćemo ga podići. 539 00:37:47,000 --> 00:37:49,000 Tu smo ići. 540 00:37:49,000 --> 00:37:51,000 [Studentski] I ja sam stavio upitnike za ono što ne znam. 541 00:37:51,000 --> 00:37:54,000 [Nate] To izgleda sjajno. 542 00:37:54,000 --> 00:37:58,000 Ovdje imamo upitnike, jer mi još uvijek ne znamo 543 00:37:58,000 --> 00:38:06,000 što ćemo se sasvim ne još. 544 00:38:06,000 --> 00:38:12,000 Što bi mi želimo učiniti-ups, imamo neke aparatić sve funky na nas. 545 00:38:12,000 --> 00:38:15,000 Mi ćemo ispraviti ove aparatić. 546 00:38:15,000 --> 00:38:19,000 Tu smo ići. 547 00:38:19,000 --> 00:38:22,000 I tako ono što želimo učiniti, prema našem algoritma, 548 00:38:22,000 --> 00:38:27,000 ako ne nađemo iglu? 549 00:38:27,000 --> 00:38:32,000 Recimo u slučaju da igla je manje od onoga što gledamo. Kevin. 550 00:38:32,000 --> 00:38:34,000 Samo pogledajte na lijevoj polovici. 551 00:38:34,000 --> 00:38:40,000 Desno, pa ćemo staviti komentar na ovdje koji kaže "pogledate lijevoj polovici." 552 00:38:40,000 --> 00:38:46,000 A ako igla je veća od plastu sijena na sredinu, što želimo učiniti? 553 00:38:46,000 --> 00:38:48,000 [Studentski] Onda pogledate desnoj polovici. 554 00:38:48,000 --> 00:38:53,000 Pogledajte desnoj polovici, "pogled na desnoj polovici." 555 00:38:53,000 --> 00:38:58,000 Ne previše ružan. 556 00:38:58,000 --> 00:39:05,000 Ok, tako da u ovom trenutku, stvari su prilično dobri. 557 00:39:05,000 --> 00:39:13,000 Problem s kodom kao pismeni je ono? 558 00:39:13,000 --> 00:39:15,000 [Studentski] Vi nemate krajnje za poluvremena. 559 00:39:15,000 --> 00:39:18,000 Točno, mi nemamo krajnje za poluvremena. 560 00:39:18,000 --> 00:39:20,000 Također smo samo će proći kroz ovaj put. 561 00:39:20,000 --> 00:39:23,000 Mi samo idemo pogledati jedan srednji. 562 00:39:23,000 --> 00:39:27,000 Ili element je tamo, ili nije. 563 00:39:27,000 --> 00:39:34,000 Kako bi dovršili ovaj, mi ćemo morati napraviti nekakvu ponavljanja. 564 00:39:34,000 --> 00:39:39,000 Moramo zadržati ponavlja dok ne nađemo da 565 00:39:39,000 --> 00:39:43,000 ili element je tamo jer smo suziti i konačno ga našli, 566 00:39:43,000 --> 00:39:46,000 ili to nije tamo jer smo gledali kroz sve stvari 567 00:39:46,000 --> 00:39:52,000 u odgovarajućim polovice polja i otkrili da ništa nije tamo. 568 00:39:52,000 --> 00:39:56,000 >> Kad smo je dobio to ponavljanje događa, što ćemo koristiti? 569 00:39:56,000 --> 00:39:58,000 [Studentski] petlja. 570 00:39:58,000 --> 00:40:00,000 Neka vrsta petlje. Da. 571 00:40:00,000 --> 00:40:03,000 [Studentski] Možemo li učiniti-while petlja i to učiniti i onda dok 572 00:40:03,000 --> 00:40:10,000 igla nije jednako-Nisam siguran gdje sam bio idući s tim. 573 00:40:10,000 --> 00:40:18,000 No, nešto kao učiniti da dokle god se to ne dogodi jednaka vrijednost koju korisnik ulaz. 574 00:40:18,000 --> 00:40:21,000 Da, pa ćemo vidjeti, kako bi to moglo se pisati? 575 00:40:21,000 --> 00:40:23,000 Rekao si da idemo koristiti do-while petlja. 576 00:40:23,000 --> 00:40:26,000 Gdje se to počelo? 577 00:40:26,000 --> 00:40:33,000 [Studentski] Odmah nakon veličini / 2. 578 00:40:33,000 --> 00:40:42,000 [Nate] Ok, i što ćemo učiniti? 579 00:40:42,000 --> 00:40:44,000 Mi ćemo ispuniti vrijeme kasnije. 580 00:40:44,000 --> 00:40:46,000 Što ćemo učiniti? 581 00:40:46,000 --> 00:40:49,000 [Studentski] Ne želimo učiniti sve stvari imamo u ako dio? 582 00:40:49,000 --> 00:40:52,000 [Nate] Da li sve ove stvari, super. 583 00:40:52,000 --> 00:40:55,000 Kopiranje i lijepljenje. 584 00:40:55,000 --> 00:40:59,000 Oh, čovječe. 585 00:40:59,000 --> 00:41:03,000 Idemo vidjeti ako to radi, ako možemo kartica to više. 586 00:41:03,000 --> 00:41:08,000 Lijepa. 587 00:41:08,000 --> 00:41:16,000 Ok, a mi spasiti to tako vi ga imate. 588 00:41:16,000 --> 00:41:21,000 U redu, a mi ćemo to učiniti dok- 589 00:41:21,000 --> 00:41:25,000 što je bio uvjet dok ste bili poslije? 590 00:41:25,000 --> 00:41:31,000 [Studentski] Dok je igla nije jednaka, pa poput uskličnika. 591 00:41:31,000 --> 00:41:37,000 No, nisam siguran točno ono što je još. 592 00:41:37,000 --> 00:41:39,000 [Nate] Da, ovo je jedan od načina da to učinite. 593 00:41:39,000 --> 00:41:41,000 Sam, imate li komentar? 594 00:41:41,000 --> 00:41:43,000 [Sam] Sjetila sam se kada sam pogledao video, 595 00:41:43,000 --> 00:41:48,000 Ja uzeo screenshot jednog od poput kada smo napravili pseudocode za njega, 596 00:41:48,000 --> 00:41:52,000 tamo je bio neki odnos između max i min. 597 00:41:52,000 --> 00:41:58,000 Mislim da je to bilo nešto kao da max je sve manje od min. 598 00:41:58,000 --> 00:42:00,000 Uspio sam. 599 00:42:00,000 --> 00:42:04,000 [Sam] Ili ako želite max je ne manje od minute ili nešto slično, 600 00:42:04,000 --> 00:42:06,000 jer bi to značilo da ste tražili sve. 601 00:42:06,000 --> 00:42:13,000 >> Da, pa što to zvuči kao max i min su odnosi? 602 00:42:13,000 --> 00:42:16,000 [Sam] Vrijednosti koje-integers koje će promijeniti 603 00:42:16,000 --> 00:42:18,000 u odnosu na mjesto gdje smo stavili tačku. 604 00:42:18,000 --> 00:42:20,000 Točno. 605 00:42:20,000 --> 00:42:24,000 [Sam] U tom trenutku, to će [nečujno] izračunati max i min. 606 00:42:24,000 --> 00:42:29,000 Srednji je ovo max i min ideja. 607 00:42:29,000 --> 00:42:35,000 Ima li to smisla da ljudi? 608 00:42:35,000 --> 00:42:39,000 Ako smo bili za početak gleda kako ćemo to učiniti iteracija, 609 00:42:39,000 --> 00:42:43,000 ti si potpuno u pravu da želimo koristiti neku vrstu ne-while petlje. 610 00:42:43,000 --> 00:42:49,000 Ali mislim da, ako se prisjetimo što se događa na mjestu ovog niza 611 00:42:49,000 --> 00:42:53,000 i što se zapravo događa-Idem pisati ovamo- 612 00:42:53,000 --> 00:42:58,000 na vrlo prvoj iteraciji binarnog pretraživanja, imamo- 613 00:42:58,000 --> 00:43:05,000 Ja ću koristiti B i E da označi početak. 614 00:43:05,000 --> 00:43:10,000 I onda kraj našeg polja. 615 00:43:10,000 --> 00:43:14,000 Mi znamo da je početak na četiri prava nad ovdje, 616 00:43:14,000 --> 00:43:18,000 a znamo da je kraj na 108. 617 00:43:18,000 --> 00:43:23,000 Reci mi smo u potrazi za brojem 15. 618 00:43:23,000 --> 00:43:27,000 Prvi put smo to učinili, kao što smo vidjeli ranije, 619 00:43:27,000 --> 00:43:30,000 srednji ili će biti 16 ili 23 620 00:43:30,000 --> 00:43:34,000 ovisno o tome koliko smo izračunali stvari. 621 00:43:34,000 --> 00:43:37,000 Budući da ravnomjerno podijeli u sredini bi nam ovaj prostor 622 00:43:37,000 --> 00:43:42,000 između 16 i 23, ne može ravnomjerno podijeliti 623 00:43:42,000 --> 00:43:47,000 ili ga podijelite i dobiti na pravi srednji. 624 00:43:47,000 --> 00:43:49,000 Mi ćemo pogledati 16. 625 00:43:49,000 --> 00:43:55,000 Mi ćemo shvatiti: "Hej, 16> 15 da smo u potrazi za." 626 00:43:55,000 --> 00:43:59,000 Da biste onda pogledati na lijevoj polovici niz 627 00:43:59,000 --> 00:44:03,000 što ćemo završiti događaj je odbacivanje 628 00:44:03,000 --> 00:44:07,000 cijeli ovaj gornji dio 629 00:44:07,000 --> 00:44:16,000 i rekao: "Dobro, sada naša krajnja će biti ovdje." 630 00:44:16,000 --> 00:44:22,000 Sljedeća iteracija našeg petlje, mi smo sada u potrazi na ovom polju, 631 00:44:22,000 --> 00:44:25,000 učinkovito što odbacuju taj dio jer sada 632 00:44:25,000 --> 00:44:30,000 ako ćemo uzimati tačku biti razlika između početka i kraja, 633 00:44:30,000 --> 00:44:34,000 smo pronašli naš srednji biti 8, 634 00:44:34,000 --> 00:44:40,000 koje zatim možemo testirati osam vidjeti gdje je u odnosu na broj tražimo, 635 00:44:40,000 --> 00:44:44,000 15, pronašli da 15 je veća, 636 00:44:44,000 --> 00:44:49,000 tako da moramo da se presele na desnom dijelu popisa, 637 00:44:49,000 --> 00:44:51,000 koje znamo, jer smo ljudi, a možemo ga vidjeti. 638 00:44:51,000 --> 00:44:54,000 Mi znamo da je pravo dio će biti tamo gdje smo ga pronašli, 639 00:44:54,000 --> 00:45:01,000 ali računalo ne znaju da, tako što ćemo učiniti je ćemo zapravo 640 00:45:01,000 --> 00:45:04,000 su to ići gore, a sada je početak i kraj 641 00:45:04,000 --> 00:45:11,000 su isto mjesto, pa srednji postaje samo broj na popisu u tom trenutku, 642 00:45:11,000 --> 00:45:16,000 što je 15, a mi smo ga pronašli. 643 00:45:16,000 --> 00:45:21,000 Znači li to da prolio svjetlo na neke gdje je cijela ova max i min zapis ide, 644 00:45:21,000 --> 00:45:24,000 praćenje krajnje točke u polju kako bi se shvatiti 645 00:45:24,000 --> 00:45:35,000 kako suziti stvari dolje? 646 00:45:35,000 --> 00:45:42,000 >> Što će se dogoditi ako to nije jednaka 15 sada? 647 00:45:42,000 --> 00:45:52,000 Što ako smo bili u potrazi za 15 i, umjesto toga, taj broj je također 16? 648 00:45:52,000 --> 00:45:54,000 Mi bismo reći, "Oh, to je veća. 649 00:45:54,000 --> 00:45:57,000 Želimo se vratiti na lijevoj strani. " 650 00:45:57,000 --> 00:46:01,000 I mi bismo premjestiti našu e udesno, 651 00:46:01,000 --> 00:46:06,000 na kojem trenutku imamo krajnje točke koje će biti suprotstavljeni. 652 00:46:06,000 --> 00:46:09,000 To ne bi bilo u mogućnosti to traženje za bilo više elemenata 653 00:46:09,000 --> 00:46:13,000 jer sada imamo krajnje točke i naše polazište, 654 00:46:13,000 --> 00:46:16,000 naša max i naša min, sada su zrcaljeno. 655 00:46:16,000 --> 00:46:23,000 Mi tražimo kroz cijeli niz. Ne možemo naći ništa. 656 00:46:23,000 --> 00:46:27,000 To je točka u kojoj smo željeli reći: "Dobro, idemo da se zaustavi ovaj algoritam. 657 00:46:27,000 --> 00:46:34,000 Nismo našli ništa. Znamo da to nije ovdje. " 658 00:46:34,000 --> 00:46:36,000 Kako se to događa? 659 00:46:36,000 --> 00:46:40,000 [Studentski] Kako točno računalo prebacite kraj? 660 00:46:40,000 --> 00:46:45,000 Kako se na kraju završiti prije početka? 661 00:46:45,000 --> 00:46:48,000 Kraj završi prije početka 662 00:46:48,000 --> 00:46:54,000 zbog matematike da ćemo to učiniti svaki put kad smo to učinili. 663 00:46:54,000 --> 00:47:00,000 Način na koji smo zamijenili je ako pogledate prvi put smo to učinili zamjenu 664 00:47:00,000 --> 00:47:03,000 gdje smo početkom u 4 i kraj 665 00:47:03,000 --> 00:47:13,000 skroz na 108, a naš srednji, recimo, na 16 - 666 00:47:13,000 --> 00:47:20,000 Ja ću vratiti natrag u ovu 15-ako smo u potrazi za 15, 667 00:47:20,000 --> 00:47:25,000 znali smo da ono što smo učinili kada smo provjerili 16, a vidio da je to bio veći 668 00:47:25,000 --> 00:47:28,000 i htio odbaciti cijelu desnu dio popisa, 669 00:47:28,000 --> 00:47:36,000 Vidjeli smo da je ono što smo željeli učiniti je premjestiti ovu e upravo ovdje. 670 00:47:36,000 --> 00:47:44,000 Efektivno, e dobio preselio u jednom prije sredine. 671 00:47:44,000 --> 00:47:48,000 Isto tako, kada smo radili ovaj iteracija algoritma 672 00:47:48,000 --> 00:47:51,000 i srednji bio na 8, 673 00:47:51,000 --> 00:47:55,000 utvrdili smo da 8 <15, tako da smo željeli da se presele na b 674 00:47:55,000 --> 00:48:00,000 jedna pokraj sredine. 675 00:48:00,000 --> 00:48:07,000 Sada, na početku i na kraju su oba zajedno u ovom 15. 676 00:48:07,000 --> 00:48:10,000 >> Ako bismo se događa tražiti neke druge vrijednosti, a ne 15, 677 00:48:10,000 --> 00:48:14,000 ili ako je to 15 umjesto bio 16, 678 00:48:14,000 --> 00:48:20,000 mi bi našli da e želimo premjestiti jednu prije sredine. 679 00:48:20,000 --> 00:48:33,000 Sada e biti tamo zrcaljeno manje od b. 680 00:48:33,000 --> 00:48:39,000 Idemo prošetati kako smo zapravo završiti kodiranja ovaj algoritam. 681 00:48:39,000 --> 00:48:44,000 Znamo da želimo da se ovaj izračun srednjeg. 682 00:48:44,000 --> 00:48:48,000 Znamo također da želimo pratiti početak i kraj niza 683 00:48:48,000 --> 00:48:51,000 našeg trenutnog niza tako možemo shvatiti 684 00:48:51,000 --> 00:48:56,000 gdje je to lijeva polovica popisa je i gdje pravo polovica popisa je. 685 00:48:56,000 --> 00:49:03,000 Mi to bilo s početka i kraja, 686 00:49:03,000 --> 00:49:07,000 ili možemo ih nazvati min i max. 687 00:49:07,000 --> 00:49:10,000 Koristit ću početi i završiti ovaj put. 688 00:49:10,000 --> 00:49:15,000 Kada smo počeli, ako se osvrnemo na našem primjeru ovdje dolje, 689 00:49:15,000 --> 00:49:20,000 naš početak je bio postavljen na samom početku niza, kao prirodno. 690 00:49:20,000 --> 00:49:25,000 Što je indeks bio je ovo? Što naš trebala početi biti? 691 00:49:25,000 --> 00:49:27,000 Daniel. 692 00:49:27,000 --> 00:49:30,000 [Daniel] plastu sijena [0]. 693 00:49:30,000 --> 00:49:37,000 [Nate] Da, tako bismo mogli postaviti jednak plastu sijena [0]. 694 00:49:37,000 --> 00:49:40,000 Problem je, međutim, da to nam daje ne položaj prvog elementa. 695 00:49:40,000 --> 00:49:45,000 To nam daje indeks prvog elementa ili stvarne vrijednosti na toj prvoj poziciji. 696 00:49:45,000 --> 00:49:47,000 [Studentski] To će se pretvoriti u 0,20? 697 00:49:47,000 --> 00:49:52,000 [Nate] Što će to učiniti je, dobro, to neće učiniti bilo pretvaranje. 698 00:49:52,000 --> 00:49:56,000 Što će učiniti je da će pohraniti četiri u početak, 699 00:49:56,000 --> 00:49:59,000 i onda će biti teško napraviti usporedbe protiv početi 700 00:49:59,000 --> 00:50:03,000 jer begin će se drži vrijednost 4, 701 00:50:03,000 --> 00:50:06,000 što je početak našeg polja, 702 00:50:06,000 --> 00:50:08,000 ali želimo pratiti indekse u niz 703 00:50:08,000 --> 00:50:11,000 za razliku od vrijednosti. 704 00:50:11,000 --> 00:50:17,000 Mi zapravo ćete koristiti 0, kao što je to. 705 00:50:17,000 --> 00:50:20,000 Za kraj array-Charlotte donio ovo gore malo ranije. 706 00:50:20,000 --> 00:50:23,000 Ovo je mjesto gdje ćemo uzeti u obzir nultu indeksiranje. 707 00:50:23,000 --> 00:50:25,000 >> Charlotte, što je na kraju niza? 708 00:50:25,000 --> 00:50:28,000 Što je indeks na kraju? 709 00:50:28,000 --> 00:50:30,000 [Charlotte] Veličina - 1. 710 00:50:30,000 --> 00:50:32,000 Da, i koje veličine trebamo koristiti? 711 00:50:32,000 --> 00:50:35,000 Hoćemo li koristiti kapitala veličinu ili malim slovom veličinu? 712 00:50:35,000 --> 00:50:37,000 Kapital veličina. 713 00:50:37,000 --> 00:50:42,000 U ovom slučaju, da bismo mogli koristiti kapitala veličinu. 714 00:50:42,000 --> 00:50:45,000 Ako smo željeli ovu funkciju kako bi se prijenosni 715 00:50:45,000 --> 00:50:48,000 i koristiti ovu funkciju u drugim programima, 716 00:50:48,000 --> 00:50:50,000 zapravo možemo koristiti malim slovom veličinu. 717 00:50:50,000 --> 00:50:52,000 To je u redu previše. 718 00:50:52,000 --> 00:51:01,000 No, Charlotte je potpuno pravo da mi želimo imati veličinu - 1. 719 00:51:01,000 --> 00:51:03,000 U ovom trenutku- 720 00:51:03,000 --> 00:51:05,000 [Studentski] Kako to da možete koristiti veliko veličinu? 721 00:51:05,000 --> 00:51:07,000 Kako je moguće da bismo mogli koristiti veliko veličinu? 722 00:51:07,000 --> 00:51:13,000 Ispada da je to # definira su stvarno, 723 00:51:13,000 --> 00:51:19,000 ispod haube, tekst poput pronaći i zamijeniti, ako to ima smisla. 724 00:51:19,000 --> 00:51:24,000 Kada sastaviti svoj kôd, predobradba faza 725 00:51:24,000 --> 00:51:27,000 od prevodilac ide kroz datoteku, 726 00:51:27,000 --> 00:51:31,000 i to izgleda za svugdje, da ste pismeni kapitala veličinu, 727 00:51:31,000 --> 00:51:39,000 i zamjenjuje taj tekst doslovno sa 8, baš kao što je to. 728 00:51:39,000 --> 00:51:42,000 U tom smislu, to je vrlo različit od varijable. 729 00:51:42,000 --> 00:51:45,000 To ne zauzimaju prostor u memoriji. 730 00:51:45,000 --> 00:51:52,000 To je jednostavan tekst zamijeniti trik. 731 00:51:52,000 --> 00:51:57,000 U tom slučaju, mi ćemo koristiti veličinu. 732 00:51:57,000 --> 00:52:01,000 Odavde smo ne želite učiniti nekakvu ponavljanja, 733 00:52:01,000 --> 00:52:03,000 i mi smo na pravom putu s našim učiniti-while petlje. 734 00:52:03,000 --> 00:52:08,000 Mi želimo nešto učiniti dok se stanje ne držite više, 735 00:52:08,000 --> 00:52:12,000 i kao što smo ranije vidjeli, vidjeli smo da je taj uvjet 736 00:52:12,000 --> 00:52:19,000 doista bila da ne želimo kraj 737 00:52:19,000 --> 00:52:24,000 biti manja od početka. 738 00:52:24,000 --> 00:52:26,000 >> To je naš uvjet zaustavljanja. 739 00:52:26,000 --> 00:52:35,000 Ako se to dogodi, mi želimo da se zaustavi i proglasiti kao, "Hej, nismo našli ništa." 740 00:52:35,000 --> 00:52:43,000 Za izražavanje toga, mi ne želimo koristiti neku vrstu petlje. 741 00:52:43,000 --> 00:52:49,000 U ovom slučaju, to će biti do-while petlja, za petlje, petlja dok? 742 00:52:49,000 --> 00:52:51,000 Imamo učiniti-while petlja ovdje. 743 00:52:51,000 --> 00:52:53,000 Imate li dečki poput tog pristupa? 744 00:52:53,000 --> 00:52:59,000 Mislite li da bismo trebali pokušati drugačiji pristup? 745 00:52:59,000 --> 00:53:01,000 Kevin, bilo misli? 746 00:53:01,000 --> 00:53:06,000 Mogli smo imati petlju dok jer znamo maksimum 747 00:53:06,000 --> 00:53:11,000 biti veći od min na početku ionako. 748 00:53:11,000 --> 00:53:14,000 Da, tako da nema inicijalizacije koja se treba dogoditi. 749 00:53:14,000 --> 00:53:17,000 Ti to-dok petlje su veliki kada morate inicijalizirati nešto 750 00:53:17,000 --> 00:53:21,000 prije toga testiranje, dok je ovdje 751 00:53:21,000 --> 00:53:26,000 znamo da nećemo zadržati reinitializing kako početi i završiti 752 00:53:26,000 --> 00:53:28,000 svaki krug petlje. 753 00:53:28,000 --> 00:53:32,000 Znamo da želimo ih inicijalizirati, a zatim provjerite naše stanje. 754 00:53:32,000 --> 00:53:38,000 U tom slučaju, ja zapravo ću ići s jednostavnim while petlje. 755 00:53:38,000 --> 00:53:44,000 Ispada da su to-dok petlje koristi prilično rijetko. 756 00:53:44,000 --> 00:53:49,000 Puno mjesta čak i ne uče ne dok petlje. 757 00:53:49,000 --> 00:53:53,000 Oni su dobri za rukovanje korisničkog unosa, pa smo vidjeli puno od njih do sada. 758 00:53:53,000 --> 00:53:59,000 No, normalno i dok petlje puno češći. 759 00:53:59,000 --> 00:54:03,000 Ispada da je ovo stanje kako je napisano 760 00:54:03,000 --> 00:54:09,000 stvarno ne će nam mnogo dobra, i zašto je to? 761 00:54:09,000 --> 00:54:11,000 Žao mi je, ne znam vaše ime. 762 00:54:11,000 --> 00:54:13,000 Ja sam Jerry. >> Žao? 763 00:54:13,000 --> 00:54:15,000 To je B-O-R-U-I. 764 00:54:15,000 --> 00:54:18,000 Oh, u redu. 765 00:54:18,000 --> 00:54:23,000 Ja ne vidim na mojoj listi. 766 00:54:23,000 --> 00:54:26,000 Oh, to je zato-oh, to ima smisla. 767 00:54:26,000 --> 00:54:31,000 Imate li ideju zašto je to while petlja možda neće raditi onako kako smo zamislili, 768 00:54:31,000 --> 00:54:38,000 kako piše uz uvjet? 769 00:54:38,000 --> 00:54:43,000 [Jerry] Misliš kao da želite sve stvari nakon toga u-? 770 00:54:43,000 --> 00:54:46,000 Da, tako da je jedan. 771 00:54:46,000 --> 00:54:49,000 Možda ćemo morati staviti sve ove stvari u while petlje, koja je potpuno točno. 772 00:54:49,000 --> 00:54:55,000 Druga stvar koja je malo više problematično, međutim, da je ovaj uvjet ne rade. 773 00:54:55,000 --> 00:54:57,000 [Studentski] Morate ga okrenuti. 774 00:54:57,000 --> 00:55:04,000 Točno, tako da je ovo stanje nikada neće biti istina početku način na koji smo razgovarali o tome. 775 00:55:04,000 --> 00:55:08,000 Mi želimo nešto napraviti do kraja 00:55:13,000 ali mi želimo nešto napraviti, dok 777 00:55:13,000 --> 00:55:21,000 početi ≤ kraj. 778 00:55:21,000 --> 00:55:24,000 >> Tu je to obrat logike nema. 779 00:55:24,000 --> 00:55:27,000 Ja sam kriv što te pogreške svih vremena. 780 00:55:27,000 --> 00:55:31,000 [Studentski] Zašto to mora biti manji ili jednak? 781 00:55:31,000 --> 00:55:33,000 Zbog Sjećate li se slučaj da moramo 782 00:55:33,000 --> 00:55:36,000 tamo gdje je bio samo jedan element, i bili smo dolje, 783 00:55:36,000 --> 00:55:43,000 i bili smo u potrazi na samo 15 u našem polju? 784 00:55:43,000 --> 00:55:47,000 I naš početak i naš kraj su isti element. 785 00:55:47,000 --> 00:55:50,000 Želimo biti sigurni da ćemo obraditi taj slučaj. 786 00:55:50,000 --> 00:55:54,000 Ako nismo ravno manje nego, 787 00:55:54,000 --> 00:55:58,000 možemo samo biti u mogućnosti da biste dobili dolje na dva elementa niza. 788 00:55:58,000 --> 00:56:06,000 Nakon što smo se bacili na taj zadnji element, ako je to bila naša element, mi nikada ne bih ga pronaći. 789 00:56:06,000 --> 00:56:10,000 Sada ovdje, možemo učiniti baš kao što su govorili. 790 00:56:10,000 --> 00:56:15,000 Možemo početi plopping stvari desno u sredini našeg while petlje. 791 00:56:15,000 --> 00:56:20,000 Možemo pasti u našoj sredine. 792 00:56:20,000 --> 00:56:24,000 Možemo uzeti sve to, ako izjave, 793 00:56:24,000 --> 00:56:30,000 ih izvući iz tog ne-while petlje, 794 00:56:30,000 --> 00:56:34,000 buć ih u, 795 00:56:34,000 --> 00:56:39,000 čistiti stvari malo, 796 00:56:39,000 --> 00:56:48,000 a ja ću ići naprijed i spasiti ovu reviziju. 797 00:56:48,000 --> 00:56:53,000 I u ovom trenutku, mi smo uzimajući prilično blizak. 798 00:56:53,000 --> 00:56:55,000 Sam. 799 00:56:55,000 --> 00:56:58,000 Mislim također imati INT srednjem = veličinu - 1/2. 800 00:56:58,000 --> 00:57:01,000 Dobio je, veličina - 1/2. 801 00:57:01,000 --> 00:57:05,000 Ima li nešto drugo moramo promijeniti o toj liniji? 802 00:57:05,000 --> 00:57:10,000 To je bio dobar ulov. 803 00:57:10,000 --> 00:57:14,000 >> Što znači veličina učiniti? Jesmo li ikad mijenja veličinu? 804 00:57:14,000 --> 00:57:17,000 Da bi zadržali liniju ovako, moramo promijeniti veličinu. 805 00:57:17,000 --> 00:57:21,000 Moramo promijeniti veličinu svaki put idemo okolo za petlju. 806 00:57:21,000 --> 00:57:25,000 Ali sjećam se kad smo išli kroz naš primjer, samo malo ranije, 807 00:57:25,000 --> 00:57:30,000 i mi smo imali početkom u 4 808 00:57:30,000 --> 00:57:33,000 i na kraju sve način preko na 108? 809 00:57:33,000 --> 00:57:35,000 Kako smo izračunali srednji? 810 00:57:35,000 --> 00:57:38,000 Jesu li mi koristimo veličinu? 811 00:57:38,000 --> 00:57:40,000 Ili smo koristili početi i završiti umjesto toga? 812 00:57:40,000 --> 00:57:42,000 To je razlika između kraja i početka. 813 00:57:42,000 --> 00:57:50,000 Točno, a koliko točno trebam napisati da, Charlotte? 814 00:57:50,000 --> 00:57:52,000 Samo kraj - početak. 815 00:57:52,000 --> 00:57:55,000 Vi ne bi trebali učiniti - 1 816 00:57:55,000 --> 00:57:58,000 jer je - 1 je uključen u kraju i početi već. 817 00:57:58,000 --> 00:58:00,000 [Nate] Odlično, ti si potpuno u pravu. 818 00:58:00,000 --> 00:58:03,000 Mi ne moramo učiniti - 1 jer to - jedan je uključena 819 00:58:03,000 --> 00:58:08,000 i činili kad smo inicijalizirati varijablu kraj. 820 00:58:08,000 --> 00:58:11,000 >> Ima li išta drugo trebam učiniti sintaktički imati ova linija smisla? 821 00:58:11,000 --> 00:58:13,000 [Studentski] Plus početi. >> Plus početi? 822 00:58:13,000 --> 00:58:15,000 [Studentski] Na kraju. 823 00:58:15,000 --> 00:58:20,000 Jer to je samo izračunati pola duljine. 824 00:58:20,000 --> 00:58:26,000 Morate dodati početi. 825 00:58:26,000 --> 00:58:31,000 [Nate] Što bi to izračunati za nas? 826 00:58:31,000 --> 00:58:35,000 Ako mislimo o kraju ovog prvog iteracija petlje, 827 00:58:35,000 --> 00:58:40,000 Kraj će biti u poziciji indeksa sedam. 828 00:58:40,000 --> 00:58:43,000 Početak je u položaju 0.. 829 00:58:43,000 --> 00:58:47,000 Zapamtite, mi smo u potrazi za bilo 830 00:58:47,000 --> 00:58:52,000 položaj 3 ili 4 položaja. 831 00:58:52,000 --> 00:58:56,000 Ako gledamo na ovoj matematici, samo da bi ga malo više opipljiv, 832 00:58:56,000 --> 00:59:02,000 staviti neke brojeve ovdje, imamo 7, 0, 833 00:59:02,000 --> 00:59:10,000 tako 7-0, a zatim / 2 834 00:59:10,000 --> 00:59:19,000 je 3 u cjelobrojnog dijeljenja, to je. 835 00:59:19,000 --> 00:59:26,000 Tada trebamo onda dodati naš početi? 836 00:59:26,000 --> 00:59:28,000 Mi ne u ovom slučaju. 837 00:59:28,000 --> 00:59:31,000 Na prvoj iteraciji, to će biti u redu, jer početak je 0. 838 00:59:31,000 --> 00:59:36,000 No, kao što smo napredak, mi stvarno sve samo trebate 839 00:59:36,000 --> 00:59:42,000 kraj - početak / 2. 840 00:59:42,000 --> 00:59:46,000 Tu je jedan drugi trik ovdje, a to je naime jedan od prvenstva. 841 00:59:46,000 --> 00:59:49,000 [Studentski] Trebamo zagrade? 842 00:59:49,000 --> 00:59:53,000 [Nate] Točno, a to je zato što ako mi ne stavi ove zagrade, 843 00:59:53,000 --> 00:59:58,000 onda ova linija će se tumačiti umjesto 844 00:59:58,000 --> 01:00:09,000 kao (kraj) - (početak / 2), koji mi definitivno ne želite. 845 01:00:09,000 --> 01:00:11,000 Pazi za one prednost pravilima. 846 01:00:11,000 --> 01:00:15,000 [Studentski] Zašto nije to kraj + početi? 847 01:00:15,000 --> 01:00:17,000 Zašto nije to kraj + početi? 848 01:00:17,000 --> 01:00:19,000 [Studentski] Zašto je to ne da? 849 01:00:19,000 --> 01:00:24,000 Zašto bi to biti +? 850 01:00:24,000 --> 01:00:26,000 Mislim da si u pravu. 851 01:00:26,000 --> 01:00:28,000 [Studentski] Budući da je prosječna? 852 01:00:28,000 --> 01:00:31,000 [Nate] Kraj + početak, ti ​​si potpuno u pravu. 853 01:00:31,000 --> 01:00:34,000 Ajme, ja sam potpuno goofed. U pravu si. 854 01:00:34,000 --> 01:00:39,000 Ako smo radili na minus, mi bi željeli dodati početi natrag u. 855 01:00:39,000 --> 01:00:43,000 U tom slučaju, ti si vrlo pravo da želimo uzeti prosjek dva, 856 01:00:43,000 --> 01:00:45,000 tako da ne želite ih dodati, za razliku od njih oduzeti. 857 01:00:45,000 --> 01:00:49,000 [Studentski] To bi također raditi ako nisi kraj - početak / 2 + početi. 858 01:00:49,000 --> 01:00:55,000 To bi, ako radimo-ja vjerujem da je tako. 859 01:00:55,000 --> 01:01:00,000 >> Na primjer, ako smo tražili na početak, 860 01:01:00,000 --> 01:01:04,000 , a mi ga pomaknuo ovamo 861 01:01:04,000 --> 01:01:08,000 u 15. 862 01:01:08,000 --> 01:01:12,000 Sada početak je na poziciji dva. 863 01:01:12,000 --> 01:01:15,000 Kraj je u položaju 7. 864 01:01:15,000 --> 01:01:21,000 Ako smo ih oduzimati, dobili smo pet. 865 01:01:21,000 --> 01:01:24,000 Podijeljeno da dva, dobili smo dvije. 866 01:01:24,000 --> 01:01:27,000 I onda smo dodali dva natrag, 867 01:01:27,000 --> 01:01:30,000 i da nam dođe na 4. mjesto, 868 01:01:30,000 --> 01:01:33,000 što je ovdje, što je središnja točka. 869 01:01:33,000 --> 01:01:36,000 [Studentski] Ne moramo se brinuti o omotu? 870 01:01:36,000 --> 01:01:39,000 U kojem smislu ne trebamo brinuti za umatanje? 871 01:01:39,000 --> 01:01:43,000 Ako je zbroj ili razlika između 872 01:01:43,000 --> 01:01:45,000 ovisno o tome kako ćemo to učiniti nije paran broj. 873 01:01:45,000 --> 01:01:49,000 Tada se računalo dobiva zbunjeni li kada je 2,5; 874 01:01:49,000 --> 01:01:52,000 Ne možete premjestiti na lijevo ili desno kako bi se utvrdilo što je središnja točka? 875 01:01:52,000 --> 01:01:54,000 Uspio sam. 876 01:01:54,000 --> 01:01:56,000 Ispada da je s cjelobrojnog dijeljenja, 877 01:01:56,000 --> 01:01:59,000 mi nikada ne dobiti ove plutajuće brojeve točaka. 878 01:01:59,000 --> 01:02:01,000 Mi nikada dobiti decimale. 879 01:02:01,000 --> 01:02:04,000 Totalno odbačena. 880 01:02:04,000 --> 01:02:08,000 Ako imate računalo podijeliti dvije int varijable, 881 01:02:08,000 --> 01:02:11,000 i jedan je 7, a drugi je 2, 882 01:02:11,000 --> 01:02:13,000 nećete dobiti 3,5 kao rezultat. 883 01:02:13,000 --> 01:02:16,000 To će se tri. 884 01:02:16,000 --> 01:02:19,000 Ostatak će biti odbačena, tako da je učinkovito zaokruživanje- 885 01:02:19,000 --> 01:02:24,000 nije okrugla nego kat, ako ti dečki su upoznati s tim u matematici, 886 01:02:24,000 --> 01:02:27,000 gdje ste u potpunosti odbaciti decimale, 887 01:02:27,000 --> 01:02:31,000 i tako da u suštini ste ga krati do najbliže 888 01:02:31,000 --> 01:02:33,000 cijeli položaj, na najbliži cijeli broj. 889 01:02:33,000 --> 01:02:38,000 [Studentski] Ali onda je to problematično, jer ako imaju niz od 7 elemenata 890 01:02:38,000 --> 01:02:43,000 dakle, da automatski preuzima treći elemenat iz sredine umjesto 4.. 891 01:02:43,000 --> 01:02:46,000 Kako ćemo se nositi s tim? 892 01:02:46,000 --> 01:02:49,000 To je problematično jer ako smo imali niz od 7, 893 01:02:49,000 --> 01:02:54,000 to bi pokupiti 3. umjesto 4.. 894 01:02:54,000 --> 01:02:56,000 Možete li objasniti malo više? 895 01:02:56,000 --> 01:02:59,000 [Studentski] Jer ako imate sedam elemente onda 4. elementa 896 01:02:59,000 --> 01:03:04,000 će biti središnja točka, zar ne? 897 01:03:04,000 --> 01:03:07,000 Zapamtite svoj komentar o tome nula indeksirane, ipak. 898 01:03:07,000 --> 01:03:10,000 [Studentski] Da, tako je u položaju 3. To će biti središnja točka. 899 01:03:10,000 --> 01:03:12,000 Da. 900 01:03:12,000 --> 01:03:16,000 Oh, u redu. Vidim što hoćete reći. 901 01:03:16,000 --> 01:03:19,000 To je vrsta čudno, jer se koristili smo se cijeli ovaj pojam 902 01:03:19,000 --> 01:03:22,000 uzimajući osloboditi od decimale. 903 01:03:22,000 --> 01:03:26,000 To je velika stvar. 904 01:03:26,000 --> 01:03:30,000 Hajdemo završiti ovaj gore. 905 01:03:30,000 --> 01:03:32,000 Mi smo izračunati našu središnju točku. 906 01:03:32,000 --> 01:03:37,000 >> Mi smo testiranje kako bi vidjeli je li naš igla je jednaka srednjoj vrijednosti. 907 01:03:37,000 --> 01:03:41,000 Mi smo tiskanje da smo ga našli, ali stvarno, što želimo učiniti u ovoj situaciji? 908 01:03:41,000 --> 01:03:46,000 Mi smo ga našli, pa želimo da pozivatelj znati da smo ga pronašli. 909 01:03:46,000 --> 01:03:49,000 Imamo funkciju koja je boolean upisali funkcija. 910 01:03:49,000 --> 01:03:54,000 Način na koji smo signal pozivatelja našeg funkciju da smo spremni otići 911 01:03:54,000 --> 01:03:58,000 je možemo reći, "Hej, to je istina." 912 01:03:58,000 --> 01:04:00,000 Kako bismo to postigli, Kevina? 913 01:04:00,000 --> 01:04:02,000 Vi ste površno glavu. >> [Kevin] Dodajte povratak istina. 914 01:04:02,000 --> 01:04:06,000 [Nate] Točno, povratak istina. 915 01:04:06,000 --> 01:04:12,000 Sada, ako to nije jednaka, kako bi mi gledamo na lijevoj polovici? 916 01:04:12,000 --> 01:04:16,000 Bilo koji ideja? 917 01:04:16,000 --> 01:04:18,000 Stella, bilo koji ideja? 918 01:04:18,000 --> 01:04:21,000 Morate postaviti novu poziciju za kraj. 919 01:04:21,000 --> 01:04:23,000 Da. 920 01:04:23,000 --> 01:04:29,000 Dakle, moramo učiniti poziciju sredine - end. 921 01:04:29,000 --> 01:04:33,000 Izvrsno. 922 01:04:33,000 --> 01:04:36,000 Moramo postaviti novu poziciju za kraj 923 01:04:36,000 --> 01:04:38,000 gledati na lijevoj polovici. 924 01:04:38,000 --> 01:04:41,000 To je ono što smo govorili o prije gdje 925 01:04:41,000 --> 01:04:44,000 Ja zadržati ide natrag u ovom primjeru. 926 01:04:44,000 --> 01:04:50,000 Ja sam počinju ovdje, a onda sam na kraju skroz ovamo. 927 01:04:50,000 --> 01:04:53,000 >> Opet, ako smo u potrazi za 15, a naš je srednji je na 16, 928 01:04:53,000 --> 01:04:56,000 i shvaćamo, "Ups, 16 je veća. 929 01:04:56,000 --> 01:04:59,000 Želimo da se presele u lijevoj polovici. " 930 01:04:59,000 --> 01:05:02,000 Mi bi onda premjestiti kraj u 15, 931 01:05:02,000 --> 01:05:06,000 i činimo da po jedan uzimajući daleko od sredine 932 01:05:06,000 --> 01:05:09,000 i postavke koje kao naš novi kraja. 933 01:05:09,000 --> 01:05:12,000 Isto tako, ako želimo gledati na desnoj polovici, kako bi mi to učiniti? 934 01:05:12,000 --> 01:05:14,000 Imate li ideju? 935 01:05:14,000 --> 01:05:22,000 [Studentski] Vi samo postaviti početi srednjem + 1. 936 01:05:22,000 --> 01:05:24,000 [Nate] Veliki. 937 01:05:24,000 --> 01:05:29,000 I sada u slučaju da ne pronađete ništa, 938 01:05:29,000 --> 01:05:32,000 ne da se brine za nas? 939 01:05:32,000 --> 01:05:36,000 Daniel, koji ne bi brine za nas? 940 01:05:36,000 --> 01:05:38,000 [Daniel] Ne 941 01:05:38,000 --> 01:05:40,000 [Nate] Ako mi to učiniti kroz cijeli niz, a mi ne nalazimo ništa, 942 01:05:40,000 --> 01:05:42,000 gdje bi to biti sređeno, ili bi mi voditi brigu o tome? 943 01:05:42,000 --> 01:05:44,000 [Daniel] dok stanje. 944 01:05:44,000 --> 01:05:48,000 [Nate] Da, a uvjet, točno. 945 01:05:48,000 --> 01:05:51,000 To će se pobrinuti da ide kroz cijeli niz ako ne nađemo ništa. 946 01:05:51,000 --> 01:05:53,000 Ova petlja dok će završiti. 947 01:05:53,000 --> 01:05:56,000 Mi nikada neće imati naišao ovaj uvjet, 948 01:05:56,000 --> 01:06:03,000 i možemo se vratiti false. 949 01:06:03,000 --> 01:06:10,000 Mi također može ostaviti ova, ako ovdje ovako 950 01:06:10,000 --> 01:06:14,000 jer ako je to, ako tvrdnja istinita, 951 01:06:14,000 --> 01:06:16,000 i naša funkcija će vratiti, 952 01:06:16,000 --> 01:06:21,000 i tako ćemo biti pobaciti ova funkcija u ovom trenutku 953 01:06:21,000 --> 01:06:24,000 kad smo se vratili istina. 954 01:06:24,000 --> 01:06:28,000 No, ono što se događa s ovom strukturom ovdje? 955 01:06:28,000 --> 01:06:34,000 Hoće li to raditi u potpunosti, ili postoji neki logičan mana tamo? 956 01:06:34,000 --> 01:06:37,000 >> Tu je neki logičan mana postoji, s načinom na koji se to postaviti. 957 01:06:37,000 --> 01:06:40,000 Što bi moglo biti? 958 01:06:40,000 --> 01:06:43,000 [Studentski] Zašto vam je potrebno - i + 1s? 959 01:06:43,000 --> 01:06:47,000 To postavlja naš niz do biti naš novi lijeva polovica i desne polovine. 960 01:06:47,000 --> 01:06:51,000 [Studentski] Ali zašto ne bi li to učiniti bez - 1s + i 1s? 961 01:06:51,000 --> 01:06:53,000 [Nate] Mogli smo ga postaviti jednako na sredinu? 962 01:06:53,000 --> 01:07:04,000 Što bi moglo biti problematično u tome? 963 01:07:04,000 --> 01:07:08,000 [Studentski] Mislim da je neučinkovit, jer ste checking vrijednost koja je već provjeren. 964 01:07:08,000 --> 01:07:11,000 [Nate] Točno, tako Sam je potpuno u pravu. 965 01:07:11,000 --> 01:07:15,000 Ako ste postavili kraj i početak jednak srednjem 966 01:07:15,000 --> 01:07:18,000 umjesto - 1 i + 1 reflektivno, 967 01:07:18,000 --> 01:07:22,000 u nekom trenutku u budućnosti ćemo završiti provjeru polovište opet. 968 01:07:22,000 --> 01:07:26,000 [Studentski] Ja sam počeo pset, a onda sam imala nešto takvo 969 01:07:26,000 --> 01:07:30,000 gdje sam zaboravio + 1, i to je dobio zaglavi u beskonačnu petlju. 970 01:07:30,000 --> 01:07:34,000 Točno, jer ste u nekom trenutku Nikada nećeš dobiti počinju i završavaju 971 01:07:34,000 --> 01:07:39,000 zapravo preklapaju. 972 01:07:39,000 --> 01:07:41,000 Cool. 973 01:07:41,000 --> 01:07:44,000 Tu je još jedan logičan mana, a to je da je ovo definitivno treba biti 974 01:07:44,000 --> 01:07:48,000 else if. 975 01:07:48,000 --> 01:07:55,000 Zašto bi to moglo biti? 976 01:07:55,000 --> 01:07:59,000 >> Razlog je, ako to nije drugdje ako-ste vidjeli to, Kevin? 977 01:07:59,000 --> 01:08:02,000 [Kevin] Da, jer ste promjenu završne točke. 978 01:08:02,000 --> 01:08:05,000 [Nate] Točno. 979 01:08:05,000 --> 01:08:07,000 Mi smo promjenom krajnje točke, 980 01:08:07,000 --> 01:08:12,000 i ako je napisano ovako-hrapavi napraviti prostore između- 981 01:08:12,000 --> 01:08:14,000 provjerit će ovaj slučaj. 982 01:08:14,000 --> 01:08:18,000 Ovaj slučaj, ako to uspije, će se prekinuti iz funkcije. 983 01:08:18,000 --> 01:08:21,000 Tada će provjeriti ovu sljedeći slučaj, 984 01:08:21,000 --> 01:08:24,000 a ako se to uspije, ona će se prilagoditi krajnje točke, 985 01:08:24,000 --> 01:08:28,000 i onda će se nastaviti i provjerite ovaj slučaj. 986 01:08:28,000 --> 01:08:31,000 No, u ovom trenutku, ne želimo da se i dalje provjere. 987 01:08:31,000 --> 01:08:35,000 Srećom, nismo resetirati tačku ovdje, 988 01:08:35,000 --> 01:08:39,000 a znamo da je ovaj slučaj neće uspjeti. 989 01:08:39,000 --> 01:08:44,000 Ali mi svakako želimo staviti drugdje, ako se u tu 990 01:08:44,000 --> 01:08:48,000 iako je to možda u ovom slučaju 991 01:08:48,000 --> 01:08:52,000 jer nismo podešavanjem tačku, koja bi napraviti razliku? 992 01:08:52,000 --> 01:08:54,000 Ne, jer ti slučajevi su isključivi. 993 01:08:54,000 --> 01:08:58,000 Opet, moje loše. 994 01:08:58,000 --> 01:09:01,000 Mi ne, mislim, treba ovo drugo ako. 995 01:09:01,000 --> 01:09:05,000 Možemo mu dati i pokušati ga pokrenuti i vidjeti što se događa. 996 01:09:05,000 --> 01:09:08,000 Zgrada, došlo je do pogreške. 997 01:09:08,000 --> 01:09:12,000 To je vjerojatno zato što sam napustio to b-a i E-ih ovdje. 998 01:09:12,000 --> 01:09:14,000 Moram bilo više od onih gore na vrhu? 999 01:09:14,000 --> 01:09:16,000 To ne izgleda kao što je to. 1000 01:09:16,000 --> 01:09:20,000 Mi smanjivanje, graditi, 1001 01:09:20,000 --> 01:09:24,000 tamo se ide, tako da sada ako mi tražiti 15, 1002 01:09:24,000 --> 01:09:28,000 Da. 1003 01:09:28,000 --> 01:09:30,000 Dopustite mi povećali u. 1004 01:09:30,000 --> 01:09:33,000 15, da. Možemo ga ponovno pokrenuti. 1005 01:09:33,000 --> 01:09:36,000 Prenosi izvornog koda, izgradnju, trčanje. 1006 01:09:36,000 --> 01:09:41,000 Možemo tražiti nešto poput 13, 1007 01:09:41,000 --> 01:09:45,000 i mi ne bi ništa ispis, tako da to nije zaključilo da je za nas. 1008 01:09:45,000 --> 01:09:51,000 To je super, jer to nije u našem listu. 1009 01:09:51,000 --> 01:09:53,000 >> Mi smo sada izvan vremena. 1010 01:09:53,000 --> 01:09:55,000 To će biti to za ovaj tjedan. 1011 01:09:55,000 --> 01:10:00,000 Hvala za ulazak, i vidimo se kasnije. 1012 01:10:00,000 --> 01:10:02,000 >> [CS50.TV]