1 00:00:00,000 --> 00:00:00,030 2 00:00:00,030 --> 00:00:00,460 >> DAVID Malan: Të gjithë të drejtë. 3 00:00:00,460 --> 00:00:01,094 Ne jemi kthyer. 4 00:00:01,094 --> 00:00:04,260 Pra, në këtë segment në programimin çfarë Mendova se ne do të bëjmë është një përzierje e gjërave. 5 00:00:04,260 --> 00:00:06,340 One, të bëjë pak për diçka duart-on, 6 00:00:06,340 --> 00:00:08,690 edhe pse duke përdorur një shumë të gjallë programimit environment-- 7 00:00:08,690 --> 00:00:11,620 ai që është i demonstrative saktësisht llojet e ideve 8 00:00:11,620 --> 00:00:14,220 ne kemi qenë duke folur në lidhje me, por pak më formale. 9 00:00:14,220 --> 00:00:18,200 Dy, të shikojmë disa nga mënyra më teknike 10 00:00:18,200 --> 00:00:21,520 që një programues në fakt do të zgjidhte Problemet si problemin në kërkim 11 00:00:21,520 --> 00:00:24,530 që ne shikuar në para dhe edhe më thelbësisht 12 00:00:24,530 --> 00:00:26,020 Problemi interesante e gjykimit. 13 00:00:26,020 --> 00:00:28,840 >> Ne vetëm mori nga te merrni që ky libër telefoni u renditur, 14 00:00:28,840 --> 00:00:31,980 por se vetëm është në fakt një lloj i Problemi vështirë me shumë mënyra të ndryshme 15 00:00:31,980 --> 00:00:32,479 për të zgjidhur atë. 16 00:00:32,479 --> 00:00:34,366 Pra, ne do të përdorim këto si një klasë e problemeve 17 00:00:34,366 --> 00:00:36,740 përfaqësues i gjërave që mund të zgjidhen në përgjithësi. 18 00:00:36,740 --> 00:00:38,980 Dhe pastaj ne do të flasim lidhje në disa detaje se çfarë 19 00:00:38,980 --> 00:00:42,360 quhen të dhënat structures-- mënyra njohës si listat e lidhura 20 00:00:42,360 --> 00:00:46,290 dhe tavolina hash dhe pemë që një programues do të vërtetë 21 00:00:46,290 --> 00:00:48,890 përdorur dhe në përgjithësi përdorin në një whiteboard për të pikturuar 22 00:00:48,890 --> 00:00:51,840 një foto të asaj që ai ose ajo parashikon për zbatimin 23 00:00:51,840 --> 00:00:52,980 disa pjesë e software. 24 00:00:52,980 --> 00:00:55,130 >> Pra, le të bëjë duart-në pjesën e parë. 25 00:00:55,130 --> 00:01:00,090 Pra, vetëm të marrë në duart tuaja të pista me një mjedisit quajtur scratch.mit.edu. 26 00:01:00,090 --> 00:01:02,636 Ky është një mjet që ne përdorim në klasën tonë universitare. 27 00:01:02,636 --> 00:01:04,510 Edhe pse është e projektuar për moshat 12 e lart, 28 00:01:04,510 --> 00:01:07,570 ne e përdorin atë për deri pjesë e atij mjaft pak 29 00:01:07,570 --> 00:01:10,020 pasi kjo është një e mirë, fun Mënyra grafike e të mësuarit 30 00:01:10,020 --> 00:01:12,160 një diçka të vogël në lidhje me programimin. 31 00:01:12,160 --> 00:01:17,600 Kështu që të shkojnë në këtë URL, ku ju duhet të shihni një faqe krejt si ky, 32 00:01:17,600 --> 00:01:23,330 dhe të shkojnë përpara dhe klikoni Join Scratch në krye të drejtë 33 00:01:23,330 --> 00:01:28,300 dhe të zgjidhni një username dhe a fjalekalimin dhe në fund të fundit për të marrë veten 34 00:01:28,300 --> 00:01:29,970 një scratch.mit.edu account--. 35 00:01:29,970 --> 00:01:32,165 36 00:01:32,165 --> 00:01:34,665 Unë mendova se do të përdorin këtë si një mundësia e parë për të treguar këtë. 37 00:01:34,665 --> 00:01:39,120 Një pyetje doli gjatë pushimit në lidhje me atë code fakt duket si. 38 00:01:39,120 --> 00:01:41,315 Dhe ne ishim duke folur gjatë pushimit rreth C, 39 00:01:41,315 --> 00:01:45,060 në particular-- veçanërisht a Niveli më i ulët në një gjuhë të vjetër. 40 00:01:45,060 --> 00:01:47,750 Dhe unë vetëm e bëri një të shpejtë Google kërko për të gjetur kodin C 41 00:01:47,750 --> 00:01:51,574 për kërkimin binar, algoritmi që ne përdoret për të kërkuar atë librin e telefonit më parë. 42 00:01:51,574 --> 00:01:54,240 Ky shembull i veçantë, sigurisht, nuk kërkoni një libër telefoni. 43 00:01:54,240 --> 00:01:57,840 Ajo vetëm kërkon një bandë e tërë e numrat në kujtesën e kompjuterit. 44 00:01:57,840 --> 00:02:01,000 Por në qoftë se ju dëshironi të merrni vetëm një vizuale kuptim të asaj që një programimit aktuale 45 00:02:01,000 --> 00:02:05,370 gjuha duket si, duket një diçka të vogël si kjo. 46 00:02:05,370 --> 00:02:09,759 Pra, kjo është në lidhje me 20-plus, 30 apo më shumë rreshta të kodit, 47 00:02:09,759 --> 00:02:12,640 por biseda ne kishin mbi pushim 48 00:02:12,640 --> 00:02:16,000 ishte se si kjo në fakt merr shndërrua në zero dhe ato 49 00:02:16,000 --> 00:02:19,200 dhe në qoftë se ju nuk mund të kthehet se procesit dhe të shkojnë nga zero dhe ato 50 00:02:19,200 --> 00:02:20,210 mbështetur të kodit. 51 00:02:20,210 --> 00:02:22,620 >> Për fat të keq, procesi i është aq transformuese 52 00:02:22,620 --> 00:02:24,890 se kjo është një shumë më e lehtë tha se bëhet. 53 00:02:24,890 --> 00:02:29,400 Unë shkova përpara dhe në fakt u se programi, Binary Kërko: 54 00:02:29,400 --> 00:02:32,700 në zero dhe ato me anë të një Programi i quajtur Compiler se unë 55 00:02:32,700 --> 00:02:34,400 ndodh që të ketë këtu të drejtë në Mac tim. 56 00:02:34,400 --> 00:02:37,850 Dhe në qoftë se ju shikoni në ekran këtu, duke u fokusuar në mënyrë të veçantë 57 00:02:37,850 --> 00:02:43,520 në këto të mesëm gjashtë kolona vetëm, ju do të shihni vetëm zero dhe ato. 58 00:02:43,520 --> 00:02:48,290 Dhe ata janë zero dhe ato që shkruaj pikërisht atë program kërkim. 59 00:02:48,290 --> 00:02:53,720 >> Dhe kështu që çdo copë e pesë copa, çdo bajt e zero dhe ato këtu, 60 00:02:53,720 --> 00:02:57,310 paraqesin disa udhëzime zakonisht brenda një kompjuter. 61 00:02:57,310 --> 00:03:00,730 Dhe në fakt, në qoftë se ju keni dëgjuar marketingut slogan "Intel brenda" - se, 62 00:03:00,730 --> 00:03:04,610 sigurisht, thjesht do të thotë që ju keni një Intel CPU apo truri brenda kompjuterit. 63 00:03:04,610 --> 00:03:08,000 Dhe çfarë do të thotë të jetë një CPU është që ju të keni një instruksioneve, 64 00:03:08,000 --> 00:03:08,840 mënyrë që të flasin. 65 00:03:08,840 --> 00:03:11,620 >> Çdo CPU në botë, shumë prej ata të bërë nga Intel këto ditë, 66 00:03:11,620 --> 00:03:13,690 kupton një fundme numër i udhëzimeve. 67 00:03:13,690 --> 00:03:18,690 Dhe ato udhëzime janë të nivelit aq të ulëta si shtesë e këtyre dy numra së bashku, 68 00:03:18,690 --> 00:03:22,560 shumohen këta dy numra së bashku, lëvizur këtë pjesë të të dhënave nga këtu 69 00:03:22,560 --> 00:03:27,340 për të këtu në kujtesë, për të shpëtuar këtë informacion nga këtu për të këtu në kujtesë, 70 00:03:27,340 --> 00:03:32,200 dhe kështu forth-- aq shumë, shumë Nivelit të ulët, të dhënat pothuajse elektronike. 71 00:03:32,200 --> 00:03:34,780 Por me ato matematikore operacionet bashku 72 00:03:34,780 --> 00:03:37,410 me atë që kemi diskutuar më herët, përfaqësimi i të dhënave 73 00:03:37,410 --> 00:03:40,450 si zero dhe ato, mund të ju të ndërtuar çdo gjë 74 00:03:40,450 --> 00:03:44,180 që një kompjuter mund të bëjë sot, nëse kjo është tekstuale, grafike, muzikore, 75 00:03:44,180 --> 00:03:45,580 ose ndryshe. 76 00:03:45,580 --> 00:03:49,450 >> Pra, kjo është shumë e lehtë për të marrë humbur në barërat e këqija të shpejtë. 77 00:03:49,450 --> 00:03:52,150 Dhe nuk është një shumë e sfidat sintaksore 78 00:03:52,150 --> 00:03:56,630 ku në qoftë se ju bëni më të thjeshtë, budalla e tipos asnjë programit 79 00:03:56,630 --> 00:03:57,860 do të punojnë whatsoever. 80 00:03:57,860 --> 00:04:00,366 Dhe kështu që në vend të përdorimit të një gjuha si C këtë mëngjes, 81 00:04:00,366 --> 00:04:02,240 Mendova se do të ishte më shumë argëtim për të vërtetë të bëjë 82 00:04:02,240 --> 00:04:04,840 diçka më shumë vizuale, e cila duke projektuar për fëmijët 83 00:04:04,840 --> 00:04:08,079 është në fakt një manifestim i përsosur e një programimin aktual 84 00:04:08,079 --> 00:04:10,370 language-- ndodh vetëm për të përdorin fotografitë në vend të tekstit 85 00:04:10,370 --> 00:04:11,710 për të përfaqësuar ato ide. 86 00:04:11,710 --> 00:04:15,470 >> Pra, një herë ju të vërtetë kanë një llogari në scratch.mit.edu, 87 00:04:15,470 --> 00:04:21,070 kliko butonin Krijo në krye majtë të faqes. 88 00:04:21,070 --> 00:04:24,620 Dhe ju duhet të shihni një mjedis si ajo që unë jam gati për të parë në ekran e mia 89 00:04:24,620 --> 00:04:26,310 këtu. 90 00:04:26,310 --> 00:04:29,350 Dhe ne do të shpenzojnë pak pak kohë duke luajtur këtu. 91 00:04:29,350 --> 00:04:34,080 Le të shohim nëse ne nuk mund të gjithë të zgjidhur disa Problemet së bashku në mënyrën e mëposhtme. 92 00:04:34,080 --> 00:04:39,420 >> Kështu që ajo që ju do të shihni në këtë environment-- dhe në fakt vetëm le 93 00:04:39,420 --> 00:04:40,050 me pauzë. 94 00:04:40,050 --> 00:04:42,680 A është dikush nuk është këtu? 95 00:04:42,680 --> 00:04:45,070 Jo ketu? 96 00:04:45,070 --> 00:04:45,800 NE RREGULL. 97 00:04:45,800 --> 00:04:49,030 Pra më lejoni të theksoj disa Karakteristikat e këtij mjedisi. 98 00:04:49,030 --> 00:04:55,024 >> Pra, në të majtë krye të ekranit, ne kanë fazën e para, kështu që të flasin. 99 00:04:55,024 --> 00:04:57,440 Scratch nuk është vetëm emri e kësaj gjuhe programimi; 100 00:04:57,440 --> 00:05:00,356 është edhe emri i mace që ju shikoni nga default atje në portokalli. 101 00:05:00,356 --> 00:05:02,160 Ai është në një fazë, në mënyrë ashtu si kam përshkruar 102 00:05:02,160 --> 00:05:05,770 breshkë më parë si në një drejtkëndëshe mjedisi bordit të bardhë. 103 00:05:05,770 --> 00:05:09,800 Bota e këtij mace kufizohet tërësisht për këtë drejtkëndësh deri të lartë atje. 104 00:05:09,800 --> 00:05:12,210 >> Ndërkohë, në të djathtë nga e djathta, këtu, është e 105 00:05:12,210 --> 00:05:15,610 vetëm një zonë scripts, një propozoj bosh nëse ju do. 106 00:05:15,610 --> 00:05:18,590 Kjo është ajo ku ne jemi duke shkuar për të shkruar programet tona në një moment të vetëm. 107 00:05:18,590 --> 00:05:22,935 Dhe blloqet ndërtuese që do të përdorin për të shkruar këtë program-- mister 108 00:05:22,935 --> 00:05:25,310 copa, nëse ju jeni will-- ata të drejtë këtu në mes, 109 00:05:25,310 --> 00:05:27,500 dhe ata janë të kategorizuar nga funksionaliteti. 110 00:05:27,500 --> 00:05:31,000 Kështu, për shembull, unë jam duke shkuar për të shkuar përpara dhe të demonstrojnë të paktën një nga këto. 111 00:05:31,000 --> 00:05:33,690 Unë jam duke shkuar për të shkuar përpara dhe klikoni kategoria Kontrollit up krye. 112 00:05:33,690 --> 00:05:35,720 >> Pra, këto janë kategori deri krye. 113 00:05:35,720 --> 00:05:39,410 Unë jam duke shkuar për të klikoni në kategorinë e kontrollit. 114 00:05:39,410 --> 00:05:44,020 Përkundrazi, unë jam duke shkuar për të klikoni Ngjarje kategori, shumë të parë një dorë të lartë. 115 00:05:44,020 --> 00:05:47,790 Dhe në qoftë se ju dëshironi për të ndjekur së bashku edhe si ne të bërë këtë, ju jeni mjaft të mirëpritur për të. 116 00:05:47,790 --> 00:05:52,180 Unë jam duke shkuar për të klikoni dhe terhiq këtë para ", kur flamuri gjelbër klikuar". 117 00:05:52,180 --> 00:05:58,410 Dhe atëherë unë jam duke shkuar për të hequr dorë atë vetëm afërsisht në krye të listat e mia bosh. 118 00:05:58,410 --> 00:06:01,450 >> Dhe çfarë është e bukur për Scratch është se kjo pjesë mister, kur 119 00:06:01,450 --> 00:06:04,560 kombinuara me mister tjetër copë, do të bëjë fjalë për fjalë 120 00:06:04,560 --> 00:06:06,460 çfarë ato copa mister të thotë për të bërë. 121 00:06:06,460 --> 00:06:09,710 Kështu, për shembull, Scratch është e drejtë tani në mes të botës së tij. 122 00:06:09,710 --> 00:06:14,660 Unë jam duke shkuar për të shkuar përpara dhe të zgjedhin Tani, le të themi, kategoria Motion, 123 00:06:14,660 --> 00:06:18,000 në qoftë se ju dëshironi të bëni të same-- kategori Motion. 124 00:06:18,000 --> 00:06:20,430 Dhe tani vini re unë kam një tërësi bandë e puzzle copë këtu 125 00:06:20,430 --> 00:06:23,370 që, përsëri, lloj bëjnë atë që thonë ata. 126 00:06:23,370 --> 00:06:28,110 Dhe unë jam duke shkuar për të shkuar përpara dhe të drag and rënie bllok veprim të drejtë mbi këtu. 127 00:06:28,110 --> 00:06:31,860 >> Dhe vini re se sa më shpejt që ju të merrni afër në fund e "flamurit gjelbër 128 00:06:31,860 --> 00:06:34,580 klikuar "button, njoftimi si një vijë e bardhë duket, 129 00:06:34,580 --> 00:06:36,950 sikur është pothuajse magnetike, ajo dëshiron të shkojë atje. 130 00:06:36,950 --> 00:06:43,070 Vetëm le të shkojë, dhe ajo do të parakohshme së bashku dhe forma do të përputhen. 131 00:06:43,070 --> 00:06:46,620 Dhe tani ju mund ndoshta pothuajse me mend se ku ne jemi duke shkuar me këtë. 132 00:06:46,620 --> 00:06:51,570 >> Nëse ju shikoni në fazën Scratch mbi këtu dhe të shohim në krye të saj, 133 00:06:51,570 --> 00:06:55,142 ju do të shihni një dritë të kuqe, një ndaluar shenjë, dhe një flamur të gjelbër. 134 00:06:55,142 --> 00:06:57,100 Dhe unë jam duke shkuar për të shkuar përpara dhe të shikojnë screen-- mia 135 00:06:57,100 --> 00:06:58,460 për vetëm një moment, nëse ju mund të. 136 00:06:58,460 --> 00:07:01,960 Unë jam duke shkuar për të klikoni flamurin e gjelbër të drejtë tani, 137 00:07:01,960 --> 00:07:07,850 dhe ai shkoi atë që duket të jetë 10 hapa ose 10 pixels, 10 pika, në ekran. 138 00:07:07,850 --> 00:07:13,390 >> Dhe jo aq se emocionuese, por më lejoni të propozoj 139 00:07:13,390 --> 00:07:17,440 edhe pa e mësuar këtë, vetëm përdorimin e vet e let tuaj intuition-- 140 00:07:17,440 --> 00:07:22,560 me të propozojë që të kuptoj se si për të të bëjë shëtitje Scratch drejtë off fazë. 141 00:07:22,560 --> 00:07:28,700 A ai të bëjë rrugën për anën e djathtë të ekran, të gjitha mënyra për të djathtë. 142 00:07:28,700 --> 00:07:32,200 Më lejoni t'ju jap një moment ose në mënyrë të luftoj me atë. 143 00:07:32,200 --> 00:07:37,681 Ju mund të dëshironi të marrë një sy në kategoritë e tjera të blloqeve. 144 00:07:37,681 --> 00:07:38,180 Në rregull. 145 00:07:38,180 --> 00:07:41,290 Pra, vetëm për radhitje, kur kemi flamuri gjelbër klikuar këtu 146 00:07:41,290 --> 00:07:44,850 dhe për të shkuar 10 hapa është vetëm udhëzim, çdo herë që unë 147 00:07:44,850 --> 00:07:46,720 klikoni flamurin e gjelbër, çfarë po ndodh? 148 00:07:46,720 --> 00:07:50,070 E pra, kjo është drejtimin programin tim. 149 00:07:50,070 --> 00:07:52,450 Kështu që unë mund të bëjë këtë ndoshta 10 herë me dorë, 150 00:07:52,450 --> 00:07:55,130 por kjo ndihet pak bit hackish, kështu që të flasin, 151 00:07:55,130 --> 00:07:57,480 ku unë nuk jam me të vërtetë zgjidhjen e problemit. 152 00:07:57,480 --> 00:08:00,530 Unë jam vetëm duke u përpjekur përsëri dhe përsëri dhe përsëri dhe përsëri 153 00:08:00,530 --> 00:08:03,180 deri sa lloj aksidentalisht arritur direktivën 154 00:08:03,180 --> 00:08:05,560 që unë e përcaktuar për të arritur më parë. 155 00:08:05,560 --> 00:08:08,200 >> Por ne e dimë nga tonë pseudocode më parë se nuk ka 156 00:08:08,200 --> 00:08:11,870 ky nocion në programimin e looping, duke bërë diçka përsëri dhe përsëri. 157 00:08:11,870 --> 00:08:14,888 Dhe kështu unë pashë se një bandë prej jush arritur për copë atë mister? 158 00:08:14,888 --> 00:08:17,870 159 00:08:17,870 --> 00:08:18,730 Përsëriteni deri. 160 00:08:18,730 --> 00:08:21,400 Pra, ne mund të bëjmë diçka si të përsëritur deri. 161 00:08:21,400 --> 00:08:23,760 Dhe çfarë keni përsëritur deri sa saktësisht? 162 00:08:23,760 --> 00:08:27,720 163 00:08:27,720 --> 00:08:28,540 >> NE RREGULL. 164 00:08:28,540 --> 00:08:31,974 Dhe më lejoni të shkoj me një që është disi të thjeshtë për vetëm një moment. 165 00:08:31,974 --> 00:08:33,140 Më lejoni të shkojnë përpara dhe të bëjë këtë. 166 00:08:33,140 --> 00:08:35,559 Vini re se, si ju mund të keni zbuluar nën kontroll, 167 00:08:35,559 --> 00:08:38,409 ka ky bllok të përsëritur, e cila nuk duket si ajo është aq e madhe. 168 00:08:38,409 --> 00:08:41,039 Nuk ka shumë vend në në mes të këtyre dy vijave të verdha. 169 00:08:41,039 --> 00:08:43,539 Por si disa prej jush mund të ketë vënë re, në qoftë se ju drag and drop, 170 00:08:43,539 --> 00:08:45,150 vini re se si ajo rritet për të mbushur formën. 171 00:08:45,150 --> 00:08:46,274 >> Dhe ju mund edhe të mbushur më shumë. 172 00:08:46,274 --> 00:08:48,670 Ajo do të mbajë vetëm në rritje, nëse ju drag dhe rri pezull mbi të. 173 00:08:48,670 --> 00:08:51,110 Dhe unë nuk e di se çfarë është më të mirë këtu, kështu që le 174 00:08:51,110 --> 00:08:54,760 më së paku të përsërisë pesë herë, për shembull, dhe pastaj të kthehemi në fazën 175 00:08:54,760 --> 00:08:56,720 dhe klikoni flamurin e gjelbër. 176 00:08:56,720 --> 00:08:59,110 Dhe tani vini re kjo nuk është mjaft atje. 177 00:08:59,110 --> 00:09:02,400 >> Tani disa prej jush të propozuar, si Victoria vetëm ka, të përsëritur 10 herë. 178 00:09:02,400 --> 00:09:05,140 Dhe se në përgjithësi nuk marrë atë të gjithë rrugën, 179 00:09:05,140 --> 00:09:10,510 por nuk do të ketë një më të fuqishme Mënyra se sa në mënyrë arbitrare parafytyruar 180 00:09:10,510 --> 00:09:12,640 sa lëviz për të bërë? 181 00:09:12,640 --> 00:09:17,680 Çfarë mund të jetë një bllok më të mirë se të përsëritur 10 herë të jetë? 182 00:09:17,680 --> 00:09:20,380 >> Yeah, kështu që pse nuk bëni diçka për gjithnjë? 183 00:09:20,380 --> 00:09:24,390 Dhe tani më lejoni të lëvizë këtë pjesë mister brenda atje dhe të shpëtoj nga ky. 184 00:09:24,390 --> 00:09:28,300 Tani vini re pa marrë parasysh se ku Scratch fillon, ai shkon në buzë. 185 00:09:28,300 --> 00:09:30,700 Dhe fatmirësisht MIT, i cili bën Scratch, vetëm 186 00:09:30,700 --> 00:09:33,190 e bën të sigurt se ai nuk zhduket plotësisht. 187 00:09:33,190 --> 00:09:35,360 Ju mund gjithmonë të kap bishtin e tij. 188 00:09:35,360 --> 00:09:37,680 >> Dhe vetëm intuitive, pse ai mbani lëviz? 189 00:09:37,680 --> 00:09:38,892 Çfarë po ndodh këtu? 190 00:09:38,892 --> 00:09:41,440 191 00:09:41,440 --> 00:09:43,824 Ai duket se ka ndalur, por atëherë në qoftë se unë marr dhe terhiq 192 00:09:43,824 --> 00:09:45,240 ai mban dëshirojnë të shkojnë atje. 193 00:09:45,240 --> 00:09:46,123 Pse eshte ajo? 194 00:09:46,123 --> 00:09:51,610 195 00:09:51,610 --> 00:09:54,360 Me të vërtetë, një kompjuter është fjalë për fjalë do të bëni atë që ju them se për të bërë. 196 00:09:54,360 --> 00:09:58,380 Pra, nëse ju tregoi atë më parë të bëjë të pas gjë përgjithmonë, lëvizin 10 hapa, 197 00:09:58,380 --> 00:10:01,860 ajo do të mbajë dhe shkon deri sa unë goditi shenjë të kuqe të ndaluar 198 00:10:01,860 --> 00:10:04,620 dhe të ndaluar programin krejt. 199 00:10:04,620 --> 00:10:06,610 >> Pra, edhe në qoftë se ju nuk e keni bëni këtë, si mund unë 200 00:10:06,610 --> 00:10:09,510 të bëjë lëvizje të shpejtë Scratch nëpër ekran? 201 00:10:09,510 --> 00:10:12,060 202 00:10:12,060 --> 00:10:13,280 Më shumë hapa, apo jo? 203 00:10:13,280 --> 00:10:15,710 Pra, në vend që të bëjnë 10 në një kohë, pse nuk e bëjmë ne 204 00:10:15,710 --> 00:10:20,100 të shkojnë përpara dhe për të ndryshuar atë to-- çfarë do të propose-- 50? 205 00:10:20,100 --> 00:10:24,410 Kështu që tani unë jam duke shkuar për të klikoni gjelbër flamurin, dhe në të vërtetë, ai shkon të vërtetë të shpejtë. 206 00:10:24,410 --> 00:10:27,180 >> Dhe kjo, sigurisht, është vetëm një manifestim i animacion. 207 00:10:27,180 --> 00:10:28,060 Çfarë është animacion? 208 00:10:28,060 --> 00:10:33,090 Kjo është vetëm duke ju dhënë një të njeriut tërë bandë e imazheve ende me të vërtetë, 209 00:10:33,090 --> 00:10:34,160 me të vërtetë, të vërtetë të shpejtë. 210 00:10:34,160 --> 00:10:36,500 Dhe kështu që në qoftë se ne jemi vetëm duke u thënë atë për të lëvizur më shumë hapa, 211 00:10:36,500 --> 00:10:39,750 ne jemi vetëm duke pasur efekti të jetë për ndryshimi, ku ai është në ekran 212 00:10:39,750 --> 00:10:42,900 të gjithë më shpejt për njësi të kohës. 213 00:10:42,900 --> 00:10:46,454 >> Tani sfida e ardhshme që kam propozuar ishte që të ketë atë të kërcej off buzë. 214 00:10:46,454 --> 00:10:49,120 Dhe pa e ditur se çfarë puzzle copë exist-- për shkak se ajo është në rregull 215 00:10:49,120 --> 00:10:53,030 në qoftë se ju nuk e merrni për të Faza e challenge-- asaj 216 00:10:53,030 --> 00:10:54,280 doni të bëni intuitive? 217 00:10:54,280 --> 00:10:58,030 Si do ta kemi atë të kërcej prapa dhe me radhë, në mes të majtë dhe të djathtë? 218 00:10:58,030 --> 00:11:02,630 219 00:11:02,630 --> 00:11:03,810 >> Po. 220 00:11:03,810 --> 00:11:05,680 Pra, ne kemi nevojë për një lloj e gjendjes, dhe ne 221 00:11:05,680 --> 00:11:09,710 duket se kanë conditionals, në mënyrë që të flasin, nën kategorinë Kontrollit. 222 00:11:09,710 --> 00:11:14,110 Cila nga këto blloqe nuk kemi ndoshta dëshironi? 223 00:11:14,110 --> 00:11:15,200 Yeah, ndoshta "nëse, atëherë." 224 00:11:15,200 --> 00:11:18,780 Pra, vini re se në mesin e blloqeve të verdhë ne kemi këtu, nuk është kjo "nëse" 225 00:11:18,780 --> 00:11:23,920 ose kjo "nëse, tjetër" bllok që do të të na lejojë të marrë një vendim për të bërë këtë 226 00:11:23,920 --> 00:11:25,000 ose për të bërë këtë. 227 00:11:25,000 --> 00:11:27,380 Dhe ju mund edhe fole ato për të bërë gjëra të shumta. 228 00:11:27,380 --> 00:11:34,910 Ose në qoftë se ju nuk keni shkuar këtu ende, të shkojnë përpara në kategorinë Sensing 229 00:11:34,910 --> 00:11:39,612 and-- le të shohim nëse ai është këtu. 230 00:11:39,612 --> 00:11:43,050 231 00:11:43,050 --> 00:11:52,050 >> Pra, çfarë bllok mund të jetë e dobishme këtu për të zbuluar nëse ai është jashtë skene? 232 00:11:52,050 --> 00:11:56,740 Po, vini re se disa nga këto blloqe mund të parametrized, kështu që të flasin. 233 00:11:56,740 --> 00:12:00,706 Ato mund të jenë përshtatur lloj, nuk ndryshe HTML dje me atributet, 234 00:12:00,706 --> 00:12:03,330 ku këto atribute lloj rregulloje sjelljen e një tag. 235 00:12:03,330 --> 00:12:08,880 Në mënyrë të ngjashme këtu, mund ta kap këtë prekje bllok dhe për të ndryshuar dhe të bëni pyetje, 236 00:12:08,880 --> 00:12:11,500 jeni prekur miun pointer si kursorit 237 00:12:11,500 --> 00:12:13,250 ose jeni prekur buzë? 238 00:12:13,250 --> 00:12:15,210 >> Pra më lejoni të shkoj në dhe të bëjë këtë. 239 00:12:15,210 --> 00:12:18,130 Unë jam duke shkuar për të zoom jashtë për një moment. 240 00:12:18,130 --> 00:12:21,320 Më lejoni të rrëmbyer këtë pjesë mister këtu, ky mister pjesë këtë, 241 00:12:21,320 --> 00:12:24,570 dhe unë do të grumbull ata up për vetëm një moment. 242 00:12:24,570 --> 00:12:27,620 Unë jam duke shkuar për të lëvizur këtë, ndryshojë këtë për buzë prekur, 243 00:12:27,620 --> 00:12:38,590 dhe unë jam duke shkuar për të bërë këtë lëvizje. 244 00:12:38,590 --> 00:12:40,490 Pra, këtu janë disa nga përbërësit. 245 00:12:40,490 --> 00:12:42,570 Unë mendoj se kam gjithçka që dua. 246 00:12:42,570 --> 00:12:47,710 >> Dikush do të doja të propozojë si unë mund të lidhë këto ndoshta krye e deri në fund 247 00:12:47,710 --> 00:12:52,020 në mënyrë për të zgjidhur problemin e të pasurit Scratch veprim i drejtë për të majta në të djathtë për të 248 00:12:52,020 --> 00:12:57,020 majta në të djathtë në të majtë, çdo Ora vetëm kërcim jashtë murit? 249 00:12:57,020 --> 00:12:58,050 Çfarë unë dua të bëj? 250 00:12:58,050 --> 00:13:01,097 Të cilat bllok duhet të lidheni me "Flamurin kur green klikuar parë"? 251 00:13:01,097 --> 00:13:04,060 252 00:13:04,060 --> 00:13:06,200 >> OK, kështu që le të fillojë me "përgjithmonë." 253 00:13:06,200 --> 00:13:07,170 Çfarë shkon brenda e ardhshme? 254 00:13:07,170 --> 00:13:10,290 Dikush tjeter. 255 00:13:10,290 --> 00:13:11,850 OK, lëvizin hapa. 256 00:13:11,850 --> 00:13:12,350 Në rregull. 257 00:13:12,350 --> 00:13:14,470 E pastaj? 258 00:13:14,470 --> 00:13:15,120 Pra, atëherë, nëse. 259 00:13:15,120 --> 00:13:17,720 Dhe vini re, edhe pse duket sandwiched bashku fort, 260 00:13:17,720 --> 00:13:19,500 ajo vetëm do të rritet për të mbushur. 261 00:13:19,500 --> 00:13:21,500 Ajo thjesht do të hidhen në ku unë dua atë. 262 00:13:21,500 --> 00:13:25,920 >> Dhe çfarë kam vënë në mes të if dhe pastaj? 263 00:13:25,920 --> 00:13:27,180 Ndoshta "nëse buzë prekur." 264 00:13:27,180 --> 00:13:31,800 Dhe vini re, përsëri, kjo është shumë e madhe për të, por ajo do të rritet për të mbushur. 265 00:13:31,800 --> 00:13:35,002 Dhe pastaj të kthehet 15 gradë? 266 00:13:35,002 --> 00:13:35,710 Sa gradë? 267 00:13:35,710 --> 00:13:38,800 268 00:13:38,800 --> 00:13:41,196 Yeah, kështu që 180 do të tjerr me gjithë rrugës përreth. 269 00:13:41,196 --> 00:13:42,570 Pra, le të shohim nëse unë kam këtë të drejtë. 270 00:13:42,570 --> 00:13:43,930 Më lejoni të zoom out. 271 00:13:43,930 --> 00:13:45,130 >> Më lejoni të zvarritet Scratch up. 272 00:13:45,130 --> 00:13:50,030 Pra, ai është pak e shtrembëruar tani, por kjo është në rregull. 273 00:13:50,030 --> 00:13:52,231 Si mund të rivendosur atë të lehtë? 274 00:13:52,231 --> 00:13:59,879 275 00:13:59,879 --> 00:14:01,045 Unë do të mashtrojnë pak. 276 00:14:01,045 --> 00:14:04,074 277 00:14:04,074 --> 00:14:05,990 Kështu që unë jam duke shtuar një tjetër bllok, vetëm të jetë i qartë. 278 00:14:05,990 --> 00:14:08,424 Unë dua që ai të vinte në 90 gradë në të djathtë by default, 279 00:14:08,424 --> 00:14:10,840 kështu që unë jam vetëm duke shkuar për të treguar atë për të bërë këtë programuar. 280 00:14:10,840 --> 00:14:11,632 Dhe këtu ne do të shkojmë. 281 00:14:11,632 --> 00:14:14,740 282 00:14:14,740 --> 00:14:15,740 Ne duket se kanë bërë atë. 283 00:14:15,740 --> 00:14:19,980 Është pak e çuditshme, sepse ai është duke ecur me kokë poshtë. 284 00:14:19,980 --> 00:14:21,250 Le të thërrasë atë një bug. 285 00:14:21,250 --> 00:14:22,120 Kjo është një gabim. 286 00:14:22,120 --> 00:14:27,320 Një bug është një gabim në një program, a gabimi logjik që unë, njeriu, bërë. 287 00:14:27,320 --> 00:14:28,985 Pse është ai shkon me kokë poshtë? 288 00:14:28,985 --> 00:14:33,560 289 00:14:33,560 --> 00:14:35,250 A MIT vidhos deri ose nuk kam? 290 00:14:35,250 --> 00:14:38,840 291 00:14:38,840 --> 00:14:42,550 >> Po, Unë do të thotë, kjo nuk është e MIT-së faji. Ata më dhanë një copë mister 292 00:14:42,550 --> 00:14:44,970 që thotë se të kthehet disa numrin e diplomave. 293 00:14:44,970 --> 00:14:47,672 Dhe në sugjerimin e Victoria-s, Unë jam kthyer 180 gradë, 294 00:14:47,672 --> 00:14:48,880 që është intuita e drejtë. 295 00:14:48,880 --> 00:14:53,700 Por, duke e kthyer 180 gradë fjalë për fjalë do të thotë kthim 180 gradë, 296 00:14:53,700 --> 00:14:55,860 dhe kjo nuk është e vërtetë atë që unë dua, me sa duket. 297 00:14:55,860 --> 00:14:58,026 Sepse të paktën ai është në kjo botë dy-dimensionale, 298 00:14:58,026 --> 00:15:00,740 kështu kthese është me të vërtetë ndodh të shfletoj atë me kokë poshtë. 299 00:15:00,740 --> 00:15:04,030 >> Unë ndoshta dëshironi të përdorni çfarë bllok në vend të kësaj, në bazë të asaj që ju shihni këtu? 300 00:15:04,030 --> 00:15:11,890 301 00:15:11,890 --> 00:15:14,790 Si mund ta fix this? 302 00:15:14,790 --> 00:15:18,380 Yeah, kështu që ne mund të tregojnë në drejtimin e kundërt. 303 00:15:18,380 --> 00:15:22,300 Dhe në fakt, edhe kjo është nuk do të jetë e mjaftueshme, 304 00:15:22,300 --> 00:15:26,410 sepse ne vetëm mund Kodi hard për të vënë në të majtë apo të djathtë. 305 00:15:26,410 --> 00:15:27,920 >> Ti e di se çfarë ne mund të bëjmë? 306 00:15:27,920 --> 00:15:30,160 Ajo duket si ne kemi një bllok komoditet këtu. 307 00:15:30,160 --> 00:15:32,987 Nëse unë zmadhuar, shih diçka që ne si këtu? 308 00:15:32,987 --> 00:15:36,120 309 00:15:36,120 --> 00:15:40,020 Pra, duket si MIT ka një Nxjerrja e ndërtuar në këtu. 310 00:15:40,020 --> 00:15:45,440 Ky bllok duket të jetë e barabartë të cilat blloqe të tjera, shumësi? 311 00:15:45,440 --> 00:15:49,510 >> Kjo një bllok duket të jetë e barabartë në këtë treshe të tërë të blloqeve 312 00:15:49,510 --> 00:15:50,880 që ne kemi këtu. 313 00:15:50,880 --> 00:15:54,670 Pra, rezulton që unë mund të lehtësuar tim program duke u shpëtoj prej të gjithë që 314 00:15:54,670 --> 00:15:58,270 dhe vetëm vënë këtë në këtu. 315 00:15:58,270 --> 00:16:01,620 Dhe tani ai është ende pak buggy, dhe kjo është në rregull tani për tani. 316 00:16:01,620 --> 00:16:03,370 Ne do të lënë që të jetë. 317 00:16:03,370 --> 00:16:06,000 Por programi im është edhe thjeshtë, dhe kjo, gjithashtu, 318 00:16:06,000 --> 00:16:09,060 do të jetë përfaqësues e një qëllimi në programming-- 319 00:16:09,060 --> 00:16:13,430 është ideale bëjë kodin tuaj si thjeshtë, si kompakt të jetë e mundur, 320 00:16:13,430 --> 00:16:15,650 ndërsa ende po si lexueshëm të jetë e mundur. 321 00:16:15,650 --> 00:16:20,310 Ju nuk doni të bëni atë në mënyrë të ngjeshur se është e vështirë për të kuptuar. 322 00:16:20,310 --> 00:16:22,826 >> Por vini re unë kam zëvendësuar tre blloqe me një, 323 00:16:22,826 --> 00:16:24,200 dhe kjo është ndoshta një gjë e mirë. 324 00:16:24,200 --> 00:16:27,280 Unë e kam përhumbur larg nocionin të kontrolluar nëse ju jeni 325 00:16:27,280 --> 00:16:29,120 në buzë me vetëm një bllok. 326 00:16:29,120 --> 00:16:31,520 Tani ne mund të argëtohen me këtë, në fakt. 327 00:16:31,520 --> 00:16:35,790 Kjo nuk do të shtojë aq shumë vlera intelektuale por vlera e gjallë. 328 00:16:35,790 --> 00:16:39,730 Unë jam duke shkuar për të shkuar përpara dhe kap këtë tingull këtu. 329 00:16:39,730 --> 00:16:42,900 330 00:16:42,900 --> 00:16:46,420 Pra më lejoni të shkoj përpara, dhe le të më të ndaluar programin për një moment. 331 00:16:46,420 --> 00:16:52,070 Unë jam duke shkuar për të regjistruar në vijim, duke lejuar qasje në mikrofon tim. 332 00:16:52,070 --> 00:16:53,181 >> Këtu ne do të shkojmë. 333 00:16:53,181 --> 00:16:53,680 Ouch. 334 00:16:53,680 --> 00:16:58,710 335 00:16:58,710 --> 00:17:01,140 Le të provoni këtë përsëri. 336 00:17:01,140 --> 00:17:02,279 Këtu ne do të shkojmë. 337 00:17:02,279 --> 00:17:03,570 OK, I regjistruar gjë e gabuar. 338 00:17:03,570 --> 00:17:04,580 Këtu ne do të shkojmë. 339 00:17:04,580 --> 00:17:05,080 Ouch. 340 00:17:05,080 --> 00:17:07,910 341 00:17:07,910 --> 00:17:08,800 Ouch. 342 00:17:08,800 --> 00:17:09,300 Në rregull. 343 00:17:09,300 --> 00:17:10,791 Tani kam nevojë për të hequr qafe këtë. 344 00:17:10,791 --> 00:17:11,290 Në rregull. 345 00:17:11,290 --> 00:17:13,950 >> Deri tani unë kam një regjistrimi i vetëm "uf". 346 00:17:13,950 --> 00:17:18,040 Kështu që tani unë jam duke shkuar për të shkuar përpara dhe e quajnë këtë "ouch". 347 00:17:18,040 --> 00:17:20,270 Unë jam duke shkuar për të shkuar mbrapa për Scripts mia, dhe tani 348 00:17:20,270 --> 00:17:25,460 Njoftimi ka ky bllok që është quajtur luajnë të shëndoshë "Meow" ose luaj tingull "ouch". 349 00:17:25,460 --> 00:17:28,920 Unë jam duke shkuar për të drag këtë, dhe ku duhet të vënë këtë për efekt komik? 350 00:17:28,920 --> 00:17:31,740 351 00:17:31,740 --> 00:17:37,860 Yeah, kështu që tani kjo është lloj i buggy, sepse tani kjo block-- 352 00:17:37,860 --> 00:17:42,050 vini re se si kjo ", nëse në buzë, fryrje "është lloj i vetë-përmbante. 353 00:17:42,050 --> 00:17:43,704 Kështu që kam nevojë për të rregulluar këtë. 354 00:17:43,704 --> 00:17:44,870 Më lejoni të shkojnë përpara dhe të bëjë këtë. 355 00:17:44,870 --> 00:17:48,630 Më lejoni të shpëtoj prej kësaj dhe të kthehemi të origjinalit tonë, më shumë të qëllimshme 356 00:17:48,630 --> 00:17:49,870 funksionalitetin. 357 00:17:49,870 --> 00:18:01,080 Pra, "nëse prekur buzë, atëherë" unë dua për ta kthyer, siç është propozuar Victoria, 358 00:18:01,080 --> 00:18:02,480 180 gradë. 359 00:18:02,480 --> 00:18:05,497 Dhe nuk dua të luajë të shëndoshë "ouch" atje? 360 00:18:05,497 --> 00:18:11,800 361 00:18:11,800 --> 00:18:15,580 >> Po, vini re se është jashtë se bllok të verdhë. 362 00:18:15,580 --> 00:18:17,680 Pra, kjo, gjithashtu, do të jetë një bug, por unë kam vënë re atë. 363 00:18:17,680 --> 00:18:21,290 Kështu që unë jam duke shkuar për të zvarrit atë deri këtu, dhe njoftimi tani është brenda "nëse". 364 00:18:21,290 --> 00:18:24,250 Pra, "në qoftë se" është ky lloj e si njollë krah-like 365 00:18:24,250 --> 00:18:26,260 që vetëm do të bëni atë që është në brendësi të saj. 366 00:18:26,260 --> 00:18:30,216 Kështu që tani, nëse unë zvogëluar në rreziku i annoying-- 367 00:18:30,216 --> 00:18:32,860 368 00:18:32,860 --> 00:18:36,470 >> COMPUTER: Ouch, ouch, ouch. 369 00:18:36,470 --> 00:18:39,910 >> DAVID Malan: Dhe thjesht do të vazhdojë përgjithmonë. 370 00:18:39,910 --> 00:18:44,160 Tani vetëm për të përshpejtuar gjërat këtu, më lejoni të shkoj përpara dhe të hapur, 371 00:18:44,160 --> 00:18:50,460 le say-- më lejoni të shkoj për disa të stuff tim nga klasa. 372 00:18:50,460 --> 00:18:53,000 373 00:18:53,000 --> 00:19:00,220 Dhe më lejoni të hapur, le të themi, kjo një të bërë nga një prej shokëve tanë mësimore 374 00:19:00,220 --> 00:19:01,500 nja dy vjet më parë. 375 00:19:01,500 --> 00:19:04,732 Kështu që disa prej jush mund të kujtojnë kjo lojë nga kaluar, 376 00:19:04,732 --> 00:19:05,940 dhe është e vërtetë e jashtëzakonshme. 377 00:19:05,940 --> 00:19:08,190 Edhe pse ne kemi bërë të thjeshtë e programeve të drejtë tani, 378 00:19:08,190 --> 00:19:09,980 le të shqyrtojmë se çfarë këtë në fakt duket si. 379 00:19:09,980 --> 00:19:10,650 Më lejoni të goditur të luajë. 380 00:19:10,650 --> 00:19:14,210 381 00:19:14,210 --> 00:19:18,980 >> Pra, në këtë lojë, ne kemi një bretkocë, dhe duke përdorur arrow keys-- 382 00:19:18,980 --> 00:19:23,340 ai ndërmerr hapa më të mëdha se unë remember-- Unë kam kontroll mbi këtë bretkocë. 383 00:19:23,340 --> 00:19:29,630 Dhe qëllimi është për të marrë të gjithë zënë Rruga pa drejtimin në makina. 384 00:19:29,630 --> 00:19:34,735 Dhe le të see-- kur të shkoj deri këtu, duhet të presë për një regjistër të lëvizni nga. 385 00:19:34,735 --> 00:19:38,130 386 00:19:38,130 --> 00:19:39,274 Kjo duket si një bug. 387 00:19:39,274 --> 00:19:42,240 388 00:19:42,240 --> 00:19:43,495 Kjo është lloj i një bug. 389 00:19:43,495 --> 00:19:45,980 390 00:19:45,980 --> 00:19:46,480 Në rregull. 391 00:19:46,480 --> 00:19:51,550 Unë jam në këtë këtu, atje, dhe pastaj ju mbani 392 00:19:51,550 --> 00:19:54,100 duke shkuar deri sa ju të merrni të gjithë bretkosat në pads zambak. 393 00:19:54,100 --> 00:19:55,920 Tani kjo mund të duket edhe më komplekse, 394 00:19:55,920 --> 00:19:57,840 por le të përpiqemi për të thyer këtë poshtë mendërisht 395 00:19:57,840 --> 00:20:00,040 dhe me gojë në blloqe që e përbëjnë. 396 00:20:00,040 --> 00:20:03,910 Pra, nuk ka ndoshta një mister pjesë që ne nuk kemi parë ende 397 00:20:03,910 --> 00:20:07,440 por që është duke iu përgjigjur tasteve, për gjërat që i goditi në tastierë. 398 00:20:07,440 --> 00:20:11,660 >> Pra, nuk ka ndoshta një lloj bllok që thotë se, në qoftë se çelësi është e barabartë me lart, 399 00:20:11,660 --> 00:20:15,965 pastaj të bëjë diçka me Scratch-- ndoshta lëvizin atë 10 hapa në këtë mënyrë. 400 00:20:15,965 --> 00:20:20,240 Nëse çelësi poshtë shtypet, lëvizin 10 hapa në këtë mënyrë, ose butonin e majtë, lëvizin 10 hapa 401 00:20:20,240 --> 00:20:21,710 në këtë mënyrë, 10 hapat se. 402 00:20:21,710 --> 00:20:23,644 Unë e kam kthyer në mënyrë të qartë cat në një bretkocë. 403 00:20:23,644 --> 00:20:26,060 Pra, kjo është vetëm kur kostum, si thirrjet Scratch arsyetimet tuaja, ne 404 00:20:26,060 --> 00:20:28,440 vetëm importuar një pamje të bretkocë. 405 00:20:28,440 --> 00:20:29,570 >> Por çfarë tjetër po ndodh? 406 00:20:29,570 --> 00:20:32,794 Çfarë linja të tjera të kodit, atë pjesë të tjera puzzle 407 00:20:32,794 --> 00:20:35,460 bënë Blake, bashkëpunëtorit tonë të mësimdhënies, përdorur në këtë program, me sa duket? 408 00:20:35,460 --> 00:20:38,320 409 00:20:38,320 --> 00:20:42,730 Çfarë është duke bërë çdo gjë move-- çfarë programimi ndërtuar? 410 00:20:42,730 --> 00:20:44,950 >> Motion, sure-- kështu lëvizur bllok, me siguri. 411 00:20:44,950 --> 00:20:49,330 Dhe çfarë është ajo block veprim brenda, ka shumë të ngjarë? 412 00:20:49,330 --> 00:20:52,850 Po, një lloj lak, ndoshta një forever bllokuar, ndoshta një përsëritje block-- 413 00:20:52,850 --> 00:20:54,070 të përsëritur deri në bllok. 414 00:20:54,070 --> 00:20:57,330 Dhe kjo është ajo që është duke e bërë shkrimet dhe pads zambak dhe çdo gjë tjetër veprim 415 00:20:57,330 --> 00:20:57,990 poshtë e lart. 416 00:20:57,990 --> 00:21:00,270 Është vetëm ndodh pafund. 417 00:21:00,270 --> 00:21:03,180 >> Pse janë disa nga makinat lëviz më shpejt se të tjerët? 418 00:21:03,180 --> 00:21:06,607 Çfarë është e ndryshme në lidhje me këto programe? 419 00:21:06,607 --> 00:21:09,690 Yeah, ndoshta disa prej tyre janë duke marrë më shumë hapa në të njëjtën kohë dhe disa prej tyre 420 00:21:09,690 --> 00:21:10,690 pak hapa në të njëjtën kohë. 421 00:21:10,690 --> 00:21:14,670 Dhe efekti vizual është i shpejtë kundrejt ngadalshëm. 422 00:21:14,670 --> 00:21:16,030 >> Çfarë mendoni ju ka ndodhur? 423 00:21:16,030 --> 00:21:19,700 Kur kam marrë bretkocë tim gjatë gjithë rrugës nëpër rrugë dhe lumit 424 00:21:19,700 --> 00:21:23,560 mbi jastëk lily, diçka rëndësishëm ndodhi. 425 00:21:23,560 --> 00:21:26,540 Ajo që ndodhi sa më shpejt që kam bërë këtë? 426 00:21:26,540 --> 00:21:27,210 Ajo u ndal. 427 00:21:27,210 --> 00:21:29,680 Kjo bretkocë ndalur, dhe Kam marrë një bretkocë të dytë. 428 00:21:29,680 --> 00:21:33,155 Pra, çfarë duhet të jetë konstrukt përdoret atje, çfarë veti? 429 00:21:33,155 --> 00:21:36,020 430 00:21:36,020 --> 00:21:38,660 >> Yeah, kështu që nuk ka një lloj "Në qoftë se" kusht deri atje, too. 431 00:21:38,660 --> 00:21:41,909 Dhe kjo rezulton out-- ne nuk e shohim this-- por ka blloqe të tjera në atë vend 432 00:21:41,909 --> 00:21:45,300 mund të them, nëse ju jeni të prekur një tjetër gjë në ekran, 433 00:21:45,300 --> 00:21:47,720 në qoftë se ju jeni prekur pad zambak, "pastaj". 434 00:21:47,720 --> 00:21:50,810 Dhe pastaj kjo është kur ne bërë bretkocë dytë shfaqet. 435 00:21:50,810 --> 00:21:54,969 Pra, edhe pse kjo lojë është sigurisht shumë datë, edhe pse në shikim të parë 436 00:21:54,969 --> 00:21:58,010 nuk ka aq shumë do Blake on-- dhe nuk e nxit këtë deri në dy minuta, 437 00:21:58,010 --> 00:22:00,390 ajo ndoshta mori atë të disa orë për të krijuar këtë lojë 438 00:22:00,390 --> 00:22:03,850 në bazë të kujtesës ose video e tij e versionit të kaluar së saj. 439 00:22:03,850 --> 00:22:07,940 Por të gjitha këto gjëra të vogla ndodh në ekran në izolim 440 00:22:07,940 --> 00:22:11,550 avulloj për këto shumë e thjeshtë Lëvizjet constructs-- ose deklarata 441 00:22:11,550 --> 00:22:15,519 si ne kemi diskutuar, sythe dhe kushtet, dhe kjo është në lidhje. 442 00:22:15,519 --> 00:22:17,060 Ka disa karakteristika të tjera njohës. 443 00:22:17,060 --> 00:22:19,130 Disa prej tyre janë thjesht estetike ose akustike, 444 00:22:19,130 --> 00:22:20,964 si tingujt Unë vetëm luajtur me. 445 00:22:20,964 --> 00:22:23,380 Por, për pjesën më të madhe, ju kanë në këtë gjuhë, Scratch, 446 00:22:23,380 --> 00:22:25,350 të gjithë themelore blloqe ndërtimi që ju 447 00:22:25,350 --> 00:22:29,280 kanë në C, Java, JavaScript, PHP, Ruby, Python, 448 00:22:29,280 --> 00:22:32,960 dhe çdo numër të gjuhëve të tjera. 449 00:22:32,960 --> 00:22:36,720 Çdo pyetje në lidhje me Scratch? 450 00:22:36,720 --> 00:22:37,220 Në rregull. 451 00:22:37,220 --> 00:22:40,303 Pra, ne nuk do të zhyten në të thellë për Scratch, edhe pse ju jeni të mirëpritur këtë fundjavë, 452 00:22:40,303 --> 00:22:42,860 veçanërisht në qoftë se keni fëmijë ose mbesat dhe nipërit dhe të tilla, 453 00:22:42,860 --> 00:22:44,220 për futjen e tyre në Scratch. 454 00:22:44,220 --> 00:22:47,960 Kjo është në fakt një mrekullisht gjallë mjedisi me, siç thonë autorët e saj, 455 00:22:47,960 --> 00:22:49,120 tavanet shumë të larta. 456 00:22:49,120 --> 00:22:51,670 Edhe pse kemi filluar me shumë detaje të nivelit të ulët, 457 00:22:51,670 --> 00:22:54,890 ju mund të vërtetë të bëjë mjaft me të, dhe kjo është ndoshta 458 00:22:54,890 --> 00:22:57,360 një demonstrim i pikërisht këtë. 459 00:22:57,360 --> 00:23:02,920 >> Por tani le të kalojnë në disa më shumë probleme të sofistikuara, në qoftë se ju do të, 460 00:23:02,920 --> 00:23:05,870 i njohur si "kërkim" dhe "Sorting," në përgjithësi. 461 00:23:05,870 --> 00:23:09,500 Ne kishim ky libër telefoni earlier-- këtu është një tjetër vetëm për discussion-- 462 00:23:09,500 --> 00:23:13,460 që ne ishim në gjendje për të kërkuar më efikase për shkak se 463 00:23:13,460 --> 00:23:15,270 një supozim të rëndësishëm. 464 00:23:15,270 --> 00:23:17,655 Dhe vetëm të jetë i qartë, çfarë Supozimi ishte I bërë 465 00:23:17,655 --> 00:23:19,280 kur të kërkoni me anë të këtij libri të telefonit? 466 00:23:19,280 --> 00:23:23,342 467 00:23:23,342 --> 00:23:25,300 Kjo Mike Smith ishte në libri telefonit, edhe pse unë 468 00:23:25,300 --> 00:23:27,410 do të jetë në gjendje për të trajtuar skenari pa të 469 00:23:27,410 --> 00:23:30,720 ka në qoftë se unë vetëm u ndal para kohe. 470 00:23:30,720 --> 00:23:31,806 Libri është alfabetik. 471 00:23:31,806 --> 00:23:33,930 Dhe kjo është një shumë bujar supozim, sepse kjo 472 00:23:33,930 --> 00:23:36,580 do të thotë someone-- Unë jam natyrë e prerjes një qoshe, 473 00:23:36,580 --> 00:23:40,580 si unë jam më i shpejtë, sepse dikush tjetër bëri një punë shumë e vështirë për mua. 474 00:23:40,580 --> 00:23:43,120 >> Por, çfarë nëse telefoni Libri u Unsorted? 475 00:23:43,120 --> 00:23:47,050 Ndoshta Verizon mori dembel, vetëm hodhën emrat e të gjithëve dhe numrat në atje 476 00:23:47,050 --> 00:23:50,120 ndoshta në mënyrë në të cilën ata nënshkruar për shërbimin e telefonit. 477 00:23:50,120 --> 00:23:54,570 Dhe sa kohë do të marrë mua për të gjetur dikë si Mike Smith? 478 00:23:54,570 --> 00:23:58,160 1000 faqe telefoni book-- sa Faqet e nuk kam për të parë përmes? 479 00:23:58,160 --> 00:23:58,905 >> Të gjithë ata. 480 00:23:58,905 --> 00:24:00,030 Ju jeni lloj nga fat. 481 00:24:00,030 --> 00:24:03,420 Ju fjalë për fjalë duhet të shikoni në çdo faqe nëse librin e telefonit është vetëm 482 00:24:03,420 --> 00:24:04,450 të renditura rastësisht. 483 00:24:04,450 --> 00:24:06,910 Ju mund të merrni me fat dhe për të gjetur Mike në faqen e parë, për shkak se ai 484 00:24:06,910 --> 00:24:08,826 ishte i konsumatorit të parë të urdhërojë shërbimin e telefonit. 485 00:24:08,826 --> 00:24:10,760 Por ai mund të ketë qenë i fundit, too. 486 00:24:10,760 --> 00:24:12,500 >> Kështu mënyrë të rastit nuk është e mirë. 487 00:24:12,500 --> 00:24:16,750 Pra, mendoj që ne duhet të lloj Libri i telefonit ose në të dhënat e përgjithshme e renditjes 488 00:24:16,750 --> 00:24:18,520 se ne kemi qenë të dhënë. 489 00:24:18,520 --> 00:24:19,440 Si mund ta bëjmë këtë? 490 00:24:19,440 --> 00:24:21,360 >> E pra, më lejoni vetëm të përpiqet një shembull i thjeshtë këtu. 491 00:24:21,360 --> 00:24:24,290 Më lejoni të shkojnë përpara dhe të hedh një Disa numrat në bord. 492 00:24:24,290 --> 00:24:35,480 Supozoni se numrat që kemi janë, le të themi, katër, dy, një dhe tre. 493 00:24:35,480 --> 00:24:38,390 Dhe, Ben, lloj këta numra për ne. 494 00:24:38,390 --> 00:24:39,017 >> OK, mirë. 495 00:24:39,017 --> 00:24:39,850 Si e bëre? 496 00:24:39,850 --> 00:24:42,731 497 00:24:42,731 --> 00:24:43,230 Në rregull. 498 00:24:43,230 --> 00:24:44,710 Pra, fillojë me më të vogël vlera dhe më të lartë, 499 00:24:44,710 --> 00:24:46,084 dhe kjo është me të vërtetë intuita e mirë. 500 00:24:46,084 --> 00:24:48,080 Dhe të kuptojë se ne njerëzit në të vërtetë janë mjaft të 501 00:24:48,080 --> 00:24:49,913 mirë në zgjidhjen e problemeve si kjo, te pakten 502 00:24:49,913 --> 00:24:51,810 kur të dhënave është relativisht i vogël. 503 00:24:51,810 --> 00:24:54,860 Sa më shpejt që ju të filloni të keni qindra e numrave, mijëra të numrave, 504 00:24:54,860 --> 00:24:58,440 miliona numrave, Ben ndoshta nuk mund ta bëjë atë mjaft që të shpejtë, 505 00:24:58,440 --> 00:25:00,620 duke supozuar se ka pasur boshllëqet në numrat. 506 00:25:00,620 --> 00:25:03,450 Shumë e lehtë për të numëruar për një milion ndryshe, vetëm konsumon kohë. 507 00:25:03,450 --> 00:25:07,150 >> Pra, kjo tingëllon algorithm si Ben përdorur vetëm tani 508 00:25:07,150 --> 00:25:08,930 ishte kërkimi për numrin më të vogël. 509 00:25:08,930 --> 00:25:12,900 Pra, edhe pse ne njerëzit mund të marrë në një shumë të informacionit me sy, 510 00:25:12,900 --> 00:25:14,830 një kompjuter është në fakt pak më të kufizuar. 511 00:25:14,830 --> 00:25:17,560 Kanaçe kompjuter vetëm shikoni në një byte në një kohë 512 00:25:17,560 --> 00:25:20,770 ose ndoshta katër bytes në një time-- këto ditë ndoshta 8 bytes në një time-- 513 00:25:20,770 --> 00:25:24,450 por një numër shumë i vogël i bytes në një kohë të dhënë. 514 00:25:24,450 --> 00:25:28,480 >> Pra, duke pasur parasysh se ne me të vërtetë kemi katër vlera të veçanta here-- 515 00:25:28,480 --> 00:25:32,440 dhe ju mund të mendoni Ben si ka pafta në qoftë se do të ishte një kompjuter i tillë 516 00:25:32,440 --> 00:25:36,450 se ai nuk mund të shohin asgjë tjetër se një numër në një time-- 517 00:25:36,450 --> 00:25:39,720 kështu që ne në përgjithësi do të marrë, si në English, ne do të lexohet nga e djathta në të majtë. 518 00:25:39,720 --> 00:25:42,870 Pra, numri i parë Ben ndoshta shikuar të ishte katër dhe pastaj shumë shpejt 519 00:25:42,870 --> 00:25:44,770 e kuptoi se është një goxha i madh number-- lejoni të mbajtur në kërkim. 520 00:25:44,770 --> 00:25:45,357 >> Ka dy. 521 00:25:45,357 --> 00:25:45,940 Prit një minutë. 522 00:25:45,940 --> 00:25:47,070 Dy është më e vogël se katër. 523 00:25:47,070 --> 00:25:47,986 Unë jam duke shkuar për të kujtuar. 524 00:25:47,986 --> 00:25:49,070 Dy tani është më i vogël. 525 00:25:49,070 --> 00:25:50,417 Tani one-- kjo është edhe më mirë. 526 00:25:50,417 --> 00:25:51,250 Kjo është edhe më të vogla. 527 00:25:51,250 --> 00:25:54,000 Unë do të harrojmë për dy dhe vetëm mos harroni një tani. 528 00:25:54,000 --> 00:25:56,550 >> Dhe ai mund të ndalet në kërkim? 529 00:25:56,550 --> 00:25:58,360 E pra, ai mund të bazohet në këtë informacion, 530 00:25:58,360 --> 00:26:00,477 por ai do kërkimin më të mirë pjesa tjetër e listës. 531 00:26:00,477 --> 00:26:02,060 Sepse ajo që në qoftë se zero ishin në listë? 532 00:26:02,060 --> 00:26:03,643 Çfarë ndodh nëse negative dikush në listë? 533 00:26:03,643 --> 00:26:07,720 Ai vetëm e di se përgjigjen e tij është e saktë nëse ai është shteruese 534 00:26:07,720 --> 00:26:08,729 kontrolluar krejt Listen. 535 00:26:08,729 --> 00:26:10,020 Kështu që ne shikojmë në pjesën tjetër të kësaj. 536 00:26:10,020 --> 00:26:11,394 Trete kjo ishte një humbje kohe. 537 00:26:11,394 --> 00:26:13,540 Mori pafat, por unë kam qenë ende të drejtë për ta bërë këtë. 538 00:26:13,540 --> 00:26:17,857 Dhe kështu që tani ai me sa duket zgjedhur numrin më të vogël 539 00:26:17,857 --> 00:26:20,440 dhe vetëm vënë atë në fillim i listës, si unë do të bëj këtu. 540 00:26:20,440 --> 00:26:23,480 Tani çfarë keni bërë tjetër, edhe pse ju nuk e mendoni rreth saj gati 541 00:26:23,480 --> 00:26:25,962 në këtë masë? 542 00:26:25,962 --> 00:26:27,670 Përsëris procesin, kështu një lloj lak. 543 00:26:27,670 --> 00:26:28,920 Nuk është një ide e njohur. 544 00:26:28,920 --> 00:26:30,860 Kështu që këtu është katër. 545 00:26:30,860 --> 00:26:32,110 Kjo është aktualisht më i vogël. 546 00:26:32,110 --> 00:26:33,220 Kjo është një kandidat. 547 00:26:33,220 --> 00:26:33,900 Jo më. 548 00:26:33,900 --> 00:26:34,770 Tani unë kam parë dy. 549 00:26:34,770 --> 00:26:36,630 Kjo është element tjetër më i vogël. 550 00:26:36,630 --> 00:26:40,800 Trete kjo nuk është më e vogël, kështu që tani Ben mund të çrrënjos dy. 551 00:26:40,800 --> 00:26:44,510 >> Dhe tani ne përsëris procesin, dhe sigurisht tre merr nxorrën jashtë ardhshëm. 552 00:26:44,510 --> 00:26:45,420 Përsëris procesin. 553 00:26:45,420 --> 00:26:46,990 Katër merr nxorrën jashtë. 554 00:26:46,990 --> 00:26:50,140 Dhe tani ne jemi jashtë numrave, kështu që lista duhet të ndahen. 555 00:26:50,140 --> 00:26:51,960 >> Dhe në të vërtetë, kjo është një algoritëm formal. 556 00:26:51,960 --> 00:26:56,610 Një shkencëtar kompjuteri do e quajnë këtë "lloj përzgjedhjes" 557 00:26:56,610 --> 00:27:00,880 me idenë lloj a lista iteratively-- përsëri 558 00:27:00,880 --> 00:27:03,807 dhe përsëri dhe përsëri përzgjedhjen numri më i vogël. 559 00:27:03,807 --> 00:27:06,140 Dhe çfarë është e bukur për këtë është kjo është vetëm në mënyrë mallkuar intuitive. 560 00:27:06,140 --> 00:27:07,470 Është kaq e thjeshtë. 561 00:27:07,470 --> 00:27:11,100 Dhe ju mund të përsërisë të njëjtën gjë operacion përsëri dhe përsëri. 562 00:27:11,100 --> 00:27:12,150 Është e thjeshtë. 563 00:27:12,150 --> 00:27:17,170 >> Në këtë rast ajo ishte e shpejtë, por sa kohë e bën atë të vërtetë të marrë? 564 00:27:17,170 --> 00:27:19,880 Le të bëjnë të duket dhe të të ndjehen pak më shumë i lodhshëm. 565 00:27:19,880 --> 00:27:24,150 Pra, një, dy, tre, katër, pesë gjashtë, shtatë, tetë, nëntë, 10, 11, 12, 13, 14, 566 00:27:24,150 --> 00:27:26,160 15, 16-- numër arbitrar. 567 00:27:26,160 --> 00:27:28,780 Unë vetëm të kërkuar më shumë këtë herë se vetëm katër. 568 00:27:28,780 --> 00:27:30,780 Pra, nëse unë kam marrë një e tërë bandë e numrave now-- atë 569 00:27:30,780 --> 00:27:32,420 nuk ka edhe rëndësi atë që ata are---së lejojnë 570 00:27:32,420 --> 00:27:34,380 mendoni se çka kjo algorithm të vërtetë është si. 571 00:27:34,380 --> 00:27:35,857 >> Supozoni se ka një numër atje. 572 00:27:35,857 --> 00:27:38,190 Përsëri, nuk ka rëndësi se çfarë ata janë, por ata janë të rastit. 573 00:27:38,190 --> 00:27:39,679 Unë jam duke aplikuar algorithm Ben-së. 574 00:27:39,679 --> 00:27:41,220 Unë kam nevojë për të zgjedhur numrin më të vogël. 575 00:27:41,220 --> 00:27:41,761 Çfarë të bëj? 576 00:27:41,761 --> 00:27:44,240 Dhe unë jam duke shkuar për të fizikisht të bëjë atë në këtë kohë për të vepruar atë. 577 00:27:44,240 --> 00:27:46,099 Duke kërkuar, duke kërkuar, duke kërkuar, në kërkim, në kërkim. 578 00:27:46,099 --> 00:27:48,140 Vetëm nga koha që kam marrë për të fundi i listës mund të 579 00:27:48,140 --> 00:27:51,230 Unë të kuptojë më i vogël Numri i dy këtë herë. 580 00:27:51,230 --> 00:27:52,720 Një nuk është në listë. 581 00:27:52,720 --> 00:27:54,400 Kështu që unë vënë poshtë dy. 582 00:27:54,400 --> 00:27:55,590 >> Çfarë të bëj tjetër? 583 00:27:55,590 --> 00:27:58,600 Duke kërkuar, duke kërkuar, duke kërkuar, duke kërkuar. 584 00:27:58,600 --> 00:28:02,250 Tani kam gjetur numrin shtatë, sepse ka boshllëqe në këto numbers-- 585 00:28:02,250 --> 00:28:03,300 por vetëm arbitrare. 586 00:28:03,300 --> 00:28:03,800 Në rregull. 587 00:28:03,800 --> 00:28:06,030 Deri tani unë mund të vënë poshtë shtatë. 588 00:28:06,030 --> 00:28:08,860 Kërkim në kërkim, në kërkim. 589 00:28:08,860 --> 00:28:11,030 >> Tani unë jam duke supozuar, i Sigurisht, që Ben nuk 590 00:28:11,030 --> 00:28:14,780 kanë RAM ekstra, ekstra kujtesës, sepse, natyrisht, 591 00:28:14,780 --> 00:28:16,080 Unë jam duke kërkuar në të njëjtin numër. 592 00:28:16,080 --> 00:28:18,246 Po, unë mund të ketë mend të gjitha këto numra, 593 00:28:18,246 --> 00:28:19,930 dhe kjo është absolutisht e vërtetë. 594 00:28:19,930 --> 00:28:22,610 Por në qoftë se Ben kujton të gjithë nga numrat që ai ka parë, 595 00:28:22,610 --> 00:28:24,430 ai nuk e ka bërë me të vërtetë progresi themelore 596 00:28:24,430 --> 00:28:26,170 për shkak se ai tashmë ka aftësinë për të kërkuar 597 00:28:26,170 --> 00:28:27,540 me numrat në bord. 598 00:28:27,540 --> 00:28:29,373 Duke kujtuar të gjithë të Numrat nuk i ndihmon, 599 00:28:29,373 --> 00:28:32,490 për shkak se ai ende mund të si një kompjuter vetëm shikoni në, ne kemi thënë, një numër 600 00:28:32,490 --> 00:28:33,080 ne nje kohe. 601 00:28:33,080 --> 00:28:35,760 Kështu që nuk ka lloj mashtrojnë atje se ju mund të levave. 602 00:28:35,760 --> 00:28:39,170 >> Pra, në të vërtetë, si unë mbajtur në kërkim të listës, 603 00:28:39,170 --> 00:28:44,200 Unë fjalë për fjalë duhet të vetëm të mbajë mbrapa dhe me radhë nëpërmjet saj, të nxirrnit edhe 604 00:28:44,200 --> 00:28:45,710 numri i ardhshëm më i vogël. 605 00:28:45,710 --> 00:28:48,810 Dhe si ju lloj i mund të konkludoj nga lëvizjet e mia pa kuptim, 606 00:28:48,810 --> 00:28:50,860 kjo vetëm merr shumë lodhshëm shumë shpejt, 607 00:28:50,860 --> 00:28:54,850 dhe unë duket të jetë duke shkuar prapa dhe me radhë, mbrapa dhe me radhë mjaft pak. 608 00:28:54,850 --> 00:29:03,220 Tani për të qenë të drejtë, unë nuk kam për të shkuar mjaft të, mirë, le të see-- të jetë e drejtë, 609 00:29:03,220 --> 00:29:06,310 Unë nuk duhet të ecin shumë si shumë hapa çdo herë. 610 00:29:06,310 --> 00:29:09,200 Sepse, sigurisht, si unë zgjidhni numrat nga lista, 611 00:29:09,200 --> 00:29:11,860 lista mbetur po bëhet më e shkurtër. 612 00:29:11,860 --> 00:29:14,240 >> Dhe kështu që le të mendojmë për sa hapa unë jam në të vërtetë 613 00:29:14,240 --> 00:29:16,010 traipsing nëpër çdo kohë. 614 00:29:16,010 --> 00:29:18,950 Në situatën e parë kemi pasur 16 numra, 615 00:29:18,950 --> 00:29:22,210 dhe kështu maximally-- le të vetëm e bëjnë këtë për një discussion-- 616 00:29:22,210 --> 00:29:25,640 Unë kisha për të parë përmes 16 Numrat për të gjetur më të vogël. 617 00:29:25,640 --> 00:29:28,420 Por një herë kam shkëputur nga numri më i vogël, se si 618 00:29:28,420 --> 00:29:30,590 kohë të gjatë ishte në listën e mbetur, natyrisht? 619 00:29:30,590 --> 00:29:31,420 Vetëm 15. 620 00:29:31,420 --> 00:29:34,670 Pra, sa numra bëri Ben, ose unë kam për të parë përmes herë të dytë rreth? 621 00:29:34,670 --> 00:29:36,832 15, vetëm për të shkuar dhe për të gjetur më të vogël. 622 00:29:36,832 --> 00:29:39,540 Por tani, natyrisht, lista është, Edhe më e vogël se sa ishte më parë. 623 00:29:39,540 --> 00:29:42,540 Pra, si shumë hapa nuk kam duhet të marrë herën tjetër? 624 00:29:42,540 --> 00:29:49,970 14 dhe pastaj 13 dhe pastaj 12, plus dot, dot, dot, deri sa unë jam duke mbetur me vetëm një. 625 00:29:49,970 --> 00:29:53,146 Deri tani një shkencëtar kompjuteri do pyesin, mirë, çfarë bën që të gjithë të barabartë? 626 00:29:53,146 --> 00:29:55,770 Ajo në fakt është e barabartë me një beton Numri që ne mund të sigurisht 627 00:29:55,770 --> 00:30:00,490 bëjnë arithmetically, por ne duam të flasim në lidhje me efikasitetin e algoritmeve 628 00:30:00,490 --> 00:30:04,940 pak më shumë formulaically, pavarur nga sa kohë lista është. 629 00:30:04,940 --> 00:30:06,240 >> Dhe kështu që ju e dini se çfarë? 630 00:30:06,240 --> 00:30:09,860 Kjo është 16, por si kam thënë më parë, le të vetëm thirrje madhësinë e problemit 631 00:30:09,860 --> 00:30:10,970 n, ku n është një numër i. 632 00:30:10,970 --> 00:30:13,220 Ndoshta është 16, ndoshta është tre, ndoshta kjo është një milion. 633 00:30:13,220 --> 00:30:13,761 Une nuk e di. 634 00:30:13,761 --> 00:30:14,390 Unë nuk e kujdesit. 635 00:30:14,390 --> 00:30:16,520 Ajo që unë me të vërtetë dua është një formulë që unë mund të 636 00:30:16,520 --> 00:30:19,420 përdorin për të krahasuar këtë algorithm kundër algoritme të tjera 637 00:30:19,420 --> 00:30:22,350 që dikush mund të pretendojnë janë më të mirë ose më keq. 638 00:30:22,350 --> 00:30:25,430 >> Pra, ajo rezulton, dhe vetëm unë e di këtë nga klasën e shkollës, 639 00:30:25,430 --> 00:30:34,790 se ky fakt punon jashtë për të njëjtën gjë gjë si n mbi n plus një më shumë se dy. 640 00:30:34,790 --> 00:30:40,020 Dhe kjo ndodh me të barabartë, të Natyrisht, n katror plus n mbi dy. 641 00:30:40,020 --> 00:30:43,250 Pra, nëse kam kërkuar një formulë për mënyrën se si shumë hapa 642 00:30:43,250 --> 00:30:46,330 ishin të përfshirë në kërkim në të gjitha nga ato numra përsëri dhe përsëri 643 00:30:46,330 --> 00:30:52,681 dhe përsëri dhe përsëri, unë do të thoja kjo është katror n plus n mbi dy. 644 00:30:52,681 --> 00:30:53,430 Por ju e dini se çfarë? 645 00:30:53,430 --> 00:30:54,500 Kjo vetëm duket çrregullt. 646 00:30:54,500 --> 00:30:56,470 Unë vetëm të vërtetë dëshironi një ndjenja e përgjithshme e gjërave. 647 00:30:56,470 --> 00:30:58,810 Dhe ju mund të kujtojnë nga Shkolla e lartë se 648 00:30:58,810 --> 00:31:00,660 është nocioni i mandatit të lartë rendit. 649 00:31:00,660 --> 00:31:05,300 Cila nga këto kushte, n katror, ​​n, ose gjysmën, 650 00:31:05,300 --> 00:31:07,550 ka ndikimin më kalimin e kohës? 651 00:31:07,550 --> 00:31:11,920 N më e madhe merr, e cila nga këto çështje më së shumti? 652 00:31:11,920 --> 00:31:15,560 >> Me fjalë të tjera, në qoftë se unë plug në një milion, n katror 653 00:31:15,560 --> 00:31:17,900 do të jetë më e mundshme faktori dominues, 654 00:31:17,900 --> 00:31:21,670 një milion herë, sepse në vetvete është shumë më e madhe 655 00:31:21,670 --> 00:31:23,682 se plus një shtesë milion. 656 00:31:23,682 --> 00:31:24,390 Kështu që ju e dini se çfarë? 657 00:31:24,390 --> 00:31:27,305 Kjo është një tmerrshëm i tillë i madh Numri nëse katror një numër. 658 00:31:27,305 --> 00:31:28,430 Kjo nuk ka rëndësi. 659 00:31:28,430 --> 00:31:30,596 Ne jemi vetëm duke shkuar kryqin që jashtë dhe të harrojnë për të. 660 00:31:30,596 --> 00:31:34,250 Dhe kështu një shkencëtar kompjuteri do të thoshte se efikasiteti i këtij algoritmi 661 00:31:34,250 --> 00:31:37,850 është në rendin e n squared-- Unë do të thotë me të vërtetë një përafrim. 662 00:31:37,850 --> 00:31:40,810 Ajo është katror lloj afërsisht n. 663 00:31:40,810 --> 00:31:44,130 Me kalimin e kohës, aq më i madh dhe n madhe merr, kjo 664 00:31:44,130 --> 00:31:47,610 është një vlerësim i mirë për atë që efikasitetit ose mungesa e efikasitetit 665 00:31:47,610 --> 00:31:49,400 i këtij algoritmi të vërtetë është. 666 00:31:49,400 --> 00:31:52,040 Dhe unë nxjerrin se, sigurisht, nga të vërtetë duke bërë matematikë. 667 00:31:52,040 --> 00:31:54,040 Por tani unë jam vetëm duke përshëndetur duart e mia, sepse unë vetëm 668 00:31:54,040 --> 00:31:55,790 duan një ndjenjë të përgjithshme të këtij algoritmi. 669 00:31:55,790 --> 00:31:58,850 >> Pra, duke përdorur të njëjtën logjikë, ndërkohë, le të konsiderojmë një algoritmi 670 00:31:58,850 --> 00:32:01,162 ne tashmë dukej at-- kërkim linear. 671 00:32:01,162 --> 00:32:02,870 Kur isha në kërkim për book-- telefonit 672 00:32:02,870 --> 00:32:05,980 jo zgjidhja atë, në kërkim përmes telefonit book-- 673 00:32:05,980 --> 00:32:09,197 ne kemi mbajtur duke thënë se ajo ishte 1.000 hapa, ose 500 hapa. 674 00:32:09,197 --> 00:32:10,280 Por le të përgjithësojmë atë. 675 00:32:10,280 --> 00:32:12,860 Nëse ka n faqe në libri telefon, çfarë është 676 00:32:12,860 --> 00:32:17,250 koha running ose Efikasiteti i kërkimit lineare? 677 00:32:17,250 --> 00:32:19,750 Kjo është në mënyrë të sa hapa për të gjetur 678 00:32:19,750 --> 00:32:24,210 Mike Smith duke përdorur search linear, algorithm parë, apo edhe i dyti? 679 00:32:24,210 --> 00:32:27,240 680 00:32:27,240 --> 00:32:31,710 >> Në rastin më të keq, Mike është në fund të libri. 681 00:32:31,710 --> 00:32:35,590 Pra, nëse libri telefoni ka 1.000 faqe, kemi thënë për herë të fundit, në rastin më të keq, 682 00:32:35,590 --> 00:32:38,380 ajo mund të marrë afërsisht si shumë faqe për të gjetur Mike? 683 00:32:38,380 --> 00:32:38,990 Like 1,000. 684 00:32:38,990 --> 00:32:39,830 Kjo është një kufi i sipërm. 685 00:32:39,830 --> 00:32:41,790 Kjo është një situatë e keqe e mundshme. 686 00:32:41,790 --> 00:32:44,410 Por përsëri, ne jemi duke u larguar nga numra si 1000 tani. 687 00:32:44,410 --> 00:32:45,730 Është vetëm n. 688 00:32:45,730 --> 00:32:47,470 >> Pra, çfarë është konkluzioni logjik? 689 00:32:47,470 --> 00:32:50,210 Gjetja e Mike në një telefon libër që ka faqet n 690 00:32:50,210 --> 00:32:55,280 mund të marrë, në rastin më të keq shumë, sa hapa në mënyrë që të n? 691 00:32:55,280 --> 00:32:58,110 Dhe në të vërtetë një kompjuter Shkencëtari do të thoshte 692 00:32:58,110 --> 00:33:02,340 që në kohën drejtimin, apo në Performanca ose efikasiteti 693 00:33:02,340 --> 00:33:07,470 ose joefikasiteti, të një algoritmi si një kërkim linear është në rendin e n. 694 00:33:07,470 --> 00:33:10,010 Dhe ne mund të aplikojnë të njëjtën gjë Logjika e kalimit diçka jashtë 695 00:33:10,010 --> 00:33:13,170 si unë vetëm e bëri të dytë algorithm kemi pasur me librin e telefonit, 696 00:33:13,170 --> 00:33:16,040 ku kemi dy faqe në një kohë. 697 00:33:16,040 --> 00:33:20,120 >> Pra, 1000 faqe Libri i telefonit fuqisë na merr 500 faqe kthehet, plus një 698 00:33:20,120 --> 00:33:21,910 në qoftë se ne të dyfishtë përsëri pak. 699 00:33:21,910 --> 00:33:26,590 Pra, nëse një libër telefoni ka faqet n, por ne jemi duke bërë dy faqe në një kohë, 700 00:33:26,590 --> 00:33:28,900 kjo është afërsisht çfarë? 701 00:33:28,900 --> 00:33:33,190 N mbi dy, kështu që kjo është si n mbi dy. 702 00:33:33,190 --> 00:33:38,490 Por unë e bëri pretendojnë një moment më parë se n mbi two-- 703 00:33:38,490 --> 00:33:41,060 kjo është lloj i njëjtë si vetëm n. 704 00:33:41,060 --> 00:33:44,050 Kjo është vetëm një faktor konstant, Shkencëtarët kompjuterike do të thonë. 705 00:33:44,050 --> 00:33:45,970 Le të përqëndrohet vetëm në variablat, really-- 706 00:33:45,970 --> 00:33:47,780 variablat më të mëdha në ekuacion. 707 00:33:47,780 --> 00:33:52,530 >> Kërkimi Pra linear, nëse bëhet një faqe në një kohë ose dy faqe në një kohë, 708 00:33:52,530 --> 00:33:54,810 është lloj i në thelb të njëjtën gjë. 709 00:33:54,810 --> 00:33:56,880 Është ende në mënyrë të n. 710 00:33:56,880 --> 00:34:01,930 Por unë pohoi me foton time më parë se algoritmi i tretë nuk ishte 711 00:34:01,930 --> 00:34:02,480 linear. 712 00:34:02,480 --> 00:34:03,605 Kjo nuk ishte një vijë e drejtë. 713 00:34:03,605 --> 00:34:08,659 Kjo ishte se vija e lakuar, dhe algjebrike formula nuk ishte ajo? 714 00:34:08,659 --> 00:34:11,812 Log n-- mënyrë hyni bazë të dy të n. 715 00:34:11,812 --> 00:34:14,520 Dhe ne nuk kemi për të shkuar në shumë më shumë detaje në logarithms sot, 716 00:34:14,520 --> 00:34:17,394 por shumica e shkencëtarëve të kompjuterit nuk do të edhe ju them se çfarë është baza. 717 00:34:17,394 --> 00:34:20,639 Për shkak se ajo është e gjitha vetëm faktorë të vazhdueshme, kështu që të flasin, 718 00:34:20,639 --> 00:34:22,659 vetëm dallime të vogla numerike. 719 00:34:22,659 --> 00:34:31,179 Dhe kështu që kjo do të jetë një shumë e zakonshme Mënyra për kompjuterin veçanërisht formal 720 00:34:31,179 --> 00:34:33,949 shkencëtarët në një bord ose programuesit në një bord të bardhë 721 00:34:33,949 --> 00:34:36,889 në fakt duke argumentuar cilat algorithm ata do të përdorin 722 00:34:36,889 --> 00:34:39,500 apo çfarë efikasiteti i algorithm e tyre është. 723 00:34:39,500 --> 00:34:42,960 >> Dhe kjo nuk është domosdoshmërisht diçka ju diskutuar në çdo hollësi të madhe, 724 00:34:42,960 --> 00:34:47,889 por një programues i mirë është dikush i cili ka një sfond solid, formale. 725 00:34:47,889 --> 00:34:50,120 Ai është në gjendje të flasin për ju në këtë lloj mënyrë 726 00:34:50,120 --> 00:34:53,350 dhe në fakt të bëjë Argumentet cilësore si 727 00:34:53,350 --> 00:34:56,870 pse një algorithm ose një pjesë e software 728 00:34:56,870 --> 00:35:00,165 është superiore në një farë mënyre në një tjetër. 729 00:35:00,165 --> 00:35:02,540 Për shkak se ju mund të me siguri vetëm të drejtuar programin e një personi 730 00:35:02,540 --> 00:35:04,980 dhe të numëruar numrin e sekondave që duhet për të zgjidhur disa numra, 731 00:35:04,980 --> 00:35:06,710 dhe ju mund të kandidojë disa Programi personi tjetër 732 00:35:06,710 --> 00:35:08,418 dhe të numëruar numrin sekonda ajo merr. 733 00:35:08,418 --> 00:35:12,840 Por kjo është një mënyrë më të përgjithshme që ju mund të përdorni për të analizuar algoritme, 734 00:35:12,840 --> 00:35:15,520 në qoftë se ju do të, vetëm në letër ose vetëm me gojë. 735 00:35:15,520 --> 00:35:18,430 Edhe pa drejtimin e tij, pa edhe duke u përpjekur inputeve mostër, 736 00:35:18,430 --> 00:35:20,180 ju vetëm mund të arsyetojë nëpërmjet saj. 737 00:35:20,180 --> 00:35:24,670 Dhe kështu me punësimin e një zhvilluesi ose nëse të paturit e tij apo të saj lloj të argumentojnë për ju 738 00:35:24,670 --> 00:35:28,460 pse algorithm e tyre, sekreti i tyre Salcë për kërkimin miliarda 739 00:35:28,460 --> 00:35:30,580 i faqeve të internetit për tuaj Kompania është më e mirë, këto 740 00:35:30,580 --> 00:35:33,302 janë llojet e argumenteve që ideale duhet të jetë në gjendje për të bërë. 741 00:35:33,302 --> 00:35:35,010 Ose të paktën këto janë të llojet e gjërave 742 00:35:35,010 --> 00:35:40,211 që do të dalë në diskutim, në paktën në një diskutim shumë formale. 743 00:35:40,211 --> 00:35:40,710 Në rregull. 744 00:35:40,710 --> 00:35:44,400 Kështu Ben propozuar diçka quajtur përzgjedhjes lloj. 745 00:35:44,400 --> 00:35:48,200 Por unë do të propozojë që ka mënyra të tjera për ta bërë këtë, too. 746 00:35:48,200 --> 00:35:50,400 Ajo që unë nuk të vërtetë si në lidhje me algorithm Ben-së 747 00:35:50,400 --> 00:35:54,400 është se ai e mbajti në këmbë, ose pasi eci, mbrapa dhe me radhë 748 00:35:54,400 --> 00:35:56,930 dhe mbrapa dhe me radhë dhe mbrapa dhe me radhë. 749 00:35:56,930 --> 00:36:04,130 Çka nëse në vend të kësaj unë do të bëj diçka si këto numra këtu 750 00:36:04,130 --> 00:36:08,200 dhe unë do të vetëm të marrë me njëri- Numri i nga ana e tij që unë jam duke i dhënë atë? 751 00:36:08,200 --> 00:36:10,780 >> Me fjalë të tjera, këtu është lista ime e numrave. 752 00:36:10,780 --> 00:36:12,944 Katër, një, tre, dy. 753 00:36:12,944 --> 00:36:14,360 Dhe unë jam duke shkuar për të bërë në vijim. 754 00:36:14,360 --> 00:36:17,230 Unë jam duke shkuar për të futur numrat ku ata i përkasin në vend 755 00:36:17,230 --> 00:36:18,980 sesa përzgjedhur ato një në një kohë. 756 00:36:18,980 --> 00:36:20,820 Me fjalë të tjera, këtu është numri katër. 757 00:36:20,820 --> 00:36:22,430 >> Këtu është lista ime origjinale. 758 00:36:22,430 --> 00:36:25,290 Dhe unë jam duke shkuar për të ruajtur në thelb një listë e re këtu. 759 00:36:25,290 --> 00:36:26,710 Pra, kjo është lista e vjetër. 760 00:36:26,710 --> 00:36:28,560 Kjo është lista e re. 761 00:36:28,560 --> 00:36:30,220 Unë po të shoh se numri katër i parë. 762 00:36:30,220 --> 00:36:34,500 Lista im i ri është fillimisht bosh, kështu që është trivially rasti 763 00:36:34,500 --> 00:36:36,410 se katër tani është e ndryshme listë. 764 00:36:36,410 --> 00:36:39,560 Unë jam vetëm duke marrë numrin e unë jam e dhënë, dhe unë jam vënë atë në listën time të re. 765 00:36:39,560 --> 00:36:41,460 >> Është renditur kjo listë e re? 766 00:36:41,460 --> 00:36:41,990 Po. 767 00:36:41,990 --> 00:36:45,090 Kjo është budalla, sepse nuk është vetëm një element, por është absolutisht e renditura. 768 00:36:45,090 --> 00:36:46,390 Nuk ka asgjë në vendin e vet. 769 00:36:46,390 --> 00:36:49,290 Është më interesante, ky algoritëm, kur unë të lëvizin për në hapin e ardhshëm. 770 00:36:49,290 --> 00:36:50,550 >> Tani unë kam një të tillë. 771 00:36:50,550 --> 00:36:55,430 Pra, një, natyrisht, i takon më së duke filluar ose në fund të kësaj liste të re? 772 00:36:55,430 --> 00:36:56,360 Fillimi. 773 00:36:56,360 --> 00:36:58,530 Kështu që unë duhet të bëni disa punë tani. 774 00:36:58,530 --> 00:37:01,410 Unë kam qenë duke marrë disa liritë me shënues tim 775 00:37:01,410 --> 00:37:03,120 nga vetëm duke tërhequr gjëra ku unë dua ata, 776 00:37:03,120 --> 00:37:05,320 por kjo nuk është e vërtetë saktë në një kompjuter. 777 00:37:05,320 --> 00:37:08,530 Një kompjuter, siç e dimë, ka RAM, ose Random Access Memory, 778 00:37:08,530 --> 00:37:12,411 dhe kjo është një bajt dhe një tjetër dhe një tjetër byte byte. 779 00:37:12,411 --> 00:37:14,910 Dhe në qoftë se ju keni një Gigabyte e RAM, ju keni një miliard byte, 780 00:37:14,910 --> 00:37:16,680 por ata janë fizikisht në një vend. 781 00:37:16,680 --> 00:37:19,540 Ju nuk mund të lëvizë gjëra rreth duke tërhequr atë në bord 782 00:37:19,540 --> 00:37:20,750 ku të duash. 783 00:37:20,750 --> 00:37:24,090 Pra, nëse lista ime e re ka katër vende në kujtesë, 784 00:37:24,090 --> 00:37:27,480 për fat të keq katër është tashmë në vendin e gabuar. 785 00:37:27,480 --> 00:37:30,410 >> Pra, për të futur numrin një Unë nuk mund të tërheqë atë këtu. 786 00:37:30,410 --> 00:37:31,901 Ky vend i kujtesës nuk ekziston. 787 00:37:31,901 --> 00:37:35,150 Kjo do të mashtrimit, dhe unë kam qenë mashtrimit në pikturë për disa minuta 788 00:37:35,150 --> 00:37:35,800 këtu. 789 00:37:35,800 --> 00:37:40,950 Pra, me të vërtetë, në qoftë se unë dua të vënë një këtu, Unë duhet të kopje përkohësisht katër 790 00:37:40,950 --> 00:37:43,030 dhe pastaj të vënë atë atje. 791 00:37:43,030 --> 00:37:45,500 >> Kjo është në rregull, kjo është e saktë, kjo është teknikisht e mundur, 792 00:37:45,500 --> 00:37:48,410 por të kuptojë se është punë shtesë. 793 00:37:48,410 --> 00:37:50,460 Unë nuk e vetëm të vënë numrin në vend. 794 00:37:50,460 --> 00:37:53,026 I pari kishte për të lëvizur një numrin, pastaj të vënë atë në vend, 795 00:37:53,026 --> 00:37:54,650 kështu që unë lloj i dyfishuar sasinë e mia të punës. 796 00:37:54,650 --> 00:37:55,660 Pra, mbani në mend. 797 00:37:55,660 --> 00:37:57,120 >> Por unë tani jam bërë me këtë element. 798 00:37:57,120 --> 00:37:59,056 Tani unë dua të kap numrin tre. 799 00:37:59,056 --> 00:38:00,430 Ku, sigurisht, e bën atë të takon? 800 00:38:00,430 --> 00:38:01,480 Në mes. 801 00:38:01,480 --> 00:38:03,650 Unë nuk mund të mashtrojnë më dhe vetëm vënë atë atje, 802 00:38:03,650 --> 00:38:06,770 sepse, përsëri, ky kujtim është në vende fizike. 803 00:38:06,770 --> 00:38:10,900 Kështu që unë duhet të kopjoni katër dhe të vënë tre të gjatë këtu. 804 00:38:10,900 --> 00:38:11,550 Nuk është një punë e madhe. 805 00:38:11,550 --> 00:38:14,610 Kjo është vetëm një hap shtesë again-- ndihet shumë e lirë. 806 00:38:14,610 --> 00:38:16,445 >> Por tani unë të lëvizin për të dy. 807 00:38:16,445 --> 00:38:17,820 Të dy, natyrisht, i takon këtu. 808 00:38:17,820 --> 00:38:20,990 Tani ju filloni për të parë se si puna mund të grumbullohem. 809 00:38:20,990 --> 00:38:23,520 Tani çfarë duhet të bëj? 810 00:38:23,520 --> 00:38:28,570 Po, unë kam për të lëvizur katër, Unë pastaj duhet të kopjoni tre, 811 00:38:28,570 --> 00:38:31,200 dhe tani unë mund të futni të dy. 812 00:38:31,200 --> 00:38:34,460 Dhe kapur me këtë algorithm, mjaft interesant, 813 00:38:34,460 --> 00:38:41,050 është se mendoj ne kemi një më ekstreme rast ku është le të themi tetë, shtatë, 814 00:38:41,050 --> 00:38:45,150 gjashtë, pesë, katër, tre, dy, një. 815 00:38:45,150 --> 00:38:49,450 Kjo është, në shumë kontekste, skenari më i keq, 816 00:38:49,450 --> 00:38:51,570 për shkak të gjë e mallkuar është fjalë për fjalë prapa. 817 00:38:51,570 --> 00:38:53,670 >> Ajo nuk ka të vërtetë ndikojnë algorithm Ben-së, 818 00:38:53,670 --> 00:38:55,940 sepse në përzgjedhjen Ben-së lloj ai do të mbajë 819 00:38:55,940 --> 00:38:58,359 duke shkuar mbrapa dhe me radhë nëpër lista. 820 00:38:58,359 --> 00:39:01,150 Dhe për shkak se ai ishte gjithmonë në kërkim nëpër të gjithë listën e mbetur, 821 00:39:01,150 --> 00:39:02,858 kjo nuk ka rëndësi ku elementet janë. 822 00:39:02,858 --> 00:39:05,630 Por në këtë rast me futur tim approach-- le të provoni këtë. 823 00:39:05,630 --> 00:39:08,616 >> Pra, një, dy, tre, katër, pesë, gjashtë, shtatë, tetë. 824 00:39:08,616 --> 00:39:11,630 Një dy tre katër, pesë, gjashtë, shtatë, tetë. 825 00:39:11,630 --> 00:39:14,320 Unë jam duke shkuar për të marrë tetë, dhe ku mund ta vënë atë? 826 00:39:14,320 --> 00:39:17,260 E pra, në fillim të listës sime, sepse kjo listë e re është e renditura. 827 00:39:17,260 --> 00:39:18,760 Dhe unë e kalojnë atë. 828 00:39:18,760 --> 00:39:20,551 >> Ku mund të vënë shtatë? 829 00:39:20,551 --> 00:39:21,050 Mallkuar atë. 830 00:39:21,050 --> 00:39:23,174 Ajo ka nevojë për të shkuar atje, kështu që Unë kam për të bërë disa kopjimi. 831 00:39:23,174 --> 00:39:26,820 832 00:39:26,820 --> 00:39:28,480 Dhe tani shtatë shkon këtu. 833 00:39:28,480 --> 00:39:29,860 Tani unë të lëvizin për në gjashtë. 834 00:39:29,860 --> 00:39:30,980 Tani kjo është edhe më shumë punë. 835 00:39:30,980 --> 00:39:32,570 >> Tetë ka për të shkuar këtu. 836 00:39:32,570 --> 00:39:33,920 Seven ka për të shkuar këtu. 837 00:39:33,920 --> 00:39:35,450 Tani gjashtë mund të shkoni këtu. 838 00:39:35,450 --> 00:39:37,950 Tani unë kap pesë. 839 00:39:37,950 --> 00:39:40,560 Tani tetë ka për të shkuar këtu, shtatë ka për të shkuar këtu, 840 00:39:40,560 --> 00:39:43,650 gjashtë ka për të shkuar këtu, dhe tani pesë dhe të përsëritur. 841 00:39:43,650 --> 00:39:46,610 Dhe unë jam shumë e shumë lëvizur atë vazhdimisht. 842 00:39:46,610 --> 00:39:52,950 >> Pra, në fund, kjo algorithm-- ne do të e quajti atë futje sort-- fakt 843 00:39:52,950 --> 00:39:55,020 ka shumë punë, too. 844 00:39:55,020 --> 00:39:56,970 Është vetëm ndryshe lloj pune se Ben-së. 845 00:39:56,970 --> 00:40:00,090 Puna Ben kishte mua në jetë mbrapa dhe me radhë të gjithë kohës, 846 00:40:00,090 --> 00:40:03,510 zgjedhjen e ardhshme të vogël element përsëri dhe përsëri. 847 00:40:03,510 --> 00:40:06,660 Pra, ajo ishte kjo lloj shumë vizuale të punës. 848 00:40:06,660 --> 00:40:10,600 >> Kjo algorithm tjetër, e cila është ende e correct-- ajo do të marrë punë done-- 849 00:40:10,600 --> 00:40:12,800 vetëm ndryshon sasinë e punës. 850 00:40:12,800 --> 00:40:15,420 Ajo duket si fillimisht jeni kursimit, sepse ju jeni vetëm 851 00:40:15,420 --> 00:40:19,190 që kanë të bëjnë me çdo element deri para pa këmbë gjithë 852 00:40:19,190 --> 00:40:20,930 rruga nëpër lista si Ben ishte. 853 00:40:20,930 --> 00:40:25,300 Por problemi është, sidomos në këto Rastet e çmendur ku ajo është e gjitha prapa, 854 00:40:25,300 --> 00:40:27,830 ju jeni vetëm lloj i shtyrjen e punë e vështirë 855 00:40:27,830 --> 00:40:30,360 deri sa ju duhet për të rregulluar gabimet tuaja. 856 00:40:30,360 --> 00:40:33,919 >> Dhe kështu që nëse ju mund të imagjinoni këtë tetë dhe shtatë dhe gjashtë dhe pesë 857 00:40:33,919 --> 00:40:36,710 dhe më vonë katër dhe tre dhe dy duke lëvizur në rrugën e tyre nëpër lista, 858 00:40:36,710 --> 00:40:39,060 ne kemi vetëm ndryshuar lloji i punës që po bëjmë. 859 00:40:39,060 --> 00:40:42,340 Në vend të bërë atë më së fillimi i përsëritje tim, 860 00:40:42,340 --> 00:40:45,250 Unë jam vetëm duke bërë atë më së Fundi i çdo përsëritje. 861 00:40:45,250 --> 00:40:50,550 Pra, rezulton se këtij algoritmi, gjithashtu, në përgjithësi të quajtur futje lloj, 862 00:40:50,550 --> 00:40:52,190 është gjithashtu në mënyrë të n katërkëndësh. 863 00:40:52,190 --> 00:40:56,480 Kjo është në fakt më mirë, nuk ka më të mirë në të gjitha. 864 00:40:56,480 --> 00:41:00,810 >> Megjithatë, ka një qasje të tretë Unë do të na inkurajojnë të marrin në konsideratë, 865 00:41:00,810 --> 00:41:02,970 e cila është kjo. 866 00:41:02,970 --> 00:41:07,850 Pra, mendoj listën time, për thjeshtësi përsëri, është katër, një, tre, 867 00:41:07,850 --> 00:41:11,080 two-- vetëm katër numra. 868 00:41:11,080 --> 00:41:13,300 Ben kishte intuitë të mirë, intuita e mirë e njeriut 869 00:41:13,300 --> 00:41:16,340 më parë, me të cilin ne e fiksuar të gjithë lista eventually-- lloj futje. 870 00:41:16,340 --> 00:41:18,020 I na coaxed së bashku. 871 00:41:18,020 --> 00:41:22,530 Por le të marrë në konsideratë Mënyra më e thjeshtë për të rregulluar këtë listë. 872 00:41:22,530 --> 00:41:24,110 >> Kjo listë nuk është e renditura. 873 00:41:24,110 --> 00:41:26,130 Pse? 874 00:41:26,130 --> 00:41:31,920 Në anglisht, të shpjegojë pse kjo nuk është e renditura në fakt. 875 00:41:31,920 --> 00:41:33,400 Çfarë do të do të thotë të zgjidhet? 876 00:41:33,400 --> 00:41:34,220 >> STUDENT: Kjo nuk është vijues. 877 00:41:34,220 --> 00:41:34,990 >> DAVID Malan: Jo vijues. 878 00:41:34,990 --> 00:41:35,822 Më jepni një shembull. 879 00:41:35,822 --> 00:41:37,180 >> STUDENT: Vënë ato në mënyrë. 880 00:41:37,180 --> 00:41:37,440 >> DAVID Malan: OK. 881 00:41:37,440 --> 00:41:38,790 Më jepni një shembull më specifike. 882 00:41:38,790 --> 00:41:39,832 >> STUDENT: Në ngjitje Në rendin. 883 00:41:39,832 --> 00:41:41,206 DAVID Malan: Not në ngjitje qëllim. 884 00:41:41,206 --> 00:41:42,100 Qenë më të saktë. 885 00:41:42,100 --> 00:41:45,190 Unë nuk e di se çfarë do të thotë duke u ngritur. 886 00:41:45,190 --> 00:41:47,150 Çfarë nuk shkon? 887 00:41:47,150 --> 00:41:49,930 >> STUDENT: më i vogël i numra nuk është në hapësirën e parë. 888 00:41:49,930 --> 00:41:51,140 >> DAVID Malan: Numri më i vogël e jo në hapësirën e parë. 889 00:41:51,140 --> 00:41:52,120 Të jetë më specifik. 890 00:41:52,120 --> 00:41:55,000 Unë jam duke filluar të bie në të. 891 00:41:55,000 --> 00:41:59,470 Ne jemi duke numëruar, por çfarë është jashtë rendit këtu? 892 00:41:59,470 --> 00:42:00,707 >> STUDENT: rend numerik. 893 00:42:00,707 --> 00:42:02,040 DAVID Malan: sekuencë numerike. 894 00:42:02,040 --> 00:42:04,248 lloj gjithëve të mbajtjes ajo here-- nivel shumë të lartë. 895 00:42:04,248 --> 00:42:07,450 Vetëm fjalë për fjalë më tregoni se çfarë është gabuar si një fuqisë pesë-vjeçar. 896 00:42:07,450 --> 00:42:08,310 >> STUDENT: Plus një. 897 00:42:08,310 --> 00:42:08,750 >> DAVID Malan: Çfarë është ajo? 898 00:42:08,750 --> 00:42:09,610 >> STUDENT: Plus një. 899 00:42:09,610 --> 00:42:11,235 >> DAVID Malan: Çfarë do të thotë një plus? 900 00:42:11,235 --> 00:42:12,754 901 00:42:12,754 --> 00:42:14,170 Më jep një tjetër pesë-vjeçar. 902 00:42:14,170 --> 00:42:16,840 903 00:42:16,840 --> 00:42:18,330 Çfarë është e gabuar, mom? 904 00:42:18,330 --> 00:42:19,940 Çfarë është e gabuar, babi? 905 00:42:19,940 --> 00:42:22,808 Çfarë do të thotë kjo nuk është e renditura? 906 00:42:22,808 --> 00:42:24,370 >> STUDENT: Kjo nuk është vendi i duhur. 907 00:42:24,370 --> 00:42:25,580 >> DAVID Malan: Çfarë është jo në vendin e duhur? 908 00:42:25,580 --> 00:42:26,174 >> STUDENT: Katër. 909 00:42:26,174 --> 00:42:27,090 DAVID Malan: OK, mirë. 910 00:42:27,090 --> 00:42:29,110 Pra, katër nuk është aty ku duhet të jetë. 911 00:42:29,110 --> 00:42:30,590 Në veçanti, është kjo e drejtë? 912 00:42:30,590 --> 00:42:33,000 Katër dhe një, i pari dy numra shoh. 913 00:42:33,000 --> 00:42:34,930 A është kjo e drejtë? 914 00:42:34,930 --> 00:42:36,427 Jo, ata janë jashtë funksionit, apo jo? 915 00:42:36,427 --> 00:42:38,135 Në fakt, mendoj se tani në lidhje me një kompjuter, too. 916 00:42:38,135 --> 00:42:40,824 Ajo mund të shikoni vetëm ndoshta një, ndoshta dy gjëra në once-- 917 00:42:40,824 --> 00:42:43,240 dhe në të vërtetë vetëm një gjë në një kohë, por mund të paktën 918 00:42:43,240 --> 00:42:45,790 shikoni në një gjë, atëherë Gjë tjetër të drejtë tjetër për të. 919 00:42:45,790 --> 00:42:47,380 >> Pra, janë këto në mënyrë? 920 00:42:47,380 --> 00:42:48,032 Sigurisht që jo. 921 00:42:48,032 --> 00:42:48,740 Kështu që ju e dini se çfarë? 922 00:42:48,740 --> 00:42:51,020 Pse nuk kemi marrë fëmijën Hapat e ndreqim këtë problem 923 00:42:51,020 --> 00:42:53,410 në vend të bërë këto dashuroj Algoritmet si Ben, ku 924 00:42:53,410 --> 00:42:56,440 ai është lloj i fiksimin e tij nga looping nëpër lista 925 00:42:56,440 --> 00:42:59,670 në vend të bërë atë që kam bërë, ku Unë vetëm lloji i caktuar atë si të shkojmë? 926 00:42:59,670 --> 00:43:03,650 Le të vetëm të vërtetë të thyer poshtë Nocioni i rendit order-- numerike, 927 00:43:03,650 --> 00:43:06,990 e quajti atë çdo gjë që ju want-- në këto krahasime pairwise. 928 00:43:06,990 --> 00:43:07,590 >> Katër dhe një. 929 00:43:07,590 --> 00:43:09,970 A është kjo mënyrë e saktë? 930 00:43:09,970 --> 00:43:11,310 Pra, le të rregullojmë se. 931 00:43:11,310 --> 00:43:14,700 One dhe katër, dhe pastaj ne vetëm do të kopje atë. 932 00:43:14,700 --> 00:43:15,560 Të gjithë të drejtë, të mirë. 933 00:43:15,560 --> 00:43:17,022 I fiksuar një dhe katër. 934 00:43:17,022 --> 00:43:18,320 Tre dhe dy? 935 00:43:18,320 --> 00:43:18,820 Jo. 936 00:43:18,820 --> 00:43:21,690 Le fjalët e mia përputhen me gishtat e mi. 937 00:43:21,690 --> 00:43:23,695 Katër dhe tre? 938 00:43:23,695 --> 00:43:27,930 >> Kjo nuk është në rregull, kështu që unë jam duke shkuar për të bërë një, tre, katër, dy. 939 00:43:27,930 --> 00:43:28,680 OK, mirë. 940 00:43:28,680 --> 00:43:32,310 Tani katër dhe dy? 941 00:43:32,310 --> 00:43:33,370 Ne kemi nevojë për të rregulluar këtë, too. 942 00:43:33,370 --> 00:43:36,700 Kështu një, tre, dy, katër. 943 00:43:36,700 --> 00:43:39,820 Pra, është ajo zgjidhet? 944 00:43:39,820 --> 00:43:43,170 Jo, por është më afër të zgjidhet? 945 00:43:43,170 --> 00:43:48,930 >> Kjo është, sepse ne e fiksuar këtë gabim, ne e fiksuar këtë gabim, 946 00:43:48,930 --> 00:43:50,370 dhe ne e fiksuar këtë gabim. 947 00:43:50,370 --> 00:43:52,420 Pra, ne fiks tre gabime ndoshta. 948 00:43:52,420 --> 00:43:58,100 Ende nuk ka të vërtetë të duken renditura, por ajo është objektivisht më afër renditura 949 00:43:58,100 --> 00:44:00,080 sepse ne fiksuar disa nga këto gabime. 950 00:44:00,080 --> 00:44:02,047 >> Tani çfarë të bëj tjetër? 951 00:44:02,047 --> 00:44:03,630 I lloj i arritur në fund të listës. 952 00:44:03,630 --> 00:44:05,680 Unë duket se kanë fiksuar të gjitha gabimet, por jo. 953 00:44:05,680 --> 00:44:08,510 Sepse në këtë rast, disa numra mund të ketë bubbled deri afër 954 00:44:08,510 --> 00:44:10,410 me numra të tjerë që janë ende jashtë funksionit. 955 00:44:10,410 --> 00:44:12,951 Pra, le të bëjë atë përsëri, dhe unë do të vetëm të bëjë atë në vend në këtë kohë. 956 00:44:12,951 --> 00:44:14,170 Një dhe tre? 957 00:44:14,170 --> 00:44:14,720 Kjo është në rregull. 958 00:44:14,720 --> 00:44:16,070 Tre dhe dy? 959 00:44:16,070 --> 00:44:17,560 Sigurisht nuk ka, kështu që le të ndryshojë këtë. 960 00:44:17,560 --> 00:44:19,160 Pra dy, tre. 961 00:44:19,160 --> 00:44:21,340 Tre dhe katër? 962 00:44:21,340 --> 00:44:24,370 Dhe tani le të vetëm të jetë i veçanërisht pedant këtu. 963 00:44:24,370 --> 00:44:26,350 A është e renditura? 964 00:44:26,350 --> 00:44:29,280 Ju njerëzit e dinë se është e renditura. 965 00:44:29,280 --> 00:44:30,400 >> Unë duhet të provoni përsëri. 966 00:44:30,400 --> 00:44:31,900 Pra Olivia propozon I provoni përsëri. 967 00:44:31,900 --> 00:44:32,530 Pse? 968 00:44:32,530 --> 00:44:35,810 Për shkak se një kompjuter nuk ka luksin e syve tanë të njeriut 969 00:44:35,810 --> 00:44:38,080 i vetëm glancing back-- OK, unë jam bërë. 970 00:44:38,080 --> 00:44:41,610 Si e përcakton kompjuteri se lista është renditur tani? 971 00:44:41,610 --> 00:44:44,590 Mekanikisht. 972 00:44:44,590 --> 00:44:47,650 >> Unë duhet të kalojnë nëpër edhe një herë, dhe vetëm në qoftë se unë 973 00:44:47,650 --> 00:44:51,190 nuk bëjnë / të gjejnë gabime mund të pastaj të konkludojmë si kompjuter, yep, 974 00:44:51,190 --> 00:44:51,980 ne jemi të mirë për të shkuar. 975 00:44:51,980 --> 00:44:54,850 Pra, një dhe dy, dy dhe tre, tre dhe katër. 976 00:44:54,850 --> 00:44:58,030 Tani unë mund të them se kjo është definitivisht të renditura, sepse kam bërë asnjë ndryshim. 977 00:44:58,030 --> 00:45:01,940 Tani ajo do të jetë një bug dhe vetëm qesharake në qoftë se unë, kompjuteri, 978 00:45:01,940 --> 00:45:05,640 kërkuar të njëjtat pyetje përsëri duke pritur përgjigje të ndryshme. 979 00:45:05,640 --> 00:45:07,110 nuk duhet të ndodhë. 980 00:45:07,110 --> 00:45:08,600 >> Dhe kështu që tani lista është renditur. 981 00:45:08,600 --> 00:45:12,630 Për fat të keq, duke kohën e ky algoritëm është edhe n katror. 982 00:45:12,630 --> 00:45:13,130 Pse? 983 00:45:13,130 --> 00:45:19,520 Sepse ju keni numrat n, dhe në rastin më të keq ju duhet të lëvizin numrat n 984 00:45:19,520 --> 00:45:23,637 herë n sepse ju keni për të mbajtur vazhdim e sipër përsëri për të kontrolluar dhe potencialisht të rregulluar 985 00:45:23,637 --> 00:45:24,220 këto shifra. 986 00:45:24,220 --> 00:45:26,280 Dhe ne mund të bëjmë një më të Analiza formale, too. 987 00:45:26,280 --> 00:45:29,530 >> Pra, kjo është e gjitha për të thënë që ne kemi marrë tre qasjet e ndryshme, një 988 00:45:29,530 --> 00:45:32,210 prej tyre menjëherë intuitive off bat nga Ben 989 00:45:32,210 --> 00:45:35,170 për futjen time sugjeruar lloj të këtë një 990 00:45:35,170 --> 00:45:38,540 ku ju lloj i lë në harresë pyll për të pemëve fillimisht. 991 00:45:38,540 --> 00:45:41,760 Por atëherë në qoftë se ju të marrë një hap prapa, voila, ne kemi fiksuar idenë klasifikim. 992 00:45:41,760 --> 00:45:43,824 Pra, kjo është, guxoj të them, një nivel më të ulët, ndoshta 993 00:45:43,824 --> 00:45:45,740 se disa nga ato të tjera algoritme, por le të 994 00:45:45,740 --> 00:45:48,550 të shohim nëse ne nuk mund të parashikoj këto me anë të kësaj. 995 00:45:48,550 --> 00:45:51,450 >> Pra, kjo është një e bukur software që dikush 996 00:45:51,450 --> 00:45:56,110 shkroi përdorur bare ngjyra që është do të bëjë të mëposhtme për ne. 997 00:45:56,110 --> 00:45:57,736 Secili prej këtyre bare përfaqëson një numër. 998 00:45:57,736 --> 00:46:00,026 Taller bar, më e madhe numri, më i vogël bar, 999 00:46:00,026 --> 00:46:00,990 më i vogël se numri. 1000 00:46:00,990 --> 00:46:05,880 Pra, në mënyrë ideale ne duam një piramidë të bukur ku fillon e vogël dhe merr të mëdha, 1001 00:46:05,880 --> 00:46:08,330 dhe kjo do të thotë se këto bare janë të renditura. 1002 00:46:08,330 --> 00:46:11,200 Kështu që unë jam duke shkuar për të shkuar përpara dhe të zgjedhur, për shembull, algorithm Ben 1003 00:46:11,200 --> 00:46:13,990 first-- lloj përzgjedhje. 1004 00:46:13,990 --> 00:46:16,220 >> Dhe njoftim se çfarë është bërë. 1005 00:46:16,220 --> 00:46:18,670 Mënyra se si ata kanë zgjedhur për të kujtoj këtë algorithm 1006 00:46:18,670 --> 00:46:22,090 është se, ashtu si unë kam qenë duke ecur nëpër listën time, 1007 00:46:22,090 --> 00:46:24,710 ky program është duke ecur me listën e saj të numrave, 1008 00:46:24,710 --> 00:46:28,160 theksuar në rozë çdo numër që është e kërkuar në. 1009 00:46:28,160 --> 00:46:32,360 Dhe çfarë është gati të ndodhë tani? 1010 00:46:32,360 --> 00:46:35,154 >> Numri më i vogël se I apo Ben gjetur papritur 1011 00:46:35,154 --> 00:46:36,820 merr zhvendos në fillim të listës. 1012 00:46:36,820 --> 00:46:40,037 Dhe njoftim ata kanë nxjerrë numri që ishte atje, 1013 00:46:40,037 --> 00:46:41,120 dhe kjo është e përkryer gjobë. 1014 00:46:41,120 --> 00:46:42,600 Unë nuk e kam marrë në atë nivel të detajuar. 1015 00:46:42,600 --> 00:46:44,308 Por ne kemi nevojë për të vënë ky numër diku, 1016 00:46:44,308 --> 00:46:47,775 kështu që ne vetëm u zhvendos atë në spot hapur që ishte krijuar. 1017 00:46:47,775 --> 00:46:49,900 Kështu që unë jam duke shkuar për të shpejtuar këtë up, sepse përndryshe ajo 1018 00:46:49,900 --> 00:46:51,871 bëhet shumë e lodhshme shpejt. 1019 00:46:51,871 --> 00:46:55,800 1020 00:46:55,800 --> 00:46:58,600 Animation speed-- atje ne do të shkojmë. 1021 00:46:58,600 --> 00:47:01,850 Deri tani njëjti parim Unë kam qenë duke aplikuar, por ju 1022 00:47:01,850 --> 00:47:06,540 mund të filloni të ndjeni algorithm, në qoftë se ju do, ose të parë atë një pak më qartë. 1023 00:47:06,540 --> 00:47:13,190 Dhe kjo algorithm ka efektin e zgjedhur elementin tjetër më të vogël, 1024 00:47:13,190 --> 00:47:16,422 kështu që ju jeni do të fillojë të shohin atë luftoj deri në të majtë. 1025 00:47:16,422 --> 00:47:19,130 Dhe në çdo përsëritje, si unë propozuar, ajo ka një punë pak më pak. 1026 00:47:19,130 --> 00:47:21,921 Ajo nuk duhet të shkoni të gjithë rrugën përsëri në fund e majtë të listës, 1027 00:47:21,921 --> 00:47:23,900 sepse ajo tashmë e di se ata janë të renditura. 1028 00:47:23,900 --> 00:47:28,129 Pra, kjo lloj ndjehet si ajo është përshpejtimin, edhe pse çdo hap është 1029 00:47:28,129 --> 00:47:29,420 duke marrë të njëjtën sasi e kohës. 1030 00:47:29,420 --> 00:47:31,600 Ka vetëm hapa pak mbetura. 1031 00:47:31,600 --> 00:47:35,240 Dhe tani ju mund të lloj të ndjehen algorithm pastrimin në fund të tij, 1032 00:47:35,240 --> 00:47:37,040 dhe në të vërtetë tani është e renditura. 1033 00:47:37,040 --> 00:47:41,620 >> Pra, futje lloj është bërë të gjithë. 1034 00:47:41,620 --> 00:47:43,600 Unë kam nevojë për të ri-randomize array. 1035 00:47:43,600 --> 00:47:45,940 Dhe vini re unë mund vetëm mbajtur randomizing atë, 1036 00:47:45,940 --> 00:47:50,630 dhe ne do të merrni një përafrim të qasja e njëjtë, futje lloj. 1037 00:47:50,630 --> 00:47:55,050 Më lejoni të ngadalësuar atë poshtë për këtu. 1038 00:47:55,050 --> 00:47:56,915 Le të fillojmë se mbi. 1039 00:47:56,915 --> 00:47:57,414 Stop. 1040 00:47:57,414 --> 00:48:00,662 1041 00:48:00,662 --> 00:48:02,410 >> Le të kaloni katër. 1042 00:48:02,410 --> 00:48:03,200 Atje shkojmë. 1043 00:48:03,200 --> 00:48:04,190 Randomize array ata. 1044 00:48:04,190 --> 00:48:05,555 Dhe këtu ne go-- hyrjes lloj. 1045 00:48:05,555 --> 00:48:10,260 1046 00:48:10,260 --> 00:48:12,800 Luaj. 1047 00:48:12,800 --> 00:48:17,280 Vini re se kjo është që kanë të bëjnë me njëri- element ajo ballafaqohet menjëherë, 1048 00:48:17,280 --> 00:48:20,282 por në qoftë se ajo i takon në njoftimi gabuar vendi 1049 00:48:20,282 --> 00:48:21,740 të gjithë punën që ka për të ndodhë. 1050 00:48:21,740 --> 00:48:24,700 Ne duhet të vazhdojmë të zhvendosur më shumë më shumë elemente për të bërë dhomë 1051 00:48:24,700 --> 00:48:27,340 për atë që ne duam të vënë në vend. 1052 00:48:27,340 --> 00:48:30,740 >> Pra, ne jemi duke u fokusuar në la fund vetëm listës. 1053 00:48:30,740 --> 00:48:34,460 Njoftim nuk kemi shikuar edhe ne at-- nuk kanë nxjerrë në pah në çdo gjë rozë 1054 00:48:34,460 --> 00:48:35,610 në të djathtë. 1055 00:48:35,610 --> 00:48:38,180 Ne jemi vetëm kanë të bëjnë me problemet si të shkojmë, 1056 00:48:38,180 --> 00:48:40,430 por ne jemi duke krijuar një shumë të punojnë për veten akoma. 1057 00:48:40,430 --> 00:48:44,410 Dhe kështu që në qoftë se ne të shpejtuar këtë ide tani për të shkuar në përfundimin, 1058 00:48:44,410 --> 00:48:46,210 ajo ka një të ndjehen të ndryshme në të vërtetë. 1059 00:48:46,210 --> 00:48:50,150 Ajo është vetëm duke u fokusuar në fund e majtë, por duke bërë një punë pak më shumë si needed-- 1060 00:48:50,150 --> 00:48:53,230 lloj gjëra zbutjen mbi, ndreqim gjërat, 1061 00:48:53,230 --> 00:48:58,350 por që kanë të bëjnë në fund të fundit me çdo element në një kohë 1062 00:48:58,350 --> 00:49:07,740 deri sa të kemi të the-- mirë, ne të gjithë e dimë se si kjo do të përfundojë, 1063 00:49:07,740 --> 00:49:09,700 kështu që është një underwhelming pak ndoshta. 1064 00:49:09,700 --> 00:49:12,830 >> Por lista në end-- spoiler-- do të zgjidhet. 1065 00:49:12,830 --> 00:49:15,300 Pra, le të shohim në një të fundit. 1066 00:49:15,300 --> 00:49:16,840 Ne nuk mund të kaloni tani. 1067 00:49:16,840 --> 00:49:18,000 Ne jemi pothuajse atje. 1068 00:49:18,000 --> 00:49:19,980 Dy për të shkuar, në një të shkuar. 1069 00:49:19,980 --> 00:49:22,680 Dhe voila. 1070 00:49:22,680 --> 00:49:23,450 I shkelqyer. 1071 00:49:23,450 --> 00:49:27,220 >> Pra, tani le të bëjë një një të fundit, ri-randomizing me lloj flluskë. 1072 00:49:27,220 --> 00:49:31,690 Dhe vini re këtu, veçanërisht në qoftë se unë të ngadalësuar atë poshtë, kjo ka mbajtur swooping përmes. 1073 00:49:31,690 --> 00:49:36,830 Por vini re ai thjesht e bën pairwise lloj comparisons-- e zgjidhjeve lokale. 1074 00:49:36,830 --> 00:49:39,050 Por, sa më shpejt që ne të merrni për fundi i listës në rozë, 1075 00:49:39,050 --> 00:49:40,690 çfarë do të duhet të ndodhë përsëri? 1076 00:49:40,690 --> 00:49:44,539 1077 00:49:44,539 --> 00:49:46,830 Po, ajo do të duhet të të fillojnë të gjatë, për shkak të vetëm 1078 00:49:46,830 --> 00:49:49,870 gabime fikse pairwise. 1079 00:49:49,870 --> 00:49:53,120 Dhe kjo mund të ketë ende zbuluar të tjerët. 1080 00:49:53,120 --> 00:49:58,950 Dhe kështu që nëse ju të shpejtuar këtë ide, ju do të shihni se, shumë si emri nënkupton, 1081 00:49:58,950 --> 00:50:01,870 të vogla elements-- ose më mirë, e elements-- më të mëdha kanë filluar 1082 00:50:01,870 --> 00:50:03,740 të flluskë deri në krye, nëse ju do. 1083 00:50:03,740 --> 00:50:07,380 Dhe elementet më të vogla janë filluar të flluskë deri në të majtë. 1084 00:50:07,380 --> 00:50:10,780 Dhe me të vërtetë, kjo është lloj i efekti vizual si. 1085 00:50:10,780 --> 00:50:17,150 Dhe kështu që kjo do të përfundojë deri duke përfunduar në një mënyrë shumë të ngjashme, too. 1086 00:50:17,150 --> 00:50:19,160 >> Ne nuk duhet të banojë për këtë një të veçantë. 1087 00:50:19,160 --> 00:50:21,010 Më lejoni të hapur këtë tani, too. 1088 00:50:21,010 --> 00:50:24,040 Ka disa algoritme të tjera klasifikim në botë, disa prej të cilave 1089 00:50:24,040 --> 00:50:25,580 janë kapur këtu. 1090 00:50:25,580 --> 00:50:29,960 Dhe veçanërisht për nxënësit të cilët nuk janë të domosdoshmërisht vizuale apo matematikore, 1091 00:50:29,960 --> 00:50:31,930 siç kemi bërë më parë, ne mund të të bëjë këtë audially 1092 00:50:31,930 --> 00:50:34,210 nëse shoqërojnë një zë me këtë. 1093 00:50:34,210 --> 00:50:36,990 Dhe vetëm për argëtim, këtu është një disa algoritme të ndryshme, 1094 00:50:36,990 --> 00:50:40,950 dhe një prej tyre në mënyrë të veçantë ju jeni do të vini re është quajtur "bashkojë lloj." 1095 00:50:40,950 --> 00:50:43,250 >> Kjo është në fakt një thelb algorithm më të mirë, 1096 00:50:43,250 --> 00:50:45,860 të tilla që të bashkojë lloj, një nga ato ju jeni gati për të parë, 1097 00:50:45,860 --> 00:50:49,170 Nuk është rendi i n katror. 1098 00:50:49,170 --> 00:50:57,280 Kjo është në mënyrë të n herë log i n, e cila në fakt është më i vogël dhe kështu 1099 00:50:57,280 --> 00:50:58,940 më shpejt se ato tre të tjerë. 1100 00:50:58,940 --> 00:51:00,670 Dhe ka disa të tjera ato pa kuptim që ne do të shohim. 1101 00:51:00,670 --> 00:51:01,933 >> Pra, këtu ne do të shkojmë me një zë. 1102 00:51:01,933 --> 00:51:06,620 1103 00:51:06,620 --> 00:51:10,490 Kjo është futje lloj, kështu që përsëri kjo është vetëm që kanë të bëjnë me elementet 1104 00:51:10,490 --> 00:51:13,420 si ata vijnë. 1105 00:51:13,420 --> 00:51:17,180 Kjo është lloj flluskë, kështu që është e duke pasur parasysh ato palë në një kohë. 1106 00:51:17,180 --> 00:51:22,030 1107 00:51:22,030 --> 00:51:24,490 Dhe përsëri, elementet më të mëdha janë bubbling deri në krye. 1108 00:51:24,490 --> 00:51:38,098 1109 00:51:38,098 --> 00:51:41,710 >> Next up lloj përzgjedhje. 1110 00:51:41,710 --> 00:51:45,420 Kjo është algorithm Benit, ku përsëri ai është zgjedhur iteratively 1111 00:51:45,420 --> 00:51:46,843 element tjetër më i vogël. 1112 00:51:46,843 --> 00:51:49,801 1113 00:51:49,801 --> 00:51:53,900 Dhe përsëri, tani ju mund të vërtetë të dëgjuar se ajo është përshpejtuar, por vetëm në masën 1114 00:51:53,900 --> 00:51:58,230 si ajo e bërë gjithnjë e më pak punojnë në çdo përsëritje. 1115 00:51:58,230 --> 00:52:04,170 Kjo është aq më shpejt ai, shkrihen lloj, cila është zgjidhja grupe të numrave 1116 00:52:04,170 --> 00:52:05,971 së bashku dhe pastaj i kombinuar ato. 1117 00:52:05,971 --> 00:52:07,720 Pra look-- majtë gjysma është renditur tashmë. 1118 00:52:07,720 --> 00:52:14,165 >> Tani ajo është zgjidhja gjysmën e djathtë, dhe tani ajo do të kombinohen ato në një. 1119 00:52:14,165 --> 00:52:19,160 Kjo është diçka që quhet "Gnome lloj." 1120 00:52:19,160 --> 00:52:23,460 Dhe ju mund të lloj të shihni se kjo është kthim prapa dhe me radhë, 1121 00:52:23,460 --> 00:52:27,950 fiksimin e punë pak këtu dhe aty para se ajo vazhdon me punën e re. 1122 00:52:27,950 --> 00:52:32,900 1123 00:52:32,900 --> 00:52:33,692 Dhe kjo eshte. 1124 00:52:33,692 --> 00:52:36,400 Ka një tjetër lloj, e cila është me të vërtetë vetëm për qëllime akademike, 1125 00:52:36,400 --> 00:52:40,980 quajtur "lloj budalla", e cila merr të dhënat tuaja, llojet atë rastësisht, 1126 00:52:40,980 --> 00:52:43,350 dhe pastaj kontrollon nëse ajo është e renditura. 1127 00:52:43,350 --> 00:52:47,880 Dhe në qoftë se ajo nuk është, ajo ri-llojet it rastësisht, kontrollon nëse është e renditura, 1128 00:52:47,880 --> 00:52:49,440 dhe në qoftë se nuk e përsërit. 1129 00:52:49,440 --> 00:52:52,660 Dhe në teori, probabilistically kjo do të përfundojë, 1130 00:52:52,660 --> 00:52:54,140 por pas mjaft pak kohe. 1131 00:52:54,140 --> 00:52:56,930 Kjo nuk është më e efikas të algoritmeve. 1132 00:52:56,930 --> 00:53:02,550 Kështu ndonjë pyetje në ato algoritma të veçanta apo ndonjë gjë 1133 00:53:02,550 --> 00:53:04,720 lidhur atje, too? 1134 00:53:04,720 --> 00:53:09,430 >> E pra, tani le të të vë në lojë përveç atë që të gjithë këto linja janë që unë kam qenë i tërhequr 1135 00:53:09,430 --> 00:53:15,090 dhe atë që unë jam duke supozuar kompjuter mund të bëjë nën kapuç. 1136 00:53:15,090 --> 00:53:18,650 Unë do të argumentojnë se të gjitha këto numra I mbajtur drawing-- ata kanë nevojë për të marrë 1137 00:53:18,650 --> 00:53:21,330 ruhet diku në kujtesë. 1138 00:53:21,330 --> 00:53:24,130 Ne do të të hequr qafe këtë djalë tani, too. 1139 00:53:24,130 --> 00:53:30,110 >> Kështu që një pjesë e kujtesës në një computer-- kështu RAM DIMM është 1140 00:53:30,110 --> 00:53:35,480 ajo që kemi kërkuar për dje, të dyfishtë kujtesës inline module-- duket si ky. 1141 00:53:35,480 --> 00:53:39,370 Dhe secili prej këtyre patate të skuqura të vogla të zeza është një numër i bytes, në mënyrë tipike. 1142 00:53:39,370 --> 00:53:44,380 Dhe pastaj kunjat ari janë si më telat që lidhin atë në kompjuter, 1143 00:53:44,380 --> 00:53:47,521 dhe bordi gjelbër silic është vetëm ajo që e mban çdo gjë të gjithë së bashku. 1144 00:53:47,521 --> 00:53:48,770 Pra, çfarë e bën këtë të vërtetë do të thotë? 1145 00:53:48,770 --> 00:53:53,180 Nëse unë lloj i nxjerrë këtë të njëjtën pamje, le të supozojmë për thjeshtësi 1146 00:53:53,180 --> 00:53:55,280 se kjo DIMM, të dyfishtë modul memorie inline, 1147 00:53:55,280 --> 00:54:00,530 është një Gigabyte RAM, një Gigabyte e kujtesës, e cila është sa bytes totale? 1148 00:54:00,530 --> 00:54:02,100 Një Gigabyte është se si shumë bytes? 1149 00:54:02,100 --> 00:54:04,860 1150 00:54:04,860 --> 00:54:06,030 Më shumë se aq. 1151 00:54:06,030 --> 00:54:09,960 1,124 është kilogram, 1000. 1152 00:54:09,960 --> 00:54:11,730 Mega është million. 1153 00:54:11,730 --> 00:54:14,570 Giga është një miliard. 1154 00:54:14,570 --> 00:54:15,070 >> A jam i shtrirë? 1155 00:54:15,070 --> 00:54:16,670 A mund ta lexoni edhe etiketën? 1156 00:54:16,670 --> 00:54:19,920 Kjo është në fakt 128 gigabajt, kështu që është më shumë. 1157 00:54:19,920 --> 00:54:22,130 Por ne do të pretendojë këtë është vetëm një Gigabyte. 1158 00:54:22,130 --> 00:54:25,640 Pra, kjo do të thotë se ka një miliard bytes të memories në dispozicion për mua 1159 00:54:25,640 --> 00:54:29,770 ose 8 miliardë bit, por ne jemi duke shkuar për të folur në drejtim të bytes tani, 1160 00:54:29,770 --> 00:54:30,750 Duke ecur perpara. 1161 00:54:30,750 --> 00:54:36,330 >> Pra, çfarë do të thotë kjo është një byte, kjo është një tjetër byte, 1162 00:54:36,330 --> 00:54:38,680 kjo është një tjetër byte, dhe në qoftë se ne me të vërtetë të kërkuar 1163 00:54:38,680 --> 00:54:43,280 të jenë të veçanta që do të duhet të të nxjerrë një miliard sheshe të vogla. 1164 00:54:43,280 --> 00:54:44,320 Por çfarë do të thotë? 1165 00:54:44,320 --> 00:54:46,420 E pra, më lejoni vetëm të zmadhuar në në këtë foto. 1166 00:54:46,420 --> 00:54:50,900 Nëse unë kam marrë diçka që duket si kjo tani, kjo është katër bytes. 1167 00:54:50,900 --> 00:54:53,710 >> Dhe kështu që unë mund të vënë katër numra këtu. 1168 00:54:53,710 --> 00:54:54,990 Një dy tre katër. 1169 00:54:54,990 --> 00:55:00,170 Ose unë mund të vënë katër letra apo simbole. 1170 00:55:00,170 --> 00:55:02,620 "Hey!" mund të shkojnë drejtë atje, sepse secili prej letrave, 1171 00:55:02,620 --> 00:55:04,370 kemi diskutuar më herët, mund të përfaqësohet 1172 00:55:04,370 --> 00:55:06,650 me tetë bit ose ASCII ose një bajt. 1173 00:55:06,650 --> 00:55:09,370 Pra, me fjalë të tjera, ju mund të vënë 8 miliardë gjëra brenda 1174 00:55:09,370 --> 00:55:11,137 për këtë një shkop të kujtesës. 1175 00:55:11,137 --> 00:55:14,345 Tani çfarë do të thotë për të vënë gjërat përsëri për të mbështetur për të mbështetur në kujtesë si kjo? 1176 00:55:14,345 --> 00:55:17,330 Kjo është ajo që një programues do të thërrasë një "rrjet". 1177 00:55:17,330 --> 00:55:21,250 Në një program kompjuterik, ju nuk mendoni se në lidhje me hardware themelor, në vetvete. 1178 00:55:21,250 --> 00:55:24,427 Ju vetëm mendoni për veten si ka qasje në një total miliardë bytes, 1179 00:55:24,427 --> 00:55:26,010 dhe ju mund të çdo gjë që ju doni me të. 1180 00:55:26,010 --> 00:55:27,880 Por, për lehtësi kjo është në përgjithësi e dobishme 1181 00:55:27,880 --> 00:55:31,202 për të mbajtur të drejtën tuaj të kujtesës pranë njëri-tjetrit si kjo. 1182 00:55:31,202 --> 00:55:33,660 Pra, nëse unë zoom në this-- sepse ne me siguri nuk jemi duke shkuar 1183 00:55:33,660 --> 00:55:39,310 për të nxjerrë një miliard squares-- pak le të supozojmë se ky bord përfaqëson 1184 00:55:39,310 --> 00:55:40,610 që rrinë e kujtesës tani. 1185 00:55:40,610 --> 00:55:43,800 Dhe unë do të vetëm të tërheqë sa më shumë tim marker përfundon duke i dhënë këtu. 1186 00:55:43,800 --> 00:55:46,420 1187 00:55:46,420 --> 00:55:52,300 Deri tani ne kemi një shkop memorie në bord 1188 00:55:52,300 --> 00:55:56,400 që e mori një, dy, tre, katër, pesë, gjashtë, një, dy, tre, katër, pesë, gjashtë, 1189 00:55:56,400 --> 00:56:01,130 seven-- kështu 42 bytes memorie ne totalin sheshtë. 1190 00:56:01,130 --> 00:56:01,630 Faleminderit. 1191 00:56:01,630 --> 00:56:02,838 Po, ka aritmetikë ime e djathtë. 1192 00:56:02,838 --> 00:56:05,120 Pra 42 bytes e kujtesës këtu. 1193 00:56:05,120 --> 00:56:06,660 Pra, çfarë do të thotë kjo? 1194 00:56:06,660 --> 00:56:09,830 E pra, një programues kompjuteri në fakt do të në përgjithësi 1195 00:56:09,830 --> 00:56:12,450 mendoni për këtë kujtesës si adresueshme. 1196 00:56:12,450 --> 00:56:16,630 Me fjalë të tjera, çdo njëri prej tyre vende në kujtesë, në hardware, 1197 00:56:16,630 --> 00:56:18,030 ka një adresë unike. 1198 00:56:18,030 --> 00:56:22,020 >> Kjo nuk është aq komplekse sa One Brattle Square, Cambridge, Mass., 02138. 1199 00:56:22,020 --> 00:56:23,830 Në vend të kësaj, kjo është vetëm një numër. 1200 00:56:23,830 --> 00:56:27,930 Ky është numri i byte zero, kjo është një, kjo është dy, kjo është tre, 1201 00:56:27,930 --> 00:56:30,327 dhe kjo është 41. 1202 00:56:30,327 --> 00:56:30,910 Prit një minutë. 1203 00:56:30,910 --> 00:56:32,510 Unë mendova se tha 42 një moment më parë. 1204 00:56:32,510 --> 00:56:35,050 1205 00:56:35,050 --> 00:56:37,772 Unë fillova duke numëruar në zero, në mënyrë që është në të vërtetë e saktë. 1206 00:56:37,772 --> 00:56:40,980 Tani ne nuk duhet të vërtetë të nxjerrë atë si një rrjet, dhe në qoftë se ju tërheq atë si një rrjet 1207 00:56:40,980 --> 00:56:43,520 Unë mendoj se gjërat në fakt merrni pak mashtruese. 1208 00:56:43,520 --> 00:56:46,650 Çfarë një programues do, në mendjen e tij ose të saj, 1209 00:56:46,650 --> 00:56:50,310 në përgjithësi mendojnë për këtë kujtesës si është vetëm si një shirit, 1210 00:56:50,310 --> 00:56:53,340 si një copë të kasetë maskimin që vetëm vazhdon dhe përgjithmonë 1211 00:56:53,340 --> 00:56:54,980 ose deri sa të dalë jashtë kujtesës. 1212 00:56:54,980 --> 00:56:59,200 Pra, një mënyrë më të zakonshme për të nxjerrë dhe vetëm mendojnë për kujtesën 1213 00:56:59,200 --> 00:57:03,710 do të ishte se kjo është byte zero, një, dy, tre, dhe pastaj dot, dot, dot. 1214 00:57:03,710 --> 00:57:07,650 Dhe ju keni 42 bytes tilla total, edhe edhe pse fizikisht ajo mund të vërtetë 1215 00:57:07,650 --> 00:57:09,480 të jetë diçka më shumë si kjo. 1216 00:57:09,480 --> 00:57:12,850 >> Pra, nëse ju tani mendoni për tuaj kujtesës si kjo, ashtu si një shirit, 1217 00:57:12,850 --> 00:57:17,640 kjo është ajo që një programues përsëri do të thërrasë një grup të kujtesës. 1218 00:57:17,640 --> 00:57:20,660 Dhe kur të doni të vërtetë të ruajtur diçka në kujtesën e një kompjuteri, 1219 00:57:20,660 --> 00:57:23,290 në përgjithësi të bëjë dyqan gjëra back-to-back për back-to-back. 1220 00:57:23,290 --> 00:57:25,010 Pra, ne kemi qenë duke folur në lidhje me numrat. 1221 00:57:25,010 --> 00:57:30,880 Dhe kur unë të kërkuar për të zgjidhur problemet si katër, një, tre, dy, 1222 00:57:30,880 --> 00:57:33,820 edhe pse unë isha vetëm duke tërhequr vetëm numra katër, një, tre, 1223 00:57:33,820 --> 00:57:39,490 dy në bord, kompjuteri do të me të vërtetë kanë këtë përbërje në kujtesë. 1224 00:57:39,490 --> 00:57:43,347 >> Dhe çfarë do të jetë e ardhshme të dy në kujtesën e kompjuterit? 1225 00:57:43,347 --> 00:57:44,680 E pra, nuk ka asnjë përgjigje për këtë. 1226 00:57:44,680 --> 00:57:45,770 Ne vërtetë nuk e di. 1227 00:57:45,770 --> 00:57:48,200 Dhe për sa kohë që kompjuteri nuk ka nevojë për të, 1228 00:57:48,200 --> 00:57:51,440 kjo nuk duhet të kujdesen se çfarë është e ardhshëm me numrat që të bëjë kujdes në lidhje. 1229 00:57:51,440 --> 00:57:55,130 Dhe kur kam thënë më parë se një kompjuter mund të shohim vetëm në një adresë në një kohë, 1230 00:57:55,130 --> 00:57:56,170 kjo është lloj i pse. 1231 00:57:56,170 --> 00:57:59,490 >> Jo ndryshe nga një rekord player dhe një kokë lexim 1232 00:57:59,490 --> 00:58:03,030 vetëm janë në gjendje për të parë në një farë zakon në një rekord vjetër-shkollën fizike 1233 00:58:03,030 --> 00:58:06,500 në një kohë, në mënyrë të ngjashme mund një kompjuter në sajë 1234 00:58:06,500 --> 00:58:09,810 të CPU e saj dhe e saj Intel udhëzim të vendosur, 1235 00:58:09,810 --> 00:58:12,480 në mesin e të cilit udhëzim lexohet nga kujtesa 1236 00:58:12,480 --> 00:58:15,590 apo ruani në memory-- një kompjuter vetëm mund të shikojnë 1237 00:58:15,590 --> 00:58:19,210 në një vend në një time-- shpesh një kombinim i tyre, 1238 00:58:19,210 --> 00:58:21,770 por me të vërtetë vetëm një vend në një kohë. 1239 00:58:21,770 --> 00:58:24,770 Pra, kur ne ishim duke bërë këto algoritme të ndryshme, 1240 00:58:24,770 --> 00:58:28,110 Unë nuk jam vetëm me shkrim në një vacuum-- katër, një, tre, dy. 1241 00:58:28,110 --> 00:58:30,849 Këto shifra në fakt i përkasin diku fizike në memorie. 1242 00:58:30,849 --> 00:58:32,890 Pra, ka pak të vogël transistorëve ose një lloj 1243 00:58:32,890 --> 00:58:35,840 i elektronikës nën hood ruajtjen e këtyre vlerave. 1244 00:58:35,840 --> 00:58:40,460 >> Dhe në total, sa bit janë përfshirë tani, vetëm të jetë i qartë? 1245 00:58:40,460 --> 00:58:45,580 Pra, kjo është katër bytes, ose tani është 32 bit total. 1246 00:58:45,580 --> 00:58:49,280 Pra, nuk janë në fakt 32 zero dhe ato që përbëjnë këto katër gjëra. 1247 00:58:49,280 --> 00:58:52,070 Ka edhe më shumë gjatë këtu, por përsëri ne nuk e kujdesit në lidhje me këtë. 1248 00:58:52,070 --> 00:58:55,120 >> Pra, tani le të kërkojë një tjetër Pyetja duke përdorur kujtesën, 1249 00:58:55,120 --> 00:58:57,519 shkak që në fund e ditës është në kundërshtim. 1250 00:58:57,519 --> 00:59:00,310 Pa marrë parasysh se çfarë mund të bëjmë me kompjuteri, në fund të ditës 1251 00:59:00,310 --> 00:59:02,560 hardware është ende njëjtë nën kapuç. 1252 00:59:02,560 --> 00:59:04,670 Si do të ruajtur një mesazh në këtu? 1253 00:59:04,670 --> 00:59:09,710 E pra, një fjalë në një kompjuter si "Hey!" do të ruhen ashtu si kjo. 1254 00:59:09,710 --> 00:59:12,300 Dhe në qoftë se ju të kërkuar për një më të gjatë fjalë, ju thjesht mund të 1255 00:59:12,300 --> 00:59:19,120 prishësh atë dhe të thonë diçka si "hello" dhe dyqan se këtu. 1256 00:59:19,120 --> 00:59:23,930 >> Dhe kështu që këtu, gjithashtu, kjo contiguousness në fakt është një avantazh, 1257 00:59:23,930 --> 00:59:26,530 për shkak se një kompjuter mund vetëm lexohet nga e djathta në të majtë. 1258 00:59:26,530 --> 00:59:28,680 Por këtu është një pyetje. 1259 00:59:28,680 --> 00:59:33,480 Në kontekstin e kësaj fjale, h-e-l-l-o, pikë thirrje, 1260 00:59:33,480 --> 00:59:38,740 si mund kompjuteri di se ku fjala fillon dhe ku mbaron fjala? 1261 00:59:38,740 --> 00:59:41,690 1262 00:59:41,690 --> 00:59:43,800 Në kontekstin e numrave, si e bën kompjuteri 1263 00:59:43,800 --> 00:59:48,396 e di se sa kohë sekuencat e numrat është apo ku fillon? 1264 00:59:48,396 --> 00:59:50,270 E pra, ajo rezulton out-- dhe ne nuk do të shkojnë shumë 1265 00:59:50,270 --> 00:59:54,970 në këtë nivel të detail-- kompjutera lëvizin gjëra rreth në kujtesë 1266 00:59:54,970 --> 00:59:57,800 fjalë për fjalë me anë të këtyre adresave. 1267 00:59:57,800 --> 01:00:02,080 Pra, në një kompjuter, nëse ju jeni të shkruar kodin për të ruajtur gjërat 1268 01:00:02,080 --> 01:00:05,800 si fjalë, ajo që ju jeni me të vërtetë duke bërë është e shtypur 1269 01:00:05,800 --> 01:00:11,320 Shprehjet që të kujtuar ku në kujtesa e kompjuterit këto fjalë janë. 1270 01:00:11,320 --> 01:00:14,370 Pra më lejoni të bëjë një shumë, shembull shumë i thjeshtë. 1271 01:00:14,370 --> 01:00:18,260 >> Unë jam duke shkuar për të shkuar përpara dhe të të hapur një program të thjeshtë teksti, 1272 01:00:18,260 --> 01:00:20,330 dhe unë jam duke shkuar për të krijuar një file i quajtur hello.c. 1273 01:00:20,330 --> 01:00:22,849 Shumica e këtij informacioni ne nuk do të shkojë në në hollësi të madhe, 1274 01:00:22,849 --> 01:00:25,140 por unë jam duke shkuar për të shkruar një program në të njëjtën gjuhë, 1275 01:00:25,140 --> 01:00:31,140 C. Kjo është shumë më frikësuese, Unë do të argumentojnë, se Scratch, 1276 01:00:31,140 --> 01:00:32,490 por është shumë e ngjashme në frymë. 1277 01:00:32,490 --> 01:00:34,364 Në fakt, këto kaçurrel braces-- ju mund të lloj 1278 01:00:34,364 --> 01:00:37,820 të mendojnë për atë që unë vetëm e bëri pasi kjo. 1279 01:00:37,820 --> 01:00:39,240 >> Le ta bëjmë këtë, në të vërtetë. 1280 01:00:39,240 --> 01:00:45,100 Kur flamuri gjelbër klikuar, të bëjë të mëposhtme. 1281 01:00:45,100 --> 01:00:50,210 Unë dua të shtypura nga "hello". 1282 01:00:50,210 --> 01:00:51,500 Pra, kjo është tani pseudocode. 1283 01:00:51,500 --> 01:00:53,000 Unë jam lloj i blurring e linjave. 1284 01:00:53,000 --> 01:00:56,750 Në C, kjo gjuhë po flas lidhje, kjo linjë print përshëndetje 1285 01:00:56,750 --> 01:01:01,940 fakt bëhet "printf" me disa kllapa dhe një gjysmë-zorrës së trashë. 1286 01:01:01,940 --> 01:01:03,480 >> Por është e njëjta ide e saktë. 1287 01:01:03,480 --> 01:01:06,730 Dhe kjo shumë miqësore "Kur flamuri gjelbër klikuar" bëhet 1288 01:01:06,730 --> 01:01:10,182 aq shumë të më misterioze "e pavlefshme int main." 1289 01:01:10,182 --> 01:01:12,890 Dhe kjo me të vërtetë nuk ka asnjë hartë, kështu që unë jam vetëm duke shkuar për të injorojë atë. 1290 01:01:12,890 --> 01:01:17,210 Por formatimin e teksteve kaçurrel janë si copa lakuar mister si kjo. 1291 01:01:17,210 --> 01:01:18,700 >> Kështu që ju mund të lloj të guess. 1292 01:01:18,700 --> 01:01:22,357 Edhe në qoftë se ju nuk keni programuar më parë, çfarë e bën këtë program ndoshta të bëjë? 1293 01:01:22,357 --> 01:01:25,560 1294 01:01:25,560 --> 01:01:28,000 Ndoshta shtyp përshëndetje me një pikë thirrje. 1295 01:01:28,000 --> 01:01:29,150 >> Pra, le të përpiqemi që. 1296 01:01:29,150 --> 01:01:30,800 Unë jam duke shkuar për të shpëtuar atë. 1297 01:01:30,800 --> 01:01:34,000 Dhe kjo është, përsëri, një shumë Mjedisi vjetër e shkollës. 1298 01:01:34,000 --> 01:01:35,420 Unë nuk mund të klikoni, unë nuk mund të zvarritet. 1299 01:01:35,420 --> 01:01:36,910 Unë duhet të tipit komandat. 1300 01:01:36,910 --> 01:01:41,320 Kështu që unë dua të drejtuar programin tim, kështu që Unë mund ta bëjë këtë, si hello.c. 1301 01:01:41,320 --> 01:01:42,292 Kjo është dosja unë u zhvillua. 1302 01:01:42,292 --> 01:01:43,500 Por prisni, unë jam i humbur një hap. 1303 01:01:43,500 --> 01:01:46,470 Çfarë bëri që themi është e nevojshme hap për një gjuhë si C? 1304 01:01:46,470 --> 01:01:49,470 Unë kam shkruar vetëm burim Kodi, por çfarë nuk kam nevojë? 1305 01:01:49,470 --> 01:01:50,670 Po, kam nevojë për një përpilues. 1306 01:01:50,670 --> 01:01:57,670 Pra, në Mac tim këtu, unë kam një program të quajtur GCC, GNU C përpilues, 1307 01:01:57,670 --> 01:02:03,990 e cila lejon mua për të bërë kthesë this-- kodi im burim në, ne do të thërrasë atë, 1308 01:02:03,990 --> 01:02:04,930 Kodi makinë. 1309 01:02:04,930 --> 01:02:10,180 >> Dhe unë mund të shoh se, përsëri, si më poshtë, këto 1310 01:02:10,180 --> 01:02:14,090 janë zero dhe ato I vetëm krijuar nga kodin tim burim, 1311 01:02:14,090 --> 01:02:15,730 të gjitha zero dhe ato. 1312 01:02:15,730 --> 01:02:17,770 Dhe në qoftë se unë dua të drejtuar my program-- kjo ndodh 1313 01:02:17,770 --> 01:02:23,010 që do të quhet a.out për reasons-- historike "hello". 1314 01:02:23,010 --> 01:02:24,070 Unë mund të kandidojë atë përsëri. 1315 01:02:24,070 --> 01:02:25,690 Ckemi ckemi ckemi. 1316 01:02:25,690 --> 01:02:27,430 Dhe kjo duket të jetë duke punuar. 1317 01:02:27,430 --> 01:02:31,000 >> Por kjo do të thotë diku në tim kujtesës kompjuterit janë fjalët 1318 01:02:31,000 --> 01:02:35,279 h-e-l-l-o, pikë thirrje. 1319 01:02:35,279 --> 01:02:38,070 Dhe kjo rezulton, ashtu si një mënjanë, atë që një kompjuter do të zakonisht 1320 01:02:38,070 --> 01:02:40,550 të bëjë në mënyrë që ajo e di se ku gjërat fillojnë dhe end-- është e 1321 01:02:40,550 --> 01:02:42,460 do të vënë një simbol të veçantë këtu. 1322 01:02:42,460 --> 01:02:46,064 Dhe konventa është për të vënë numër zero në fund të një fjale 1323 01:02:46,064 --> 01:02:48,230 në mënyrë që ju e dini ku në fakt përfundon, kështu që ju 1324 01:02:48,230 --> 01:02:52,750 nuk mbajnë shtypjen nga gjithnjë e më shumë Karaktere se ju në fakt ndërmend. 1325 01:02:52,750 --> 01:02:55,400 >> Por takeaway këtu, edhe edhe pse kjo është mjaft e errët, 1326 01:02:55,400 --> 01:02:58,140 është se kjo është në fund të fundit relativisht e thjeshtë. 1327 01:02:58,140 --> 01:03:04,550 Ju janë dhënë lloj të një kasetë, një bosh Hapësira në të cilën ju mund të shkruajnë letra. 1328 01:03:04,550 --> 01:03:07,150 Ju thjesht duhet të ketë një simbol të veçantë, si në mënyrë arbitrare 1329 01:03:07,150 --> 01:03:10,316 numri zero, të vënë në fund fjalët e tua në mënyrë që kompjuteri di, 1330 01:03:10,316 --> 01:03:13,410 oh, unë duhet të ndalet shtypjen pas I shoh pikë thirrje. 1331 01:03:13,410 --> 01:03:16,090 Sepse gjë tjetër nuk është një vlerë ASCII zero, 1332 01:03:16,090 --> 01:03:19,125 ose karakterin null si dikush do të thërrasë atë. 1333 01:03:19,125 --> 01:03:21,500 Por ka lloj e një problemi këtu, dhe le të ktheheni 1334 01:03:21,500 --> 01:03:23,320 në numrat për një moment. 1335 01:03:23,320 --> 01:03:28,720 Supozoni që bëj unë, në fakt, kanë një rrjet të numrave, 1336 01:03:28,720 --> 01:03:30,730 dhe mendoj se program unë jam shkrim është 1337 01:03:30,730 --> 01:03:34,680 si një libër të keq për një mësues dhe një klasë. 1338 01:03:34,680 --> 01:03:38,720 Dhe ky program lejon atë ose të saj të shkruani në rezultatet e nxënësve të tyre 1339 01:03:38,720 --> 01:03:39,960 në kuize. 1340 01:03:39,960 --> 01:03:43,750 Dhe mendoj se studenti merr 100 të quiz e parë, ndoshta 1341 01:03:43,750 --> 01:03:49,920 si një 80 në një tjetër, pastaj një 75, pas një 90 në quiz katërt. 1342 01:03:49,920 --> 01:03:54,150 >> Pra, në këtë pikë në histori, array është e madhësisë së katër. 1343 01:03:54,150 --> 01:03:58,470 Nuk ka absolutisht më shumë memorie në kompjuter, por array, kështu që të flasin, 1344 01:03:58,470 --> 01:04:00,350 është e madhësisë së katër. 1345 01:04:00,350 --> 01:04:06,060 Supozojmë tani se mësuesi dëshiron të caktojë një quiz pestë të klasës. 1346 01:04:06,060 --> 01:04:08,510 E pra, një nga gjërat që ai ose ajo do të duhet të bëni 1347 01:04:08,510 --> 01:04:10,650 Tani është ruajtur një vlerë shtesë këtu. 1348 01:04:10,650 --> 01:04:15,490 Por nëse array mësuesi ka krijuar në këtë program është e madhësisë për, 1349 01:04:15,490 --> 01:04:22,440 një e problemit me një grup është se ju nuk mund të mbani duke shtuar në kujtesë. 1350 01:04:22,440 --> 01:04:26,470 Sepse ajo që në qoftë se një pjesë e Programi ka fjalën "hey" ka të drejtë? 1351 01:04:26,470 --> 01:04:29,650 >> Me fjalë të tjera, kujtesa ime mund të jetë përdoret për ndonjë gjë në një program. 1352 01:04:29,650 --> 01:04:33,250 Dhe në qoftë se më parë i shtypur në, hey, Dua të dhëna katër rezultatet quiz, 1353 01:04:33,250 --> 01:04:34,784 ata mund të shkoni këtu dhe këtu. 1354 01:04:34,784 --> 01:04:37,700 Dhe në qoftë se ju papritmas të ndryshojë mendjen tuaj më vonë dhe të thonë se unë dua një quiz pestë 1355 01:04:37,700 --> 01:04:40,872 Rezultati, ju nuk mund vetëm të vënë atë kudo që ju dëshironi, 1356 01:04:40,872 --> 01:04:42,580 sepse ajo që në qoftë se ky memorie është duke u përdorur 1357 01:04:42,580 --> 01:04:45,990 për diçka else-- ndonjë program tjetër ose ndonjë veçori tjetër të programit 1358 01:04:45,990 --> 01:04:46,910 që ju jeni duke? 1359 01:04:46,910 --> 01:04:50,650 Kështu që ju duhet të mendoni më parë si ju doni të ruajtur të dhënat tuaja, 1360 01:04:50,650 --> 01:04:54,480 sepse tani ju keni pikturuar veten në një qoshe dixhitale. 1361 01:04:54,480 --> 01:04:57,280 >> Kështu një mësues fuqi në vend thonë se kur shkruani një program 1362 01:04:57,280 --> 01:04:59,360 për të ruajtur tij ose të saj notat, ju e dini se çfarë? 1363 01:04:59,360 --> 01:05:04,180 Unë jam duke shkuar për të kërkuar, kur shkruani programin tim, 1364 01:05:04,180 --> 01:05:12,070 që unë dua zero, një, dy, tre, katër, pesë, gjashtë, tetë notat totale. 1365 01:05:12,070 --> 01:05:15,320 Pra, një, dy, tre, katër, pesë, gjashtë, shtatë, tetë. 1366 01:05:15,320 --> 01:05:18,612 Mësuesi mund të pak më shumë, të ndajë kujtesës kur shkrim programin e tij ose të saj 1367 01:05:18,612 --> 01:05:19,570 dhe thonë se, ju e dini se çfarë? 1368 01:05:19,570 --> 01:05:22,236 Unë kurrë nuk do të caktojë më shumë se tetë kuize në një semestër. 1369 01:05:22,236 --> 01:05:23,130 Kjo është vetëm i çmendur. 1370 01:05:23,130 --> 01:05:24,470 Unë kurrë nuk do të ndajë atë. 1371 01:05:24,470 --> 01:05:28,270 Kështu që në këtë mënyrë ai ose ajo ka të fleksibilitet për rezultatet dyqan të studentëve, 1372 01:05:28,270 --> 01:05:33,010 si 75, 90, dhe ndoshta një shtesë, ku studenti marrë kredi shtesë, 105. 1373 01:05:33,010 --> 01:05:36,130 >> Por në qoftë se nuk mësuesi përdor këto tre hapësira, 1374 01:05:36,130 --> 01:05:38,860 ka një takeaway intuitive këtu. 1375 01:05:38,860 --> 01:05:41,410 Ai ose ajo është vetëm humbur hapësirë. 1376 01:05:41,410 --> 01:05:44,790 Pra, me fjalë të tjera, nuk është kjo tradeoff zakonshme në programimin 1377 01:05:44,790 --> 01:05:48,241 ku ju mund të ndajë pikërisht sa më shumë kujtesa sa të doni, 1378 01:05:48,241 --> 01:05:51,490 me kokë e të cilit është se ju jeni super efficient-- ju nuk jeni duke u kota 1379 01:05:51,490 --> 01:05:54,640 në all-- por downside i të cilave është ajo që në qoftë se ju të ndryshojë mendjen tuaj kur 1380 01:05:54,640 --> 01:05:58,780 duke përdorur programin që ju dëshironi për të ruajtur më shumë të dhëna se sa ju menduar fillimisht. 1381 01:05:58,780 --> 01:06:03,030 >> Pra, ndoshta zgjidhja është, atëherë, shkruajnë programet tuaja në mënyrë të tillë 1382 01:06:03,030 --> 01:06:05,605 që ata përdorin më shumë memorie se ata në të vërtetë kanë nevojë. 1383 01:06:05,605 --> 01:06:07,730 Në këtë mënyrë ju nuk do të jeni për të kandiduar në këtë problem, 1384 01:06:07,730 --> 01:06:09,730 por ju jeni duke u kota. 1385 01:06:09,730 --> 01:06:12,960 Dhe më shumë memorie programi juaj përdor, siç kemi diskutuar dje, më pak 1386 01:06:12,960 --> 01:06:15,410 kujtesës që është në dispozicion për programe të tjera, 1387 01:06:15,410 --> 01:06:18,790 aq më shpejt kompjuteri juaj mund të ngadalësojë poshtë për shkak të kujtesës virtuale. 1388 01:06:18,790 --> 01:06:22,670 Dhe kështu zgjidhje ideale mund të jetë ajo? 1389 01:06:22,670 --> 01:06:24,610 >> Nën-ndarjes duket e keqe. 1390 01:06:24,610 --> 01:06:27,030 Over-ndarjes duket e keqe. 1391 01:06:27,030 --> 01:06:31,120 Pra, çfarë mund të jetë një zgjidhje më të mirë? 1392 01:06:31,120 --> 01:06:32,390 Rishpërndarë. 1393 01:06:32,390 --> 01:06:33,590 Të jetë më dinamike. 1394 01:06:33,590 --> 01:06:37,520 Mos i detyroni veten për të zgjedhur një priori, në fillim, atë që ju dëshironi. 1395 01:06:37,520 --> 01:06:41,370 Dhe sigurisht nuk mbi-ndajë, përndryshe do të kota. 1396 01:06:41,370 --> 01:06:45,770 >> Dhe në mënyrë që të arritur këtë qëllim, ne nevojë për të hedhur këtë strukturë të dhënave, 1397 01:06:45,770 --> 01:06:48,100 mënyrë që të flasin, larg. 1398 01:06:48,100 --> 01:06:51,080 Dhe kështu që ajo që një programues do të përdorë në mënyrë tipike 1399 01:06:51,080 --> 01:06:55,940 është diçka që nuk është një i quajtur array por një listë e lidhur. 1400 01:06:55,940 --> 01:07:00,860 Me fjalë të tjera, ai ose ajo do fillojnë të mendojnë për kujtesën e tyre 1401 01:07:00,860 --> 01:07:05,280 si qenë lloj i një formë që ata mund të tërheqë në këtë mënyrë. 1402 01:07:05,280 --> 01:07:08,520 Nëse unë dua të ruajtur një numër në një program-- kështu që është e shtator 1403 01:07:08,520 --> 01:07:12,600 Unë e kam dhënë nxënësit e mi një quiz; unë dua për të ruajtur quiz e parë e studentëve, 1404 01:07:12,600 --> 01:07:16,220 dhe ata patën një 100 në I arsyetimet tuaja, jam duke shkuar për të kërkuar kompjuterin tim, 1405 01:07:16,220 --> 01:07:19,540 me anë të programit që kam shkruar, për një copë e kujtesës. 1406 01:07:19,540 --> 01:07:22,570 Dhe unë jam duke shkuar për të ruajtur Numri 100 në të, dhe kjo është ajo. 1407 01:07:22,570 --> 01:07:24,820 >> Pastaj disa javë më vonë kur unë të marrë quiz time të dytë, 1408 01:07:24,820 --> 01:07:27,890 dhe është koha për të tipit në atë 90%, Unë jam duke shkuar 1409 01:07:27,890 --> 01:07:32,129 për të kërkuar kompjuterin, hej, kompjuter, mund të ketë një copë e kujtesës? 1410 01:07:32,129 --> 01:07:34,170 Ajo do të më jepni këtë copë bosh e kujtesës. 1411 01:07:34,170 --> 01:07:39,370 Unë jam duke shkuar për të vënë në numrin 90, por në programin tim disi ose other-- 1412 01:07:39,370 --> 01:07:42,100 dhe ne nuk do të shqetësohen për sintaksa për this-- kam nevojë për 1413 01:07:42,100 --> 01:07:44,430 në një farë mënyre zinxhir këto gjëra së bashku. 1414 01:07:44,430 --> 01:07:47,430 Dhe unë do zinxhir e tyre së bashku me atë që duket si një shigjetë këtu. 1415 01:07:47,430 --> 01:07:50,050 >> Kuizi i tretë që vjen, Unë jam duke shkuar për të thënë, hej, kompjuter, 1416 01:07:50,050 --> 01:07:51,680 më jepni një copë e kujtesës. 1417 01:07:51,680 --> 01:07:54,660 Dhe unë jam duke shkuar për të vënë poshtë çfarëdo qoftë ajo ishte, si 75, 1418 01:07:54,660 --> 01:07:56,920 dhe unë duhet të zinxhirit të këtij së bashku tani disi. 1419 01:07:56,920 --> 01:08:00,290 quiz katërti vjen së bashku, dhe ndoshta kjo është nga fundi i semestrit. 1420 01:08:00,290 --> 01:08:03,140 Dhe deri në atë pikë të programit tim mund të jetë duke përdorur kujtesën 1421 01:08:03,140 --> 01:08:05,540 në të gjithë vendin, të gjithë fizikisht. 1422 01:08:05,540 --> 01:08:08,170 Dhe kështu vetëm për shkelma, unë jam i do të nxjerrë këtë radhë 1423 01:08:08,170 --> 01:08:11,260 quiz-- harroj se çfarë ishte; unë mendoj se ndoshta një 80 ose something-- 1424 01:08:11,260 --> 01:08:12,500 Mënyra këtu. 1425 01:08:12,500 --> 01:08:15,920 >> Por kjo është në rregull, sepse në pikturë Unë jam duke shkuar për të tërhequr këtë linjë. 1426 01:08:15,920 --> 01:08:19,063 Me fjalë të tjera, në të vërtetë, në hardware e kompjuterit tuaj, 1427 01:08:19,063 --> 01:08:20,979 i pari rezultatin e fuqisë përfundojnë këtu, sepse kjo është 1428 01:08:20,979 --> 01:08:22,529 të drejtë në fillim të semestrit. 1429 01:08:22,529 --> 01:08:25,810 Një tjetër mund të përfundojë këtu sepse pak kohe ka kaluar 1430 01:08:25,810 --> 01:08:27,210 dhe programi mban drejtimin. 1431 01:08:27,210 --> 01:08:30,060 Rezultati i ardhshëm, i cili ishte një 75, mund të jetë këtu. 1432 01:08:30,060 --> 01:08:33,420 Dhe rezultati i fundit mund të jetë një 80, i cili është këtu. 1433 01:08:33,420 --> 01:08:38,729 >> Pra, në të vërtetë, fizikisht, kjo mund të jetë ajo memorie kompjuteri juaj duket si. 1434 01:08:38,729 --> 01:08:41,569 Por kjo nuk është një mendore dobishme paradigmë për një programues kompjuteri. 1435 01:08:41,569 --> 01:08:44,649 Pse duhet të keni kujdes kur dreq dhënat tuaja është duke përfunduar? 1436 01:08:44,649 --> 01:08:46,200 Ju thjesht doni të ruajtur të dhënat. 1437 01:08:46,200 --> 01:08:49,390 >> Kjo është lloj i si diskutimit tonë më parë i tërhequr kubike. 1438 01:08:49,390 --> 01:08:52,200 Pse nuk ju intereson se çfarë kënd është i kubike 1439 01:08:52,200 --> 01:08:53,740 dhe se si ju duhet të kthehet për të nxjerrë atë? 1440 01:08:53,740 --> 01:08:54,950 Ju vetëm dëshironi një kubike. 1441 01:08:54,950 --> 01:08:57,359 Në mënyrë të ngjashme këtu, ju vetëm dua të librit të klasës. 1442 01:08:57,359 --> 01:08:59,559 Ju thjesht doni të mendoni për këtë si një listë të numrave. 1443 01:08:59,559 --> 01:09:01,350 Kush kujdeset se si është e implementuar në hardware? 1444 01:09:01,350 --> 01:09:05,180 >> Pra abstraksion tani është kjo foto këtu. 1445 01:09:05,180 --> 01:09:07,580 Kjo është një listë e lidhur, si një programues do të thërrasë atë, 1446 01:09:07,580 --> 01:09:10,640 për aq kohë sa ju keni një Lista, padyshim e numrave. 1447 01:09:10,640 --> 01:09:14,990 Por kjo është e lidhur në pikturë me anë të këtyre shigjetave, 1448 01:09:14,990 --> 01:09:18,510 dhe të gjitha këto shigjeta are-- poshtë individualitet, në qoftë se ju jeni kurioz, 1449 01:09:18,510 --> 01:09:23,210 kujtojnë se hardware tonë fizike ka Adresat zero, një, dy, tre, katër. 1450 01:09:23,210 --> 01:09:28,465 Të gjitha këto shigjetat janë është si një hartë ose drejtime, ku në qoftë se 90 is-- tani 1451 01:09:28,465 --> 01:09:29,090 I kam për të numëruar. 1452 01:09:29,090 --> 01:09:31,750 >> Zero, një, dy, tre, katër, pesë, gjashtë, shtatë. 1453 01:09:31,750 --> 01:09:35,640 Ajo duket si 90 është në Adresa e kujtesës numri shtatë. 1454 01:09:35,640 --> 01:09:38,460 Të gjitha këto shigjetat janë është si një copëz të vogël letre 1455 01:09:38,460 --> 01:09:42,439 që është duke i dhënë udhëzime të program që thotë se ndjekin këtë hartë 1456 01:09:42,439 --> 01:09:43,880 për të marrë në vendin e shtatë. 1457 01:09:43,880 --> 01:09:46,680 Dhe aty ju do të gjeni Rezultati quiz dytë nxënësit. 1458 01:09:46,680 --> 01:09:52,100 Ndërkohë, 75-- në qoftë se unë vazhdoj këtë, kjo është shtatë, tetë, nëntë, 10, 11, 12, 1459 01:09:52,100 --> 01:09:54,240 13, 14, 15. 1460 01:09:54,240 --> 01:09:59,080 >> Kjo shigjetë tjetër vetëm të perfaqeson një hartë të vendndodhjes së kujtesës 15. 1461 01:09:59,080 --> 01:10:02,550 Por përsëri, programues në përgjithësi nuk nuk e kujdesit në lidhje me këtë nivel të detajuar. 1462 01:10:02,550 --> 01:10:05,530 Dhe në shumicën çdo programim gjuha sot, programues 1463 01:10:05,530 --> 01:10:10,490 nuk do e di edhe ku në kujtesë këto numra të vërtetë janë. 1464 01:10:10,490 --> 01:10:14,830 Të gjitha ai ose ajo ka të intereson është që ato janë të lidhura bashkë diku 1465 01:10:14,830 --> 01:10:18,390 në një strukturë të dhënave si kjo. 1466 01:10:18,390 --> 01:10:21,580 >> Por kjo rezulton jo për të marrë shumë teknike. 1467 01:10:21,580 --> 01:10:27,430 Por vetëm për shkak se ne mund të ndoshta përballojë që të ketë këtë diskutim këtu, 1468 01:10:27,430 --> 01:10:33,630 mendoj se ne sërish kjo çështje këtu për një grup. 1469 01:10:33,630 --> 01:10:35,780 Le të shohim nëse ne vjen keq ndodh këtu. 1470 01:10:35,780 --> 01:10:42,950 Kjo është 100, 90, 75, dhe 80. 1471 01:10:42,950 --> 01:10:44,980 >> Më lejoni të bëj shkurtimisht këtë pohim. 1472 01:10:44,980 --> 01:10:48,980 Ky është një grup, dhe një herë, karakteristikë e spikatur e një grup 1473 01:10:48,980 --> 01:10:52,400 është se të gjitha të dhënat tuaja është kthyer në të kthyer prapa në memory-- fjalë për fjalë 1474 01:10:52,400 --> 01:10:56,830 një byte ose ndoshta katër bytes, disa numër të caktuar të bytes larg. 1475 01:10:56,830 --> 01:11:00,710 Në një listë të lidhura, të cilat ne mund të tërheqë si kjo, nën kapuç që 1476 01:11:00,710 --> 01:11:02,000 e di se ku stuff është? 1477 01:11:02,000 --> 01:11:03,630 Ajo nuk ka nevojë edhe për të rrjedhin si kjo. 1478 01:11:03,630 --> 01:11:06,050 Disa prej të dhënave mund të jetë përsëri në të majtë deri atje. 1479 01:11:06,050 --> 01:11:07,530 Ti nuk e di edhe. 1480 01:11:07,530 --> 01:11:15,430 >> Dhe kështu me një grup, ju keni një tipar i njohur si qasje të rastit. 1481 01:11:15,430 --> 01:11:20,570 Dhe çfarë do të thotë qasje të rastit është se kompjuteri mund të kërcejnë në çast 1482 01:11:20,570 --> 01:11:22,730 për çdo vend në një rrjet. 1483 01:11:22,730 --> 01:11:23,580 Pse? 1484 01:11:23,580 --> 01:11:26,000 Sepse kompjuteri e di se vendi i parë është 1485 01:11:26,000 --> 01:11:29,540 zero, një, dy, tre. 1486 01:11:29,540 --> 01:11:33,890 >> Dhe kështu që nëse ju doni të shkoni nga ky element me elementin tjeter, 1487 01:11:33,890 --> 01:11:36,099 ju fjalë për fjalë, në Mendja kompjuterit, vetëm të shtoni një të tillë. 1488 01:11:36,099 --> 01:11:39,140 Nëse ju doni të shkoni në elementin e tretë, vetëm të shtoni one-- element tjetër, vetëm 1489 01:11:39,140 --> 01:11:40,290 shtoni një të tillë. 1490 01:11:40,290 --> 01:11:42,980 Megjithatë, në këtë version i tregimit, mendoj 1491 01:11:42,980 --> 01:11:46,080 kompjuteri është aktualisht në kërkim në ose trajtimin me numrin 100. 1492 01:11:46,080 --> 01:11:49,770 Si mund të merrni për të ardhshëm klasën në librin e klasës? 1493 01:11:49,770 --> 01:11:52,560 >> Ju keni për të marrë shtatë hapa, e cila është arbitrare. 1494 01:11:52,560 --> 01:11:58,120 Për të marrë në një tjetër, ju duhet të marrë edhe tetë hapa për të marrë për të 15. 1495 01:11:58,120 --> 01:12:02,250 Me fjalë të tjera, kjo nuk është një hendeku i vazhdueshëm midis numrave, 1496 01:12:02,250 --> 01:12:04,857 dhe kështu ajo vetëm merr kompjuter shumë kohë është pika. 1497 01:12:04,857 --> 01:12:06,940 Kompjuter ka për të kërkuar nëpërmjet kujtesës në mënyrë 1498 01:12:06,940 --> 01:12:08,990 për të gjetur atë që ju po kërkoni. 1499 01:12:08,990 --> 01:12:14,260 >> Pra, ndërkohë që një grup tenton të jetë një të dhënat e shpejtë structure--, sepse ju 1500 01:12:14,260 --> 01:12:17,610 mund të vërtetë vetëm të bëjë aritmetikë të thjeshtë dhe për të marrë ku ju doni duke shtuar një të tillë, 1501 01:12:17,610 --> 01:12:21,300 për instance-- një listë e lidhur, ju sakrifikojë atë funksion. 1502 01:12:21,300 --> 01:12:24,020 Ju nuk mund të shkojnë nga e para të dytë të tretë për të katërt. 1503 01:12:24,020 --> 01:12:25,240 Ju duhet të ndjekin hartë. 1504 01:12:25,240 --> 01:12:28,160 Ju duhet të marrë më shumë hapa për të marrë në ato vlera, të cilat 1505 01:12:28,160 --> 01:12:30,230 do të duket të jetë duke shtuar një kosto. 1506 01:12:30,230 --> 01:12:35,910 Pra, ne jemi duke paguar një çmim, por ajo që ishte tipar që Dan po kërkon këtu? 1507 01:12:35,910 --> 01:12:38,110 Çfarë bën një listë të lidhur duket të na lejojë për të bërë, 1508 01:12:38,110 --> 01:12:40,240 e cila ishte origjina e kjo histori të veçantë? 1509 01:12:40,240 --> 01:12:43,250 1510 01:12:43,250 --> 01:12:43,830 >> Pikërisht. 1511 01:12:43,830 --> 01:12:46,220 Një madhësi dinamike të. 1512 01:12:46,220 --> 01:12:48,040 Ne mund të shtoni në këtë listë. 1513 01:12:48,040 --> 01:12:51,430 Ne edhe mund të tkurret listën, kështu se ne jemi vetëm duke përdorur sa më shumë memorie 1514 01:12:51,430 --> 01:12:55,560 si ne të vërtetë duan dhe kështu ne nuk jemi mbi-ndarjen e. 1515 01:12:55,560 --> 01:12:58,470 >> Tani vetëm të jetë me të vërtetë NIT-picky, ka një kosto të fshehura. 1516 01:12:58,470 --> 01:13:01,980 Pra, ju nuk duhet vetëm të më lejoni të bindë ju se kjo është një tradeoff bindëse. 1517 01:13:01,980 --> 01:13:04,190 Ka një kosto të fshehura këtu. 1518 01:13:04,190 --> 01:13:06,550 Përfitimi, të jetë i qartë, është që ne të merrni dinamizëm. 1519 01:13:06,550 --> 01:13:10,359 Nëse unë dua një element tjetër, unë mund vetëm të tërheqë atë dhe të vënë një numër në atje. 1520 01:13:10,359 --> 01:13:12,150 Dhe atëherë unë mund të lidhë atë me një foto këtu, 1521 01:13:12,150 --> 01:13:14,970 ndërsa këtu, përsëri, në qoftë se unë kam pikturuar veten në një qoshe, 1522 01:13:14,970 --> 01:13:19,410 në qoftë se diçka tjetër është tashmë duke përdorur kujtesës këtu, unë jam nga fat. 1523 01:13:19,410 --> 01:13:21,700 Unë kam pikturuar veten në qoshe. 1524 01:13:21,700 --> 01:13:24,390 >> Por ajo që është e fshehur kosto në këtë foto? 1525 01:13:24,390 --> 01:13:27,690 Kjo nuk është vetëm shuma të kohës që merr 1526 01:13:27,690 --> 01:13:29,870 për të shkuar nga këtu për këtu, që është shtatë hapa, atëherë 1527 01:13:29,870 --> 01:13:32,820 tetë hapa, që është më shumë se një. 1528 01:13:32,820 --> 01:13:34,830 Çfarë është një kosto të fshehura? 1529 01:13:34,830 --> 01:13:35,440 Jo vetëm koha. 1530 01:13:35,440 --> 01:13:44,790 1531 01:13:44,790 --> 01:13:49,940 Informata shtesë është nevojshme për të arritur këtë foto. 1532 01:13:49,940 --> 01:13:53,210 >> Yeah, se harta, ato scraps pak të letër, si unë mbaj duke i përshkruar ato si. 1533 01:13:53,210 --> 01:13:55,650 Këto arrows-- ata që nuk janë të lirë. 1534 01:13:55,650 --> 01:13:57,660 A computer-- ju e dini atë që një kompjuter ka. 1535 01:13:57,660 --> 01:13:58,790 Ajo ka zero dhe ato. 1536 01:13:58,790 --> 01:14:03,170 Nëse ju doni për të përfaqësuar një shigjetë ose një hartë ose një numër, ju keni nevojë për disa kujtesës. 1537 01:14:03,170 --> 01:14:05,950 Pra, çmimi tjetër të paguajnë për një listë të lidhura, 1538 01:14:05,950 --> 01:14:09,070 një shkencë të përbashkët kompjuterike burimeve, është edhe hapësira. 1539 01:14:09,070 --> 01:14:11,710 >> Dhe me të vërtetë kështu, në mënyrë zakonisht, në mesin e tradeoffs 1540 01:14:11,710 --> 01:14:15,580 në hartimin inxhinieri software sistemeve është koha dhe space-- 1541 01:14:15,580 --> 01:14:18,596 janë dy nga përbërësit tuaj, dy e përbërësve tuaj më të kushtueshme. 1542 01:14:18,596 --> 01:14:21,220 Kjo kushton më shumë kohë sepse unë kam për të ndjekur këtë hartë, 1543 01:14:21,220 --> 01:14:25,730 por është edhe kushton më shumë hapësirë sepse unë kam për të mbajtur këtë hartë përreth. 1544 01:14:25,730 --> 01:14:28,730 Kështu ka shpresë, pasi ne kemi lloj biseduar për dje dhe sot, 1545 01:14:28,730 --> 01:14:31,720 është se përfitimet do të jenë më të mëdha shpenzimet. 1546 01:14:31,720 --> 01:14:33,870 >> Por nuk ka asnjë zgjidhje e qartë këtu. 1547 01:14:33,870 --> 01:14:35,870 Ndoshta kjo është better-- një të shpejtë dhe të pista la, 1548 01:14:35,870 --> 01:14:38,660 si Kareem propozuar earlier-- për të hedhur kujtesës në problem. 1549 01:14:38,660 --> 01:14:42,520 Vetëm për të blerë më shumë memorie, mendoni pak e vështirë për zgjidhjen e problemit, 1550 01:14:42,520 --> 01:14:44,595 dhe të zgjidhur atë në një mënyrë më të lehtë. 1551 01:14:44,595 --> 01:14:46,720 Dhe në të vërtetë më parë, kur kemi biseduar për tradeoffs, 1552 01:14:46,720 --> 01:14:49,190 ajo nuk ishte në hapësirë kompjuter dhe koha. 1553 01:14:49,190 --> 01:14:51,810 Kjo ishte koha zhvilluesi i saj, i cili është edhe një burim. 1554 01:14:51,810 --> 01:14:54,829 >> Pra, përsëri, është ky akt balancues duke u përpjekur për të vendosur se cilat nga ato gjëra 1555 01:14:54,829 --> 01:14:55,870 jeni të gatshëm për të shpenzuar? 1556 01:14:55,870 --> 01:14:57,380 E cila është më pak e shtrenjtë? 1557 01:14:57,380 --> 01:15:01,040 E cila jep rezultate më të mira? 1558 01:15:01,040 --> 01:15:01,540 Po? 1559 01:15:01,540 --> 01:15:11,310 1560 01:15:11,310 --> 01:15:12,580 >> Me të vërtetë. 1561 01:15:12,580 --> 01:15:15,970 Në këtë rast, në qoftë se ju jeni përfaqësojnë numrat në maps-- 1562 01:15:15,970 --> 01:15:18,820 këto janë quajtur në shumë gjuhë "pointers" ose "adresa" - 1563 01:15:18,820 --> 01:15:20,390 është e dyfishtë hapësirë. 1564 01:15:20,390 --> 01:15:24,390 Kjo nuk duhet të jetë aq e keqe sa të dyfishtë nëse tani ne jemi vetëm ruajtjen numra. 1565 01:15:24,390 --> 01:15:27,410 Supozoni se ne kemi qenë të ruajtur të dhënat e pacientit në një hospital-- 1566 01:15:27,410 --> 01:15:30,870 kështu që emrat Pierson së, numrat e telefonit, numrat e sigurimeve shoqërore, mjeku 1567 01:15:30,870 --> 01:15:31,540 histori. 1568 01:15:31,540 --> 01:15:34,160 Kjo kuti mund të jetë shumë, shumë më të madhe, në të cilin rast 1569 01:15:34,160 --> 01:15:38,000 një tregues i vogël pak, adresa e tjetër element-- kjo nuk është një punë e madhe. 1570 01:15:38,000 --> 01:15:40,620 Kjo është një periferi e tillë kosto kjo nuk ka rëndësi. 1571 01:15:40,620 --> 01:15:43,210 Por në këtë rast, po, kjo është një dyfishim. 1572 01:15:43,210 --> 01:15:45,290 Pyetje e mirë. 1573 01:15:45,290 --> 01:15:47,900 >> Le të flasim për kohë të a pak më konkretisht. 1574 01:15:47,900 --> 01:15:50,380 Çfarë është koha running e kërkimit në këtë listë? 1575 01:15:50,380 --> 01:15:53,640 Mendoj unë të kërkuar për të kërkuar nëpër të gjitha notat e nxënësve, 1576 01:15:53,640 --> 01:15:55,980 dhe nuk ka nota n në këtë strukturë të të dhënave. 1577 01:15:55,980 --> 01:15:58,830 Këtu, gjithashtu, ne mund të marrë hua fjalori i parë. 1578 01:15:58,830 --> 01:16:00,890 Kjo është një strukturë e të dhënave linear. 1579 01:16:00,890 --> 01:16:04,570 >> O i madh i n është ajo që është e nevojshme për të marrë deri në fund të kësaj strukture të dhënave, 1580 01:16:04,570 --> 01:16:08,410 whereas-- dhe ne nuk e kemi parë kjo më herët, një grup ju jep 1581 01:16:08,410 --> 01:16:13,555 atë që quhet koha e vazhdueshme, që do të thotë një hap ose dy hapa ose 10 steps-- 1582 01:16:13,555 --> 01:16:14,180 nuk ka rëndësi. 1583 01:16:14,180 --> 01:16:15,440 Është një numër i caktuar. 1584 01:16:15,440 --> 01:16:17,440 Ajo nuk ka të bëjë me madhësia e array. 1585 01:16:17,440 --> 01:16:20,130 Dhe arsyeja për këtë, përsëri, është e gjallë. 1586 01:16:20,130 --> 01:16:23,180 Kompjuter mund vetëm menjëherë hidhen në një vend tjetër, 1587 01:16:23,180 --> 01:16:27,770 për shkak se ata janë të gjithë të njëjtën gjë Distanca nga çdo gjë tjetër. 1588 01:16:27,770 --> 01:16:29,112 Nuk ka asnjë mendim të përfshira. 1589 01:16:29,112 --> 01:16:31,900 1590 01:16:31,900 --> 01:16:32,400 Në rregull. 1591 01:16:32,400 --> 01:16:39,230 Pra, nëse unë mund të, më lejoni të përpiqet të pikturuar dy fotografi përfundimtare. 1592 01:16:39,230 --> 01:16:42,830 Një njeri shumë i zakonshëm i njohur si një tabelë hash. 1593 01:16:42,830 --> 01:16:51,120 Pra, për të motivuar këtë diskutim, më lejoni të mendoj se si ta bëni këtë. 1594 01:16:51,120 --> 01:16:52,610 >> Pra, si në lidhje me këtë? 1595 01:16:52,610 --> 01:16:55,160 Supozoni se problemi ne duam të zgjidhim tani 1596 01:16:55,160 --> 01:16:58,360 është zbatuar në një dictionary-- kështu që një bandë e tërë e fjalëve angleze 1597 01:16:58,360 --> 01:16:59,330 apo çfarëdo. 1598 01:16:59,330 --> 01:17:02,724 Dhe qëllimi është që të jetë në gjendje për t'iu përgjigjur pyetjet e formularit është kjo një fjalë? 1599 01:17:02,724 --> 01:17:04,640 Pra, ju doni për të zbatuar një checker magji, vetëm 1600 01:17:04,640 --> 01:17:07,220 si një fjalor fizike që ju mund të shikoni gjërat në. 1601 01:17:07,220 --> 01:17:10,490 Mendoj unë do të bëj këtë me një grup. 1602 01:17:10,490 --> 01:17:12,590 Unë mund ta bëjë këtë. 1603 01:17:12,590 --> 01:17:20,756 >> Dhe mendoj se fjalët janë apple dhe banane dhe pjepër. 1604 01:17:20,756 --> 01:17:23,330 1605 01:17:23,330 --> 01:17:26,465 Dhe unë nuk mund të mendoj e frutave që të fillojë me d, kështu që ne jemi vetëm 1606 01:17:26,465 --> 01:17:27,590 do të ketë tre fruta. 1607 01:17:27,590 --> 01:17:31,510 Kështu që kjo është një grup, dhe ne jemi magazinimin e të gjitha këto fjalë 1608 01:17:31,510 --> 01:17:34,200 në këtë fjalor, si një grup. 1609 01:17:34,200 --> 01:17:39,350 Pyetja, pra, është se si të tjerët mund ta ruajë këtë informacion? 1610 01:17:39,350 --> 01:17:43,160 >> E pra, unë jam lloj i mashtrimit këtu, sepse secila nga këto letra në fjalë 1611 01:17:43,160 --> 01:17:44,490 është me të vërtetë një bajt individual. 1612 01:17:44,490 --> 01:17:46,740 Pra, nëse unë me të vërtetë donte të jetë lajthi-picky, unë duhet të vërtetë 1613 01:17:46,740 --> 01:17:49,600 të duke e ndarë këtë ide në shumë chunks vogla e kujtesës, 1614 01:17:49,600 --> 01:17:51,289 dhe ne mund të bëjë pikërisht këtë. 1615 01:17:51,289 --> 01:17:53,580 Por, ne jemi duke shkuar për të kandiduar në të njëjtin problem si më parë. 1616 01:17:53,580 --> 01:17:56,674 Po në qoftë se, si Merriam Webster apo Oxford bën çdo year-- ata shtojnë fjalët 1617 01:17:56,674 --> 01:17:59,340 të dictionary-- ne nuk domosdoshmërisht duan të pikturoj veten 1618 01:17:59,340 --> 01:18:00,780 në një qoshe me një grup? 1619 01:18:00,780 --> 01:18:05,710 >> Pra, në vend, ndoshta një qasje të zgjuar është për të vënë mollë në nyje e vet apo kuti, 1620 01:18:05,710 --> 01:18:11,190 si ne do të themi, banane, dhe atëherë këtu kemi pjepër. 1621 01:18:11,190 --> 01:18:14,990 1622 01:18:14,990 --> 01:18:16,790 Dhe ne string këto gjëra së bashku. 1623 01:18:16,790 --> 01:18:19,980 Pra, kjo është array, dhe kjo është lista e lidhur. 1624 01:18:19,980 --> 01:18:23,300 Nëse ju nuk mund të mjaft të shohim, ajo vetëm thotë se "array", dhe kjo thotë se "listë." 1625 01:18:23,300 --> 01:18:25,780 >> Pra, ne kemi të njëjtën gjë Çështjet e saktë si më parë, 1626 01:18:25,780 --> 01:18:28,600 anë të të cilit tani kemi Dinamizmi në listën tonë të lidhura. 1627 01:18:28,600 --> 01:18:31,090 Por ne kemi një fjalor mjaft të ngadalshëm. 1628 01:18:31,090 --> 01:18:32,870 Mendoj unë doni të shikoni një fjalë. 1629 01:18:32,870 --> 01:18:35,430 Ajo mund të marrë mua O të madhe të n hapa, sepse fjala e fuqisë 1630 01:18:35,430 --> 01:18:37,840 të jenë të gjithë rrugën në fund lista, si pjepër. 1631 01:18:37,840 --> 01:18:40,600 Dhe kjo rezulton se në programimin, lloj 1632 01:18:40,600 --> 01:18:42,700 e Grail shenjtë e të dhënave strukturave, është diçka 1633 01:18:42,700 --> 01:18:46,620 që i jep të vazhdueshme kohë si një grup 1634 01:18:46,620 --> 01:18:50,870 por që ende ju jep dinamizëm. 1635 01:18:50,870 --> 01:18:52,940 >> Kështu që mund të kemi më të mirë të të dy botëve? 1636 01:18:52,940 --> 01:18:55,570 Dhe me të vërtetë, nuk është diçka quhet tabela hash 1637 01:18:55,570 --> 01:18:59,320 që ju lejon të bëni pikërisht që, edhe pse përafërsisht. 1638 01:18:59,320 --> 01:19:03,140 Një tabelë hash është një njohës Struktura e të dhënave që ne 1639 01:19:03,140 --> 01:19:06,340 mund të mendoni si Kombinimi i një array-- 1640 01:19:06,340 --> 01:19:12,390 dhe unë jam duke shkuar për të nxjerrë atë si this-- dhe listat e lidhura 1641 01:19:12,390 --> 01:19:17,310 që do të marr si kjo këtu. 1642 01:19:17,310 --> 01:19:19,760 >> Dhe mënyra kjo gjë vepra është si më poshtë. 1643 01:19:19,760 --> 01:19:23,310 1644 01:19:23,310 --> 01:19:29,540 Nëse kjo now-- hash table-- është struktura e ime e tretë e të dhënave, 1645 01:19:29,540 --> 01:19:32,590 dhe unë dua për të ruajtur fjalët në këtë, unë nuk 1646 01:19:32,590 --> 01:19:35,440 duan të vetëm të ruajtur të gjitha të fjalë për të kthyer prapa për të mbështetur prapa. 1647 01:19:35,440 --> 01:19:37,430 Unë dua të levave disa pjesë e informacionit 1648 01:19:37,430 --> 01:19:40,330 për fjalët që do të lejojnë me të marrë atë aty ku është e shpejtë. 1649 01:19:40,330 --> 01:19:43,666 >> Pra, duke pasur parasysh fjalët mollë dhe banane dhe pjepër, 1650 01:19:43,666 --> 01:19:45,040 Unë qëllimisht zgjodhi këto fjalë. 1651 01:19:45,040 --> 01:19:45,340 Pse? 1652 01:19:45,340 --> 01:19:47,631 Çfarë është lloj krejtësisht ndryshme në lidhje me tre? 1653 01:19:47,631 --> 01:19:49,950 1654 01:19:49,950 --> 01:19:51,484 Çfarë është e qartë? 1655 01:19:51,484 --> 01:19:52,900 Ato fillojnë me shkronja të ndryshme. 1656 01:19:52,900 --> 01:19:53,900 >> Kështu që ju e dini se çfarë? 1657 01:19:53,900 --> 01:19:57,120 Në vend se të vënë të gjitha fjalët e mia në e njëjta kovë, kështu që të flasin, 1658 01:19:57,120 --> 01:20:00,390 si në një listë të madhe, pse nuk e bëjmë Unë të paktën të përpiqet një optimization 1659 01:20:00,390 --> 01:20:04,180 dhe të bëjë listat e mia 1/26 sa kohë. 1660 01:20:04,180 --> 01:20:07,440 A optimization bindëse mund të jetë pse nuk e bëjmë 1661 01:20:07,440 --> 01:20:10,650 I-- kur futur një fjalë në këtë strukturë të të dhënave, 1662 01:20:10,650 --> 01:20:14,300 në kujtesën e kompjuterit, pse nuk e kam vënë të gjitha 'një' fjalë e këtu, 1663 01:20:14,300 --> 01:20:17,270 të gjithë 'b' fjalë këtu, dhe të gjithë "c" fjalët e këtu? 1664 01:20:17,270 --> 01:20:24,610 Pra, kjo përfundon duke vënë një mollë këtu, banane këtu, pjepër këtu, 1665 01:20:24,610 --> 01:20:25,730 dhe kështu me radhë. 1666 01:20:25,730 --> 01:20:31,700 >> Dhe në qoftë se unë kam një shtesë fjala like-- çfarë është tjetër? 1667 01:20:31,700 --> 01:20:36,640 Apple, banane, dardhë. 1668 01:20:36,640 --> 01:20:39,370 Çdokush mendojnë për një fruta që fillon me a, b, ose c? 1669 01:20:39,370 --> 01:20:40,570 përsosur Blueberry--. 1670 01:20:40,570 --> 01:20:43,990 Që do të përfundojnë këtu. 1671 01:20:43,990 --> 01:20:47,530 Dhe kështu që ne duket se kanë një pak zgjidhje më të mirë, 1672 01:20:47,530 --> 01:20:50,820 sepse tani në qoftë se unë dua për të kërkuar për mollë, unë 1673 01:20:50,820 --> 01:20:53,200 first-- Unë nuk e vetëm pikiatë në strukturën e mia e të dhënave. 1674 01:20:53,200 --> 01:20:54,850 Unë nuk zhyten në kujtesën e kompjuterit tim. 1675 01:20:54,850 --> 01:20:56,530 I pari shikoni në letrën e parë. 1676 01:20:56,530 --> 01:20:58,610 >> Dhe kjo është ajo që një kompjuter Shkencëtari do të thonë. 1677 01:20:58,610 --> 01:21:00,760 Ju hash në strukturën tuaj të të dhënave. 1678 01:21:00,760 --> 01:21:04,100 Ju merrni kontributin tuaj, e cila në ky rast është një fjalë si mollë. 1679 01:21:04,100 --> 01:21:07,150 Ju analizuar atë, duke kërkuar në letra e parë në këtë rast, 1680 01:21:07,150 --> 01:21:08,340 duke hashing atë. 1681 01:21:08,340 --> 01:21:10,950 Hashing është një term i përgjithshëm, ku ju merrni diçka si input 1682 01:21:10,950 --> 01:21:12,116 dhe të prodhojë disa dalje. 1683 01:21:12,116 --> 01:21:15,090 Dhe prodhimi në atë Rasti është vend 1684 01:21:15,090 --> 01:21:18,150 ju doni të kërkoni, i pari vendndodhja, vendndodhja e dytë, të tretë. 1685 01:21:18,150 --> 01:21:22,160 Pra input është molla, prodhimi është i pari. 1686 01:21:22,160 --> 01:21:25,054 Input është banana, Prodhimi duhet të jetë të dytë. 1687 01:21:25,054 --> 01:21:27,220 Input është pjepër, prodhimi duhet të jetë i treti. 1688 01:21:27,220 --> 01:21:30,320 Input është boronice, Prodhimi përsëri duhet të jetë të dytë. 1689 01:21:30,320 --> 01:21:34,010 Dhe kjo është ajo që ju ndihmon të merrni shkurtesat përmes kujtesën tuaj 1690 01:21:34,010 --> 01:21:39,050 në mënyrë që të merrni në fjalë ose të dhëna në mënyrë më efikase. 1691 01:21:39,050 --> 01:21:43,330 >> Tani kjo shkurtimet e poshtë kohën tonë potencialisht nga sa më shumë që një në 26, 1692 01:21:43,330 --> 01:21:45,850 sepse në qoftë se ju të supozojmë se ju ketë sa më shumë "një" fjalë si "z" 1693 01:21:45,850 --> 01:21:48,080 Fjalët si fjalët "q", e cila nuk është me të vërtetë realistic-- 1694 01:21:48,080 --> 01:21:50,830 ju jeni do të ketë anuar gjithë shkronja të caktuara të alphabet-- 1695 01:21:50,830 --> 01:21:53,204 por kjo do të ishte një rritje qasje që lejon 1696 01:21:53,204 --> 01:21:55,930 që ju të merrni për fjalë shumë më shpejt. 1697 01:21:55,930 --> 01:21:59,660 Dhe në të vërtetë, një të sofistikuar programit, Googles i botës, 1698 01:21:59,660 --> 01:22:02,180 Facebooks e world-- ata do të përdorin një tabelë hash 1699 01:22:02,180 --> 01:22:03,740 për shumë qëllime të ndryshme. 1700 01:22:03,740 --> 01:22:06,590 Por ata nuk do të jetë aq naiv sa për të vetëm shikoni në letrën e parë 1701 01:22:06,590 --> 01:22:09,700 në mollë ose banane, ose dardhë apo pjepër, 1702 01:22:09,700 --> 01:22:13,420 sepse si ju mund të shihni këto Listat ende mund të marrë kohë të gjatë. 1703 01:22:13,420 --> 01:22:17,130 >> Dhe kështu kjo mund të jetë ende një lloj e linear-- kështu lloj i ngadalshëm, 1704 01:22:17,130 --> 01:22:19,980 si me O të madhe të n që kemi diskutuar më parë. 1705 01:22:19,980 --> 01:22:25,290 Pra, çfarë një tabelë të vërtetë të mirë hash do do-- ajo do të ketë një rrjet shumë më të madhe. 1706 01:22:25,290 --> 01:22:28,574 Dhe kjo do të përdorë një shumë më të Funksioni i sofistikuar hashing, 1707 01:22:28,574 --> 01:22:30,240 në mënyrë që ajo nuk ka vetëm të shikoni në "a". 1708 01:22:30,240 --> 01:22:35,480 Ndoshta shikon "a-p-p-l-e" dhe disi konverton ato pesë letra 1709 01:22:35,480 --> 01:22:38,400 në vendin ku apple duhet të ruhen. 1710 01:22:38,400 --> 01:22:42,660 Ne jemi vetëm naivitet duke përdorur letër 'a' vetëm, sepse ajo është e bukur dhe të thjeshtë. 1711 01:22:42,660 --> 01:22:44,600 >> Por një tabelë hash, në në fund, ju mund të mendoni 1712 01:22:44,600 --> 01:22:47,270 si një kombinim i një grup, secila prej të cilave 1713 01:22:47,270 --> 01:22:51,700 ka një listë të lidhur që në mënyrë ideale duhet të jetë sa më e shkurtër. 1714 01:22:51,700 --> 01:22:54,364 Dhe kjo nuk është një zgjidhje e qartë. 1715 01:22:54,364 --> 01:22:57,280 Në fakt, pjesa më e madhe akordim gjobë që shkon në nën kapuç kur është 1716 01:22:57,280 --> 01:22:59,654 zbatimin e këtyre llojeve të struktura të sofistikuara të dhënave 1717 01:22:59,654 --> 01:23:01,640 është ajo që është e drejtë gjatësia e vektorit? 1718 01:23:01,640 --> 01:23:03,250 Cili është funksioni i duhur hash? 1719 01:23:03,250 --> 01:23:04,830 Si mund të ruajtur gjërat në kujtesë? 1720 01:23:04,830 --> 01:23:07,249 >> Por e kuptojnë se sa shpejt ky lloj i diskutimit 1721 01:23:07,249 --> 01:23:10,540 shkallëzua, ose deri më tani që kjo është lloj e mbi kokën e dikujt në këtë pikë, e cila 1722 01:23:10,540 --> 01:23:11,360 është e mirë. 1723 01:23:11,360 --> 01:23:18,820 Por kemi filluar, risjell, me të vërtetë diçka e nivelit të ulët dhe elektronike. 1724 01:23:18,820 --> 01:23:20,819 Dhe kështu kjo përsëri është ky Tema e abstraksionit, 1725 01:23:20,819 --> 01:23:23,610 ku sapo ju filloni për të marrë për dhënë, OK, unë kam marrë arsyetimet tuaja, nuk ka 1726 01:23:23,610 --> 01:23:26,680 kujtesës fizike, OK, e mori atë, çdo vendndodhjen fizike ka një adresë, 1727 01:23:26,680 --> 01:23:29,910 OK, kam marrë atë, unë mund të përfaqësojë ato adresat si arrows-- 1728 01:23:29,910 --> 01:23:34,650 ju mund shumë shpejt të fillojë të ketë Bisedat më të sofistikuara se 1729 01:23:34,650 --> 01:23:38,360 në fund duket të jetë na lejuar për të zgjidhur probleme si në kërkim 1730 01:23:38,360 --> 01:23:41,620 dhe zgjidhja më efikase. 1731 01:23:41,620 --> 01:23:44,190 Dhe pjesa tjetër e siguroi, too-- sepse unë mendoj se kjo 1732 01:23:44,190 --> 01:23:48,700 është më e thellë që kemi shkuar në disa nga këto tema CS proper-- ne kemi 1733 01:23:48,700 --> 01:23:51,880 bëhet në një ditë e gjysmë në këtë tregojë se çfarë ju mund të bëni në mënyrë tipike gjatë 1734 01:23:51,880 --> 01:23:55,520 kursi i tetë javë në një semestër. 1735 01:23:55,520 --> 01:23:59,670 >> Çdo pyetje mbi këto? 1736 01:23:59,670 --> 01:24:01,100 Nuk ka? 1737 01:24:01,100 --> 01:24:01,940 Në rregull. 1738 01:24:01,940 --> 01:24:05,610 E pra, pse nuk ndalemi atje, fillojnë drekë disa minuta në fillim, 1739 01:24:05,610 --> 01:24:07,052 rinisë në vetëm rreth një orë? 1740 01:24:07,052 --> 01:24:08,760 Dhe unë do të zgjatem për pak me pyetje. 1741 01:24:08,760 --> 01:24:11,343 Atëherë unë jam duke shkuar për të duhet të shkojnë të marrë një thirrje çift nëse kjo është në rregull. 1742 01:24:11,343 --> 01:24:15,000 Unë do të kthehet në disa muzikë në ndërkohë, por dreka duhet të jetë rreth qoshe. 1743 01:24:15,000 --> 01:24:17,862