1 00:00:00,000 --> 00:00:11,100 2 00:00:11,100 --> 00:00:12,300 >> SPEAKER 1: Hej svima! 3 00:00:12,300 --> 00:00:13,890 Dobro došli natrag u odjeljak. 4 00:00:13,890 --> 00:00:17,480 Tako mi je vidjeti kako mnogi od vas oboje ovdje, i svatko tko gleda na internetu. 5 00:00:17,480 --> 00:00:18,760 6 00:00:18,760 --> 00:00:20,920 Dakle, kao što je to uobičajeno dobrodošlice leđa. 7 00:00:20,920 --> 00:00:24,360 Nadam se da ste imali lijep vikend, puno odmora, opuštanja. 8 00:00:24,360 --> 00:00:26,026 Bilo je lijepo jučer. 9 00:00:26,026 --> 00:00:27,525 Dakle, nadam se da ste uživali u prirodi. 10 00:00:27,525 --> 00:00:28,840 11 00:00:28,840 --> 00:00:30,610 >> Dakle, prvi par najave. 12 00:00:30,610 --> 00:00:31,920 13 00:00:31,920 --> 00:00:32,700 Ocjenjivanja. 14 00:00:32,700 --> 00:00:37,350 Dakle, većina od vas treba imati stečen e-mail od mene o svom Scratch Pset, 15 00:00:37,350 --> 00:00:39,920 kao i ocjenjivanje za Pset 1. 16 00:00:39,920 --> 00:00:41,000 17 00:00:41,000 --> 00:00:42,220 Dakle, samo par stvari. 18 00:00:42,220 --> 00:00:45,150 Budite sigurni da koristite check50 u style50. 19 00:00:45,150 --> 00:00:47,250 To su trebali biti resursi za vas dečki, 20 00:00:47,250 --> 00:00:50,660 kako bi bili sigurni da ste dobivanje onoliko bodova kao što možete 21 00:00:50,660 --> 00:00:52,390 bez bespotrebno ih izgubiti. 22 00:00:52,390 --> 00:00:54,407 Dakle, stvari poput stila su vrlo važni. 23 00:00:54,407 --> 00:00:55,740 Mi ćemo poletjeti za to. 24 00:00:55,740 --> 00:00:58,115 Neki od vas su već primijetio da iz svog Pset. 25 00:00:58,115 --> 00:00:58,920 26 00:00:58,920 --> 00:01:01,450 I check50 je samo stvarno jednostavan način kako bi bili sigurni 27 00:01:01,450 --> 00:01:05,050 da smo zapravo vraćaju ono treba se vratiti korisnika, 28 00:01:05,050 --> 00:01:06,690 i da sve radi ispravno. 29 00:01:06,690 --> 00:01:08,690 30 00:01:08,690 --> 00:01:12,040 >> Na drugoj bilješci, provjerite je li upload stvari na ispravan mapu. 31 00:01:12,040 --> 00:01:14,470 To čini moj život samo malo teže 32 00:01:14,470 --> 00:01:18,836 ako upload Pset 2 u Pset 1 jer kad sam preuzeti stvari, 33 00:01:18,836 --> 00:01:20,085 ne točno preuzeti. 34 00:01:20,085 --> 00:01:21,690 35 00:01:21,690 --> 00:01:24,560 I znam da je malo klimav u sustavu da se navikne, 36 00:01:24,560 --> 00:01:26,950 nego samo biti super oprezni, ako je samo za mene, 37 00:01:26,950 --> 00:01:30,080 tako da kada ste dobivanje e-pošte na sličan 02:00 i ja sam ocjenjivanja. 38 00:01:30,080 --> 00:01:33,710 Ako ne uzrokuju moram gledati sve oko za svoj Pset. 39 00:01:33,710 --> 00:01:34,440 Cool. 40 00:01:34,440 --> 00:01:37,270 >> Znam da je rano, ali ja totalno dobio skinut straže 41 00:01:37,270 --> 00:01:40,800 po eseju koji je zbog ovog petka toj moji profesori su baš kao i, oh yeah. 42 00:01:40,800 --> 00:01:42,550 Zapamtite, imate esej zbog petak. 43 00:01:42,550 --> 00:01:45,780 Dakle, znam da nitko ne voli razmišljati o midterms, 44 00:01:45,780 --> 00:01:50,620 ali vaš prvi kviz je 15. listopada, koji listopad počinje ovaj tjedan. 45 00:01:50,620 --> 00:01:53,290 Dakle, to bi moglo biti što prije nego što se očekivalo je sve. 46 00:01:53,290 --> 00:01:57,510 Znači da niste bacili nespremni kada Spominjem idući tjedan dio tog oh, 47 00:01:57,510 --> 00:02:00,560 Vaš kviz sljedeći tjedan, mislio sam Ja bih vam dati malo više 48 00:02:00,560 --> 00:02:01,500 od Upozoravamo vas sada. 49 00:02:01,500 --> 00:02:02,970 50 00:02:02,970 --> 00:02:04,660 >> Dakle, vaš problem postaviti, broj tri. 51 00:02:04,660 --> 00:02:07,070 Kako su ljudi pročitali spec iz znatiželje? 52 00:02:07,070 --> 00:02:08,560 53 00:02:08,560 --> 00:02:09,199 U redu. 54 00:02:09,199 --> 00:02:10,229 Imamo par. 55 00:02:10,229 --> 00:02:12,320 Vrsta dolje od prošlog tjedno, ali to je u redu. 56 00:02:12,320 --> 00:02:13,650 Znam da je to bilo lijepo van. 57 00:02:13,650 --> 00:02:15,120 58 00:02:15,120 --> 00:02:16,660 Tako break out. 59 00:02:16,660 --> 00:02:21,010 Definitivno nakon što bi učinio danas pročitao tvoj spec najmanje 60 00:02:21,010 --> 00:02:25,240 probati kao preuzimanje Raspodjela kod i trčanje 61 00:02:25,240 --> 00:02:27,430 kao prvi početni Ono što se od vas tražiti da. 62 00:02:27,430 --> 00:02:28,681 63 00:02:28,681 --> 00:02:32,590 Budući da smo se koriste distribucije koda i knjižnica 64 00:02:32,590 --> 00:02:36,790 da mi je samo što su using-- --It samo drugi put smo učinili ovo Pset, 65 00:02:36,790 --> 00:02:38,650 lude stvari mogu dogoditi sa svojim aparatom, 66 00:02:38,650 --> 00:02:41,370 a vi želite da kako je sada u odnosu na kasnije. 67 00:02:41,370 --> 00:02:45,570 >> Jer ako je to u četvrtak navečer, ili je to U srijedu navečer, a iz nekog razloga 68 00:02:45,570 --> 00:02:48,912 Vaš aparat jednostavno ne želite pokrenuti s knjižnicom 69 00:02:48,912 --> 00:02:50,620 ili distribucije koda, to znači 70 00:02:50,620 --> 00:02:52,309 ne mogu ni početi raditi kodiranje. 71 00:02:52,309 --> 00:02:54,100 Zato što se ne može provjeriti vidjeti ako to radi. 72 00:02:54,100 --> 00:02:55,975 Vaš neće biti u mogućnosti da li se izrađuje. 73 00:02:55,975 --> 00:03:00,500 Želite li voditi brigu o onima koji rano tjedna, kad još uvijek možete mi e-mail 74 00:03:00,500 --> 00:03:03,100 ili jedan od drugih TFS, i možemo dobiti one fiksne. 75 00:03:03,100 --> 00:03:05,410 Jer to su problemi koji će vas zaustaviti 76 00:03:05,410 --> 00:03:07,120 od izrade stvarni napredak. 77 00:03:07,120 --> 00:03:10,055 Nije kao jedan bug, da možete samo vrsta preskočiti. 78 00:03:10,055 --> 00:03:10,712 79 00:03:10,712 --> 00:03:13,420 Ako imate problema sa svojim uređaja ili distribucije koda, 80 00:03:13,420 --> 00:03:16,211 stvarno želite da se to uzeti brigu o prije nego kasnije. 81 00:03:16,211 --> 00:03:20,410 Dakle, čak i ako nećeš zapravo započeti kodiranja, preuzeti distribuciju 82 00:03:20,410 --> 00:03:24,040 koda, pročitajte spec, pobrinite sve što radi tamo. 83 00:03:24,040 --> 00:03:25,134 OK? 84 00:03:25,134 --> 00:03:27,675 Ako samo možete to učiniti, ja Obećavam svoje živote će biti lakše. 85 00:03:27,675 --> 00:03:28,800 86 00:03:28,800 --> 00:03:31,410 I tako ste vjerojatno idući to učiniti upravo sada pravo? 87 00:03:31,410 --> 00:03:32,100 U redu. 88 00:03:32,100 --> 00:03:33,950 Dakle, bilo kakva pitanja tamo? 89 00:03:33,950 --> 00:03:35,850 Bilo logističke stvari? 90 00:03:35,850 --> 00:03:36,910 Svatko je dobro? 91 00:03:36,910 --> 00:03:38,270 U redu. 92 00:03:38,270 --> 00:03:41,700 >> Odricanje za one ste u sobi i on-line. 93 00:03:41,700 --> 00:03:45,437 Idem se pokušava prebaciti između PowerPoint u aparatu 94 00:03:45,437 --> 00:03:47,270 jer mi se događa da se radi neke kodiranje 95 00:03:47,270 --> 00:03:53,630 Danas po popularnim potražnje za anonimne Prijedlog anketa sam poslao prošli tjedan. 96 00:03:53,630 --> 00:03:55,480 Dakle, mi ćemo biti događaj neki kodiranje. 97 00:03:55,480 --> 00:03:57,800 Dakle, ako ti dečki također žele na vatru svoje aparate, 98 00:03:57,800 --> 00:04:02,910 a trebali ste dobili e-mail od mene, s uzorkom datoteku. 99 00:04:02,910 --> 00:04:04,310 Slobodno to učiniti. 100 00:04:04,310 --> 00:04:07,340 >> Dakle, idemo razgovarati o GDB, što je ispravljanje pogrešaka. 101 00:04:07,340 --> 00:04:09,970 To će vam pomoći vrsta shvatiti gdje 102 00:04:09,970 --> 00:04:11,860 stvari idu krivo u svom kodu. 103 00:04:11,860 --> 00:04:15,370 To je zapravo samo način da korak putem koda, kao što se događa, 104 00:04:15,370 --> 00:04:19,100 i biti u mogućnosti ispisati varijable ili vidjeti što se zapravo događa 105 00:04:19,100 --> 00:04:22,980 pod napa stihova svoj program samo trčanje, to je kao rasjedanjem, 106 00:04:22,980 --> 00:04:25,030 a ti si kao, bez ideje što se upravo ovdje dogodilo. 107 00:04:25,030 --> 00:04:26,730 Ne znam što linija nije uspio u. 108 00:04:26,730 --> 00:04:29,040 Ne znam gdje je pošlo po zlu. 109 00:04:29,040 --> 00:04:31,280 Dakle, GDB će vam pomoći u tome. 110 00:04:31,280 --> 00:04:35,240 Isto tako, ako odlučite nastavljaju da, i uzeti 61, 111 00:04:35,240 --> 00:04:38,430 to će stvarno, stvarno biti vaš najbolji prijatelj, jer ja mogu vam reći 112 00:04:38,430 --> 00:04:40,840 jer sam prolazio kroz tu klasu. 113 00:04:40,840 --> 00:04:43,620 >> Idemo pogledati binarnom pretraživanje, što ako se vi sjećate 114 00:04:43,620 --> 00:04:47,540 veliki telefonski imenik primjer Spektakl iz razreda. 115 00:04:47,540 --> 00:04:50,620 Mi ćemo biti provedbi toga, i šetnju kroz to malo više, 116 00:04:50,620 --> 00:04:54,650 a onda idemo kroz četiri različite vrste, koje su mjehurić, 117 00:04:54,650 --> 00:04:56,285 Izbor, umetanje, i spoji. 118 00:04:56,285 --> 00:04:57,830 119 00:04:57,830 --> 00:04:58,330 Cool. 120 00:04:58,330 --> 00:05:00,390 Dakle, GDB kao što sam spomenuo, je ispravljanje pogrešaka. 121 00:05:00,390 --> 00:05:01,400 122 00:05:01,400 --> 00:05:09,370 A to su vrste veliko stvari, veliki funkcije ili naredbe 123 00:05:09,370 --> 00:05:13,240 koje koristite u GDB, i ja ću hodati što kroz demo to u sekundi. 124 00:05:13,240 --> 00:05:15,360 >> Dakle, to nije samo će ostati sažetak. 125 00:05:15,360 --> 00:05:18,000 Pokušat ću i učiniti ga kao beton što je moguće za vas dečki. 126 00:05:18,000 --> 00:05:19,870 Dakle, razbiti. 127 00:05:19,870 --> 00:05:22,200 To je bilo će biti stanka kao, neki broj, koji 128 00:05:22,200 --> 00:05:26,900 predstavlja liniju u svom programu, ili možete imenovati funkciju. 129 00:05:26,900 --> 00:05:30,150 Dakle, ako ti kažeš razbiti glavna, to će zaustaviti na glavni, 130 00:05:30,150 --> 00:05:32,400 i neka vas kroz tu funkciju. 131 00:05:32,400 --> 00:05:36,350 >> Isto tako, ako imate neki vanjski funkcioniraju kao swap ili Cube, 132 00:05:36,350 --> 00:05:38,450 da smo gledali na prošli tjedan. 133 00:05:38,450 --> 00:05:41,780 Ako kažeš razbiti jedan od onih, kad god je vaš program pogodi koja, 134 00:05:41,780 --> 00:05:44,290 to će vas čekati na reci to što učiniti. 135 00:05:44,290 --> 00:05:47,860 Prije nego što će izvršiti samo tako da vam zapravo mogao zakoračiti u funkciji 136 00:05:47,860 --> 00:05:49,020 i vidjeti što se događa. 137 00:05:49,020 --> 00:05:50,370 138 00:05:50,370 --> 00:05:53,515 Dakle, Zatim, samo preskače Sljedeći linija, ide preko funkcije. 139 00:05:53,515 --> 00:05:54,730 140 00:05:54,730 --> 00:05:55,560 Korak. 141 00:05:55,560 --> 00:05:56,810 To su sve mala apstraktna. 142 00:05:56,810 --> 00:06:00,530 Dakle, ja samo idem na trčanje kroz njih, ali ćete ih vidjeti u uporabi u sekundi. 143 00:06:00,530 --> 00:06:01,810 >> Zakoračite u funkciju. 144 00:06:01,810 --> 00:06:04,170 Dakle, kao što sam rekao, kao i kod swap, to bi 145 00:06:04,170 --> 00:06:07,110 omogućuju vam da se zapravo kao da ste kao što je fizički stupi unutra, 146 00:06:07,110 --> 00:06:10,990 možete igrati s tim varijablama, print što su oni, vidjeti što se događa. 147 00:06:10,990 --> 00:06:12,140 148 00:06:12,140 --> 00:06:14,830 Popis će doslovno samo ispisati iz okolnih koda. 149 00:06:14,830 --> 00:06:17,570 Dakle, ako ste vrsta zaboraviti gdje ste u svom programu, 150 00:06:17,570 --> 00:06:19,880 ili pitate što se događa oko njega, 151 00:06:19,880 --> 00:06:23,790 to će samo ispisati segment više vole pet ili šest linije oko njega. 152 00:06:23,790 --> 00:06:26,080 Dakle, možete dobiti orijentirani o tome gdje se nalazite. 153 00:06:26,080 --> 00:06:27,230 154 00:06:27,230 --> 00:06:28,650 >> Ispišite neku varijablu. 155 00:06:28,650 --> 00:06:34,590 Dakle, ako imate ključ kao U Cezara, koji ćemo gledati. 156 00:06:34,590 --> 00:06:36,220 Možete reći Print ključ u bilo kojem trenutku. 157 00:06:36,220 --> 00:06:40,070 To će vam reći ono što je vrijednost tako da, možda negdje na putu, 158 00:06:40,070 --> 00:06:42,070 što prepisani preko ključ. 159 00:06:42,070 --> 00:06:45,495 Vi zapravo možete reći da je zbog zapravo možete promatrati tu vrijednost. 160 00:06:45,495 --> 00:06:46,500 161 00:06:46,500 --> 00:06:48,780 >> U mještana, samo ispise iz svojih lokalnih varijabli. 162 00:06:48,780 --> 00:06:53,120 Dakle, bilo da ste unutar petlje, a vi samo želite vidjeti kao, oh. 163 00:06:53,120 --> 00:06:54,270 Što je moj ja? 164 00:06:54,270 --> 00:06:57,020 Što je ovo ključna vrijednost da sam inicijalizirati ovdje? 165 00:06:57,020 --> 00:06:58,537 Koja je poruka u ovom trenutku? 166 00:06:58,537 --> 00:07:00,370 To će samo ispisati sve od onih, pa vas 167 00:07:00,370 --> 00:07:04,330 ne moraju pojedinačno kažu, Ispis I. Ispis poruka. 168 00:07:04,330 --> 00:07:04,970 Ispis ključ. 169 00:07:04,970 --> 00:07:06,190 170 00:07:06,190 --> 00:07:07,700 A onda prikaz. 171 00:07:07,700 --> 00:07:10,370 Što da radi kao ti korak kroz program, 172 00:07:10,370 --> 00:07:13,980 to samo ćete biti sigurni da je to prikazujući neke određene varijable 173 00:07:13,980 --> 00:07:14,780 u svakom trenutku. 174 00:07:14,780 --> 00:07:17,160 Tako da also-- --it je vrsta prečaca gdje 175 00:07:17,160 --> 00:07:19,530 ne morate držati ide kao, oh. 176 00:07:19,530 --> 00:07:23,150 Ispis Ključ ili Print I. To samo automatski će to učiniti za vas. 177 00:07:23,150 --> 00:07:25,959 >> Dakle, s tim, idemo da vidim kako to ide. 178 00:07:25,959 --> 00:07:28,000 Ja ću pokušati switch do mog uređaja. 179 00:07:28,000 --> 00:07:30,200 180 00:07:30,200 --> 00:07:31,271 Pogledajte ako ja mogu to učiniti. 181 00:07:31,271 --> 00:07:31,770 Sve. 182 00:07:31,770 --> 00:07:40,970 183 00:07:40,970 --> 00:07:42,370 Mi samo će to ogledalo. 184 00:07:42,370 --> 00:07:44,530 Nema ništa ludo na moj laptop ionako. 185 00:07:44,530 --> 00:07:49,600 186 00:07:49,600 --> 00:07:50,100 U redu. 187 00:07:50,100 --> 00:07:57,030 188 00:07:57,030 --> 00:08:01,054 To treba biti ovaj jedan. 189 00:08:01,054 --> 00:08:01,795 To je tako malen. 190 00:08:01,795 --> 00:08:03,730 191 00:08:03,730 --> 00:08:05,120 Da vidimo možemo li to učiniti. 192 00:08:05,120 --> 00:08:09,970 193 00:08:09,970 --> 00:08:10,940 >> U redu. 194 00:08:10,940 --> 00:08:15,305 Alice je očito bori ovdje samo malo, 195 00:08:15,305 --> 00:08:17,995 ali ćemo ga dobiti u Momento. 196 00:08:17,995 --> 00:08:20,810 197 00:08:20,810 --> 00:08:22,020 U redu. 198 00:08:22,020 --> 00:08:25,900 Mi samo će povećati ovaj. 199 00:08:25,900 --> 00:08:28,770 200 00:08:28,770 --> 00:08:29,380 U redu. 201 00:08:29,380 --> 00:08:31,679 Može li svatko vrsta vidjeli? 202 00:08:31,679 --> 00:08:32,470 Možda malo? 203 00:08:32,470 --> 00:08:33,594 Znam da je malo mali. 204 00:08:33,594 --> 00:08:34,570 205 00:08:34,570 --> 00:08:37,530 Ne mogu sasvim shvatiti kako bi se ova veća. 206 00:08:37,530 --> 00:08:38,350 Ako itko zna. 207 00:08:38,350 --> 00:08:40,309 Se bilo tko znati kako to učiniti veći? 208 00:08:40,309 --> 00:08:40,932 U redu. 209 00:08:40,932 --> 00:08:42,140 Idemo roll s njom. 210 00:08:42,140 --> 00:08:45,801 Nije važno bilo kako, jer to je samo to je kod koji ti dečki trebali 211 00:08:45,801 --> 00:08:46,300 ima. 212 00:08:46,300 --> 00:08:48,310 >> Što je važnije je terminal ovdje. 213 00:08:48,310 --> 00:08:52,840 214 00:08:52,840 --> 00:08:58,690 I mi imamo ovdje Zašto je to tako mali? 215 00:08:58,690 --> 00:09:02,325 216 00:09:02,325 --> 00:09:02,825 Postavke. 217 00:09:02,825 --> 00:09:07,920 218 00:09:07,920 --> 00:09:08,420 Oh. 219 00:09:08,420 --> 00:09:09,500 Istina Ike. 220 00:09:09,500 --> 00:09:10,880 Kako je ovo? 221 00:09:10,880 --> 00:09:11,770 Od tamo. 222 00:09:11,770 --> 00:09:19,370 223 00:09:19,370 --> 00:09:21,810 Je li to bolje za sve? 224 00:09:21,810 --> 00:09:22,525 U redu ,. 225 00:09:22,525 --> 00:09:23,025 Cool. 226 00:09:23,025 --> 00:09:25,830 227 00:09:25,830 --> 00:09:28,220 >> Znate, kada ste u CS razred tehničkih poteškoća 228 00:09:28,220 --> 00:09:32,971 su vrsta dio the-- Dakle, neka je jasno to. 229 00:09:32,971 --> 00:09:33,470 U redu. 230 00:09:33,470 --> 00:09:38,060 Dakle, upravo ovdje u odjeljku, koje smo imali ovdje. 231 00:09:38,060 --> 00:09:40,830 Cezar je izvršna datoteka. 232 00:09:40,830 --> 00:09:41,800 Tako sam to napravio. 233 00:09:41,800 --> 00:09:46,370 Dakle, jedna stvar realizirati s GDB je da se to radi samo na izvršne datoteke. 234 00:09:46,370 --> 00:09:48,040 Dakle, ne možete ga pokrenuti na dotsy. 235 00:09:48,040 --> 00:09:50,532 Morate zapravo čine sigurni da je vaš broj prikuplja, 236 00:09:50,532 --> 00:09:51,865 i da ona zapravo može pokrenuti. 237 00:09:51,865 --> 00:09:52,970 238 00:09:52,970 --> 00:09:56,186 >> Dakle, pobrinite se da, ako se to ne dogodi sastaviti, preuzmite ga sastaviti, 239 00:09:56,186 --> 00:09:57,810 tako da možete vrsta trčanje kroz njega. 240 00:09:57,810 --> 00:10:04,590 Dakle, za početak GDB, sve što trebate učiniti, Gloria tipa GDB, a onda samo 241 00:10:04,590 --> 00:10:06,250 datoteku koju želite. 242 00:10:06,250 --> 00:10:08,240 Uvijek sam se krivo Cezara. 243 00:10:08,240 --> 00:10:11,730 No, želite biti sigurni budući da je izvršna, 244 00:10:11,730 --> 00:10:14,210 TI dot bljeskalice, tako da znači ideš 245 00:10:14,210 --> 00:10:19,240 pokrenuti CSI idete izvršiti ova datoteka ili s ispravljanje pogrešaka. 246 00:10:19,240 --> 00:10:19,910 U redu. 247 00:10:19,910 --> 00:10:22,885 Dakle, što učiniti da biste dobili ta vrsta besmislice. 248 00:10:22,885 --> 00:10:24,250 249 00:10:24,250 --> 00:10:25,750 To je samo sve stvari o ispravljanje pogrešaka. 250 00:10:25,750 --> 00:10:28,200 Vi stvarno ne morate brinuti o tome sada. 251 00:10:28,200 --> 00:10:31,460 I kao što vidite, imamo ovo otvoreni navodnik, BDP, bliski navodnik, 252 00:10:31,460 --> 00:10:34,690 i samo vrsta izgleda kao naš naredbenog retka, zar ne? 253 00:10:34,690 --> 00:10:37,010 >> Dakle, ono što želimo do-- -SO, Prva stvar 254 00:10:37,010 --> 00:10:39,570 je želimo izabrati mjesto da ga razbiti. 255 00:10:39,570 --> 00:10:42,332 Dakle, postoji jedan bug U ovom programu Caesar 256 00:10:42,332 --> 00:10:44,290 da sam uvesti, da ćemo saznati. 257 00:10:44,290 --> 00:10:45,330 258 00:10:45,330 --> 00:10:56,350 To što se radi je potrebno ulaz Barfoo u svim kape, a iz nekog razloga 259 00:10:56,350 --> 00:11:01,950 to ne mijenja A. To samo ostavlja ona sama, sve ostalo je točno, 260 00:11:01,950 --> 00:11:03,980 ali drugo pismo Ostaje nepromijenjena. 261 00:11:03,980 --> 00:11:07,120 Dakle, idemo pokušati shvatiti zašto je to tako. 262 00:11:07,120 --> 00:11:10,440 Dakle, prva stvar koju obično želite učiniti kada počnete na GDB 263 00:11:10,440 --> 00:11:12,010 je shvatiti gdje ga razbiti. 264 00:11:12,010 --> 00:11:14,956 >> Dakle, Cezar je prilično kratkog programa. 265 00:11:14,956 --> 00:11:16,330 Imamo samo jednu funkciju, zar ne? 266 00:11:16,330 --> 00:11:18,520 Ono što je naša funkcija u cara? 267 00:11:18,520 --> 00:11:19,590 268 00:11:19,590 --> 00:11:24,350 Postoji samo jedna funkcija, Glavni zar ne? 269 00:11:24,350 --> 00:11:26,490 Glavna je funkcija za sve svoje programe. 270 00:11:26,490 --> 00:11:29,230 Ako nisu imali Main, mogao bih biti malo zabrinuti upravo sada, 271 00:11:29,230 --> 00:11:31,000 ali nadam se da ste svi imali Main tamo. 272 00:11:31,000 --> 00:11:34,150 Dakle, ono što možemo učiniti je da možemo Samo slomiti Main, baš kao što je to. 273 00:11:34,150 --> 00:11:35,190 Dakle, on kaže, u redu. 274 00:11:35,190 --> 00:11:37,430 Mi smo postavili naše Prijelomna točka jedan tamo. 275 00:11:37,430 --> 00:11:42,870 >> Dakle, sada je stvar za zapamtiti je Cezar traje jedan naredbeni redak argument pravo 276 00:11:42,870 --> 00:11:45,150 a nismo učinili da nigdje još. 277 00:11:45,150 --> 00:11:47,560 Dakle, ono što vam je činiti kada što zapravo ići na trčanje 278 00:11:47,560 --> 00:11:51,540 Program, bilo koji program koji ste trčanje u GDB da treba naredbenog retka 279 00:11:51,540 --> 00:11:55,010 argumenti, ti ćeš ulaz kada se prvi put početi prikazivati. 280 00:11:55,010 --> 00:11:59,280 Dakle, u ovom slučaju, mi radimo Trčanje s ključem od tri. 281 00:11:59,280 --> 00:12:00,770 282 00:12:00,770 --> 00:12:02,040 I to će zapravo početi. 283 00:12:02,040 --> 00:12:08,480 >> Dakle, ako vidite ovdje, imamo Ako RC nije jednako 2. 284 00:12:08,480 --> 00:12:12,210 Dakle, ako vi svi imaju da je datoteka koja sam poslao gore 285 00:12:12,210 --> 00:12:15,100 vidjet ćete da je to poput Prva linija naša glavna zadaća, zar ne? 286 00:12:15,100 --> 00:12:17,890 To je provjera da li imamo točan broj argumenata. 287 00:12:17,890 --> 00:12:20,620 Dakle, ako pitate Ako RC točna, 288 00:12:20,620 --> 00:12:23,250 možete učiniti nešto jednostavno poput Print RH. 289 00:12:23,250 --> 00:12:24,380 290 00:12:24,380 --> 00:12:28,640 RC je dva, koji je ono što smo očekivali, zar ne? 291 00:12:28,640 --> 00:12:32,010 >> Dakle, možemo ići Dalje, i dalje kroz. 292 00:12:32,010 --> 00:12:33,200 Dakle, imamo neku tipku tamo. 293 00:12:33,200 --> 00:12:34,260 294 00:12:34,260 --> 00:12:37,090 I možemo ispisati naš ključ kako bi bili sigurni da je to točno. 295 00:12:37,090 --> 00:12:38,380 296 00:12:38,380 --> 00:12:39,500 Zanimljivi. 297 00:12:39,500 --> 00:12:41,210 Nije baš ono što smo očekivali. 298 00:12:41,210 --> 00:12:44,810 Dakle, jedna stvar realizirati s GDB također je 299 00:12:44,810 --> 00:12:49,000 da to nije sve što je zapravo pogodio Zatim, da je linija koja ste upravo vidjeli 300 00:12:49,000 --> 00:12:50,720 zapravo izvršava. 301 00:12:50,720 --> 00:12:53,870 Dakle, u ovom slučaju Ključ nije dodijeljena još. 302 00:12:53,870 --> 00:12:57,050 Dakle, ključ je neka smeća vrijednost da vidite na dnu tamo. 303 00:12:57,050 --> 00:13:03,680 Negativan 120-- $ --It je milijardu i nešto čudne stvari zar ne? 304 00:13:03,680 --> 00:13:05,340 Nije ključ koji smo očekivali. 305 00:13:05,340 --> 00:13:10,720 Ali ako smo hit Dalje, a onda smo probati i ispis ključ, to je tri. 306 00:13:10,720 --> 00:13:11,710 >> Svi su to vidjeli? 307 00:13:11,710 --> 00:13:13,780 Dakle, ako se nešto da ste kao, pričekajte. 308 00:13:13,780 --> 00:13:15,540 To je posve u redu, a ja ne znam 309 00:13:15,540 --> 00:13:20,150 kako će se to dogoditi, jer sve što želim učiniti se dodijeliti broj, promjenjiva, 310 00:13:20,150 --> 00:13:22,900 pokušajte udaranje Dalje, pokušajte ispis opet, i vidjeti ako to radi. 311 00:13:22,900 --> 00:13:27,830 Zato što će samo izvršiti i zapravo dodijeliti nešto poslije tebe 312 00:13:27,830 --> 00:13:29,340 hit Next. 313 00:13:29,340 --> 00:13:30,336 Smisla svima? 314 00:13:30,336 --> 00:13:30,836 Aha? 315 00:13:30,836 --> 00:13:33,220 >> ZVUČNIK 2: Kada slučajna brojeva, što to znači? 316 00:13:33,220 --> 00:13:34,790 >> SPEAKER 1: To je samo slučajna. 317 00:13:34,790 --> 00:13:35,710 To je samo smeće. 318 00:13:35,710 --> 00:13:38,320 To je samo nešto što je vaš Računalo će se nasumce. 319 00:13:38,320 --> 00:13:39,721 320 00:13:39,721 --> 00:13:40,220 Cool. 321 00:13:40,220 --> 00:13:45,760 Dakle, sada možemo kretati kroz, i tako Sada imamo običan tekst GetString. 322 00:13:45,760 --> 00:13:48,600 Dakle, dopustite mi da uvedu ono će se dogoditi kad smo hit Next ovdje. 323 00:13:48,600 --> 00:13:51,320 Naš GDB vrsta nestaje, zar ne? 324 00:13:51,320 --> 00:13:55,720 To je zato što GetString sada izvršenja, zar ne? 325 00:13:55,720 --> 00:14:01,460 Dakle, kad smo vidjeli običan tekst jednako GetString, otvoreni navodnik i navodnik, 326 00:14:01,460 --> 00:14:04,380 a mi hit Dalje, koja ima zapravo izvršava sada. 327 00:14:04,380 --> 00:14:06,580 Dakle, to je čekao nam ulazni nešto. 328 00:14:06,580 --> 00:14:13,560 >> Dakle, idemo na ulazu našu hranu koja je ono što se nije kao što sam vam rekao 329 00:14:13,560 --> 00:14:18,020 i to samo govori da je završio izvršenja, koji zatvorena 330 00:14:18,020 --> 00:14:19,980 Nosač znači da je izlaska iz tog kruga. 331 00:14:19,980 --> 00:14:21,170 332 00:14:21,170 --> 00:14:25,420 Dakle, možemo pogoditi Dalje, a sada, kao što sam sigurni da ste svi upoznati s Cezara, 333 00:14:25,420 --> 00:14:27,260 to je ono što je ova linija će učiniti. 334 00:14:27,260 --> 00:14:32,030 To je za Int sam jednak 0, N jednak Strlen, običan tekst, a zatim 335 00:14:32,030 --> 00:14:33,960 I je manji od nje, ja, plus, plus. 336 00:14:33,960 --> 00:14:35,210 Što je to petlje učiniti? 337 00:14:35,210 --> 00:14:37,900 338 00:14:37,900 --> 00:14:39,160 Otvorite poruku. 339 00:14:39,160 --> 00:14:39,770 Cool. 340 00:14:39,770 --> 00:14:41,330 Dakle, počnimo raditi to. 341 00:14:41,330 --> 00:14:47,210 >> Dakle, trebali ovo stanje podudaraju, za naš prvi? 342 00:14:47,210 --> 00:14:52,250 Ako je B, to je običan tekst I. smo mogu dobiti informacije o našim mještanima. 343 00:14:52,250 --> 00:14:53,610 344 00:14:53,610 --> 00:14:57,970 Dakle, sam je nula, a ako šest, koji je očekujemo, a naš ključ je tri. 345 00:14:57,970 --> 00:14:59,227 Sve to ima smisla, zar ne? 346 00:14:59,227 --> 00:15:01,310 Ti brojevi su svi upravo ono što bi trebao biti. 347 00:15:01,310 --> 00:15:02,590 348 00:15:02,590 --> 00:15:03,870 Dakle, pjevušiti? 349 00:15:03,870 --> 00:15:05,620 SPEAKER 3: Imam slučajnih brojeva za mine. 350 00:15:05,620 --> 00:15:09,156 351 00:15:09,156 --> 00:15:12,030 SPEAKER 1: Pa, mi --we može check-- Možete razgovarati o tome da se u sekundu. 352 00:15:12,030 --> 00:15:14,110 353 00:15:14,110 --> 00:15:15,750 Ali ti bi trebao biti uzimajući ovaj. 354 00:15:15,750 --> 00:15:17,700 355 00:15:17,700 --> 00:15:20,130 Dakle, ako imamo kapital B za naš prvi, 356 00:15:20,130 --> 00:15:22,080 ovo stanje treba ga uhvatiti, zar ne? 357 00:15:22,080 --> 00:15:27,120 Dakle, ako smo hit Dalje, vidimo da je to Ako zapravo izvršava. 358 00:15:27,120 --> 00:15:29,220 Jer ako ste nakon zajedno u kodu, 359 00:15:29,220 --> 00:15:33,460 ta crta ovdje, gdje sam običan tekst zamjenjuje s ovim aritmetika, 360 00:15:33,460 --> 00:15:35,720 samo izvršava ako je If Uvjet je ispravan pravo? 361 00:15:35,720 --> 00:15:36,905 362 00:15:36,905 --> 00:15:40,240 >> GDB samo će vam pokazati stvari koje su zapravo obavljaju. 363 00:15:40,240 --> 00:15:45,140 Dakle, ako je to Ako uvjet nije ispunjen, to je samo ide za prijelaz na sljedeći redak. 364 00:15:45,140 --> 00:15:46,540 OK? 365 00:15:46,540 --> 00:15:48,510 Dakle, imamo to. 366 00:15:48,510 --> 00:15:51,171 To znači da je nosač zatvorena iz tog kruga sada. 367 00:15:51,171 --> 00:15:52,420 Dakle, to će početi ponovno. 368 00:15:52,420 --> 00:15:54,760 369 00:15:54,760 --> 00:15:56,280 Baš kao što je to. 370 00:15:56,280 --> 00:15:59,120 Dakle, da možemo dobiti informacije o našim mještanima ovdje 371 00:15:59,120 --> 00:16:02,575 i vidimo da je naš prvi Pismo se promijenilo, zar ne? 372 00:16:02,575 --> 00:16:05,150 Sada E, kao što bi trebao biti. 373 00:16:05,150 --> 00:16:07,360 Dakle, možemo nastaviti dalje. 374 00:16:07,360 --> 00:16:08,500 >> I mi smo tu provjeru. 375 00:16:08,500 --> 00:16:09,916 A to ček trebali raditi, zar ne? 376 00:16:09,916 --> 00:16:12,570 To je A. To treba mijenjati Tri slova naprijed. 377 00:16:12,570 --> 00:16:14,320 378 00:16:14,320 --> 00:16:16,530 Ali ako primijetite, mi dobili nešto drugo. 379 00:16:16,530 --> 00:16:17,580 380 00:16:17,580 --> 00:16:22,860 Dakle, u ovom slučaju ovdje, to je uhvaćen je, i tako ova linija pogubljeni, 381 00:16:22,860 --> 00:16:28,620 što mijenjati naš B. No, u ovom slučaju ovdje 382 00:16:28,620 --> 00:16:32,860 smo da je to samo ga preskočiti, i otišao do [? L siff. ?] 383 00:16:32,860 --> 00:16:34,660 Dakle, nešto što se događa tamo. 384 00:16:34,660 --> 00:16:37,780 Ono što je reći da je, znamo da bi trebalo uhvatiti ovdje, 385 00:16:37,780 --> 00:16:39,200 ali nije. 386 00:16:39,200 --> 00:16:42,210 Može li itko vidjeti što naši Problem je u toj liniji? 387 00:16:42,210 --> 00:16:45,380 388 00:16:45,380 --> 00:16:46,969 To je vrlo minute stvar. 389 00:16:46,969 --> 00:16:48,510 A možete se također može pogledati kodu. 390 00:16:48,510 --> 00:16:49,980 391 00:16:49,980 --> 00:16:54,940 Također je line-- zaboraviti ono što je linija U there-- ali je u [nečujan]. 392 00:16:54,940 --> 00:16:55,480 Da? 393 00:16:55,480 --> 00:16:58,639 >> SPEAKER 4: To je na više od Stranica ako ga pročitati u knjizi. 394 00:16:58,639 --> 00:16:59,430 SPEAKER 1: Točno. 395 00:16:59,430 --> 00:17:02,620 Dakle, debugger ne može reći što je to, ali debugger 396 00:17:02,620 --> 00:17:05,880 mogao dobiti do linije da znate ne funkcionira. 397 00:17:05,880 --> 00:17:09,319 A ponekad, kada se posebno kasnije u semestru, kada 398 00:17:09,319 --> 00:17:12,910 imate posla sa sto, a sto nekoliko linija koda, a vi 399 00:17:12,910 --> 00:17:16,190 ne znam gdje to nije, To je sjajan način da to učinite. 400 00:17:16,190 --> 00:17:17,900 401 00:17:17,900 --> 00:17:18,989 Dakle, pronašli smo našu grešku. 402 00:17:18,989 --> 00:17:21,530 Možete ga popraviti u datoteci, i onda bi mogao ponovo pokrenuti, 403 00:17:21,530 --> 00:17:23,029 i sve će raditi savršeno. 404 00:17:23,029 --> 00:17:24,970 405 00:17:24,970 --> 00:17:30,590 A najveća stvar je to može činiti kao, u redu. 406 00:17:30,590 --> 00:17:31,090 Da. 407 00:17:31,090 --> 00:17:31,370 Cool. 408 00:17:31,370 --> 00:17:32,744 Znao si ono što tražite. 409 00:17:32,744 --> 00:17:34,910 Dakle, što je znao što treba učiniti. 410 00:17:34,910 --> 00:17:39,021 >> GDB može biti super korisno jer vas možete ispisati sve te stvari koje ste 411 00:17:39,021 --> 00:17:39,520 ne bi. 412 00:17:39,520 --> 00:17:41,160 To je mnogo više koristan nego printf. 413 00:17:41,160 --> 00:17:43,440 Koliko koristite kao printf izjavama 414 00:17:43,440 --> 00:17:46,200 shvatiti gdje bug je, zar ne? 415 00:17:46,200 --> 00:17:48,450 Dakle, s ovim, ti ne moraju vraćati, 416 00:17:48,450 --> 00:17:51,139 i sviđa komentirajući u Printf ili komentiranjem, 417 00:17:51,139 --> 00:17:52,930 i shvatiti što trebali biti tiskanje. 418 00:17:52,930 --> 00:17:55,670 To zapravo samo vam omogućuje da korak kroz, isprintati stvari 419 00:17:55,670 --> 00:18:00,000 kao što prolaziš, tako, možete promatrati kako se mijenja u realnom vremenu, 420 00:18:00,000 --> 00:18:02,190 kao svoj program radi. 421 00:18:02,190 --> 00:18:04,390 >> I to ne uzeti malo malo koristi za dobivanje. 422 00:18:04,390 --> 00:18:07,850 Ja bih visoko preporučiti samo vrsta bude malo frustriran s njim 423 00:18:07,850 --> 00:18:08,930 za sada. 424 00:18:08,930 --> 00:18:13,450 Ako ćete potrošiti sat tijekom sljedeći tjedan učenje kako koristiti GDB, 425 00:18:13,450 --> 00:18:16,140 uštedjet ćete sebe toliko vremena kasnije. 426 00:18:16,140 --> 00:18:18,750 I doslovno. možemo reći to ljudi svake godine, 427 00:18:18,750 --> 00:18:23,890 i sjećam se kad sam uzeo klase, bio sam kao, ja ću biti u redu. 428 00:18:23,890 --> 00:18:24,700 Ne. 429 00:18:24,700 --> 00:18:27,030 Pset 6 Izašao je i sam bio kao, ja ću učiti 430 00:18:27,030 --> 00:18:29,500 kako koristiti GDB, jer ja ne znam znam što se ovdje događa. 431 00:18:29,500 --> 00:18:32,940 >> Dakle, ako se uzme vrijeme, tako koristiti ga na manje programe 432 00:18:32,940 --> 00:18:35,697 da ćeš biti radi na, kao što je rad 433 00:18:35,697 --> 00:18:37,530 kroz nešto slično Visionare, kao što je ovaj. 434 00:18:37,530 --> 00:18:38,800 435 00:18:38,800 --> 00:18:42,850 Ili, ako želite dodatnu praksu, siguran sam Mogao bih se s lud programima, 436 00:18:42,850 --> 00:18:45,300 za vas ispravljanje ako želite. 437 00:18:45,300 --> 00:18:49,300 >> Ali, ako se samo uzeti malo vremena kako bi dobili naviknuti na to, samo se poigrati s njim, 438 00:18:49,300 --> 00:18:50,550 to stvarno će vam dobro poslužiti. 439 00:18:50,550 --> 00:18:52,591 I to je stvarno jedan od one stvari koje ste upravo 440 00:18:52,591 --> 00:18:57,340 morati probati i dobiti vaše ruke prljave sa, prije nego što stvarno ga razumijem. 441 00:18:57,340 --> 00:19:02,090 Stvarno sam ga samo jednom shvatiti Morao sam ispravljanje stvari s njim, 442 00:19:02,090 --> 00:19:08,170 i to je puno ljepše imati ideju kako ispravljanje prije nego kasnije. 443 00:19:08,170 --> 00:19:08,850 U redu. 444 00:19:08,850 --> 00:19:09,625 Cool. 445 00:19:09,625 --> 00:19:12,960 Znam da je vrsta kao što ubrzani tečaj u GDB, 446 00:19:12,960 --> 00:19:16,400 i ja definitivno će raditi na dobivanje to izgledati veće sljedeći put. 447 00:19:16,400 --> 00:19:17,590 448 00:19:17,590 --> 00:19:18,280 Cool. 449 00:19:18,280 --> 00:19:20,390 >> Dakle, ako se vratimo na naše PowerPoint. 450 00:19:20,390 --> 00:19:27,194 451 00:19:27,194 --> 00:19:28,110 Hoće li ovo raditi? 452 00:19:28,110 --> 00:19:29,711 453 00:19:29,711 --> 00:19:30,210 AWH. 454 00:19:30,210 --> 00:19:31,101 Da. 455 00:19:31,101 --> 00:19:31,600 U redu. 456 00:19:31,600 --> 00:19:35,480 Dakle, ako vam zatreba bilo koji od oni opet, tu je popis. 457 00:19:35,480 --> 00:19:37,160 458 00:19:37,160 --> 00:19:40,830 Dakle Binarna pretrage, koje svatko pamti veliki spektakl Davida 459 00:19:40,830 --> 00:19:42,259 kopiranja telefonske knjige u pola. 460 00:19:42,259 --> 00:19:44,050 Ja stvarno ne shvaćam telefonski imenici više, 461 00:19:44,050 --> 00:19:46,530 jer kao gdje vi dobili telefonske knjige ovih dana? 462 00:19:46,530 --> 00:19:48,220 Ja stvarno ne znam. 463 00:19:48,220 --> 00:19:49,840 464 00:19:49,840 --> 00:19:50,590 Binarna pretrage. 465 00:19:50,590 --> 00:19:52,464 Se bilo tko sjetiti koliko Binarna Traži djela? 466 00:19:52,464 --> 00:19:54,380 467 00:19:54,380 --> 00:19:55,220 Svatko uopće? 468 00:19:55,220 --> 00:19:56,325 Da? 469 00:19:56,325 --> 00:19:58,283 SPEAKER 5: Znate kada pogledate kojih polovica 470 00:19:58,283 --> 00:20:01,146 to će biti u, na temelju toga, i riješiti drugu polovicu. 471 00:20:01,146 --> 00:20:01,896 >> SPEAKER 1 Točno. 472 00:20:01,896 --> 00:20:06,290 Dakle, binarna pretrage, to je vrsta A- --we željeli nazvati ga podijeli pa vladaj. 473 00:20:06,290 --> 00:20:09,170 Dakle, što ćete učiniti je ćete pogledati u sredini, 474 00:20:09,170 --> 00:20:11,990 a vi ćete vidjeti ako to odgovara ono što tražite. 475 00:20:11,990 --> 00:20:15,420 A ako se to ne dogodi, onda ćete pokušati shvatiti, je da će ostati 476 00:20:15,420 --> 00:20:16,450 polovina ili desna polovica. 477 00:20:16,450 --> 00:20:19,325 Dakle, to može biti ako ste u potrazi na nešto što je abecednom, 478 00:20:19,325 --> 00:20:20,720 vidiš, oh. 479 00:20:20,720 --> 00:20:22,750 Da li Allison doći prije M? 480 00:20:22,750 --> 00:20:23,250 Da. 481 00:20:23,250 --> 00:20:25,030 Dakle, idemo pogledajte prvog poluvremena. 482 00:20:25,030 --> 00:20:26,450 >> Ili bi to moglo biti kao s brojevima. 483 00:20:26,450 --> 00:20:28,830 Sve što možete usporedbu, to može biti riješeno. 484 00:20:28,830 --> 00:20:29,920 485 00:20:29,920 --> 00:20:31,260 Možete koristiti binarno pretraživanje na. 486 00:20:31,260 --> 00:20:32,340 487 00:20:32,340 --> 00:20:37,455 Dakle, tko zapamtite ovo graf ili što je to? 488 00:20:37,455 --> 00:20:39,520 To je asimptotičnu složenosti. 489 00:20:39,520 --> 00:20:42,830 Dakle, ovaj graf jednostavno opisuje koliko dugo 490 00:20:42,830 --> 00:20:46,230 vodi vas riješiti problem što je možete povećati broj stvari 491 00:20:46,230 --> 00:20:47,090 da upotrebljavate. 492 00:20:47,090 --> 00:20:51,260 >> Dakle, imamo N, što je linearno vrijeme. 493 00:20:51,260 --> 00:20:54,560 Ako je više od dva N, koji je malo bolje, i dalje raste super brzo. 494 00:20:54,560 --> 00:20:58,360 A onda smo Prijavite se, što je ono što mi smatramo binarno pretraživanje. 495 00:20:58,360 --> 00:21:03,630 Ako primijetite, kao što je vaš problem dobiva mnogo i mnogo veći, 496 00:21:03,630 --> 00:21:06,600 Vrijeme vam je potrebno kako bi ga riješiti zapravo ne povećava toliko. 497 00:21:06,600 --> 00:21:09,010 To je kao usporediti ovdje u početku. 498 00:21:09,010 --> 00:21:10,060 Ti si kao, u redu. 499 00:21:10,060 --> 00:21:13,000 Sve što se ovdje zapravo ne obzira na to što neki koristimo, 500 00:21:13,000 --> 00:21:16,220 ali ste dobili na milijun, milijarda. 501 00:21:16,220 --> 00:21:20,010 Pokušavaš pronaći some-- --you're pokušavajući naći iglu u plastu sijena. 502 00:21:20,010 --> 00:21:21,550 >> Mislim da želite taj problem. 503 00:21:21,550 --> 00:21:25,850 Želiš tu složenost, a ne linearno, jer za sve vas 504 00:21:25,850 --> 00:21:30,049 znate li će biti u potrazi kroz svaki pojedinac igle, stvar sijena, 505 00:21:30,049 --> 00:21:31,340 pokušavaju tražiti vaše igle. 506 00:21:31,340 --> 00:21:34,730 I to nije previše zabavno po mom mišljenju. 507 00:21:34,730 --> 00:21:35,500 Volim brzo. 508 00:21:35,500 --> 00:21:36,620 Volim učinkovita. 509 00:21:36,620 --> 00:21:40,450 I kao vrijedni studenti Vi Dečki su, znaš raditi pametnije, 510 00:21:40,450 --> 00:21:43,010 Ne teže tipa stvar, kako ti može nadoknaditi tih algoritama. 511 00:21:43,010 --> 00:21:45,110 512 00:21:45,110 --> 00:21:47,910 >> Dakle, idemo u šetnju kroz samo brzi primjer. 513 00:21:47,910 --> 00:21:51,090 Mislim da ti dečki trebali imati Ruka na Binary Traži, 514 00:21:51,090 --> 00:21:54,352 ali u slučaju da je netko malo fuzzy, žele ga ojačati, 515 00:21:54,352 --> 00:21:56,310 ćemo samo ići kroz primjer ovdje. 516 00:21:56,310 --> 00:21:59,490 Dakle, tražimo, ako polje sadrži sedam. 517 00:21:59,490 --> 00:22:00,540 518 00:22:00,540 --> 00:22:06,010 >> Dakle, prva stvar koju radimo je gledati u sredini, zar ne? 519 00:22:06,010 --> 00:22:09,340 A i ti ćeš biti kodiranja Binarna Traži u samo sekundi. 520 00:22:09,340 --> 00:22:11,310 Dakle, to će biti zabavno. 521 00:22:11,310 --> 00:22:13,710 Tako smo gledati u Srednji mali nizovi 3. 522 00:22:13,710 --> 00:22:15,501 Da li 3 jednaka 7? 523 00:22:15,501 --> 00:22:16,000 Ne. 524 00:22:16,000 --> 00:22:18,670 525 00:22:18,670 --> 00:22:19,550 To je šest. 526 00:22:19,550 --> 00:22:21,480 Dakle, to je manje od ili veći od sedam? 527 00:22:21,480 --> 00:22:23,080 528 00:22:23,080 --> 00:22:23,960 Manje od. 529 00:22:23,960 --> 00:22:24,570 Da. 530 00:22:24,570 --> 00:22:25,170 Lijepo dečki posao. 531 00:22:25,170 --> 00:22:25,569 532 00:22:25,569 --> 00:22:27,360 Osjećam volim da bih trebala imaju slatkiša jer sam 533 00:22:27,360 --> 00:22:29,460 želim ga izbaciti u dvorištima. 534 00:22:29,460 --> 00:22:30,270 To je ono što ću učiniti sljedeći tjedan. 535 00:22:30,270 --> 00:22:31,436 To će vas dečki oštar. 536 00:22:31,436 --> 00:22:32,560 537 00:22:32,560 --> 00:22:34,690 >> Dakle, mi bacaju da Prva polovica, zar ne? 538 00:22:34,690 --> 00:22:35,670 ona je manja od. 539 00:22:35,670 --> 00:22:39,325 znamo da je sve na toj lijevoj strani 540 00:22:39,325 --> 00:22:41,700 će biti manje od onoga mi zapravo tražimo. 541 00:22:41,700 --> 00:22:43,491 Dakle, nema potrebe da se obratite pozornost na to. 542 00:22:43,491 --> 00:22:45,120 Samo zaboraviti o tome. 543 00:22:45,120 --> 00:22:48,720 Dakle, sada je gledamo na našoj desnoj strani, i gledamo na sredini tamo, 544 00:22:48,720 --> 00:22:50,510 a sada je devet. 545 00:22:50,510 --> 00:22:55,510 Dakle, 9 is-- --Everyone? 546 00:22:55,510 --> 00:22:57,470 Veći nego što smo tražite, zar ne? 547 00:22:57,470 --> 00:22:59,860 Dakle, idemo baciti daleko je sve u desno. 548 00:22:59,860 --> 00:23:00,970 549 00:23:00,970 --> 00:23:01,940 Kao da je. 550 00:23:01,940 --> 00:23:03,700 Sada, svi smo s lijeve strane je jedan. 551 00:23:03,700 --> 00:23:07,760 Tako smo provjeriti, je li to ono što jedan tražimo? je. 552 00:23:07,760 --> 00:23:08,970 Pronašli smo ono što smo htjeli. 553 00:23:08,970 --> 00:23:10,440 554 00:23:10,440 --> 00:23:11,690 Tako smo učinili. 555 00:23:11,690 --> 00:23:12,550 Bilinearnog pretrage. 556 00:23:12,550 --> 00:23:15,740 >> A ako primijetite, mi je imao sedam ulaza tamo. 557 00:23:15,740 --> 00:23:24,320 To nam samo uzeo kao tri puta, ali ako radite kao milijardu, 558 00:23:24,320 --> 00:23:28,190 vi znate koliko koraka da bi poduzeti ako smo imali četiri milijarde stvari? 559 00:23:28,190 --> 00:23:29,940 560 00:23:29,940 --> 00:23:30,455 Bilo nagađanja? 561 00:23:30,455 --> 00:23:32,286 562 00:23:32,286 --> 00:23:33,960 To je 32. 563 00:23:33,960 --> 00:23:37,110 32 koraka kako pronaći nešto u četiri milijarde 564 00:23:37,110 --> 00:23:39,650 Element niz zbog ovlasti dva. 565 00:23:39,650 --> 00:23:43,550 Dakle, dva je 32, je na četiri milijarde eura. 566 00:23:43,550 --> 00:23:50,430 >> Dakle, prilično ludo kako ste i dalje u kao relativno malom broju koraka 567 00:23:50,430 --> 00:23:52,650 pronaći nešto u četiri milijarde elemenata. 568 00:23:52,650 --> 00:23:55,730 Dakle, na toj bilješci, mi smo ide to kod ove 569 00:23:55,730 --> 00:23:58,950 tako da vi zapravo može vrsta vide kako se to radi. 570 00:23:58,950 --> 00:24:01,520 U redu, tako da vi možete kodirati. 571 00:24:01,520 --> 00:24:04,100 Ja ću vas dečki pustiti razgovor za malo. 572 00:24:04,100 --> 00:24:07,970 Upoznajte ljude oko sebe, što je ono što je netko htio od prošlog odjeljka. 573 00:24:07,970 --> 00:24:10,280 >> Dakle, upoznati ljude oko vas. 574 00:24:10,280 --> 00:24:11,305 Razgovor za malo. 575 00:24:11,305 --> 00:24:12,580 576 00:24:12,580 --> 00:24:15,730 I sve što želim od tebe dečki sada je samo 577 00:24:15,730 --> 00:24:17,575 pokušati stvoriti obris Pseudokod. 578 00:24:17,575 --> 00:24:18,075 OK? 579 00:24:18,075 --> 00:24:20,825 580 00:24:20,825 --> 00:24:21,325 Opa. 581 00:24:21,325 --> 00:24:23,320 582 00:24:23,320 --> 00:24:29,520 Sve što želim od vas dečki je da ste Samo će ispuniti u ovom slučaju, dok. 583 00:24:29,520 --> 00:24:32,170 Zato sam postavio to gornja i donje granice koja 584 00:24:32,170 --> 00:24:35,250 predstavljaju početak i kraj naše ponude. 585 00:24:35,250 --> 00:24:40,440 A što ćete zapravo loop i shvatiti 586 00:24:40,440 --> 00:24:42,470 što radimo u ovom while petlje. 587 00:24:42,470 --> 00:24:45,810 >> Dakle, ako možete shvatiti out-- Imam savjet there-- što su slučajevi 588 00:24:45,810 --> 00:24:46,640 da smo ovdje? 589 00:24:46,640 --> 00:24:48,100 590 00:24:48,100 --> 00:24:51,560 Dakle, ako želite shvatiti slučajevi, mi ćemo Pseudokod onima 591 00:24:51,560 --> 00:24:53,350 a onda ćemo ih zapravo kodirati. 592 00:24:53,350 --> 00:24:55,330 I to će biti, ja mislim, nadam se da ću 593 00:24:55,330 --> 00:24:56,788 biti malo lakše nego što očekujete. 594 00:24:56,788 --> 00:24:57,554 595 00:24:57,554 --> 00:25:00,220 Budući da to nije toliko broj, Zapravo, što je stvarno cool. 596 00:25:00,220 --> 00:25:34,110 597 00:25:34,110 --> 00:25:35,018 >> Mm-hm? 598 00:25:35,018 --> 00:25:35,893 >> UČENIK: [nečujan]? 599 00:25:35,893 --> 00:25:36,984 600 00:25:36,984 --> 00:25:37,650 INSTRUKTOR: Da. 601 00:25:37,650 --> 00:25:38,595 Bilo je nešto naći u sredini. 602 00:25:38,595 --> 00:25:39,552 >> UČENIK: Pa možemo koristiti. 603 00:25:39,552 --> 00:25:39,770 U redu. 604 00:25:39,770 --> 00:25:40,603 >> INSTRUKTOR: Savršeno. 605 00:25:40,603 --> 00:25:42,950 Dakle, to je prva stvar koju trebate učiniti. 606 00:25:42,950 --> 00:25:44,330 Dakle, pronaći sredinu. 607 00:25:44,330 --> 00:25:45,415 608 00:25:45,415 --> 00:25:45,915 Veliki. 609 00:25:45,915 --> 00:25:47,770 610 00:25:47,770 --> 00:25:55,010 Dakle, imate li ideju kako bismo mogli zapravo naći sredinu s kodom? 611 00:25:55,010 --> 00:25:55,980 >> UČENIK: Da. 612 00:25:55,980 --> 00:25:57,000 n preko 2? 613 00:25:57,000 --> 00:25:58,500 614 00:25:58,500 --> 00:25:59,500 INSTRUKTOR: Pa n preko 2. 615 00:25:59,500 --> 00:26:05,170 Dakle, jedna stvar je da zapamtite da Vaši gornje i donje granice mijenjati. 616 00:26:05,170 --> 00:26:08,110 Mi stalno stežuća dio od niza smo u potrazi za. 617 00:26:08,110 --> 00:26:11,970 Tako n nad 2 će raditi samo za prvo radimo. 618 00:26:11,970 --> 00:26:17,810 Tako da gornji i donji u obzir, kako bismo mogli dobiti taj srednji elementa? 619 00:26:17,810 --> 00:26:20,640 Zato želimo sredini između gornje i donje, zar ne? 620 00:26:20,640 --> 00:26:21,730 621 00:26:21,730 --> 00:26:22,494 Mm-hm? 622 00:26:22,494 --> 00:26:23,369 >> UČENIK: [nečujan]. 623 00:26:23,369 --> 00:26:26,170 624 00:26:26,170 --> 00:26:28,080 >> INSTRUKTOR: Dakle, imamo neku sredinu. 625 00:26:28,080 --> 00:26:32,730 I to će biti veliko plus manji preko 2. 626 00:26:32,730 --> 00:26:34,740 627 00:26:34,740 --> 00:26:35,690 Strašan. 628 00:26:35,690 --> 00:26:36,570 Tamo idemo. 629 00:26:36,570 --> 00:26:37,280 Jedan redak prema dolje. 630 00:26:37,280 --> 00:26:38,560 Vi ste na putu. 631 00:26:38,560 --> 00:26:41,400 Tako da sada imamo naš srednje, što želimo učiniti? 632 00:26:41,400 --> 00:26:45,050 633 00:26:45,050 --> 00:26:45,900 Samo u cjelini. 634 00:26:45,900 --> 00:26:47,734 Ne morate ga kodirati. 635 00:26:47,734 --> 00:26:48,335 Da. 636 00:26:48,335 --> 00:26:49,210 UČENIK: [nečujan]? 637 00:26:49,210 --> 00:27:00,310 638 00:27:00,310 --> 00:27:10,310 INSTRUKTOR: Dakle, to je plus, jer ste pronalaženje prosjeku između dva 639 00:27:10,310 --> 00:27:10,810 od njih. 640 00:27:10,810 --> 00:27:11,890 641 00:27:11,890 --> 00:27:17,370 Dakle, ako mislite o njima kao vrsta povećanje sa strane, 642 00:27:17,370 --> 00:27:21,640 razmišljam o tome kako se približavate srednje, želite tako. 643 00:27:21,640 --> 00:27:27,150 Dakle, ako ste bili na obje strane srednje, a imamo kao 5 i 7. 644 00:27:27,150 --> 00:27:31,440 Kada ih dodati zajedno vam dobili 12, podijelite s 2, 6. 645 00:27:31,440 --> 00:27:33,726 >> Ponekad je teško objasniti zašto to radi, 646 00:27:33,726 --> 00:27:35,600 ali ako radite preko Primjer ponekad, 647 00:27:35,600 --> 00:27:37,962 to će vam pomoći shvatiti ako to bi trebao biti plus ili minus. 648 00:27:37,962 --> 00:27:38,846 Da. 649 00:27:38,846 --> 00:27:40,830 >> UČENIK: [nečujan] točno u sredini 650 00:27:40,830 --> 00:27:43,950 ako su imali slučaj gdje postoji puno manjem broju 651 00:27:43,950 --> 00:27:45,860 i kao jedan veliki broj? 652 00:27:45,860 --> 00:27:49,750 >> INSTRUKTOR: Dakle, sve što je potrebno je usred polja. 653 00:27:49,750 --> 00:27:53,010 Dakle, ako ste imali hrpu malih brojeva a onda se stvarno velik broj 654 00:27:53,010 --> 00:27:54,799 Na kraju, to ne smeta. 655 00:27:54,799 --> 00:27:56,840 Sve što je bitno je da oni su razvrstani, samo 656 00:27:56,840 --> 00:27:59,339 Želite gledati na sredini niz jer ste još uvijek 657 00:27:59,339 --> 00:28:00,700 rezanje svoj problem na pola. 658 00:28:00,700 --> 00:28:03,020 659 00:28:03,020 --> 00:28:03,680 Cool. 660 00:28:03,680 --> 00:28:06,430 Tako da sada imamo srednje, što nam je činiti dalje? 661 00:28:06,430 --> 00:28:07,150 >> UČENIK: Usporedite. 662 00:28:07,150 --> 00:28:08,150 INSTRUKTOR: usporediti. 663 00:28:08,150 --> 00:28:11,670 Dakle, usporedite sredinu za value_wanted. 664 00:28:11,670 --> 00:28:14,300 665 00:28:14,300 --> 00:28:15,160 Cool. 666 00:28:15,160 --> 00:28:17,950 Dakle, vidite ovdje imamo ova vrijednost želimo ovdje. 667 00:28:17,950 --> 00:28:22,012 668 00:28:22,012 --> 00:28:23,095 Zapamtite ovo polje. 669 00:28:23,095 --> 00:28:24,100 670 00:28:24,100 --> 00:28:26,970 Tako srednji odnosi na indeks. 671 00:28:26,970 --> 00:28:29,785 Dakle, želimo napraviti vrijednosti sredini. 672 00:28:29,785 --> 00:28:32,380 673 00:28:32,380 --> 00:28:35,650 Ne zaboravite, ako želite za usporedbu, dvostruki jednakima. 674 00:28:35,650 --> 00:28:38,250 Možete napraviti jednu jednak si Samo će ga preraspodijeliti, 675 00:28:38,250 --> 00:28:41,090 a onda, naravno, to je će biti vrijednost koju želite. 676 00:28:41,090 --> 00:28:42,300 Dakle, nemojte to raditi. 677 00:28:42,300 --> 00:28:44,350 >> Tako ćemo vidjeti ako vrijednosti u sredini 678 00:28:44,350 --> 00:28:46,460 jednaka vrijednosti želimo. 679 00:28:46,460 --> 00:28:47,749 680 00:28:47,749 --> 00:28:48,790 Ne zaboravite aparatić. 681 00:28:48,790 --> 00:28:50,520 682 00:28:50,520 --> 00:28:52,235 Dropbox bi trebao otići. 683 00:28:52,235 --> 00:28:54,140 684 00:28:54,140 --> 00:28:56,200 Dakle, što nam je činiti u tom slučaju? 685 00:28:56,200 --> 00:28:59,360 Ako je to ono što želimo vratiti? 686 00:28:59,360 --> 00:29:01,510 687 00:29:01,510 --> 00:29:02,626 Mi pokušavamo reći. 688 00:29:02,626 --> 00:29:03,440 >> UČENIK: Ispis off. 689 00:29:03,440 --> 00:29:05,314 >> INSTRUKTOR: Pa, mi ne želim ispisati. 690 00:29:05,314 --> 00:29:08,220 Dakle, ovo je bool ovdje, tako da mi žele vratiti true ili false. 691 00:29:08,220 --> 00:29:12,280 Mi tvrdimo, je taj broj [? RRA? ?] Dakle, ako je to, 692 00:29:12,280 --> 00:29:13,788 samo mi vratiti to istina. 693 00:29:13,788 --> 00:29:16,780 694 00:29:16,780 --> 00:29:17,760 Ako mogu čarolija istina. 695 00:29:17,760 --> 00:29:18,830 696 00:29:18,830 --> 00:29:20,805 >> UČENIK: Zašto ne bi li se vratiti na nulu? 697 00:29:20,805 --> 00:29:22,930 INSTRUKTOR: tako da bi mogao povratak na nulu, ako ste htjeli. 698 00:29:22,930 --> 00:29:26,780 No, u ovom slučaju, jer naša funkcija vraća bool, 699 00:29:26,780 --> 00:29:28,962 moramo se vratiti bilo istinito ili lažno. 700 00:29:28,962 --> 00:29:30,920 UČENIK: Kad ste govoreći logički izraz, 701 00:29:30,920 --> 00:29:33,450 možete ga postaviti jednaka netočno? 702 00:29:33,450 --> 00:29:39,860 Kao, ako želim reći, ako je to uvjet nije upoznao, kao što je gornja jednako lažna. 703 00:29:39,860 --> 00:29:42,332 Hoće li razumjeti ako ste upravo stavili lažno na drugoj strani? 704 00:29:42,332 --> 00:29:43,040 INSTRUKTOR: Da. 705 00:29:43,040 --> 00:29:44,820 Pa zapravo, ako ste sve radi nešto 706 00:29:44,820 --> 00:29:49,600 kao što je gornja ili je niži, koji vraća true ili false 707 00:29:49,600 --> 00:29:53,850 i to je zapravo loše stil recimo jednaka jednaka istina ili jednakima 708 00:29:53,850 --> 00:29:54,840 jednako lažna. 709 00:29:54,840 --> 00:30:00,210 Želite li koristiti taj rezultat što je i sama kao ček. 710 00:30:00,210 --> 00:30:04,720 711 00:30:04,720 --> 00:30:05,860 Nije ono što sam htio. 712 00:30:05,860 --> 00:30:08,150 713 00:30:08,150 --> 00:30:09,240 To je ono što sam htjela. 714 00:30:09,240 --> 00:30:13,205 Tako je u slučaju tražiš o nečemu kao što je spasi ovaj u c. 715 00:30:13,205 --> 00:30:16,320 716 00:30:16,320 --> 00:30:25,150 >> Dakle, ako imamo int glavni (prazninu) i nešto poput ovoga. 717 00:30:25,150 --> 00:30:31,922 A imate li je gornja neke ulaz i da ste 718 00:30:31,922 --> 00:30:33,630 molba ako možete učiniti nešto ovako? 719 00:30:33,630 --> 00:30:35,010 720 00:30:35,010 --> 00:30:35,679 Pravo? 721 00:30:35,679 --> 00:30:37,470 UČENIK: Pokušavao sam to učiniti [nečujan]. 722 00:30:37,470 --> 00:30:38,450 Jer ako it's-- 723 00:30:38,450 --> 00:30:39,200 INSTRUKTOR: Upravo. 724 00:30:39,200 --> 00:30:41,197 Dakle, želite da to bude lažna, zar ne? 725 00:30:41,197 --> 00:30:41,780 UČENIK: Da. 726 00:30:41,780 --> 00:30:45,960 INSTRUKTOR: Dakle, u ovom slučaju želite izvršiti ako to nije istina. 727 00:30:45,960 --> 00:30:50,510 Dakle, super stvar koju ne postoji ova. 728 00:30:50,510 --> 00:30:52,900 729 00:30:52,900 --> 00:30:55,650 Pa sjetite se uzvik Točka negira stvari? 730 00:30:55,650 --> 00:30:58,270 Ona kaže [nečujan] ne znači. 731 00:30:58,270 --> 00:31:03,590 Dakle, ako gledamo samo ovaj dio ovdje, ti bi 732 00:31:03,590 --> 00:31:05,740 kažu da se procjenjuje na lažna kao što želite da. 733 00:31:05,740 --> 00:31:06,790 734 00:31:06,790 --> 00:31:09,880 Ne lažna istina koja znači to bi izvršiti. 735 00:31:09,880 --> 00:31:11,037 Znači li to smisla? 736 00:31:11,037 --> 00:31:11,620 UČENIK: Da. 737 00:31:11,620 --> 00:31:12,453 INSTRUKTOR: Strašan. 738 00:31:12,453 --> 00:31:13,800 739 00:31:13,800 --> 00:31:14,300 U redu. 740 00:31:14,300 --> 00:31:16,330 Tako smo samo mogli vratiti istina u ovom slučaju. 741 00:31:16,330 --> 00:31:20,357 Tako sada imamo dva druga slučajeva u ovom slučaju. 742 00:31:20,357 --> 00:31:21,565 Koje su naše dvije drugi slučajevi? 743 00:31:21,565 --> 00:31:31,610 744 00:31:31,610 --> 00:31:32,900 Ajmo to ovako učiniti. 745 00:31:32,900 --> 00:31:40,660 Pa počnimo s drugom Ako vrijednosti u sredini 746 00:31:40,660 --> 00:31:43,230 manja od vrijednosti želimo. 747 00:31:43,230 --> 00:31:47,200 748 00:31:47,200 --> 00:31:52,020 Tako je naša vrijednost u sredini manje od vrijednosti koje tražimo. 749 00:31:52,020 --> 00:31:53,765 750 00:31:53,765 --> 00:31:56,720 >> Zato što vezani vi mislim želimo ažurirati? 751 00:31:56,720 --> 00:31:57,870 752 00:31:57,870 --> 00:31:58,780 Gornja ili niži? 753 00:31:58,780 --> 00:32:01,440 754 00:32:01,440 --> 00:32:01,940 Gornji? 755 00:32:01,940 --> 00:32:03,230 756 00:32:03,230 --> 00:32:06,470 Dakle, koja je strana niza ćemo se gleda? 757 00:32:06,470 --> 00:32:07,500 >> UČENIK: niže. 758 00:32:07,500 --> 00:32:09,750 >> INSTRUKTOR: Mi ćemo da se gleda na lijevo. 759 00:32:09,750 --> 00:32:11,120 Dakle, ako je ostalo nešto je manji. 760 00:32:11,120 --> 00:32:14,730 Dakle srednjom vrijednosti ovdje je manje od onoga što želimo. 761 00:32:14,730 --> 00:32:17,202 Dakle, želimo da se desna strana našeg polja. 762 00:32:17,202 --> 00:32:18,910 Tako ćemo ažurirati naš donja granica. 763 00:32:18,910 --> 00:32:20,210 764 00:32:20,210 --> 00:32:23,020 Tako ćemo preraspodijeliti naše niže. 765 00:32:23,020 --> 00:32:25,221 A što misliš manji bi trebao biti? 766 00:32:25,221 --> 00:32:26,304 UČENIK: srednja vrijednost? 767 00:32:26,304 --> 00:32:27,446 768 00:32:27,446 --> 00:32:28,820 INSTRUKTOR: Pa srednje value-- 769 00:32:28,820 --> 00:32:30,136 UČENIK: Plus 1. 770 00:32:30,136 --> 00:32:31,010 INSTRUKTOR: --plus 1. 771 00:32:31,010 --> 00:32:32,300 772 00:32:32,300 --> 00:32:34,380 Može bilo tko reći mene zašto imamo da plus 1? 773 00:32:34,380 --> 00:32:35,730 >> UČENIK: [? Bez vrijednost?] više jednak njoj. 774 00:32:35,730 --> 00:32:36,120 >> INSTRUKTOR: Upravo. 775 00:32:36,120 --> 00:32:38,661 Budući da smo već znali da naša srednja vrijednost nije jednaka 776 00:32:38,661 --> 00:32:42,750 to i želimo ga isključuje od svih kasnijih pretraživanja. 777 00:32:42,750 --> 00:32:46,360 Ako ste zaboravili da je plus 1, ovaj će vam se svidjeti petlju na neodređeno vrijeme. 778 00:32:46,360 --> 00:32:49,620 A vi ćete samo biti uhvaćen u beskonačna petlja, a onda ćete segfault 779 00:32:49,620 --> 00:32:50,370 i stvari idu loše. 780 00:32:50,370 --> 00:32:54,780 Dakle, uvijek bi bili sigurni da niste uključujući vrijednost koju ste upravo 781 00:32:54,780 --> 00:32:55,380 pogledala. 782 00:32:55,380 --> 00:32:58,530 Tako ćemo se pobrinuti da se s plus 1. 783 00:32:58,530 --> 00:33:04,840 >> Tako sada imamo posljednji uvjet koji sam uvijek za sigurnost radi 784 00:33:04,840 --> 00:33:12,664 možete provjeriti ovdje, drugdje ako je vrijednost na srednji veća od vrijednosti 785 00:33:12,664 --> 00:33:13,163 želimo. 786 00:33:13,163 --> 00:33:16,260 787 00:33:16,260 --> 00:33:20,230 To znači da želimo lijeva ruka na pola. 788 00:33:20,230 --> 00:33:21,350 789 00:33:21,350 --> 00:33:23,260 Dakle, koje ćemo ažurirati? 790 00:33:23,260 --> 00:33:23,760 Gornji. 791 00:33:23,760 --> 00:33:25,470 792 00:33:25,470 --> 00:33:26,970 A što je ovo jedna će biti jednak? 793 00:33:26,970 --> 00:33:31,630 794 00:33:31,630 --> 00:33:33,690 Srednji minus 1, jer, Naravno, želimo 795 00:33:33,690 --> 00:33:38,370 kako bi bili sigurni da nismo gleda na toj srednjoj vrijednosti opet. 796 00:33:38,370 --> 00:33:41,830 797 00:33:41,830 --> 00:33:45,110 I onda smo ga. 798 00:33:45,110 --> 00:33:45,610 To je to. 799 00:33:45,610 --> 00:33:46,820 To je sve binarno pretraživanje. 800 00:33:46,820 --> 00:33:48,190 Nije to loše, zar ne? 801 00:33:48,190 --> 00:33:51,590 To je kao 10 linija Kod sa bijelom prostoru. 802 00:33:51,590 --> 00:33:57,510 Dakle, vrlo moćan, vrlo korisno, hoćete ga koristiti u jednom od svojih kasnijih psets. 803 00:33:57,510 --> 00:33:59,360 Možda ne ovaj jedan, ali je kasnije. 804 00:33:59,360 --> 00:34:00,670 Tako ga naučiti. 805 00:34:00,670 --> 00:34:01,510 Ljubav je. 806 00:34:01,510 --> 00:34:02,980 To će vas tretirati dobro. 807 00:34:02,980 --> 00:34:05,370 Dakle, bilo tko imati bilo Pitanja o binarnom potrazi? 808 00:34:05,370 --> 00:34:06,196 Da. 809 00:34:06,196 --> 00:34:09,840 >> UČENIK: Je li važno je li vaš nje čak i čudno? 810 00:34:09,840 --> 00:34:10,750 >> INSTRUKTOR: Ne. 811 00:34:10,750 --> 00:34:18,150 Zato smo ga bacili na sredini kao što je int, samo će ga skratiti. 812 00:34:18,150 --> 00:34:21,600 Tako da će ostati cijeli broj i to će na kraju sortirati kroz sve. 813 00:34:21,600 --> 00:34:23,909 Dakle, ne morate brinuti o tome. 814 00:34:23,909 --> 00:34:24,580 Svi su dobro? 815 00:34:24,580 --> 00:34:25,659 816 00:34:25,659 --> 00:34:26,850 Strašan. 817 00:34:26,850 --> 00:34:27,919 Cool. 818 00:34:27,919 --> 00:34:30,836 Dakle, ti dečki dobio ovo. 819 00:34:30,836 --> 00:34:33,380 820 00:34:33,380 --> 00:34:33,880 Slideshow. 821 00:34:33,880 --> 00:34:35,719 822 00:34:35,719 --> 00:34:43,270 Dakle, kao što smo pričali o tome, ja znam David spominje složenosti vremena izvođenja. 823 00:34:43,270 --> 00:34:44,420 824 00:34:44,420 --> 00:34:50,340 >> Dakle, u najboljem slučaju, to je samo jedan, što nazivamo stalnu vrijeme. 825 00:34:50,340 --> 00:34:51,909 Može bilo tko reći mene zašto bi to moglo biti? 826 00:34:51,909 --> 00:34:52,969 827 00:34:52,969 --> 00:34:55,800 Koja vrsta scenarija bi to značiti? 828 00:34:55,800 --> 00:34:58,260 829 00:34:58,260 --> 00:34:58,760 Mm-hm. 830 00:34:58,760 --> 00:34:59,926 >> UČENIK: [nečujan] first-- 831 00:34:59,926 --> 00:35:00,789 832 00:35:00,789 --> 00:35:03,830 INSTRUKTOR: Pa srednje se Prvi element koji smo došli do, zar ne? 833 00:35:03,830 --> 00:35:08,167 Dakle, bilo niz jednu ili sve što tražimo samo 834 00:35:08,167 --> 00:35:09,750 događa da se ukus stručnjak u sredini. 835 00:35:09,750 --> 00:35:11,190 836 00:35:11,190 --> 00:35:13,380 Tako da je naš najbolji slučaj. 837 00:35:13,380 --> 00:35:17,540 Možete dobiti u stvarne probleme, vjerojatno ne ide do [nečujan] koji često. 838 00:35:17,540 --> 00:35:18,667 839 00:35:18,667 --> 00:35:19,750 Što je s našim najgorem slučaju? 840 00:35:19,750 --> 00:35:21,270 Naš najgori slučaj je log n. 841 00:35:21,270 --> 00:35:25,360 A to ima veze s cijelom ovlasti dvije stvari koje sam govorio o tome. 842 00:35:25,360 --> 00:35:30,930 >> Dakle, u najgorem slučaju to bi značilo da smo morali nasjeckati niz prema dolje 843 00:35:30,930 --> 00:35:33,270 dok je bio jedan element. 844 00:35:33,270 --> 00:35:34,810 845 00:35:34,810 --> 00:35:38,930 Dakle, morali smo ga kotlet dolje na pola onoliko puta koliko smo mogli. 846 00:35:38,930 --> 00:35:41,430 To je razlog zašto je zapisnik nje, jer vi samo zadržati dijeljenjem s dva. 847 00:35:41,430 --> 00:35:42,890 848 00:35:42,890 --> 00:35:45,830 Tako da su pretpostavke, stvari koje trebate znati ako ste ikada 849 00:35:45,830 --> 00:35:48,050 će koristiti binarno pretraživanje. 850 00:35:48,050 --> 00:35:50,680 Vaši elementi moraju biti razvrstani. 851 00:35:50,680 --> 00:35:53,890 Oni moraju biti razvrstani, jer to je jedini način na koji ste 852 00:35:53,890 --> 00:35:57,060 mogu znati ako ste u mogućnosti izbaciti pola od toga. 853 00:35:57,060 --> 00:36:00,260 >> Ako ste imali tu zbrkan torbu brojeva, a vi govorite, 854 00:36:00,260 --> 00:36:05,380 U redu, ja ću provjeriti u sredini broj i broj tražim 855 00:36:05,380 --> 00:36:08,510 je manje od toga, ja samo idem samovoljno izbaciti jednu polovicu. 856 00:36:08,510 --> 00:36:11,130 Ne bih znati ako vaš Brojevi u toj drugoj polovici. 857 00:36:11,130 --> 00:36:12,655 Vaš popis mora biti riješeno. 858 00:36:12,655 --> 00:36:14,030 859 00:36:14,030 --> 00:36:16,560 Kao što je dobro, to može biti ide naprijed malo, 860 00:36:16,560 --> 00:36:18,360 ali morate imati slučajni pristup. 861 00:36:18,360 --> 00:36:21,940 Morate biti u mogućnosti da samo ići na taj srednji element. 862 00:36:21,940 --> 00:36:25,110 Ako imate proći kroz nešto 863 00:36:25,110 --> 00:36:28,630 ili je potrebno vam dodatne korake doći do tog srednjeg elementa, 864 00:36:28,630 --> 00:36:31,750 to nije prijavite n više jer dodajete više posla u nju. 865 00:36:31,750 --> 00:36:34,800 A to će učiniti malo više smisla u dva tjedna, 866 00:36:34,800 --> 00:36:37,950 ali ja samo vrsta želio predgovor, daju ti dečki ideju o tome što je 867 00:36:37,950 --> 00:36:38,999 doći. 868 00:36:38,999 --> 00:36:40,790 No, to su dva važne pretpostavke 869 00:36:40,790 --> 00:36:44,804 što vam je potrebno za binarnom popis. 870 00:36:44,804 --> 00:36:45,720 Uvjerite se da je riješeno. 871 00:36:45,720 --> 00:36:47,920 To je jedan veliki za vi upravo sada. 872 00:36:47,920 --> 00:36:52,170 A na koje možemo ići u Ostatak naših sorti. 873 00:36:52,170 --> 00:36:56,444 Dakle, četiri sorts-- mjehur, umetanje, odabir i pisma. 874 00:36:56,444 --> 00:36:57,485 Svi su oni vrsta cool. 875 00:36:57,485 --> 00:37:02,860 Ako vi odlučite uzeti CS 124, ćete saznati sve o svim vrstama vrsta. 876 00:37:02,860 --> 00:37:07,575 A ako ste xkcd ventilator, postoji je stvarno cool strip o 877 00:37:07,575 --> 00:37:11,530 kao što je stvarno neučinkovitih sorti, koje sam Preporučujemo ćete pogledati. 878 00:37:11,530 --> 00:37:16,170 Jedan od njih je poput panike vrste, koji je kao, oh ne, vratite slučajan niz. 879 00:37:16,170 --> 00:37:16,991 Isključenje sustava. 880 00:37:16,991 --> 00:37:17,490 Ostavite. 881 00:37:17,490 --> 00:37:19,070 882 00:37:19,070 --> 00:37:21,500 Dakle geeky humor je uvijek dobro. 883 00:37:21,500 --> 00:37:22,620 884 00:37:22,620 --> 00:37:25,750 >> Tako se bilo tko sjetiti kakav poput samo opće ideje 885 00:37:25,750 --> 00:37:27,810 koliko mjehurića vrsta radi. 886 00:37:27,810 --> 00:37:31,130 887 00:37:31,130 --> 00:37:32,155 Sjećate se? 888 00:37:32,155 --> 00:37:32,755 >> UČENIK: Da. 889 00:37:32,755 --> 00:37:33,970 >> INSTRUKTOR: Idi za to. 890 00:37:33,970 --> 00:37:38,980 >> UČENIK: Znači idete kroz i ako je veći, onda ste zamijeniti dva. 891 00:37:38,980 --> 00:37:39,820 >> INSTRUKTOR: Aha. 892 00:37:39,820 --> 00:37:40,564 Točno. 893 00:37:40,564 --> 00:37:41,730 Dakle, vi samo ponoviti kroz. 894 00:37:41,730 --> 00:37:43,050 Možete provjeriti dva broja. 895 00:37:43,050 --> 00:37:46,510 Ako jedan prije je veći od one nakon toga, 896 00:37:46,510 --> 00:37:50,230 samo ih mijenjati, tako da je u na taj način sve većem broju 897 00:37:50,230 --> 00:37:54,990 mjehurić prema kraju popisa i sve niže brojeve mjehur prema dolje. 898 00:37:54,990 --> 00:37:59,355 >> Je li vam pokazati dečki kul zvučni efekt sortiranje videa? 899 00:37:59,355 --> 00:38:00,480 To je vrsta cool. 900 00:38:00,480 --> 00:38:01,510 901 00:38:01,510 --> 00:38:05,200 Dakle, kao što je Robert upravo rekao, algoritma da ste samo korak po popisu, 902 00:38:05,200 --> 00:38:07,930 zamjene susjednih vrijednosti ako oni nisu u redu. 903 00:38:07,930 --> 00:38:10,975 I onda samo ponavljamo sve dok ne bi bilo swaps. 904 00:38:10,975 --> 00:38:11,990 905 00:38:11,990 --> 00:38:12,740 Pa nije loše, zar ne? 906 00:38:12,740 --> 00:38:14,080 907 00:38:14,080 --> 00:38:16,319 Tako smo nabrzinu primjer ovdje. 908 00:38:16,319 --> 00:38:18,360 Dakle, ovo će sortirati ih u uzlaznom redoslijedu. 909 00:38:18,360 --> 00:38:19,470 910 00:38:19,470 --> 00:38:23,470 Dakle, kada smo proći kroz prvi Vrijeme, gledamo kroz osam 911 00:38:23,470 --> 00:38:26,880 i šest očito nisu kako ćemo ih zamijeniti. 912 00:38:26,880 --> 00:38:27,985 >> Pa pogledajte sljedeću. 913 00:38:27,985 --> 00:38:29,430 Osam i četiri nije u redu. 914 00:38:29,430 --> 00:38:30,450 Mijenjati ih. 915 00:38:30,450 --> 00:38:32,530 A onda osam i dva, mijenjati ih. 916 00:38:32,530 --> 00:38:33,470 Tamo idemo. 917 00:38:33,470 --> 00:38:39,519 Dakle, nakon prvog prolaza, što znate da je vaš najveći broj 918 00:38:39,519 --> 00:38:41,810 će biti skroz na vrhu, jer to je samo 919 00:38:41,810 --> 00:38:44,210 će biti stalno veći od svega ostalog 920 00:38:44,210 --> 00:38:46,810 i to samo ide na balon se sve do kraja tamo. 921 00:38:46,810 --> 00:38:48,226 Da li to ima smisla svima? 922 00:38:48,226 --> 00:38:48,560 923 00:38:48,560 --> 00:38:49,060 Cool. 924 00:38:49,060 --> 00:38:51,310 925 00:38:51,310 --> 00:38:53,920 >> Pa onda gledamo u našem drugom prolazu. 926 00:38:53,920 --> 00:38:54,980 Šest i četiri, prekidač. 927 00:38:54,980 --> 00:38:55,920 Šest i dva, prekidač. 928 00:38:55,920 --> 00:38:58,700 I sada imamo nekoliko stvari u red. 929 00:38:58,700 --> 00:39:02,240 Dakle, za svaki pass da mi bi se kroz cijelu našu listu, 930 00:39:02,240 --> 00:39:06,320 znamo da kao što je to mnogo brojeva na kraju će biti razvrstani. 931 00:39:06,320 --> 00:39:07,690 932 00:39:07,690 --> 00:39:09,610 Tako smo napraviti treću loptu, koja je jedna zamjena. 933 00:39:09,610 --> 00:39:10,860 934 00:39:10,860 --> 00:39:15,910 A onda se na naš četvrti prolaze, imamo nula utora. 935 00:39:15,910 --> 00:39:18,570 I tako znamo da je naš Niz je riješeno. 936 00:39:18,570 --> 00:39:20,900 >> I to je velika stvar s mjehur vrste. 937 00:39:20,900 --> 00:39:23,720 Mi znamo da kad smo ima nula swaps, da 938 00:39:23,720 --> 00:39:26,497 znači da je sve je u potpunoj red. 939 00:39:26,497 --> 00:39:27,580 To je vrsta kako smo provjerili. 940 00:39:27,580 --> 00:39:28,740 941 00:39:28,740 --> 00:39:36,480 Dakle, mi također ide to kod mjehurić vrsta što također nije loše. 942 00:39:36,480 --> 00:39:38,120 Nijedan od njih su tako loše. 943 00:39:38,120 --> 00:39:40,210 Znam da mogu činiti pomalo zastrašujuće. 944 00:39:40,210 --> 00:39:42,124 Znam kad sam uzeo klase, čak i kada sam 945 00:39:42,124 --> 00:39:44,290 predavao klase za Prvi put prošle godine, 946 00:39:44,290 --> 00:39:46,165 Ja se kao, kako mogu to učiniti? 947 00:39:46,165 --> 00:39:48,540 To ima smisla u teoriji, ali Kako mi zapravo to učiniti? 948 00:39:48,540 --> 00:39:51,420 Koji je razlog zašto sam i želim hodati putem koda s vama ovdje. 949 00:39:51,420 --> 00:39:54,915 Dakle, imam Pseudokod za vas dečki ovaj put. 950 00:39:54,915 --> 00:39:55,950 951 00:39:55,950 --> 00:39:58,970 Dakle, samo imajte to na umu smo Prenijet više. 952 00:39:58,970 --> 00:40:04,210 Dakle, imamo neki brojač koji prati naših swapova, 953 00:40:04,210 --> 00:40:08,370 zato moramo biti sigurni da mi provjere da. 954 00:40:08,370 --> 00:40:11,830 A mi ponoviti cijeli niz kao što smo upravo učinili s ovom primjeru. 955 00:40:11,830 --> 00:40:12,900 956 00:40:12,900 --> 00:40:17,325 Ako se element prije nego je veći od Element Nakon gdje smo na, 957 00:40:17,325 --> 00:40:20,760 možemo ih mijenjati i mi povećajte našu stranicu Brojač jer čim smo mijenjati, 958 00:40:20,760 --> 00:40:23,850 želimo da naš brojač znati. 959 00:40:23,850 --> 00:40:26,247 Bilo kakva pitanja tamo? 960 00:40:26,247 --> 00:40:27,580 Nešto se čini smiješno ovamo. 961 00:40:27,580 --> 00:40:29,225 962 00:40:29,225 --> 00:40:32,350 UČENIK: Da li postaviti brojač na nulu svaki put kad ide kroz petlju? 963 00:40:32,350 --> 00:40:34,339 Ne možete zadržati ide natrag na nulu svaki put? 964 00:40:34,339 --> 00:40:35,505 INSTRUKTOR: Ne nužno. 965 00:40:35,505 --> 00:40:39,710 Dakle, ono što se događa je idemo ovuda. 966 00:40:39,710 --> 00:40:43,830 Tako raditi dok, ne zaboravite, ovo će izvršiti jednom bez iznimke. 967 00:40:43,830 --> 00:40:46,480 Dakle, to će postaviti brojač jednak nuli, 968 00:40:46,480 --> 00:40:48,070 onda će se ponoviti kroz. 969 00:40:48,070 --> 00:40:50,590 Kao što iterira putem, to će ažurirati brojač. 970 00:40:50,590 --> 00:40:51,870 971 00:40:51,870 --> 00:40:56,900 Kako se ažurira brojač, kada se to radi, kada je stigao do kraja niza, 972 00:40:56,900 --> 00:41:00,830 Ako nije razvrstani naš popis, Brojač će biti ažurirana. 973 00:41:00,830 --> 00:41:01,840 974 00:41:01,840 --> 00:41:07,150 >> Pa onda provjerava stanje i kaže, u redu, je brojač veći od nule. 975 00:41:07,150 --> 00:41:09,290 Ako je, to učiniti opet. 976 00:41:09,290 --> 00:41:14,340 Želite resetirati, tako da kad vas proći kroz, brojač je jednaka nuli. 977 00:41:14,340 --> 00:41:18,240 Ako idete kroz sortirati Niz, ništa se ne mijenja, 978 00:41:18,240 --> 00:41:21,355 to ne uspije, a vi povratak na popis sortiran. 979 00:41:21,355 --> 00:41:23,104 980 00:41:23,104 --> 00:41:24,020 Da li to smisla? 981 00:41:24,020 --> 00:41:24,940 982 00:41:24,940 --> 00:41:26,356 STUDENT: To bi moglo u malo. 983 00:41:26,356 --> 00:41:27,147 INSTRUKTOR: U redu. 984 00:41:27,147 --> 00:41:28,980 Ako postoji bilo koji drugi Pitanje koje dolazi. 985 00:41:28,980 --> 00:41:30,180 986 00:41:30,180 --> 00:41:30,680 Da. 987 00:41:30,680 --> 00:41:33,760 >> UČENIK: Što bi funkcija biti za zamjene elemenata? 988 00:41:33,760 --> 00:41:36,900 >> INSTRUKTOR: Dakle, mi zapravo može pisati da, ako ćemo upravo sada. 989 00:41:36,900 --> 00:41:37,801 990 00:41:37,801 --> 00:41:38,300 Cool. 991 00:41:38,300 --> 00:41:42,155 Dakle, na toj bilješci, Alison se događa prebaciti natrag na aparat. 992 00:41:42,155 --> 00:41:43,080 To će biti zabavno. 993 00:41:43,080 --> 00:41:45,170 994 00:41:45,170 --> 00:41:47,390 I mi imamo lijepo mjehurić vrsta stvar ovdje. 995 00:41:47,390 --> 00:41:50,800 Tako sam već učinio biciklizam kroz niz. 996 00:41:50,800 --> 00:41:53,030 Mi imamo swaps da jednake nuli. 997 00:41:53,030 --> 00:41:54,480 998 00:41:54,480 --> 00:41:58,440 Dakle, želimo mijenjati u susjedstvu elemente, ako oni iz reda. 999 00:41:58,440 --> 00:42:03,020 Dakle, prva stvar koju moramo nemojte se ponoviti kroz naše polje. 1000 00:42:03,020 --> 00:42:04,500 1001 00:42:04,500 --> 00:42:08,260 >> Pa kako misliš da bismo mogli ponoviti kroz naše ponude? 1002 00:42:08,260 --> 00:42:09,720 1003 00:42:09,720 --> 00:42:13,990 Imamo za i ja jednak 0. 1004 00:42:13,990 --> 00:42:16,950 1005 00:42:16,950 --> 00:42:22,454 Želimo i da se manje od n minus 1 minus k. 1006 00:42:22,454 --> 00:42:23,870 A ja ću objasniti da u sekundi. 1007 00:42:23,870 --> 00:42:26,280 1008 00:42:26,280 --> 00:42:32,830 Dakle, ovo je optimizacija ovdje gdje je, sjećam se kako sam rekao nakon svakog igrača 1009 00:42:32,830 --> 00:42:36,655 kroz polja i mi znam da sve što je on-- 1010 00:42:36,655 --> 00:42:43,590 1011 00:42:43,590 --> 00:42:46,295 >> Dakle, nakon što jednom prolazu smo znam da je to riješeno. 1012 00:42:46,295 --> 00:42:47,370 1013 00:42:47,370 --> 00:42:50,060 Nakon dva prolaza znamo da je sve to riješeno. 1014 00:42:50,060 --> 00:42:52,750 Nakon tri prolaza smo znam da je riješeno. 1015 00:42:52,750 --> 00:42:55,620 Dakle, na koji način sam iterating kroz niz ovdje, 1016 00:42:55,620 --> 00:43:01,090 je to pazeći da samo ide kroz ono što znamo je nesortiran. 1017 00:43:01,090 --> 00:43:01,644 OK? 1018 00:43:01,644 --> 00:43:02,810 To je samo optimizacije. 1019 00:43:02,810 --> 00:43:04,430 1020 00:43:04,430 --> 00:43:08,210 Ti bi mogao napisati samo naivno iterating kroz sve, 1021 00:43:08,210 --> 00:43:09,970 to bi samo potrajati duže. 1022 00:43:09,970 --> 00:43:12,470 S ovim četiri petlje je Samo lijepo optimizacija 1023 00:43:12,470 --> 00:43:18,460 jer znamo da nakon svake pune iteracija kroz niz ovdje, 1024 00:43:18,460 --> 00:43:24,050 Kao i svake punu petlju ovdje, znamo da je još jedan od tih elemenata 1025 00:43:24,050 --> 00:43:25,760 bit će razvrstani na kraju. 1026 00:43:25,760 --> 00:43:28,294 >> Dakle, ne morate brinuti o onima. 1027 00:43:28,294 --> 00:43:29,710 Da li to ima smisla svima? 1028 00:43:29,710 --> 00:43:30,950 To je super mali trik? 1029 00:43:30,950 --> 00:43:32,060 1030 00:43:32,060 --> 00:43:37,270 Dakle, u tom slučaju, ako je smo iterating putem, 1031 00:43:37,270 --> 00:43:50,590 znamo da želimo provjeriti je li Niz n i n plus 1 u redu. 1032 00:43:50,590 --> 00:43:52,640 1033 00:43:52,640 --> 00:43:53,559 U redu. 1034 00:43:53,559 --> 00:43:54,600 Dakle, ovdje je Pseudokod. 1035 00:43:54,600 --> 00:43:57,540 Želimo da provjerite je li niz n i n plus 1 u redu. 1036 00:43:57,540 --> 00:43:59,520 Pa što bi moglo imamo tamo? 1037 00:43:59,520 --> 00:44:01,090 1038 00:44:01,090 --> 00:44:03,120 To će biti neki uvjetno. 1039 00:44:03,120 --> 00:44:04,220 To će biti, ako. 1040 00:44:04,220 --> 00:44:07,066 >> UČENIK: Ako je niz n manje od niza n plus 1. 1041 00:44:07,066 --> 00:44:07,816 INSTRUKTOR: Aha. 1042 00:44:07,816 --> 00:44:09,000 1043 00:44:09,000 --> 00:44:10,699 Dakle, manja ili veća od. 1044 00:44:10,699 --> 00:44:11,615 UČENIK: Veće. 1045 00:44:11,615 --> 00:44:15,850 1046 00:44:15,850 --> 00:44:17,620 Tada želimo ih mijenjati. 1047 00:44:17,620 --> 00:44:18,570 Točno. 1048 00:44:18,570 --> 00:44:23,570 Dakle, sada smo dobili u ono što je mehanizam za njih zamjene? 1049 00:44:23,570 --> 00:44:24,840 1050 00:44:24,840 --> 00:44:28,137 Tako smo prošli kroz ovaj kratko, vrsta swapu funkcije prošlog tjedna. 1051 00:44:28,137 --> 00:44:29,595 Se bilo tko sjetiti kako je to radio? 1052 00:44:29,595 --> 00:44:32,300 1053 00:44:32,300 --> 00:44:34,950 Dakle, ne možemo ih samo preraspodijeliti, zar ne? 1054 00:44:34,950 --> 00:44:36,640 Budući da je jedan od njih će izgubiti. 1055 00:44:36,640 --> 00:44:41,696 Ako smo rekli jednaka do točke B, a zatim B jednaka je A, sve odjednom obojica 1056 00:44:41,696 --> 00:44:43,150 samo su jednaka B. 1057 00:44:43,150 --> 00:44:45,720 >> Dakle, ono što moramo učiniti je da imaju privremenu varijablu koja je 1058 00:44:45,720 --> 00:44:49,055 će održati jedan od naših vrijeme mi smo u procesu zamjene. 1059 00:44:49,055 --> 00:44:50,200 1060 00:44:50,200 --> 00:44:56,464 Dakle, ono što imamo je da ćemo imati neki int temp jednaka to-- možete ga dodijeliti 1061 00:44:56,464 --> 00:44:59,130 na koji god želite, samo pobrinite se da pratimo it-- 1062 00:44:59,130 --> 00:45:01,840 tako da u ovom slučaju, ja ću dodijeliti je niz n plus 1. 1063 00:45:01,840 --> 00:45:03,360 1064 00:45:03,360 --> 00:45:07,674 Tako da će se održati bez obzira na Vrijednost je u tom drugom bloku 1065 00:45:07,674 --> 00:45:08,590 da gledamo. 1066 00:45:08,590 --> 00:45:09,700 1067 00:45:09,700 --> 00:45:13,240 >> A onda možemo učiniti je da možemo ići naprijed i preraspodijeliti niz n plus 1, 1068 00:45:13,240 --> 00:45:14,990 jer mi znamo ima tu vrijednost pohranjena. 1069 00:45:14,990 --> 00:45:16,645 1070 00:45:16,645 --> 00:45:19,270 To je također jedan od velikih things-- Ne znam je li itko od vas 1071 00:45:19,270 --> 00:45:23,780 imali problema gdje ako prebaciti dva linija koda odjednom stvari radio. 1072 00:45:23,780 --> 00:45:25,880 Narudžba je vrlo važno u CS. 1073 00:45:25,880 --> 00:45:29,450 Dakle, budite sigurni da dijagram stvari se ako je moguće 1074 00:45:29,450 --> 00:45:31,230 o tome što se zapravo događa. 1075 00:45:31,230 --> 00:45:34,256 Dakle, sada ćemo preraspodijeliti array n plus 1, 1076 00:45:34,256 --> 00:45:36,005 jer mi znamo ima tu vrijednost pohranjena. 1077 00:45:36,005 --> 00:45:37,090 1078 00:45:37,090 --> 00:45:41,560 >> I možemo dodijeliti da je niz n ili u ovom slučaju niz sam. 1079 00:45:41,560 --> 00:45:50,540 1080 00:45:50,540 --> 00:45:51,465 Previše varijabli. 1081 00:45:51,465 --> 00:45:54,230 1082 00:45:54,230 --> 00:45:55,470 U redu. 1083 00:45:55,470 --> 00:46:01,500 Dakle, sada smo rasporediti niz I. plus 1 jednaka što je u nizu i. 1084 00:46:01,500 --> 00:46:08,240 A sada možemo vratiti i dodijeliti niz I Za što? 1085 00:46:08,240 --> 00:46:10,680 1086 00:46:10,680 --> 00:46:11,180 Svatko? 1087 00:46:11,180 --> 00:46:13,490 1088 00:46:13,490 --> 00:46:14,010 >> UČENIK: 10. 1089 00:46:14,010 --> 00:46:14,680 >> INSTRUKTOR: 10. 1090 00:46:14,680 --> 00:46:15,180 Točno. 1091 00:46:15,180 --> 00:46:16,930 1092 00:46:16,930 --> 00:46:18,640 I jedna posljednja stvar. 1093 00:46:18,640 --> 00:46:21,840 Ako smo ga zamijenili sada, ono što trebamo učiniti? 1094 00:46:21,840 --> 00:46:23,740 Što je jedna stvar što će nam reći 1095 00:46:23,740 --> 00:46:27,542 Ako smo ikada raskinuti ovaj program? 1096 00:46:27,542 --> 00:46:29,250 Što nam govori da mi imate popis sortiran? 1097 00:46:29,250 --> 00:46:31,560 1098 00:46:31,560 --> 00:46:33,750 Ako ne obavljaju nikakve swapove, zar ne? 1099 00:46:33,750 --> 00:46:36,900 Ako swapova jednaka nula na kraju ovoga. 1100 00:46:36,900 --> 00:46:42,975 Dakle, kad god izvršiti zamjenu, kao i mi upravo učinio ovdje, želimo ažurirati swaps. 1101 00:46:42,975 --> 00:46:45,002 1102 00:46:45,002 --> 00:46:47,210 I znam da postoji Pitanje ranije o tome može li 1103 00:46:47,210 --> 00:46:49,689 koristiti nula ili jedan, umjesto od true ili false. 1104 00:46:49,689 --> 00:46:50,980 I to je ono što ovaj radi ovdje. 1105 00:46:50,980 --> 00:46:52,750 Dakle, to govori ako ne i swapove. 1106 00:46:52,750 --> 00:47:01,310 Dakle, ako swaps je nula, što sam uvijek is-- dobili moje istine i moji falses miješaju. 1107 00:47:01,310 --> 00:47:03,960 Želimo nas za procjenu da istina i nije. 1108 00:47:03,960 --> 00:47:07,680 1109 00:47:07,680 --> 00:47:09,630 Dakle, ako je nula, onda je lažna. 1110 00:47:09,630 --> 00:47:12,560 Ako ga negiraju s [? bang?] to postaje istina. 1111 00:47:12,560 --> 00:47:13,975 Pa onda ta crta izvršava. 1112 00:47:13,975 --> 00:47:15,060 1113 00:47:15,060 --> 00:47:17,370 >> Istine i lažna i nule i one poludi. 1114 00:47:17,370 --> 00:47:20,690 Samo ako se polako hoda kroz njega to će imati smisla. 1115 00:47:20,690 --> 00:47:23,320 Ali to je ono što ova mala Malo koda ovdje radi. 1116 00:47:23,320 --> 00:47:26,490 Dakle, to provjerava smo učinili sve swaps. 1117 00:47:26,490 --> 00:47:30,054 Dakle, ako je to ništa, osim nula, to će biti lažna 1118 00:47:30,054 --> 00:47:31,970 a cijela stvar je će ponovno izvršiti. 1119 00:47:31,970 --> 00:47:33,150 1120 00:47:33,150 --> 00:47:33,650 Cool? 1121 00:47:33,650 --> 00:47:34,660 1122 00:47:34,660 --> 00:47:36,000 >> UČENIK: Što pauze učiniti? 1123 00:47:36,000 --> 00:47:38,990 >> INSTRUKTOR: Break jednostavno break vas iz petlje. 1124 00:47:38,990 --> 00:47:41,570 Dakle, u ovom slučaju to bi baš kao i završiti program 1125 00:47:41,570 --> 00:47:43,828 i ti bi samo imati svoj popis sortiran. 1126 00:47:43,828 --> 00:47:44,536 UČENIK: Amazing. 1127 00:47:44,536 --> 00:47:48,094 1128 00:47:48,094 --> 00:47:49,010 INSTRUKTOR: Žao mi? 1129 00:47:49,010 --> 00:47:52,110 STUDENT: Zbog ranije smo koristili napisao 1 nad napisao nulu 1130 00:47:52,110 --> 00:47:54,170 prezentirati da ako koji će raditi ili ne. 1131 00:47:54,170 --> 00:47:54,878 >> INSTRUKTOR: Da. 1132 00:47:54,878 --> 00:47:56,410 Na taj način možete vratiti na nulu ili 1. 1133 00:47:56,410 --> 00:47:58,950 U ovom slučaju, jer smo zapravo nije radiš ništa s funkcijom, 1134 00:47:58,950 --> 00:48:00,150 mi samo želimo da razbiti. 1135 00:48:00,150 --> 00:48:02,680 Mi zapravo nije stalo do njega. 1136 00:48:02,680 --> 00:48:06,960 Kočnica je također dobar ako se koristi za razbijanje 1137 00:48:06,960 --> 00:48:10,710 od četiri petlje ili stanja koja ne želite zadržati izvršenje. 1138 00:48:10,710 --> 00:48:12,110 Potrebno je samo vas iz njih. 1139 00:48:12,110 --> 00:48:13,587 1140 00:48:13,587 --> 00:48:14,795 To je malo nijansom stvar. 1141 00:48:14,795 --> 00:48:16,737 1142 00:48:16,737 --> 00:48:18,445 Osjećam se kao da postoji puno ruku mahali, 1143 00:48:18,445 --> 00:48:19,740 kao što ćete saznati o tome uskoro. 1144 00:48:19,740 --> 00:48:20,955 >> No, saznat ćete o tome uskoro. 1145 00:48:20,955 --> 00:48:21,500 Obećavam. 1146 00:48:21,500 --> 00:48:22,670 1147 00:48:22,670 --> 00:48:23,170 U redu. 1148 00:48:23,170 --> 00:48:24,840 Dakle, nema svatko dobiti mjehur vrsta? 1149 00:48:24,840 --> 00:48:25,550 Nije loše. 1150 00:48:25,550 --> 00:48:31,910 Iteraciju kroz, mijenjati stvari pomoću temp varijablu, i svi smo si postavili tamo? 1151 00:48:31,910 --> 00:48:32,960 Cool. 1152 00:48:32,960 --> 00:48:34,080 Strašan. 1153 00:48:34,080 --> 00:48:34,807 U redu. 1154 00:48:34,807 --> 00:48:35,765 Natrag na PowerPoint. 1155 00:48:35,765 --> 00:48:38,140 1156 00:48:38,140 --> 00:48:40,130 Bilo kakva pitanja u cjelini O njima do sada? 1157 00:48:40,130 --> 00:48:41,200 1158 00:48:41,200 --> 00:48:41,700 Cool. 1159 00:48:41,700 --> 00:48:43,110 1160 00:48:43,110 --> 00:48:43,695 Mm-hm. 1161 00:48:43,695 --> 00:48:45,279 >> UČENIK: [nečujan] int glavna obično. 1162 00:48:45,279 --> 00:48:46,695 Imate li imati da za to? 1163 00:48:46,695 --> 00:48:48,400 1164 00:48:48,400 --> 00:48:53,550 >> INSTRUKTOR: Tako smo upravo bili u potrazi Upravo na stvarni sortiranje algoritma. 1165 00:48:53,550 --> 00:48:54,559 1166 00:48:54,559 --> 00:48:56,350 Ako ste ga imali u poput većeg programa, 1167 00:48:56,350 --> 00:48:57,891 ti bi imati int glavni negdje. 1168 00:48:57,891 --> 00:49:00,070 1169 00:49:00,070 --> 00:49:02,880 Ovisno o tome gdje vas koristiti ovaj algoritam, 1170 00:49:02,880 --> 00:49:05,860 da bi se utvrdilo što je se vratio po nju. 1171 00:49:05,860 --> 00:49:09,960 No, za naš slučaj, mi smo strogo gledajući kako se to zapravo 1172 00:49:09,960 --> 00:49:11,300 ponoviti kroz niz. 1173 00:49:11,300 --> 00:49:12,570 Dakle, ne brinite o tome. 1174 00:49:12,570 --> 00:49:14,150 1175 00:49:14,150 --> 00:49:19,830 >> Tako smo razgovarali o najboljem slučaju i najgore scenarije za binarno pretraživanje. 1176 00:49:19,830 --> 00:49:22,470 Dakle, to je također važno raditi da je za svaki od naših sorti. 1177 00:49:22,470 --> 00:49:24,200 1178 00:49:24,200 --> 00:49:27,560 Pa što misliš da je najgore Slučaj runtime bubble vrste? 1179 00:49:27,560 --> 00:49:29,560 1180 00:49:29,560 --> 00:49:30,700 Vi sjećaš se? 1181 00:49:30,700 --> 00:49:31,784 >> UČENIK: N minus 1. 1182 00:49:31,784 --> 00:49:32,700 INSTRUKTOR: N minus 1. 1183 00:49:32,700 --> 00:49:35,070 Dakle, to znači da postoje n minus 1 usporedbe. 1184 00:49:35,070 --> 00:49:40,060 Dakle, jedna stvar za shvatiti je da je na prvoj iteraciji 1185 00:49:40,060 --> 00:49:43,360 idemo putem, usporedimo to two-- tako da je 1. 1186 00:49:43,360 --> 00:49:46,685 Ove dvije, tri, četiri. 1187 00:49:46,685 --> 00:49:48,070 1188 00:49:48,070 --> 00:49:55,050 Tako je nakon jedne iteracije smo već četiri usporedbe. 1189 00:49:55,050 --> 00:49:58,230 Kad Govorim o izvođenja i n. 1190 00:49:58,230 --> 00:50:04,680 N predstavlja broj usporedbe kao funkcija kako mnogo elemenata 1191 00:50:04,680 --> 00:50:05,570 imamo. 1192 00:50:05,570 --> 00:50:06,430 OK? 1193 00:50:06,430 --> 00:50:08,860 >> Tako smo proći, imamo četiri. 1194 00:50:08,860 --> 00:50:11,780 Sljedeći put kada znate što mi ne znamo moraju voditi brigu o tome. 1195 00:50:11,780 --> 00:50:15,140 Usporedimo li ove dvije, ove dvije, ova dva, 1196 00:50:15,140 --> 00:50:20,050 a ako nismo imali tu optimizaciju s četiri petlje da sam napisao, 1197 00:50:20,050 --> 00:50:22,750 ti bi se usporedbom ovdje ionako. 1198 00:50:22,750 --> 00:50:26,170 Dakle, ti bi trebala trčanje kroz niz 1199 00:50:26,170 --> 00:50:34,380 i napraviti usporedbe n n puta, jer svaki put kad smo 1200 00:50:34,380 --> 00:50:36,670 prođite kroz to Razvrstavamo jednu stvar. 1201 00:50:36,670 --> 00:50:38,300 1202 00:50:38,300 --> 00:50:41,475 >> I svaki put kad prolaze kroz polje, izrađujemo n usporedbe. 1203 00:50:41,475 --> 00:50:42,920 1204 00:50:42,920 --> 00:50:46,330 Dakle, naš runtime za to je zapravo n kvadrat, koji je 1205 00:50:46,330 --> 00:50:48,400 je mnogo gore u našim prijavite kraj jer to 1206 00:50:48,400 --> 00:50:51,965 znači, ako smo imali četiri milijardu elemente, to je 1207 00:50:51,965 --> 00:50:55,260 će nam uzeti četiri milijarde kvadrat, umjesto 32. 1208 00:50:55,260 --> 00:51:01,240 Dakle, nije najbolji izvođenja, ali za neke stvari, 1209 00:51:01,240 --> 00:51:04,610 znate, ako ste u roku određeni niz elemenata 1210 00:51:04,610 --> 00:51:06,540 mjehurić vrsta može biti u redu koristiti. 1211 00:51:06,540 --> 00:51:07,530 >> U redu. 1212 00:51:07,530 --> 00:51:12,290 Tako je sada ono što je najbolje, runtime? 1213 00:51:12,290 --> 00:51:14,357 1214 00:51:14,357 --> 00:51:14,940 UČENIK: Nula? 1215 00:51:14,940 --> 00:51:16,420 Ili 1? 1216 00:51:16,420 --> 00:51:18,140 >> INSTRUKTOR: 1 Tako bi biti jedna usporedba. 1217 00:51:18,140 --> 00:51:19,114 Pravo. 1218 00:51:19,114 --> 00:51:20,002 >> UČENIK: N minus 1? 1219 00:51:20,002 --> 00:51:21,380 1220 00:51:21,380 --> 00:51:22,320 >> INSTRUKTOR: Dakle, da. 1221 00:51:22,320 --> 00:51:22,990 Tako n minus 1. 1222 00:51:22,990 --> 00:51:26,510 Kad god imate koncept kao što je n minus 1, skloni smo samo kap off 1223 00:51:26,510 --> 00:51:31,680 a mi samo reći n zato što imate usporediti svaku od these-- svakog para. 1224 00:51:31,680 --> 00:51:36,470 Dakle, to bi bilo n minus 1, što smo bismo samo reći je oko nje. 1225 00:51:36,470 --> 00:51:39,280 Kada ste se bave runtime, sve je u približna. 1226 00:51:39,280 --> 00:51:43,860 Tako dugo dok je eksponent točna, ti si prilično dobro. 1227 00:51:43,860 --> 00:51:45,700 >> To je kako se nositi s njom. 1228 00:51:45,700 --> 00:51:47,410 1229 00:51:47,410 --> 00:51:51,780 Tako da, najbolje n, koji znači da je popis već razvrstani, 1230 00:51:51,780 --> 00:51:54,320 a sve što radimo je trčanje kroz i provjerite da je to riješeno. 1231 00:51:54,320 --> 00:51:56,110 1232 00:51:56,110 --> 00:51:56,855 Cool. 1233 00:51:56,855 --> 00:51:57,355 U redu. 1234 00:51:57,355 --> 00:51:58,980 1235 00:51:58,980 --> 00:52:01,920 Dakle, kao što vidite ovdje, mi samo još neke grafove. 1236 00:52:01,920 --> 00:52:02,660 Tako n kvadrat. 1237 00:52:02,660 --> 00:52:03,780 1238 00:52:03,780 --> 00:52:05,120 Zabava. 1239 00:52:05,120 --> 00:52:09,730 Mnogo gore nego n kao što vidimo, i mnogo, mnogo gore nego log 2n. 1240 00:52:09,730 --> 00:52:12,060 I onda ćete također dobiti u log trupaca. 1241 00:52:12,060 --> 00:52:18,020 A ti uzeti 124, što se u kao što su log zvijezda, koja je kao lud. 1242 00:52:18,020 --> 00:52:20,172 Dakle, ako ste zainteresirani, pretraživanja dnevnik zvijezda. 1243 00:52:20,172 --> 00:52:20,880 To je vrsta zabave. 1244 00:52:20,880 --> 00:52:22,800 1245 00:52:22,800 --> 00:52:24,220 Dakle, imamo veliki grafikon. 1246 00:52:24,220 --> 00:52:25,360 1247 00:52:25,360 --> 00:52:28,720 Samo heads up, to divno grafikon imati 1248 00:52:28,720 --> 00:52:31,350 za svoj srednjem roku jer mi dugo da te pitam ove stanjuje. 1249 00:52:31,350 --> 00:52:36,090 Dakle, samo heads up, ima to na vašem srednjoročna na svom lijepo varati list 1250 00:52:36,090 --> 00:52:36,616 tamo. 1251 00:52:36,616 --> 00:52:37,990 Tako smo samo pogledao bubble vrste. 1252 00:52:37,990 --> 00:52:39,510 1253 00:52:39,510 --> 00:52:42,370 U najgorem slučaju, n kvadrat, najboljem slučaju, n. 1254 00:52:42,370 --> 00:52:43,367 1255 00:52:43,367 --> 00:52:44,950 A mi ćemo gledati na druge. 1256 00:52:44,950 --> 00:52:47,940 >> I kao što možete vidjeti, samo onaj koji uistinu dobro 1257 00:52:47,940 --> 00:52:50,910 je spajanje vrsta, koje ćemo dobiti u zašto. 1258 00:52:50,910 --> 00:52:52,690 1259 00:52:52,690 --> 00:52:55,215 Tako ćemo ići Sljedeći here-- odabir vrsta. 1260 00:52:55,215 --> 00:52:56,360 1261 00:52:56,360 --> 00:52:58,420 Se bilo tko sjetiti kako Izbor vrsta radio? 1262 00:52:58,420 --> 00:53:05,200 1263 00:53:05,200 --> 00:53:05,700 Idi za to. 1264 00:53:05,700 --> 00:53:08,210 >> UČENIK: Uglavnom prolaze red i stvoriti novi popis. 1265 00:53:08,210 --> 00:53:11,001 I baš kao što ste stavljajući elemente u, stavite ih na pravom mjestu 1266 00:53:11,001 --> 00:53:11,750 U novom popisu. 1267 00:53:11,750 --> 00:53:14,040 >> INSTRUKTOR: Tako da zvukovi više poput umetanja vrste. 1268 00:53:14,040 --> 00:53:15,040 Ali ti si jako blizu. 1269 00:53:15,040 --> 00:53:15,915 Oni su vrlo slični. 1270 00:53:15,915 --> 00:53:17,440 Čak i ja bi ih pomiješao ponekad. 1271 00:53:17,440 --> 00:53:18,981 Prije ovog poglavlja bio sam poput čekati. 1272 00:53:18,981 --> 00:53:20,130 1273 00:53:20,130 --> 00:53:20,630 U redu. 1274 00:53:20,630 --> 00:53:24,141 Dakle, ono što želite to je izbor vrsta, 1275 00:53:24,141 --> 00:53:25,890 način na koji se možete sjetiti o tome i na koji način 1276 00:53:25,890 --> 00:53:30,140 Ja bi bili sigurni Pokušavam ne dobiti ih pomiješali, je li prolazi kroz 1277 00:53:30,140 --> 00:53:33,280 i to odabire Najmanji broj i to 1278 00:53:33,280 --> 00:53:36,070 stavlja da je na početku svog popisa. 1279 00:53:36,070 --> 00:53:37,730 Ona ga zamijeni s tom prvom mjestu. 1280 00:53:37,730 --> 00:53:42,600 1281 00:53:42,600 --> 00:53:45,370 Oni su zapravo primjer za mene. 1282 00:53:45,370 --> 00:53:46,540 Strašan. 1283 00:53:46,540 --> 00:53:50,130 Tako je samo način da razmišljaju o it-- izbor sortiranje, odabir najmanju vrijednost. 1284 00:53:50,130 --> 00:53:51,940 A mi ćemo se prođite kroz primjer 1285 00:53:51,940 --> 00:53:55,320 mislim da će pomoći, jer Mislim vizuale uvijek pomoći. 1286 00:53:55,320 --> 00:53:58,510 Tako smo početi s nečim to je potpuno nesortiran. 1287 00:53:58,510 --> 00:54:00,730 Crveni će biti nesortiran, zeleni će biti riješeno. 1288 00:54:00,730 --> 00:54:02,190 Sve to će imati smisla u sekundi. 1289 00:54:02,190 --> 00:54:08,950 >> Tako smo proći i mi ponoviti od početka do kraja. 1290 00:54:08,950 --> 00:54:12,320 A mi kažemo, u redu, 2 naš najmanji broj. 1291 00:54:12,320 --> 00:54:15,680 Tako ćemo uzeti 2 i idemo kako biste ga premjestili ispred naše ponude 1292 00:54:15,680 --> 00:54:17,734 zato što je Najmanji broj imamo. 1293 00:54:17,734 --> 00:54:19,150 Dakle, to je ono što se to radi ovdje. 1294 00:54:19,150 --> 00:54:20,820 To samo će zamijeniti one dvije. 1295 00:54:20,820 --> 00:54:21,850 1296 00:54:21,850 --> 00:54:25,450 Dakle, sada smo razvrstani Dio te nesortiran dio. 1297 00:54:25,450 --> 00:54:27,810 A ono što je dobro zapamtiti oko odabira vrste 1298 00:54:27,810 --> 00:54:30,690 je mi smo samo odabir iz nerazvrstani dijela. 1299 00:54:30,690 --> 00:54:32,220 1300 00:54:32,220 --> 00:54:34,527 >> Sortirati dio ti samo ostaviti na miru. 1301 00:54:34,527 --> 00:54:35,660 Mm-hm? 1302 00:54:35,660 --> 00:54:38,452 >> UČENIK: Kako to znati što je Najmanji bez usporedbe 1303 00:54:38,452 --> 00:54:39,868 za svaku drugu vrijednost u polju. 1304 00:54:39,868 --> 00:54:41,250 INSTRUKTOR: To ne usporediti ga. 1305 00:54:41,250 --> 00:54:42,041 Volimo ga preskaču. 1306 00:54:42,041 --> 00:54:43,850 Ovo je samo općenito u ukupnom poretku. 1307 00:54:43,850 --> 00:54:44,831 Da. 1308 00:54:44,831 --> 00:54:47,205 Kad pišemo kod ja sam sigurni da ćete biti zadovoljni. 1309 00:54:47,205 --> 00:54:48,696 1310 00:54:48,696 --> 00:54:53,030 Ali ti to pohraniti prvi Element kao najmanji. 1311 00:54:53,030 --> 00:54:56,110 Možete usporediti i vi kažu, u redu, to je manja? 1312 00:54:56,110 --> 00:54:56,660 Da. 1313 00:54:56,660 --> 00:54:57,460 Držite ga. 1314 00:54:57,460 --> 00:54:58,640 Ovdje je to manja? 1315 00:54:58,640 --> 00:54:59,660 Ne? 1316 00:54:59,660 --> 00:55:02,510 >> Ovo je tvoj najmanji, ga preraspodijeliti na svoju vrijednost. 1317 00:55:02,510 --> 00:55:06,340 A vi ćete biti puno sretniji kad idemo kroz kod. 1318 00:55:06,340 --> 00:55:07,510 1319 00:55:07,510 --> 00:55:13,970 Tako smo proći, možemo ga mijenjati, pa onda gledamo ovom nerazvrstani dio. 1320 00:55:13,970 --> 00:55:15,810 Tako ćemo odabrati tri out. 1321 00:55:15,810 --> 00:55:18,890 Mi ćemo ga staviti na po kraj našeg sortiranog dijela. 1322 00:55:18,890 --> 00:55:20,267 1323 00:55:20,267 --> 00:55:23,100 I samo ćemo se držati događaj da, da radi i da radi. 1324 00:55:23,100 --> 00:55:24,130 1325 00:55:24,130 --> 00:55:27,420 Dakle, ovo je naša vrsta Pseudokod ovdje. 1326 00:55:27,420 --> 00:55:29,470 1327 00:55:29,470 --> 00:55:31,380 Mi ćemo ga kod ovdje u sekundi. 1328 00:55:31,380 --> 00:55:34,140 1329 00:55:34,140 --> 00:55:37,270 Ali samo nešto hodati putem na visokoj razini. 1330 00:55:37,270 --> 00:55:40,275 Ti ćeš otići iz ja jednak 0 do n minus 2. 1331 00:55:40,275 --> 00:55:41,570 1332 00:55:41,570 --> 00:55:43,530 To je još jedna optimizacije. 1333 00:55:43,530 --> 00:55:45,020 Ne brinite previše o tome. 1334 00:55:45,020 --> 00:55:46,620 Dakle, kao što ste rekli. 1335 00:55:46,620 --> 00:55:49,660 1336 00:55:49,660 --> 00:55:54,406 Kao što je Jakov je govorio, kako radimo pratiti što naša minimalna je? 1337 00:55:54,406 --> 00:55:55,030 Kako ćemo znati? 1338 00:55:55,030 --> 00:55:57,060 Imamo za usporedbu sve što je u našoj listi. 1339 00:55:57,060 --> 00:55:59,600 >> Dakle, minimalno jednak ja. 1340 00:55:59,600 --> 00:56:03,870 To samo govori u ovom slučaju Indeks naše minimalne vrijednosti. 1341 00:56:03,870 --> 00:56:07,660 Pa onda će to ponoviti kroz i to ide od j jednak i plus 1. 1342 00:56:07,660 --> 00:56:11,420 Dakle, mi već znamo da to je naš prvi element. 1343 00:56:11,420 --> 00:56:13,240 Ne moramo ga usporediti sebe. 1344 00:56:13,240 --> 00:56:16,970 Tako ćemo početi uspoređujući ga sljedeći onaj koji je razlog zašto je i plus 1 do n 1345 00:56:16,970 --> 00:56:20,110 minus 1, koji je kraj niza tamo. 1346 00:56:20,110 --> 00:56:25,090 I rekli smo, ako niz u j je manji od polja min, 1347 00:56:25,090 --> 00:56:29,200 onda ćemo preraspodijeliti gdje naši minimalni indeksi je. 1348 00:56:29,200 --> 00:56:37,470 >> A ako min nije jednak i, što je u kojoj smo ponovno ovdje. 1349 00:56:37,470 --> 00:56:38,950 1350 00:56:38,950 --> 00:56:41,790 Dakle, kao kad smo prvi put je ovaj jedan. 1351 00:56:41,790 --> 00:56:49,310 U ovom slučaju, to bi započeti u nula, to bi završiti kao dva. 1352 00:56:49,310 --> 00:56:53,010 Dakle min ne bi jednak i na kraju. 1353 00:56:53,010 --> 00:56:55,720 To omogućuje nam da moramo ih mijenjati. 1354 00:56:55,720 --> 00:56:57,420 1355 00:56:57,420 --> 00:57:00,470 Osjećam se kao konkretan primjer pomoći će mnogo više od toga. 1356 00:57:00,470 --> 00:57:04,970 Tako ću kodirati ovaj gore s vama upravo sada i mislim da će biti bolje. 1357 00:57:04,970 --> 00:57:07,380 1358 00:57:07,380 --> 00:57:11,350 >> Vrste imaju tendenciju da rade na taj način da se u to je često bolje samo da ih vidim. 1359 00:57:11,350 --> 00:57:12,780 1360 00:57:12,780 --> 00:57:17,280 Dakle, ono što želimo učiniti je prvo želim najmanji 1361 00:57:17,280 --> 00:57:19,890 Element u položaj u nizu. 1362 00:57:19,890 --> 00:57:21,280 Točno ono što Jakov govori. 1363 00:57:21,280 --> 00:57:23,090 Morate spremiti da nekako. 1364 00:57:23,090 --> 00:57:25,900 Tako ćemo započeti ovdje iterating preko polja. 1365 00:57:25,900 --> 00:57:28,970 Idemo reći da je naš Prvi je samo početak. 1366 00:57:28,970 --> 00:57:38,308 Tako ćemo imati int Najmanji je jednaka polja na i. 1367 00:57:38,308 --> 00:57:40,500 1368 00:57:40,500 --> 00:57:45,050 >> Dakle, jedna stvar za primijetiti, svaka put ove petlje izvršava, 1369 00:57:45,050 --> 00:57:48,550 mi smo početkom korak dalje zajedno. 1370 00:57:48,550 --> 00:57:54,780 1371 00:57:54,780 --> 00:57:57,440 Kad počnemo gledamo ove. 1372 00:57:57,440 --> 00:58:00,840 Sljedeći put ćemo ponoviti kroz, mi smo početkom u ovom jednom 1373 00:58:00,840 --> 00:58:02,680 i to je naša najmanja vrijednost dodjeljivanje. 1374 00:58:02,680 --> 00:58:10,450 Dakle, to je vrlo sličan bubble vrste gdje smo znali da nakon jednom prolazu, 1375 00:58:10,450 --> 00:58:11,700 ovaj zadnji element razvrstani. 1376 00:58:11,700 --> 00:58:12,810 1377 00:58:12,810 --> 00:58:15,120 Uz odabir vrste, to je upravo suprotno. 1378 00:58:15,120 --> 00:58:18,950 >> U svakom prolazu, znamo da Prvi je riješeno. 1379 00:58:18,950 --> 00:58:21,360 Nakon drugog prolaza, Druga će biti riješeno. 1380 00:58:21,360 --> 00:58:26,470 I kao što ste vidjeli na primjerima slajd, naš razvrstani dio samo raste. 1381 00:58:26,470 --> 00:58:34,020 Tako postavljanjem naš najmanji na polja i sve to radi 1382 00:58:34,020 --> 00:58:37,340 stežuća je ono što gledamo kako 1383 00:58:37,340 --> 00:58:40,164 smanjiti broj usporedaba ćemo napraviti. 1384 00:58:40,164 --> 00:58:41,770 Je li to smisla svima? 1385 00:58:41,770 --> 00:58:42,920 1386 00:58:42,920 --> 00:58:46,380 Da li mi je potrebna za pokretanje kroz to opet sporije ili u različitim riječima? 1387 00:58:46,380 --> 00:58:47,180 Ja sam sretan. 1388 00:58:47,180 --> 00:58:48,095 1389 00:58:48,095 --> 00:58:48,595 U redu. 1390 00:58:48,595 --> 00:58:50,060 1391 00:58:50,060 --> 00:58:55,540 >> Tako smo skladištenje vrijednost u ovom trenutku, 1392 00:58:55,540 --> 00:58:57,840 ali mi također želimo pohraniti indeksa. 1393 00:58:57,840 --> 00:59:01,010 Tako ćemo pohraniti položaj najmanji 1394 00:59:01,010 --> 00:59:02,770 jedan, koji je upravo će biti ja. 1395 00:59:02,770 --> 00:59:04,357 1396 00:59:04,357 --> 00:59:05,440 Tako sada Jakov je zadovoljan. 1397 00:59:05,440 --> 00:59:06,870 Imamo stvari pohranjene. 1398 00:59:06,870 --> 00:59:08,240 1399 00:59:08,240 --> 00:59:11,870 A sada moramo gledati kroz nesortiran dio niza. 1400 00:59:11,870 --> 00:59:18,170 Dakle, u ovom slučaju to će biti naš nesortiran. 1401 00:59:18,170 --> 00:59:20,980 1402 00:59:20,980 --> 00:59:22,462 To je ja. 1403 00:59:22,462 --> 00:59:25,430 1404 00:59:25,430 --> 00:59:26,210 U redu. 1405 00:59:26,210 --> 00:59:30,040 >> Pa što ćemo učiniti će biti za petlju. 1406 00:59:30,040 --> 00:59:32,066 Kad god vam je potrebno ponoviti kroz niz, 1407 00:59:32,066 --> 00:59:33,440 vaš um mogao ići na petlju. 1408 00:59:33,440 --> 00:59:34,760 1409 00:59:34,760 --> 00:59:38,090 Tako je za neke int k equals-- što mislimo 1410 00:59:38,090 --> 00:59:39,700 k će jednaka za početak? 1411 00:59:39,700 --> 00:59:41,580 1412 00:59:41,580 --> 00:59:44,766 To je ono što smo postavili kao naš najmanji Vrijednost i želimo ga usporediti. 1413 00:59:44,766 --> 00:59:47,090 Što želimo usporediti ga? 1414 00:59:47,090 --> 00:59:48,730 To će biti taj sljedeći, zar ne? 1415 00:59:48,730 --> 00:59:53,200 Dakle, želimo k bi se vratiti u tvorničke da ja plus 1 za početak. 1416 00:59:53,200 --> 00:59:55,350 1417 00:59:55,350 --> 01:00:02,800 >> I želimo k u ovom slučaju smo Već su veličine pohranjene ovdje, 1418 01:00:02,800 --> 01:00:03,930 tako da mi samo može koristiti veličinu. 1419 01:00:03,930 --> 01:00:06,240 Veličina se veličina polja. 1420 01:00:06,240 --> 01:00:09,620 A mi samo želimo ažurirati k po jedan svaki put. 1421 01:00:09,620 --> 01:00:17,410 1422 01:00:17,410 --> 01:00:17,910 Cool. 1423 01:00:17,910 --> 01:00:19,650 1424 01:00:19,650 --> 01:00:23,430 Tako sada trebamo pronaći najmanji element ovdje. 1425 01:00:23,430 --> 01:00:24,470 1426 01:00:24,470 --> 01:00:31,380 Dakle, ako ćemo ponoviti kroz ćemo želim reći, ako je polje na k 1427 01:00:31,380 --> 01:00:37,080 manji od našeg najmanji value-- ovo je mjesto gdje smo zapravo 1428 01:00:37,080 --> 01:00:42,950 praćenje onoga što je Najmanji here-- 1429 01:00:42,950 --> 01:00:47,740 onda želimo preraspodijeliti ono što je naša najmanja vrijednost. 1430 01:00:47,740 --> 01:00:50,645 >> To znači da je, oh, mi smo iterating ovuda. 1431 01:00:50,645 --> 01:00:51,699 1432 01:00:51,699 --> 01:00:53,740 Bez obzira na vrijednost ovdje Nije naša najmanja stvar. 1433 01:00:53,740 --> 01:00:54,448 Mi to ne želimo. 1434 01:00:54,448 --> 01:00:56,100 Želimo ga preraspodijeliti. 1435 01:00:56,100 --> 01:01:02,050 Dakle, ako mi ga prenamjene, što učiniti mislite da bi moglo biti u ovom kodu ovdje? 1436 01:01:02,050 --> 01:01:04,160 Želimo preraspodijeliti Najmanji i položaj. 1437 01:01:04,160 --> 01:01:05,740 1438 01:01:05,740 --> 01:01:07,010 Dakle, ono što je sada najmanji? 1439 01:01:07,010 --> 01:01:08,422 1440 01:01:08,422 --> 01:01:09,130 UČENIK: Array k. 1441 01:01:09,130 --> 01:01:09,963 INSTRUKTOR: Array k. 1442 01:01:09,963 --> 01:01:13,480 1443 01:01:13,480 --> 01:01:15,956 A što je stav sada? 1444 01:01:15,956 --> 01:01:20,940 1445 01:01:20,940 --> 01:01:23,000 Što su indeksi naša najmanja vrijednost? 1446 01:01:23,000 --> 01:01:24,030 1447 01:01:24,030 --> 01:01:24,530 To je samo k. 1448 01:01:24,530 --> 01:01:25,690 1449 01:01:25,690 --> 01:01:27,790 Dakle polja k, k, oni podudaraju. 1450 01:01:27,790 --> 01:01:31,670 1451 01:01:31,670 --> 01:01:33,120 Zato smo htjeli da se preraspodijeliti. 1452 01:01:33,120 --> 01:01:34,390 1453 01:01:34,390 --> 01:01:39,950 A onda nakon što smo pronašli naš najmanji, tako da je na kraju to za petlje 1454 01:01:39,950 --> 01:01:45,100 Ovdje smo našli ono što naš najmanji vrijednost, pa smo samo ga zamijeniti. 1455 01:01:45,100 --> 01:01:47,100 1456 01:01:47,100 --> 01:01:50,816 U ovom slučaju, kao što kažu naši najmanja vrijednost ovdje. 1457 01:01:50,816 --> 01:01:51,940 To je naša najmanja vrijednost. 1458 01:01:51,940 --> 01:01:57,690 >> Mi samo želimo da ga zamijene mjesta, što je što je to zamjena funkcija na dnu 1459 01:01:57,690 --> 01:02:01,270 učinili, što smo upravo napisao gore zajedno prije par minuta. 1460 01:02:01,270 --> 01:02:02,775 Dakle, to bi trebalo izgledati poznato. 1461 01:02:02,775 --> 01:02:04,320 1462 01:02:04,320 --> 01:02:08,030 A onda će samo ponoviti kroz sve dok ne dosegne sve 1463 01:02:08,030 --> 01:02:13,100 do kraja, što znači da vas ima nula elemenata koji su nesortiran 1464 01:02:13,100 --> 01:02:14,800 a sve ostalo je riješeno. 1465 01:02:14,800 --> 01:02:16,216 1466 01:02:16,216 --> 01:02:16,715 Smisla? 1467 01:02:16,715 --> 01:02:18,010 1468 01:02:18,010 --> 01:02:19,280 Malo konkretnije? 1469 01:02:19,280 --> 01:02:19,990 Kod pomoć? 1470 01:02:19,990 --> 01:02:21,720 1471 01:02:21,720 --> 01:02:26,410 >> UČENIK: Za veličinu, nikada stvarno ga definirati ili ga promijeniti, 1472 01:02:26,410 --> 01:02:27,340 kako se to zna? 1473 01:02:27,340 --> 01:02:32,380 >> INSTRUKTOR: Dakle, jedna stvar primjetiti ovdje je veličina int. 1474 01:02:32,380 --> 01:02:35,680 Dakle, mi govorimo u ovom sort-- vrste je funkcija u ovom case-- je 1475 01:02:35,680 --> 01:02:40,770 Izbor vrsta, to je prošlo u funkciju. 1476 01:02:40,770 --> 01:02:43,460 Dakle, ako nije donesen u, što će učiniti nešto 1477 01:02:43,460 --> 01:02:47,840 kao i s duljinom niza ili će ponoviti kroz 1478 01:02:47,840 --> 01:02:49,390 pronaći duljinu. 1479 01:02:49,390 --> 01:02:52,680 Ali zato što je prošlo u, mi samo možemo ga koristiti. 1480 01:02:52,680 --> 01:02:55,720 Vi samo pretpostaviti da korisnik vam je dao valjanu veličinu koja 1481 01:02:55,720 --> 01:02:57,698 zapravo predstavlja veličina vašeg polja. 1482 01:02:57,698 --> 01:02:59,461 1483 01:02:59,461 --> 01:02:59,960 Cool? 1484 01:02:59,960 --> 01:03:01,610 1485 01:03:01,610 --> 01:03:05,870 >> Ako vi imate bilo kakvih problema s njima ili želite više prakse kodiranja vrste 1486 01:03:05,870 --> 01:03:08,050 na svoju ruku, trebali ići na study.cs50. 1487 01:03:08,050 --> 01:03:11,560 1488 01:03:11,560 --> 01:03:12,670 To je alat. 1489 01:03:12,670 --> 01:03:15,040 Oni imaju provjeru kako zapravo možete pisati. 1490 01:03:15,040 --> 01:03:16,180 Oni ne Pseudokod. 1491 01:03:16,180 --> 01:03:19,310 Oni imaju više videa i slajdove uključujući i one koje koristim ovdje. 1492 01:03:19,310 --> 01:03:23,150 Dakle, ako ste još uvijek osjeća malo fuzzy, pokušajte da se. 1493 01:03:23,150 --> 01:03:25,670 Kao i uvijek, dolaze razgovarati sa mnom, previše. 1494 01:03:25,670 --> 01:03:26,320 Pitanje? 1495 01:03:26,320 --> 01:03:28,611 >> UČENIK: Jeste li govoreći Veličina je prethodno definirano? 1496 01:03:28,611 --> 01:03:29,234 1497 01:03:29,234 --> 01:03:29,900 INSTRUKTOR: Da. 1498 01:03:29,900 --> 01:03:35,570 Veličina je prethodno definiran se ovdje u funkciji izjavi. 1499 01:03:35,570 --> 01:03:39,060 Dakle, pretpostavimo da je donesen u od strane korisnika, i Radi jednostavnosti, 1500 01:03:39,060 --> 01:03:41,896 ćemo pretpostaviti da Korisnik nam je dao točnu veličinu. 1501 01:03:41,896 --> 01:03:43,240 Cool. 1502 01:03:43,240 --> 01:03:44,390 Tako da je izbor vrsta. 1503 01:03:44,390 --> 01:03:45,590 1504 01:03:45,590 --> 01:03:47,640 Dečki, znam da učite puno danas. 1505 01:03:47,640 --> 01:03:49,710 To je gusta podataka za odjeljku. 1506 01:03:49,710 --> 01:03:51,880 1507 01:03:51,880 --> 01:03:57,340 Dakle s tim, idemo ići na umetanja vrste. 1508 01:03:57,340 --> 01:04:01,550 1509 01:04:01,550 --> 01:04:02,510 >> U redu. 1510 01:04:02,510 --> 01:04:06,100 Dakle, prije toga moramo napraviti naš runtime analiza ovdje. 1511 01:04:06,100 --> 01:04:10,190 Dakle, u najboljem slučaju, odobravaju od vas pokazali 1512 01:04:10,190 --> 01:04:11,960 stol sam već vrsta ga je dao daleko. 1513 01:04:11,960 --> 01:04:15,430 No najboljem slučaju izvođenja, što mi mislimo? 1514 01:04:15,430 --> 01:04:17,310 1515 01:04:17,310 --> 01:04:18,130 Sve riješeno. 1516 01:04:18,130 --> 01:04:21,040 1517 01:04:21,040 --> 01:04:22,070 N kvadrat. 1518 01:04:22,070 --> 01:04:24,780 Svatko ima objašnjenje zašto mislite? 1519 01:04:24,780 --> 01:04:29,060 1520 01:04:29,060 --> 01:04:30,519 >> UČENIK: Ti si usporedbom through-- 1521 01:04:30,519 --> 01:04:31,268 INSTRUKTOR: Upravo. 1522 01:04:31,268 --> 01:04:32,540 Vi uspoređujete kroz. 1523 01:04:32,540 --> 01:04:35,630 U svakoj iteraciji, iako mi smo to se smanjuje za jedan, 1524 01:04:35,630 --> 01:04:38,950 ste još uvijek u potrazi kroz sve kako bi pronašli najmanji jedan. 1525 01:04:38,950 --> 01:04:42,390 Pa čak i ako je vaš najmanja vrijednost ovdje na početku, 1526 01:04:42,390 --> 01:04:44,710 ti si još uvijek ga uspoređujući Protiv sve ostalo 1527 01:04:44,710 --> 01:04:46,550 kako bi bili sigurni da je najmanja stvar. 1528 01:04:46,550 --> 01:04:49,820 Tako ćete završiti trčanje kroz oko nje kvadrat puta. 1529 01:04:49,820 --> 01:04:51,090 1530 01:04:51,090 --> 01:04:51,590 U redu. 1531 01:04:51,590 --> 01:04:52,785 A što je najgori slučaj? 1532 01:04:52,785 --> 01:04:54,350 1533 01:04:54,350 --> 01:04:57,980 Također n kvadrat, jer ćeš da se radi tu istu proceduru. 1534 01:04:57,980 --> 01:05:01,670 Dakle, u ovom slučaju, izbor vrsta ima nešto 1535 01:05:01,670 --> 01:05:04,010 Tako ćemo i mi zovemo očekuje runtime. 1536 01:05:04,010 --> 01:05:07,400 Tako je u drugima, mi samo znamo Gornje i donje granice. 1537 01:05:07,400 --> 01:05:11,180 Ovisno o tome kako ludi našim Popis je ili kako nesortiran je, 1538 01:05:11,180 --> 01:05:15,350 oni variraju između n ili n kvadrata. 1539 01:05:15,350 --> 01:05:16,550 Ne znamo. 1540 01:05:16,550 --> 01:05:22,820 >> Ali zato izbor vrsta ima isti Najgori i najbolji slučaj, kako nam kaže da 1541 01:05:22,820 --> 01:05:25,880 bez obzira na vrstu ulaza smo ima, da li je u potpunosti 1542 01:05:25,880 --> 01:05:29,130 razvrstani ili potpuno obrnuti razvrstani, to je 1543 01:05:29,130 --> 01:05:30,740 će uzeti istu količinu vremena. 1544 01:05:30,740 --> 01:05:33,760 Dakle, u tom slučaju, ako vas sjećate iz našeg stola, 1545 01:05:33,760 --> 01:05:38,610 to je zapravo imao vrijednost koja ove dvije vrste nemaju, 1546 01:05:38,610 --> 01:05:40,390 što je očekivao runtime. 1547 01:05:40,390 --> 01:05:43,350 Dakle, mi znamo da kad god trčimo izbor vrsta, 1548 01:05:43,350 --> 01:05:45,380 to je zasigurno pokrenuti n kvadrat vrijeme. 1549 01:05:45,380 --> 01:05:46,630 Nema varijabilnost postoji. 1550 01:05:46,630 --> 01:05:47,630 To je samo što se očekivalo. 1551 01:05:47,630 --> 01:05:48,820 1552 01:05:48,820 --> 01:05:52,140 A, opet, ako želite naučiti više, uzeti CS 124 u proljeće. 1553 01:05:52,140 --> 01:05:55,370 1554 01:05:55,370 --> 01:05:56,712 U redu. 1555 01:05:56,712 --> 01:05:57,545 Vidjeli smo ovaj jedan. 1556 01:05:57,545 --> 01:05:58,530 1557 01:05:58,530 --> 01:05:59,030 Cool. 1558 01:05:59,030 --> 01:06:00,930 Dakle, umetanje sortiranje. 1559 01:06:00,930 --> 01:06:03,330 I ja sam vjerojatno idući da sjala kroz to. 1560 01:06:03,330 --> 01:06:05,440 Neću dopustiti da ti dečki to kodirati. 1561 01:06:05,440 --> 01:06:06,580 Samo ćemo prošetati kroz njega. 1562 01:06:06,580 --> 01:06:10,500 Dakle, umetanje vrsta je vrsta je slična odabira vrste 1563 01:06:10,500 --> 01:06:14,460 da smo oboje nesortiran i razvrstani dio niza. 1564 01:06:14,460 --> 01:06:20,260 >> No, ono što je drugačije je da kao što smo proći kroz jedan po jedan, 1565 01:06:20,260 --> 01:06:24,210 mi samo uzeti bez obzira na broj je sljedeći na naš nesortiran, 1566 01:06:24,210 --> 01:06:28,507 i točno to riješiti u našu sortiranog niza. 1567 01:06:28,507 --> 01:06:30,090 To će učiniti više smisla s primjerom. 1568 01:06:30,090 --> 01:06:31,140 1569 01:06:31,140 --> 01:06:35,430 Dakle, sve počinje kao nerazvrstani, Kao i kod odabira vrste. 1570 01:06:35,430 --> 01:06:38,740 A mi ćemo izdvojiti to najnoviji poredak kao što smo bili. 1571 01:06:38,740 --> 01:06:40,360 1572 01:06:40,360 --> 01:06:43,340 Dakle, na našem prvom prolazu uzmemo prvu vrijednost 1573 01:06:43,340 --> 01:06:46,700 a mi reći, ok, ti ​​si Sada na popisu po sebi. 1574 01:06:46,700 --> 01:06:49,150 >> Budući da ste u popisu po sebi, koju su razvrstani. 1575 01:06:49,150 --> 01:06:52,460 Čestitke za što Prvi element u tom nizu. 1576 01:06:52,460 --> 01:06:54,800 Vi ste već razvrstani sve na svoju ruku. 1577 01:06:54,800 --> 01:06:58,900 Dakle, sada smo razvrstani i nesortiran niz. 1578 01:06:58,900 --> 01:07:01,760 Dakle, sada smo se prvi put. 1579 01:07:01,760 --> 01:07:05,600 Što se događa između ovdje i ovdje je da kažemo, 1580 01:07:05,600 --> 01:07:08,890 U redu, idemo pogledati Prva vrijednost našeg nerazvrstani niza 1581 01:07:08,890 --> 01:07:13,270 a mi ćemo unijeti ga u svojoj točno mjesto u sortiranog niza. 1582 01:07:13,270 --> 01:07:21,460 >> Dakle, ono što mi se uzmemo 5 i kažemo, u redu, 5 veći od 3, 1583 01:07:21,460 --> 01:07:24,630 pa smo samo ga ubacite u pravu desno od toga. 1584 01:07:24,630 --> 01:07:25,130 Mi smo dobri. 1585 01:07:25,130 --> 01:07:26,200 1586 01:07:26,200 --> 01:07:28,420 Pa onda idemo na naš sljedeći jedan. 1587 01:07:28,420 --> 01:07:29,720 I uzmemo 2. 1588 01:07:29,720 --> 01:07:34,330 Kažemo, OK, 2 manje od 3, tako da znamo da je to 1589 01:07:34,330 --> 01:07:36,220 treba biti na Prednji dio našeg popisa sada. 1590 01:07:36,220 --> 01:07:41,800 Dakle, ono što mi radimo je da gurnuti 3 i 5 prema dolje i krećemo 2 u taj prvi utor. 1591 01:07:41,800 --> 01:07:42,990 1592 01:07:42,990 --> 01:07:45,870 Dakle, mi samo umetanja u točno mjesto bi trebao biti. 1593 01:07:45,870 --> 01:07:46,960 1594 01:07:46,960 --> 01:07:49,470 >> Onda gledamo naše Sljedeći, i kažemo 6. 1595 01:07:49,470 --> 01:07:53,620 OK, 6 je veća od sve što je u našoj sortiranog niza, 1596 01:07:53,620 --> 01:07:56,000 pa smo samo označiti na kraju. 1597 01:07:56,000 --> 01:07:56,960 I onda gledamo 4. 1598 01:07:56,960 --> 01:07:58,130 1599 01:07:58,130 --> 01:08:03,020 4 je manje od 6, to je manje od 5 ali je veći od 3. 1600 01:08:03,020 --> 01:08:06,270 Tako smo samo ga stavite izravno u Srednji između 3 i 5. 1601 01:08:06,270 --> 01:08:07,380 1602 01:08:07,380 --> 01:08:10,530 Dakle, da bi se to malo malo konkretniji, 1603 01:08:10,530 --> 01:08:12,280 Ovdje je vrsta Ideja o tome što se dogodilo. 1604 01:08:12,280 --> 01:08:16,430 Dakle, za svaki nerazvrstani elementa, mi odrediti gdje se u sortiranog dijela 1605 01:08:16,430 --> 01:08:17,090 je. 1606 01:08:17,090 --> 01:08:20,680 >> Dakle, imajući u vidu razvrstani i nesortiran, 1607 01:08:20,680 --> 01:08:26,080 moramo proći kroz te lik gdje se uklapa u sortiranog niza. 1608 01:08:26,080 --> 01:08:31,460 I mi ga ubacite prebacivanjem Elementi desno od njega dolje. 1609 01:08:31,460 --> 01:08:34,910 A onda smo samo zadržati iterating kroz sve mi 1610 01:08:34,910 --> 01:08:39,270 ima popis potpuno sortirani gdje nesortiran je sada nula 1611 01:08:39,270 --> 01:08:41,720 i sortirati zauzima cjelokupnost našeg popisa. 1612 01:08:41,720 --> 01:08:43,146 1613 01:08:43,146 --> 01:08:45,854 Dakle, još jednom, da bi stvari čak i konkretniji, imamo Pseudokod. 1614 01:08:45,854 --> 01:08:47,979 1615 01:08:47,979 --> 01:08:52,410 >> Tako je u osnovi za ja je jednak 0 do n minus 1, 1616 01:08:52,410 --> 01:08:54,790 to je samo duljina naše ponude. 1617 01:08:54,790 --> 01:09:00,979 Imamo neki element koji je jednak Prvi niz ili prvi indeksi. 1618 01:09:00,979 --> 01:09:03,200 Postavili smo j jednaka. 1619 01:09:03,200 --> 01:09:04,649 1620 01:09:04,649 --> 01:09:09,210 Dakle, dok j je veći od nula i niz, j minus 1 1621 01:09:09,210 --> 01:09:11,660 veći od Element, tako da sve što radi 1622 01:09:11,660 --> 01:09:17,479 je pazeći da Vaš j stvarno predstavlja 1623 01:09:17,479 --> 01:09:20,010 nesortiran dio polja. 1624 01:09:20,010 --> 01:09:30,745 >> Dakle, dok je još stvari sortiranje i j minus jedan is-- što 1625 01:09:30,745 --> 01:09:31,840 je element koji ju? 1626 01:09:31,840 --> 01:09:34,760 J nikad nije bio ovdje definirana. 1627 01:09:34,760 --> 01:09:35,677 To je vrsta neugodno. 1628 01:09:35,677 --> 01:09:36,176 U redu. 1629 01:09:36,176 --> 01:09:36,689 Uglavnom. 1630 01:09:36,689 --> 01:09:39,899 Tako j minus 1, koju provjeru Element pred njim. 1631 01:09:39,899 --> 01:09:46,460 Kažeš, u redu, je element Prije nego tamo gdje sam am-- neka je 1632 01:09:46,460 --> 01:09:47,540 zapravo izvući ovo. 1633 01:09:47,540 --> 01:09:52,580 1634 01:09:52,580 --> 01:09:56,830 Pa recimo da je ovo kao i na našem drugom prolazu. 1635 01:09:56,830 --> 01:09:59,525 Dakle, ja će biti jednaka na 1, što je ovdje. 1636 01:09:59,525 --> 01:10:03,310 1637 01:10:03,310 --> 01:10:06,025 >> Dakle, ja će biti jednaka 1. 1638 01:10:06,025 --> 01:10:09,510 1639 01:10:09,510 --> 01:10:13,702 To će biti 2, 4, 5, 6, 7, 1640 01:10:13,702 --> 01:10:16,060 1641 01:10:16,060 --> 01:10:16,750 U redu. 1642 01:10:16,750 --> 01:10:20,945 Tako je naš element u ovom slučaju će biti jednak 4. 1643 01:10:20,945 --> 01:10:22,110 1644 01:10:22,110 --> 01:10:24,946 I mi imamo neke j koji je će biti jednak 1. 1645 01:10:24,946 --> 01:10:29,770 1646 01:10:29,770 --> 01:10:30,971 Oh, j je se smanjuje. 1647 01:10:30,971 --> 01:10:31,720 To je ono što je. 1648 01:10:31,720 --> 01:10:35,680 Tako j je jednak i, pa što je ovo rekao je da kao i mi krenuti naprijed, 1649 01:10:35,680 --> 01:10:37,530 mi samo pazeći da nismo više 1650 01:10:37,530 --> 01:10:43,520 indeksiranje na ovaj način, kada pokušavamo umetnuti stvari u našem popisu poredani. 1651 01:10:43,520 --> 01:10:49,850 >> Dakle, kada j je 1, a u ovom slučaju Niz j minus one-- tako niz j minus 1 1652 01:10:49,850 --> 01:10:54,610 2 u ovom case-- ako je to veći od elementa, 1653 01:10:54,610 --> 01:10:57,700 onda sve to radi prebacuje stvari dolje. 1654 01:10:57,700 --> 01:11:04,790 Dakle, u ovom slučaju, niz j minus jedan bi niz nula, što je 2. 1655 01:11:04,790 --> 01:11:08,430 2 nije veći od 4, tako da to ne izvrši. 1656 01:11:08,430 --> 01:11:11,460 Dakle pomak ne pomiče prema dolje. 1657 01:11:11,460 --> 01:11:18,790 Što se ovo ovdje je samo pomicanjem sortirani niz prema dolje. 1658 01:11:18,790 --> 01:11:22,340 1659 01:11:22,340 --> 01:11:26,400 U tom slučaju, u stvari, da mogao do-- učinimo ovaj 3. 1660 01:11:26,400 --> 01:11:28,080 1661 01:11:28,080 --> 01:11:31,970 Dakle, ako smo u šetnju kroz s ovaj primjer, mi smo danas ovdje. 1662 01:11:31,970 --> 01:11:32,740 To je riješeno. 1663 01:11:32,740 --> 01:11:34,492 1664 01:11:34,492 --> 01:11:35,200 To je nesortiran. 1665 01:11:35,200 --> 01:11:39,090 1666 01:11:39,090 --> 01:11:39,860 Cool? 1667 01:11:39,860 --> 01:11:46,620 Tako da je jednak 2, tako naš element je jednak 3. 1668 01:11:46,620 --> 01:11:47,920 1669 01:11:47,920 --> 01:11:52,270 I naša j je jednak 2. 1670 01:11:52,270 --> 01:12:00,620 Tako smo i mi gledati kroz kažu, u redu je niz j minus jedan 1671 01:12:00,620 --> 01:12:03,470 veći od elementa da gledamo? 1672 01:12:03,470 --> 01:12:05,540 A odgovor je da, zar ne? 1673 01:12:05,540 --> 01:12:11,275 4 je veći od 3, a j 2, tako da je ovo kod izvršava. 1674 01:12:11,275 --> 01:12:12,510 1675 01:12:12,510 --> 01:12:18,550 >> I što sada radimo niz na 2, tako da upravo ovdje, možemo ih mijenjati. 1676 01:12:18,550 --> 01:12:25,620 Tako smo samo reći, OK, polje na 2 sada će biti 3. 1677 01:12:25,620 --> 01:12:28,130 1678 01:12:28,130 --> 01:12:32,340 A j će jednak j minus 1, koji je 1. 1679 01:12:32,340 --> 01:12:34,590 1680 01:12:34,590 --> 01:12:37,200 To je strašno, ali ti dečki dobiti ideju. 1681 01:12:37,200 --> 01:12:38,360 J je sada jednak 1. 1682 01:12:38,360 --> 01:12:44,360 I niz j samo će biti jednaka našoj elementa, koji je bio 4. 1683 01:12:44,360 --> 01:12:45,950 1684 01:12:45,950 --> 01:12:48,570 Ja izbrisani nešto što ne bi trebali imate ili miswrote nešto, 1685 01:12:48,570 --> 01:12:49,910 ali ti dečki dobiti ideju. 1686 01:12:49,910 --> 01:12:50,640 >> To premjestiti na n. 1687 01:12:50,640 --> 01:12:51,920 1688 01:12:51,920 --> 01:12:57,960 I onda kad bi to bilo, to bi petlje opet i to će reći, u redu, j je 1 danas. 1689 01:12:57,960 --> 01:13:00,665 I niz j minus 1 je sada 2. 1690 01:13:00,665 --> 01:13:01,750 1691 01:13:01,750 --> 01:13:03,760 Iznosi 2 manje od našeg elementa? 1692 01:13:03,760 --> 01:13:04,540 Ne? 1693 01:13:04,540 --> 01:13:07,970 To znači da smo umetnuta ovaj element 1694 01:13:07,970 --> 01:13:10,110 u ispravnom mjestu u našoj sortiranog niza. 1695 01:13:10,110 --> 01:13:14,400 Onda možemo uzeti i kažemo, U redu, naša sortirati niz je ovdje. 1696 01:13:14,400 --> 01:13:19,940 I to bi se taj broj 6 i biti kao, u redu, je 6 manje od tog broja? 1697 01:13:19,940 --> 01:13:20,480 Ne? 1698 01:13:20,480 --> 01:13:21,080 Cool. 1699 01:13:21,080 --> 01:13:22,680 Mi smo u redu. 1700 01:13:22,680 --> 01:13:23,530 >> Učinite to opet. 1701 01:13:23,530 --> 01:13:24,740 Kažemo 7. 1702 01:13:24,740 --> 01:13:29,010 Je 7 manje nego na kraju našeg sortiranog niza? 1703 01:13:29,010 --> 01:13:29,520 Ne. 1704 01:13:29,520 --> 01:13:30,430 Tako smo u redu. 1705 01:13:30,430 --> 01:13:32,760 Dakle, to će biti riješeno. 1706 01:13:32,760 --> 01:13:38,610 Uglavnom sve to radi Je li to govori odvesti 1707 01:13:38,610 --> 01:13:42,060 prvi element Vaš nesortiran polje, 1708 01:13:42,060 --> 01:13:46,010 shvatiti gdje to ide u svom sortiranog niza. 1709 01:13:46,010 --> 01:13:48,780 I to samo vodi brigu swapova za to. 1710 01:13:48,780 --> 01:13:51,300 Vi ste zapravo samo zamjene dok je na pravom mjestu. 1711 01:13:51,300 --> 01:13:53,600 1712 01:13:53,600 --> 01:13:56,990 Vizualna slika koje ste kreće sve dolje na taj. 1713 01:13:56,990 --> 01:13:59,420 >> Dakle, to je kao pola bubble vrsta veliku. 1714 01:13:59,420 --> 01:14:02,280 1715 01:14:02,280 --> 01:14:03,420 Provjerite studiju 50. 1716 01:14:03,420 --> 01:14:06,000 Ja visoko preporučiti pokušavam kodirati to na svoju vlastitu. 1717 01:14:06,000 --> 01:14:07,220 1718 01:14:07,220 --> 01:14:12,450 Ako imate bilo kakvih pitanja ili želite vidi primjer koda za umetanje vrste, 1719 01:14:12,450 --> 01:14:13,750 molim javite mi. 1720 01:14:13,750 --> 01:14:14,500 Ja sam uvijek oko. 1721 01:14:14,500 --> 01:14:16,600 1722 01:14:16,600 --> 01:14:20,200 Dakle, u najgorem slučaju izvođenja i najbolji slučaj runtime. 1723 01:14:20,200 --> 01:14:30,700 Kao što ste vidjeli momak iz tablice sam već pokazala vas, to je i n kvadratna i n. 1724 01:14:30,700 --> 01:14:35,590 >> Dakle vrsta ide izvan onoga što smo razgovarali o tome s našim prethodnim vrstama, najgore 1725 01:14:35,590 --> 01:14:38,760 Slučaj runtime je da ako to je potpuno nerazvrstani, 1726 01:14:38,760 --> 01:14:42,530 moramo usporediti sve ove n puta. 1727 01:14:42,530 --> 01:14:47,020 Mi radimo puno usporedbe jer ako je to u obrnutom redoslijedu, 1728 01:14:47,020 --> 01:14:50,360 idemo reći, u redu, to je isti, to je dobro, 1729 01:14:50,360 --> 01:14:54,650 a ovaj će morati biti u odnosu Protiv prvog se preselio natrag. 1730 01:14:54,650 --> 01:14:56,710 I kao što smo dobili prema rep kraj, imamo 1731 01:14:56,710 --> 01:14:59,440 za usporedbu, usporedite i usporediti protiv svega. 1732 01:14:59,440 --> 01:15:03,030 >> Tako da završi kao oko nje kvadrat. 1733 01:15:03,030 --> 01:15:09,510 Ako je to točno onda ste kažu, u redu, 2, ti si dobar. 1734 01:15:09,510 --> 01:15:11,330 3, ti si u odnosu na 2. 1735 01:15:11,330 --> 01:15:12,310 Ti si dobar. 1736 01:15:12,310 --> 01:15:14,150 4, samo usporediti rep. 1737 01:15:14,150 --> 01:15:14,990 Ti si dobar. 1738 01:15:14,990 --> 01:15:17,140 6, u usporedbi s repa, ti si u redu. 1739 01:15:17,140 --> 01:15:20,870 Dakle, za svaku točku ako je već razvrstani, radite jednu usporedbu. 1740 01:15:20,870 --> 01:15:22,320 Dakle, to je samo n. 1741 01:15:22,320 --> 01:15:26,840 I zato imamo najboljeg slučaja runtime n i najgorem slučaju izvođenja n 1742 01:15:26,840 --> 01:15:28,680 kvadrat, nemamo očekivani izvođenja. 1743 01:15:28,680 --> 01:15:31,290 1744 01:15:31,290 --> 01:15:34,020 >> To samo ovisi o kaos našeg popisa tamo. 1745 01:15:34,020 --> 01:15:35,860 1746 01:15:35,860 --> 01:15:39,530 I opet, još jedan graf i još jedan stol. 1747 01:15:39,530 --> 01:15:41,170 Dakle, razlika između sorti. 1748 01:15:41,170 --> 01:15:44,180 Samo ću se povjetarac kroz, ja Osjećam se kao da smo razgovarali opširno 1749 01:15:44,180 --> 01:15:46,570 o tome kako su sve vrste o razlikovati i povezivati. 1750 01:15:46,570 --> 01:15:50,564 Dakle spajaju sorta je posljednji Ja ću ti rodila dečki s. 1751 01:15:50,564 --> 01:15:52,105 Mi nemamo prilično šarene slike. 1752 01:15:52,105 --> 01:15:53,860 1753 01:15:53,860 --> 01:15:56,040 Dakle, spajanje vrsta je rekurzivna algoritam. 1754 01:15:56,040 --> 01:15:59,910 Dakle, da li vi momci znate što rekurzivna funkcija? 1755 01:15:59,910 --> 01:16:01,550 1756 01:16:01,550 --> 01:16:03,320 >> Svatko želi reći? 1757 01:16:03,320 --> 01:16:04,739 Želite li probati? 1758 01:16:04,739 --> 01:16:07,280 Dakle, rekurzivna funkcija je samo funkcija koja sebe naziva. 1759 01:16:07,280 --> 01:16:08,570 1760 01:16:08,570 --> 01:16:11,590 Dakle, ako ti dečki su upoznati s Fibonacci nizu, 1761 01:16:11,590 --> 01:16:15,670 koji je smatra rekurzivna, jer uzmete prethodna dva 1762 01:16:15,670 --> 01:16:17,530 i dodati ih zajedno kako bi dobili svoj sljedeći. 1763 01:16:17,530 --> 01:16:21,440 Dakle rekurzivna, uvijek mislim od rekurzije kao poput spirale 1764 01:16:21,440 --> 01:16:24,430 tako ste poput spirale prema dolje u nju. 1765 01:16:24,430 --> 01:16:27,150 Ali to je samo funkcija koji se poziva. 1766 01:16:27,150 --> 01:16:32,660 >> I, zapravo, jako brzo sam mogu vam pokazati kako to izgleda. 1767 01:16:32,660 --> 01:16:34,260 1768 01:16:34,260 --> 01:16:41,840 Dakle rekurzivna ovdje, ako gledamo, ovo je rekurzivna način da zaključimo preko niz. 1769 01:16:41,840 --> 01:16:45,900 1770 01:16:45,900 --> 01:16:47,880 Dakle, sve što radimo je mi smo zbroj funkciju 1771 01:16:47,880 --> 01:16:52,210 suma koja ima veličinu i niz. 1772 01:16:52,210 --> 01:16:55,210 A ako primijetite, veličina umanjenje broja doza po jedan svaki put. 1773 01:16:55,210 --> 01:17:00,365 I sve je to ipak ako je x jednak zero-- pa ako veličina polja 1774 01:17:00,365 --> 01:17:02,710 jednaka zero-- vraća nulu. 1775 01:17:02,710 --> 01:17:10,440 >> Inače to sažima to Posljednji element polja, 1776 01:17:10,440 --> 01:17:14,790 a zatim uzima zbroj Ostatak polja. 1777 01:17:14,790 --> 01:17:17,555 Dakle, to je samo to što se razbije u sve manje i manje problema. 1778 01:17:17,555 --> 01:17:18,990 1779 01:17:18,990 --> 01:17:21,890 Da ne duljimo, rekurzija, funkcija koja sebe naziva. 1780 01:17:21,890 --> 01:17:25,740 Ako je to sve što je izašao iz toga, to je ono što rekurzivna funkcija. 1781 01:17:25,740 --> 01:17:29,870 Ako se uzme 51, dobit ćete vrlo, Vrlo ugodno rekurzije. 1782 01:17:29,870 --> 01:17:31,110 1783 01:17:31,110 --> 01:17:32,370 To je stvarno cool. 1784 01:17:32,370 --> 01:17:34,660 To je imalo smisla, na sličan 3:00 jedne noći van. 1785 01:17:34,660 --> 01:17:37,900 I ja sam bio kao, zašto sam nikada se ne koristi ovo? 1786 01:17:37,900 --> 01:17:39,170 1787 01:17:39,170 --> 01:17:42,430 >> Tako je za spajanje vrsta, u osnovi ono što će učiniti je da je 1788 01:17:42,430 --> 01:17:45,620 će ga razbiti i slomiti ga dolje dok je to samo pojedinačni elementi. 1789 01:17:45,620 --> 01:17:47,570 Pojedinačni elementi su lako razvrstati. 1790 01:17:47,570 --> 01:17:48,070 Vidimo da. 1791 01:17:48,070 --> 01:17:50,760 Ako imate jedan element, to je Već smatra riješeno. 1792 01:17:50,760 --> 01:17:53,800 Tako na ulazu n elemenata, ako je n manji od 2, 1793 01:17:53,800 --> 01:17:58,120 Samo vratiti jer to znači to je bilo 0 ili 1, kao što smo vidjeli. 1794 01:17:58,120 --> 01:18:00,050 Oni smatraju slagala elemente. 1795 01:18:00,050 --> 01:18:02,170 >> Inače ga slomiti na pola. 1796 01:18:02,170 --> 01:18:06,336 Sortirati prvo poluvrijeme, sortirati drugi polovice, a zatim ih spojiti zajedno. 1797 01:18:06,336 --> 01:18:07,460 Zašto se to zove spajanje vrsta. 1798 01:18:07,460 --> 01:18:08,700 1799 01:18:08,700 --> 01:18:12,155 Tako imamo ovdje ćemo sortirati njih. 1800 01:18:12,155 --> 01:18:13,410 1801 01:18:13,410 --> 01:18:17,210 Dakle, držimo ih ima dok veličina niz je 1. 1802 01:18:17,210 --> 01:18:20,790 Dakle, kad je 1, samo smo se vratili jer je to sortirati niz, 1803 01:18:20,790 --> 01:18:23,940 i to je sortirati niz, a to je sortirati niz, svi smo razvrstani. 1804 01:18:23,940 --> 01:18:25,390 1805 01:18:25,390 --> 01:18:29,420 Pa onda ono što radimo je da početi spajanje ih zajedno. 1806 01:18:29,420 --> 01:18:31,820 >> Dakle, način na koji možete razmišljati o spajanju je 1807 01:18:31,820 --> 01:18:36,240 možete samo ukloniti manji Broj svakog polja pod 1808 01:18:36,240 --> 01:18:38,330 i samo ga dodajte na nastao niz. 1809 01:18:38,330 --> 01:18:44,290 Dakle, ako pogledate ovdje, kada imamo ovi setovi imamo 4, 6 i 1. 1810 01:18:44,290 --> 01:18:47,280 Kada želimo spojiti njih, gledamo ove prve dvije 1811 01:18:47,280 --> 01:18:50,730 a mi reći, u redu, 1 manja, to ide prema naprijed. 1812 01:18:50,730 --> 01:18:54,330 4 i 6, nema ništa za usporedbu da, samo ga označiti na kraju. 1813 01:18:54,330 --> 01:18:58,020 >> Kada smo kombinirati ove dvije, samo mi uzeti manji jedan od ta dva, 1814 01:18:58,020 --> 01:18:59,310 tako da je 1. 1815 01:18:59,310 --> 01:19:01,690 I sada mi se Manji od ta dva, pa 2. 1816 01:19:01,690 --> 01:19:03,330 Manji od ta dva, 3. 1817 01:19:03,330 --> 01:19:06,260 Manji od ove dvije, 4, 5, 6. 1818 01:19:06,260 --> 01:19:08,630 Dakle, ti si jednostavno povlačenjem tih. 1819 01:19:08,630 --> 01:19:11,210 I zato što ste Prethodno razvrstani, 1820 01:19:11,210 --> 01:19:14,300 imate samo jedan Usporedba svaki put tamo. 1821 01:19:14,300 --> 01:19:19,610 Dakle, više kod ovdje, samo prikaz. 1822 01:19:19,610 --> 01:19:24,410 Dakle, vi početi na sredini i omogućuje sortiranje lijevo i desno 1823 01:19:24,410 --> 01:19:26,180 i onda jednostavno spojiti one. 1824 01:19:26,180 --> 01:19:30,080 >> I nemamo kod za spajanje upravo ovdje. 1825 01:19:30,080 --> 01:19:34,110 Ali, opet, ako idete na studirati 50, to će biti tamo. 1826 01:19:34,110 --> 01:19:36,860 Inače dolaze razgovarati sa mnom Ako ste još uvijek zbunjeni. 1827 01:19:36,860 --> 01:19:42,340 Dakle, super stvar ovdje je da najbolji slučaj, najgorem slučaju, a očekuje se runtime 1828 01:19:42,340 --> 01:19:46,250 su sve u zapisniku n, koji je je daleko bolje nego što smo 1829 01:19:46,250 --> 01:19:48,000 vidi za ostatak naših sorti. 1830 01:19:48,000 --> 01:19:51,840 Vidjeli smo n na kvadrat i što mi zapravo 1831 01:19:51,840 --> 01:19:54,380 doći ovdje n prijavite nje, što je super. 1832 01:19:54,380 --> 01:19:55,830 >> Pogledajte kako je puno bolje da je. 1833 01:19:55,830 --> 01:19:56,780 Takva lijepa krivulja. 1834 01:19:56,780 --> 01:19:58,130 1835 01:19:58,130 --> 01:20:00,120 Dakle, mnogo učinkovitiji. 1836 01:20:00,120 --> 01:20:03,510 Ako ste ikada može, korištenje spojiti vrsta. 1837 01:20:03,510 --> 01:20:04,810 To će vam uštedjeti vrijeme. 1838 01:20:04,810 --> 01:20:07,670 Onda opet, kao što smo rekli, ako je ti si u ovom donjem dijelu, 1839 01:20:07,670 --> 01:20:09,480 ne bi da je mnogo razlika. 1840 01:20:09,480 --> 01:20:11,360 Možete doći do tisuća i tisuće ulaza, 1841 01:20:11,360 --> 01:20:13,318 što svakako želite učinkovitiji algoritam. 1842 01:20:13,318 --> 01:20:14,730 1843 01:20:14,730 --> 01:20:19,400 A, opet, naš lijepi stol svega vrste koje ti dečki naučili danas. 1844 01:20:19,400 --> 01:20:21,157 >> Tako da znam da je bilo gusto dan. 1845 01:20:21,157 --> 01:20:23,490 To nije nužno ide kako bi vam pomoći s vašim pset. 1846 01:20:23,490 --> 01:20:28,250 Ali ja samo želim napraviti disclaimer taj dio je ne samo o psets. 1847 01:20:28,250 --> 01:20:31,240 Sve to je materijal sajam Igra za midterms. 1848 01:20:31,240 --> 01:20:35,430 A isto tako ako ne nastaviti sa CS, to su stvarno važne osnove 1849 01:20:35,430 --> 01:20:37,870 da ti bi trebao znati. 1850 01:20:37,870 --> 01:20:41,700 Dakle, nekoliko dana će biti malo više pset pomoć, 1851 01:20:41,700 --> 01:20:44,600 ali nekoliko tjedana neće biti mnogo više stvarni sadržaj 1852 01:20:44,600 --> 01:20:46,600 da možda ne izgleda super korisne za vas upravo sada, 1853 01:20:46,600 --> 01:20:51,215 ali obećajem ako nastavite o će biti vrlo, vrlo korisno. 1854 01:20:51,215 --> 01:20:52,560 1855 01:20:52,560 --> 01:20:54,250 >> Dakle, to je to za odjeljku. 1856 01:20:54,250 --> 01:20:55,250 Do žice. 1857 01:20:55,250 --> 01:20:56,570 Učinio sam to u roku od jedne minute. 1858 01:20:56,570 --> 01:20:58,262 1859 01:20:58,262 --> 01:20:58,970 Ali tamo idete. 1860 01:20:58,970 --> 01:21:01,240 I ja ću imati krafne ili slatkiše. 1861 01:21:01,240 --> 01:21:03,464 Je li netko alergičan na ništa, usput? 1862 01:21:03,464 --> 01:21:05,307 1863 01:21:05,307 --> 01:21:05,890 Jaja i mlijeko. 1864 01:21:05,890 --> 01:21:08,120 Dakle, krafne su zar ne? 1865 01:21:08,120 --> 01:21:09,400 1866 01:21:09,400 --> 01:21:10,160 U redu. 1867 01:21:10,160 --> 01:21:10,770 U redu. 1868 01:21:10,770 --> 01:21:12,120 Čokolada nema? 1869 01:21:12,120 --> 01:21:12,620 Zvjezdana prašina. 1870 01:21:12,620 --> 01:21:13,837 1871 01:21:13,837 --> 01:21:14,670 Zvjezdana prašina su dobri. 1872 01:21:14,670 --> 01:21:15,170 U redu. 1873 01:21:15,170 --> 01:21:17,045 Mi ćemo imati Eksplozija sljedeći tjedan onda. 1874 01:21:17,045 --> 01:21:18,240 To je ono što ću dobiti. 1875 01:21:18,240 --> 01:21:19,690 Ti dečki imaju veliki tjedan. 1876 01:21:19,690 --> 01:21:20,460 Pročitajte svoj spec. 1877 01:21:20,460 --> 01:21:22,130 >> Pustiti mene znati ako imate bilo kakvih pitanja. 1878 01:21:22,130 --> 01:21:25,300 Pset dva razreda bi trebao biti kako bi vas do četvrtka. 1879 01:21:25,300 --> 01:21:28,320 Ako imate bilo kakvih pitanja o tome kako sam se ocjenjuju nešto 1880 01:21:28,320 --> 01:21:32,250 ili zašto sam nešto ocjenjuju način na koji sam jeste, molimo pošaljite email me, došao razgovarati sa mnom. 1881 01:21:32,250 --> 01:21:34,210 Ja sam malo luda to tjedan, ali obećavam 1882 01:21:34,210 --> 01:21:36,340 I dalje će odgovoriti u roku od 24 sata. 1883 01:21:36,340 --> 01:21:38,240 Dakle, imaju veliki tjedan, svima. 1884 01:21:38,240 --> 01:21:40,090 Sretno na svom pset. 1885 01:21:40,090 --> 01:21:41,248