1 00:00:00,000 --> 00:00:00,030 2 00:00:00,030 --> 00:00:00,460 >> Дејвид MALAN: Во ред. 3 00:00:00,460 --> 00:00:01,094 Ние сме назад. 4 00:00:01,094 --> 00:00:04,260 Значи во овој сегмент на програмирање што Мислев дека би го сторила е мешавина на нештата. 5 00:00:04,260 --> 00:00:06,340 Еден од нив, се направи малку на нешто практично, 6 00:00:06,340 --> 00:00:08,690 иако со користење на повеќе игрива програмирање environment-- 7 00:00:08,690 --> 00:00:11,620 оној кој е покажана на токму видови на идеи 8 00:00:11,620 --> 00:00:14,220 ние сме биле зборува за, но малку повеќе формално. 9 00:00:14,220 --> 00:00:18,200 Две, да погледнеме некои од повеќе технички начини 10 00:00:18,200 --> 00:00:21,520 дека програмер, всушност, ќе се реши проблеми како во потрага проблем 11 00:00:21,520 --> 00:00:24,530 дека ние погледна пред и исто така, повеќе фундаментално 12 00:00:24,530 --> 00:00:26,020 интересен проблем на сортирање. 13 00:00:26,020 --> 00:00:28,840 >> Ние само се претпоставува од се оди дека телефонот книга е сортирана, 14 00:00:28,840 --> 00:00:31,980 но тоа само по себе е всушност еден вид на тежок проблем со многу различни начини 15 00:00:31,980 --> 00:00:32,479 да го реши. 16 00:00:32,479 --> 00:00:34,366 Па ние ќе ги користат овие како класа на проблеми 17 00:00:34,366 --> 00:00:36,740 претставник на работи кои може да се реши во целина. 18 00:00:36,740 --> 00:00:38,980 И потоа ќе зборуваме за во некои детали што 19 00:00:38,980 --> 00:00:42,360 се нарекуваат податоци structures-- познавач начини како поврзани листи 20 00:00:42,360 --> 00:00:46,290 и хаш маси и дрвја кои програмер всушност ќе 21 00:00:46,290 --> 00:00:48,890 користење и генерално се користат на таблата да се наслика 22 00:00:48,890 --> 00:00:51,840 слика на она што тој или таа предвидува одобрување за спроведување 23 00:00:51,840 --> 00:00:52,980 некои парче софтвер. 24 00:00:52,980 --> 00:00:55,130 >> Значи, да се направи со рацете на првиот дел. 25 00:00:55,130 --> 00:01:00,090 Па само да ја добиете вашата раце валкани со средина на scratch.mit.edu. 26 00:01:00,090 --> 00:01:02,636 Ова е алатка која ние ги користиме во нашата додипломски класа. 27 00:01:02,636 --> 00:01:04,510 Иако таа е дизајнирана за деца од 12 и нагоре, 28 00:01:04,510 --> 00:01:07,570 ние го користиме за до дел од тоа доста 29 00:01:07,570 --> 00:01:10,020 бидејќи тоа е убаво, забавно графички начин на учење 30 00:01:10,020 --> 00:01:12,160 нешто за програмирање. 31 00:01:12,160 --> 00:01:17,600 Па главата на таа адреса, каде што Треба да се види страница сосема вака, 32 00:01:17,600 --> 00:01:23,330 и да одат напред и да кликнете Приклучи се на гребнатини во горниот десен агол 33 00:01:23,330 --> 00:01:28,300 и да изберете корисничко име и лозинка и на крајот да си 34 00:01:28,300 --> 00:01:29,970 на account-- scratch.mit.edu. 35 00:01:29,970 --> 00:01:32,165 36 00:01:32,165 --> 00:01:34,665 Мислев дека ќе го искористат ова како можност прво да се покаже тоа. 37 00:01:34,665 --> 00:01:39,120 А прашање дојде за време на паузата во врска со кодот кој всушност изгледа како. 38 00:01:39,120 --> 00:01:41,315 И ние се зборува За време на паузата за C, 39 00:01:41,315 --> 00:01:45,060 во particular-- особено на пониско ниво во постара јазик. 40 00:01:45,060 --> 00:01:47,750 И јас само направив брз Google пребарување за да најдете C код 41 00:01:47,750 --> 00:01:51,574 за бинарни пребарување, алгоритам што ние се користи за пребарување дека телефонот книга порано. 42 00:01:51,574 --> 00:01:54,240 Овој пример, се разбира, не се бара на телефон книга. 43 00:01:54,240 --> 00:01:57,840 Се бара само еден куп на броеви во меморијата на компјутерот. 44 00:01:57,840 --> 00:02:01,000 Но, ако сакате само да се визуелно смисла на она што вистински програмирање 45 00:02:01,000 --> 00:02:05,370 јазик како изгледа, тоа изгледа малку нешто како ова. 46 00:02:05,370 --> 00:02:09,759 Така, тоа е во врска со 20-плус, 30 или така линии на код, 47 00:02:09,759 --> 00:02:12,640 но на разговорот се имаат во текот на паузата 48 00:02:12,640 --> 00:02:16,000 беше за тоа како, всушност, добива претвори во нули и единици 49 00:02:16,000 --> 00:02:19,200 и ако не може само да се врати што обработува и да си одат од нули и единици 50 00:02:19,200 --> 00:02:20,210 се врати да се код. 51 00:02:20,210 --> 00:02:22,620 >> За жал, процесот е толку трансформативниот 52 00:02:22,620 --> 00:02:24,890 дека тоа е многу полесно да се каже отколку да се направи. 53 00:02:24,890 --> 00:02:29,400 Отидов напред и всушност се претвори таа програма, бинарни пребарување, 54 00:02:29,400 --> 00:02:32,700 во нулите и по пат на програма наречена компајлерот дека јас 55 00:02:32,700 --> 00:02:34,400 се случи да имаат право тука на мојот Mac. 56 00:02:34,400 --> 00:02:37,850 И ако се погледне на екранот тука, фокусирајќи се особено 57 00:02:37,850 --> 00:02:43,520 на овие средната шест колони само, ќе видите само нули и единици. 58 00:02:43,520 --> 00:02:48,290 И оние кои се на нули и оние кои компонира токму тоа бараат програма. 59 00:02:48,290 --> 00:02:53,720 >> И така секој парче на пет парчиња, секој бајт на нули и тука, 60 00:02:53,720 --> 00:02:57,310 претставуваат некои настава обично во внатрешноста на компјутерот. 61 00:02:57,310 --> 00:03:00,730 И во Всушност, ако сте слушнале маркетинг слоган "Интел внатре" - дека, 62 00:03:00,730 --> 00:03:04,610 се разбира, само значи дека има Интел процесор или мозокот во внатрешноста на компјутерот. 63 00:03:04,610 --> 00:03:08,000 И што значи тоа да се биде процесорот е дека имате инструкциско множество, 64 00:03:08,000 --> 00:03:08,840 така да се каже. 65 00:03:08,840 --> 00:03:11,620 >> Секој процесор во светот, многу од ги направи од Intel, овие денови, 66 00:03:11,620 --> 00:03:13,690 разбира конечен бројот на инструкции. 67 00:03:13,690 --> 00:03:18,690 И тие упатства се толку ниско ниво како да додадете овие два броја заедно, 68 00:03:18,690 --> 00:03:22,560 размножуваат овие два броја заедно, се движи овој дел од податоците од тука 69 00:03:22,560 --> 00:03:27,340 овде во меморијата, освен овој информации од тука до тука во меморијата, 70 00:03:27,340 --> 00:03:32,200 и така forth-- толку многу, многу ниско ниво, речиси електронски детали. 71 00:03:32,200 --> 00:03:34,780 Но, со овие математички операции во комбинација 72 00:03:34,780 --> 00:03:37,410 со она што беше порано, застапеноста на податоци 73 00:03:37,410 --> 00:03:40,450 како нули и единици, може да ќе се изгради до се што 74 00:03:40,450 --> 00:03:44,180 дека секој компјутер може да се направи денес, без разлика дали тоа е текстуални, графички, музички, 75 00:03:44,180 --> 00:03:45,580 или на друг начин. 76 00:03:45,580 --> 00:03:49,450 >> Значи ова е многу лесно да се добие изгубени во плевелот на брзо. 77 00:03:49,450 --> 00:03:52,150 И има многу синтаксички предизвици 78 00:03:52,150 --> 00:03:56,630 при што ако се направи од наједноставните, stupidest на грешки никој од програмата 79 00:03:56,630 --> 00:03:57,860 ќе работат она. 80 00:03:57,860 --> 00:04:00,366 И така, наместо користење на јазик како C ова утро, 81 00:04:00,366 --> 00:04:02,240 Мислев дека тоа ќе биде повеќе да се забавуваат да всушност направи 82 00:04:02,240 --> 00:04:04,840 нешто повеќе визуелни, кои а наменета за деца 83 00:04:04,840 --> 00:04:08,079 всушност е совршен манифестација на вистински програмирање 84 00:04:08,079 --> 00:04:10,370 Language-- само се случува да користење на слики наместо текст 85 00:04:10,370 --> 00:04:11,710 да ги претставуваат тие идеи. 86 00:04:11,710 --> 00:04:15,470 >> Значи откако ќе навистина имаат сметка на scratch.mit.edu, 87 00:04:15,470 --> 00:04:21,070 кликнете на копчето креирате во горниот лев агол на страницата. 88 00:04:21,070 --> 00:04:24,620 И треба да го видите на животната средина како оној што јас сум за да се види на мојот екран 89 00:04:24,620 --> 00:04:26,310 овде. 90 00:04:26,310 --> 00:04:29,350 И ние ќе се трошат само малку малку време да игра тука. 91 00:04:29,350 --> 00:04:34,080 Ајде да видиме ако не можеме да се решат некои проблеми заедно на следниот начин. 92 00:04:34,080 --> 00:04:39,420 >> Значи она што ќе видите во овој environment-- а всушност само ги споделите со 93 00:04:39,420 --> 00:04:40,050 ми се откажеш. 94 00:04:40,050 --> 00:04:42,680 Не е тука некој? 95 00:04:42,680 --> 00:04:45,070 Не тука? 96 00:04:45,070 --> 00:04:45,800 ДОБРО. 97 00:04:45,800 --> 00:04:49,030 Значи, дозволете ми да истакнам неколку карактеристики на оваа средина. 98 00:04:49,030 --> 00:04:55,024 >> Значи во горниот лев агол на екранот, ние има фаза на гребење, така да се каже. 99 00:04:55,024 --> 00:04:57,440 Нула не е само името на овој програмски јазик; 100 00:04:57,440 --> 00:05:00,356 тоа е, исто така, името на мачка која ќе видите стандардно таму во портокал. 101 00:05:00,356 --> 00:05:02,160 Тој е на сцената, па слично како што е опишано 102 00:05:02,160 --> 00:05:05,770 желката порано дека се наоѓа во правоаголни бела табла средина. 103 00:05:05,770 --> 00:05:09,800 светот оваа мачка е ограничена во целост на тоа правоаголник до врвот таму. 104 00:05:09,800 --> 00:05:12,210 >> Во меѓувреме, на десната страна странично тука, тоа е 105 00:05:12,210 --> 00:05:15,610 само една област скрипти, на празен ако сакате. 106 00:05:15,610 --> 00:05:18,590 Ова е местото каде што ние ќе треба да се напише нашите програми во само еден миг. 107 00:05:18,590 --> 00:05:22,935 И градежни блокови кои ние ќе се користи за да ја напишам оваа program-- сложувалката 108 00:05:22,935 --> 00:05:25,310 парчиња, ако се will-- оние, токму тука во средината, 109 00:05:25,310 --> 00:05:27,500 и тие се категоризираат од страна на функционалност. 110 00:05:27,500 --> 00:05:31,000 Така, на пример, јас ќе одам да се оди напред и покажат најмалку еден од нив. 111 00:05:31,000 --> 00:05:33,690 Одам да се оди напред и да кликнете категоријата Контролирајте до врвот. 112 00:05:33,690 --> 00:05:35,720 >> Значи овие се категориите до врвот. 113 00:05:35,720 --> 00:05:39,410 Одам да кликнете на категорија контрола. 114 00:05:39,410 --> 00:05:44,020 Наместо тоа, јас ќе одам да кликнете на Настани категорија, првиот еден до врвот. 115 00:05:44,020 --> 00:05:47,790 И ако сакате да го следат заедно, дури и како го правиме тоа, ти си сосема добредојдени да. 116 00:05:47,790 --> 00:05:52,180 Одам да кликнете и повлечете овој Првиот, "кога зелено знаме кликнато." 117 00:05:52,180 --> 00:05:58,410 И тогаш јас ќе одам да се намали само речиси на врвот на мојот празен лист. 118 00:05:58,410 --> 00:06:01,450 >> И, што е убаво за гребење е дека овој сложувалка, кога 119 00:06:01,450 --> 00:06:04,560 испреплетени со други загатка парчиња, се случува да се направи буквално 120 00:06:04,560 --> 00:06:06,460 она што тие мозаик парчиња се каже да се направи. 121 00:06:06,460 --> 00:06:09,710 Така, на пример, нула е во право сега во средината на неговиот свет. 122 00:06:09,710 --> 00:06:14,660 Одам да се оди напред и да се избере сега, да речеме, во категоријата движење, 123 00:06:14,660 --> 00:06:18,000 ако сакате да го направите same-- движење категорија. 124 00:06:18,000 --> 00:06:20,430 И сега се забележи имам целиот куп на мозаик парчиња тука 125 00:06:20,430 --> 00:06:23,370 дека, повторно, вид на направи она што велат тие. 126 00:06:23,370 --> 00:06:28,110 И јас одам да се оди напред и да го повлечете и пад на потег блок право овде. 127 00:06:28,110 --> 00:06:31,860 >> И ќе забележите дека веднаш штом ќе се во близина на долниот дел од "зелено знаме 128 00:06:31,860 --> 00:06:34,580 кликнато "копче, известување како се гледа бела линија, 129 00:06:34,580 --> 00:06:36,950 како да е речиси магнетни, таа сака да оди таму. 130 00:06:36,950 --> 00:06:43,070 Само нека оди, и тоа ќе пукне заедно и форми ќе одговара. 131 00:06:43,070 --> 00:06:46,620 И сега може да можеби речиси Претпоставувам каде одиме со ова. 132 00:06:46,620 --> 00:06:51,570 >> Ако се погледне во фазата на гребење овде и се погледне на врвот на тоа, 133 00:06:51,570 --> 00:06:55,142 ќе видите црвено светло, гости знак, и зелено знаме. 134 00:06:55,142 --> 00:06:57,100 И јас одам да се оди напред и да се види мојот screen-- 135 00:06:57,100 --> 00:06:58,460 за само еден миг, ако може. 136 00:06:58,460 --> 00:07:01,960 Одам да кликнете на зелено знаме во моментов, 137 00:07:01,960 --> 00:07:07,850 и тој се пресели она што се појавува да биде 10 чекори или 10 пиксели, 10 точки, на екранот. 138 00:07:07,850 --> 00:07:13,390 >> И така тоа не е возбудлив, но дозволете ми да предложат 139 00:07:13,390 --> 00:07:17,440 дури и без настава ова, само со користење на сопствени свој intuition-- ајде 140 00:07:17,440 --> 00:07:22,560 ми предложи да дознаам како да се направи гребење одиме право надвор од сцената. 141 00:07:22,560 --> 00:07:28,700 Го направи патот за десната страна на на екранот, на целиот пат кон десно. 142 00:07:28,700 --> 00:07:32,200 Дозволете ми да ви даде еден момент или така да се справат со тоа. 143 00:07:32,200 --> 00:07:37,681 Можеби ќе сакате да се погледне во други категории на блокови. 144 00:07:37,681 --> 00:07:38,180 Во ред. 145 00:07:38,180 --> 00:07:41,290 Па само да повториме, кога имаме зеленото знаме кликне тука 146 00:07:41,290 --> 00:07:44,850 и да се движат 10 чекори е само настава, секој пат кога 147 00:07:44,850 --> 00:07:46,720 кликнете на зелено знаме, што се случува? 148 00:07:46,720 --> 00:07:50,070 Па, тоа е водење мојата програма. 149 00:07:50,070 --> 00:07:52,450 За да можам да го направите ова можеби 10 пати рачно, 150 00:07:52,450 --> 00:07:55,130 но тоа се чувствува малку hackish малку, така да се каже, 151 00:07:55,130 --> 00:07:57,480 при што јас не сум решавање на проблемот. 152 00:07:57,480 --> 00:08:00,530 Јас сум само се обидува повторно и повторно и повторно и повторно 153 00:08:00,530 --> 00:08:03,180 додека јас вид на грешка постигнување на Директивата 154 00:08:03,180 --> 00:08:05,560 дека јас изнесени да се постигне и порано. 155 00:08:05,560 --> 00:08:08,200 >> Но, ние знаеме од нашето pseudocode претходно дека има 156 00:08:08,200 --> 00:08:11,870 овој поим во програмирањето на looping, прави нешто повторно и повторно. 157 00:08:11,870 --> 00:08:14,888 И така видов дека еден куп од вас посегна по што загатка парче? 158 00:08:14,888 --> 00:08:17,870 159 00:08:17,870 --> 00:08:18,730 Повторете се додека. 160 00:08:18,730 --> 00:08:21,400 Значи ние не можеше да стори нешто како што се повторува додека не. 161 00:08:21,400 --> 00:08:23,760 И што ќе се повторува се додека точно? 162 00:08:23,760 --> 00:08:27,720 163 00:08:27,720 --> 00:08:28,540 >> ДОБРО. 164 00:08:28,540 --> 00:08:31,974 И дозволете ми да одам со оној кој е нешто поедноставен за само еден миг. 165 00:08:31,974 --> 00:08:33,140 Дозволете ми да оди напред и да го направите тоа. 166 00:08:33,140 --> 00:08:35,559 Забележете дека, како што може да откриен под контрола, 167 00:08:35,559 --> 00:08:38,409 постои и ова се повторува блок, кој не изгледа како тоа е толку голема. 168 00:08:38,409 --> 00:08:41,039 Нема многу простор во помеѓу овие два жолти линии. 169 00:08:41,039 --> 00:08:43,539 Но, како што некои од вас може да има забележи, ако drag and drop, 170 00:08:43,539 --> 00:08:45,150 информации како што расте за пополнување на форма. 171 00:08:45,150 --> 00:08:46,274 >> Можете дури и да ставам повеќе. 172 00:08:46,274 --> 00:08:48,670 Тоа само ќе продолжи да расте, ако ќе повлечете и лебди над неа. 173 00:08:48,670 --> 00:08:51,110 И јас не знам што е најдобрите тука, па ајде 174 00:08:51,110 --> 00:08:54,760 мене барем повтори пет пати, за На пример, а потоа се врати на сцената 175 00:08:54,760 --> 00:08:56,720 и кликнете на зелено знаме. 176 00:08:56,720 --> 00:08:59,110 И сега се забележи тоа не е сосема таму. 177 00:08:59,110 --> 00:09:02,400 >> Сега некои од вас предложи, како Викторија само се повторува 10 пати. 178 00:09:02,400 --> 00:09:05,140 И тоа генерално не му се на тој пат, 179 00:09:05,140 --> 00:09:10,510 но не би да има повеќе стабилна начин од произволно да пронајдат 180 00:09:10,510 --> 00:09:12,640 колку потези да се направи? 181 00:09:12,640 --> 00:09:17,680 Што може да биде подобро блок од Повторете 10 пати да биде? 182 00:09:17,680 --> 00:09:20,380 >> Да, па зошто да не се направи нешто засекогаш? 183 00:09:20,380 --> 00:09:24,390 А сега дозволете ми да се движат на оваа загатка парче внатре има и ослободете се од оваа. 184 00:09:24,390 --> 00:09:28,300 Сега забележите без разлика каде гребење започнува, тој оди до работ. 185 00:09:28,300 --> 00:09:30,700 И за среќа МИТ, кој прави нула, само 186 00:09:30,700 --> 00:09:33,190 прави сигурни дека никогаш потполно исчезнува. 187 00:09:33,190 --> 00:09:35,360 секогаш може да го дофати опашката. 188 00:09:35,360 --> 00:09:37,680 >> И само интуитивно, зошто тој Чувајте се движат? 189 00:09:37,680 --> 00:09:38,892 Што се случува овде? 190 00:09:38,892 --> 00:09:41,440 191 00:09:41,440 --> 00:09:43,824 Тој изгледа како да застанува, но тогаш да ги собереш и влечете 192 00:09:43,824 --> 00:09:45,240 тој постојано сакаат да одат таму. 193 00:09:45,240 --> 00:09:46,123 Зошто е тоа? 194 00:09:46,123 --> 00:09:51,610 195 00:09:51,610 --> 00:09:54,360 Навистина, компјутерот е буквално ќе го направи она што го каже да го стори. 196 00:09:54,360 --> 00:09:58,380 Па ако го кажав и претходно го стори по нешто вечно, се движат од 10 чекори, 197 00:09:58,380 --> 00:10:01,860 тоа се случува да продолжувам да одам и ќе додека не хит на црвениот знак стоп 198 00:10:01,860 --> 00:10:04,620 и да престане целосно програмата. 199 00:10:04,620 --> 00:10:06,610 >> Па дури и ако не сте да го направите ова, како би можел 200 00:10:06,610 --> 00:10:09,510 да се движи побрзо од гребење низ екранот? 201 00:10:09,510 --> 00:10:12,060 202 00:10:12,060 --> 00:10:13,280 Повеќе чекори, нели? 203 00:10:13,280 --> 00:10:15,710 Така, наместо да го прави 10 во исто време, зошто да не се 204 00:10:15,710 --> 00:10:20,100 оди напред и да ја промените to-- што би propose-- 50? 205 00:10:20,100 --> 00:10:24,410 Па сега јас ќе одам да кликнете на зелената знаме, и навистина, тој оди навистина брзо. 206 00:10:24,410 --> 00:10:27,180 >> И ова, се разбира, е само манифестација на анимација. 207 00:10:27,180 --> 00:10:28,060 Што е анимација? 208 00:10:28,060 --> 00:10:33,090 Тоа е само ви покажува на човекот на целиот куп на фотографии, навистина, 209 00:10:33,090 --> 00:10:34,160 навистина, навистина брзо. 210 00:10:34,160 --> 00:10:36,500 И така, ако ние сме само кажувам него да се движат повеќе чекори, 211 00:10:36,500 --> 00:10:39,750 ние сме само има ефект да биде да се промени, каде што е на екранот 212 00:10:39,750 --> 00:10:42,900 сите побрзо по единица време. 213 00:10:42,900 --> 00:10:46,454 >> Сега следниот предизвик што го предложив требаше да го преувеличува на раб. 214 00:10:46,454 --> 00:10:49,120 И без да знаат што загатка парчиња exist--, бидејќи тоа е во ред 215 00:10:49,120 --> 00:10:53,030 ако не се дојде до фаза на она што challenge-- 216 00:10:53,030 --> 00:10:54,280 Дали сакате да се направи интуитивно? 217 00:10:54,280 --> 00:10:58,030 Како ќе го натера да застане на нозе и натаму, меѓу левата и десната? 218 00:10:58,030 --> 00:11:02,630 219 00:11:02,630 --> 00:11:03,810 >> Да. 220 00:11:03,810 --> 00:11:05,680 Значи ние треба некој вид на состојбата, а ние 221 00:11:05,680 --> 00:11:09,710 се чини дека имаат conditionals, така да зборува, во категоријата контрола. 222 00:11:09,710 --> 00:11:14,110 Која од овие блокови ние веројатно сакате? 223 00:11:14,110 --> 00:11:15,200 Да, можеби "ако, тогаш." 224 00:11:15,200 --> 00:11:18,780 Така да се забележи дека меѓу жолти блокови имаме тука, таму е ова "ако" 225 00:11:18,780 --> 00:11:23,920 или ова "ако, на друго место" блок кој ќе ни овозможи да се донесе одлука да се направи ова 226 00:11:23,920 --> 00:11:25,000 или да го стори тоа. 227 00:11:25,000 --> 00:11:27,380 па дури и може да ги гнездо да се направи повеќе нешта. 228 00:11:27,380 --> 00:11:34,910 Или, пак, ако се уште не сте поминале тука, оди напред во категоријата на детекција 229 00:11:34,910 --> 00:11:39,612 and-- Да видиме дали тоа е тука. 230 00:11:39,612 --> 00:11:43,050 231 00:11:43,050 --> 00:11:52,050 >> Значи она што блок може да биде корисно тука да се открие дали тој е надвор од сцената? 232 00:11:52,050 --> 00:11:56,740 Да, забележите дека некои од овие блокови може да се parametrized, така да се каже. 233 00:11:56,740 --> 00:12:00,706 Тие може да се вид на индивидуално, не за разлика од HTML вчера со атрибути, 234 00:12:00,706 --> 00:12:03,330 каде што тие атрибути вид на го прилагодите однесувањето на таг. 235 00:12:03,330 --> 00:12:08,880 Слично на тоа тука, можам да го имате овој допирање блок и да се промени и да се постави прашањето, 236 00:12:08,880 --> 00:12:11,500 ви се допира на глувчето како покажувач на покажувачот 237 00:12:11,500 --> 00:12:13,250 или ви се допира работ? 238 00:12:13,250 --> 00:12:15,210 >> Па дозволете ми да оди и да го направите тоа. 239 00:12:15,210 --> 00:12:18,130 Одам да одзумирате за момент. 240 00:12:18,130 --> 00:12:21,320 Дозволете ми да го имате овој сложувалка тука, оваа сложувалка ова, 241 00:12:21,320 --> 00:12:24,570 и јас ќе одам да купот нив за само еден миг. 242 00:12:24,570 --> 00:12:27,620 Одам да се помести ова, промените ова на допир работ, 243 00:12:27,620 --> 00:12:38,590 а јас ќе одам на движење го направите тоа. 244 00:12:38,590 --> 00:12:40,490 Значи тука се и некои состојки. 245 00:12:40,490 --> 00:12:42,570 Мислам дека сум го доби она што го сакам. 246 00:12:42,570 --> 00:12:47,710 >> Некој би сакал да предложам како јас може да се поврзе овие можеби врвот до дното 247 00:12:47,710 --> 00:12:52,020 со цел да се реши проблемот на морале Нула движи од десно на лево кон десно за да 248 00:12:52,020 --> 00:12:57,020 лево кон десно на лево, секој време само бие надвор од ѕидот? 249 00:12:57,020 --> 00:12:58,050 Што сакате да направите? 250 00:12:58,050 --> 00:13:01,097 Кои блок треба да се поврзе со "Кога зелено знаме кликна првиот"? 251 00:13:01,097 --> 00:13:04,060 252 00:13:04,060 --> 00:13:06,200 >> Добро, па ајде да почнеме со "засекогаш". 253 00:13:06,200 --> 00:13:07,170 Она што се случува внатре во вашето следно? 254 00:13:07,170 --> 00:13:10,290 Некој друг. 255 00:13:10,290 --> 00:13:11,850 Во ред, се движи чекори. 256 00:13:11,850 --> 00:13:12,350 Во ред. 257 00:13:12,350 --> 00:13:14,470 А што потоа? 258 00:13:14,470 --> 00:13:15,120 Па тогаш ако. 259 00:13:15,120 --> 00:13:17,720 И ќе забележите, дури и покрај тоа што изгледа споени заедно цврсто, 260 00:13:17,720 --> 00:13:19,500 тоа само ќе се зголеми за да се пополни. 261 00:13:19,500 --> 00:13:21,500 Тоа само ќе скокне во каде што го сакате. 262 00:13:21,500 --> 00:13:25,920 >> И она што можам да се стави меѓу на, ако и тогаш? 263 00:13:25,920 --> 00:13:27,180 Веројатно "ако допира работ". 264 00:13:27,180 --> 00:13:31,800 И известување, повторно, тоа е премногу голема за тоа, но тоа ќе се зголеми за да се пополни. 265 00:13:31,800 --> 00:13:35,002 А потоа се претвори 15 степени? 266 00:13:35,002 --> 00:13:35,710 Колку степени? 267 00:13:35,710 --> 00:13:38,800 268 00:13:38,800 --> 00:13:41,196 Да, па ќе се вртат 180 мене сите обратно. 269 00:13:41,196 --> 00:13:42,570 Значи, да се види дали добив ова право. 270 00:13:42,570 --> 00:13:43,930 Дозволете ми да одзумирате. 271 00:13:43,930 --> 00:13:45,130 >> Дозволете ми да го повлечете на гребење нагоре. 272 00:13:45,130 --> 00:13:50,030 Па тој е малку искривена сега, но тоа е во ред. 273 00:13:50,030 --> 00:13:52,231 Како можам да го ресетирате лесно? 274 00:13:52,231 --> 00:13:59,879 275 00:13:59,879 --> 00:14:01,045 Одам да лажеш малку. 276 00:14:01,045 --> 00:14:04,074 277 00:14:04,074 --> 00:14:05,990 Затоа, јас сум додавајќи уште еден блок, само за да биде јасно. 278 00:14:05,990 --> 00:14:08,424 Сакам да истакнам 90 степени на правото по дифолт, 279 00:14:08,424 --> 00:14:10,840 па јас сум само ќе го кажам да го стори тоа програмски. 280 00:14:10,840 --> 00:14:11,632 И тука ќе одиме. 281 00:14:11,632 --> 00:14:14,740 282 00:14:14,740 --> 00:14:15,740 Се чини да се го сториле тоа. 283 00:14:15,740 --> 00:14:19,980 Тоа е малку чудно, бидејќи тој е одење наопаку. 284 00:14:19,980 --> 00:14:21,250 Ајде да се јавите дека бубачка. 285 00:14:21,250 --> 00:14:22,120 Тоа е грешка. 286 00:14:22,120 --> 00:14:27,320 А бубачка е грешка во програмата, логичка грешка што јас, човекот, направени. 287 00:14:27,320 --> 00:14:28,985 Зошто е тој ќе наопаку? 288 00:14:28,985 --> 00:14:33,560 289 00:14:33,560 --> 00:14:35,250 Дали МИТ зафркнам или јас? 290 00:14:35,250 --> 00:14:38,840 291 00:14:38,840 --> 00:14:42,550 >> Да, мислам, тоа не е МИТ вина. Тие ми дадоа сложувалка 292 00:14:42,550 --> 00:14:44,970 кој се вели дека се претвори некои број на степени. 293 00:14:44,970 --> 00:14:47,672 И на предлог на Викторија, Јас сум врти за 180 степени, 294 00:14:47,672 --> 00:14:48,880 кој е вистинскиот интуиција. 295 00:14:48,880 --> 00:14:53,700 Но вртење од 180 степени буквално значи вртење од 180 степени, 296 00:14:53,700 --> 00:14:55,860 и тоа не е навистина она што сакам, очигледно. 297 00:14:55,860 --> 00:14:58,026 Бидејќи барем тој е во Оваа две-димензионални светот, 298 00:14:58,026 --> 00:15:00,740 така пресвртна навистина се случува да го флип наопаку. 299 00:15:00,740 --> 00:15:04,030 >> Јас веројатно ќе сакате да го користите она блок Наместо тоа, врз основа на она што го гледате овде? 300 00:15:04,030 --> 00:15:11,890 301 00:15:11,890 --> 00:15:14,790 Како можеме да го надминете овој? 302 00:15:14,790 --> 00:15:18,380 Да, па ние може да се укаже во спротивна насока. 303 00:15:18,380 --> 00:15:22,300 И всушност, дури и дека е нема да биде доволно, 304 00:15:22,300 --> 00:15:26,410 затоа што ние може само тешко код да покажува лево или десно. 305 00:15:26,410 --> 00:15:27,920 >> Знаете што можеме да направиме? 306 00:15:27,920 --> 00:15:30,160 Изгледа дека имаме погодност блок тука. 307 00:15:30,160 --> 00:15:32,987 Ако можам да зумирате, видете нешто што допаѓа кај нас? 308 00:15:32,987 --> 00:15:36,120 309 00:15:36,120 --> 00:15:40,020 Така што изгледа како МИТ има апстракција изградена тука. 310 00:15:40,020 --> 00:15:45,440 Овој блок се чини дека се еднакви на кое други блокови, множина? 311 00:15:45,440 --> 00:15:49,510 >> Оваа една блок се чини дека се еднакви за целиот трио на блокови 312 00:15:49,510 --> 00:15:50,880 дека имаме тука. 313 00:15:50,880 --> 00:15:54,670 Значи излегува јас може да се поедностави мојот програмата од страна да се ослободиме од сето тоа 314 00:15:54,670 --> 00:15:58,270 и само да се стави ова во тука. 315 00:15:58,270 --> 00:16:01,620 И сега тој е сепак малку кабриолет, и тоа е добро за сега. 316 00:16:01,620 --> 00:16:03,370 Ќе го оставиме тоа да биде. 317 00:16:03,370 --> 00:16:06,000 Но, мојата програма е дури и поедноставно, а тоа, исто така, 318 00:16:06,000 --> 00:16:09,060 да биде репрезентативен на гол во programming-- 319 00:16:09,060 --> 00:16:13,430 идеално е да се направи вашиот код како едноставен, како компактен како е можно, 320 00:16:13,430 --> 00:16:15,650 додека сеуште се како може да се чита како е можно. 321 00:16:15,650 --> 00:16:20,310 Вие не сакате да се направи тоа, така содржаен дека тоа е тешко да се разбере. 322 00:16:20,310 --> 00:16:22,826 >> Но забележите сум заменува три блокови со еден, 323 00:16:22,826 --> 00:16:24,200 и тоа е веројатно добра работа. 324 00:16:24,200 --> 00:16:27,280 Сум апстрахирани далеку поимот на проверка дали сте 325 00:16:27,280 --> 00:16:29,120 на работ со само еден блок. 326 00:16:29,120 --> 00:16:31,520 Сега можеме да се забавуваат со оваа, во факт. 327 00:16:31,520 --> 00:16:35,790 Ова не додадете толку многу интелектуална вредност, но разигран вредност. 328 00:16:35,790 --> 00:16:39,730 Одам да се оди напред и го имате овој звук тука. 329 00:16:39,730 --> 00:16:42,900 330 00:16:42,900 --> 00:16:46,420 Па дозволете ми да оди напред, и нека ме запре програмата за момент. 331 00:16:46,420 --> 00:16:52,070 Одам да се снима следната година, овозможување на пристап до мојот микрофон. 332 00:16:52,070 --> 00:16:53,181 >> Еве ќе одиме. 333 00:16:53,181 --> 00:16:53,680 Уф. 334 00:16:53,680 --> 00:16:58,710 335 00:16:58,710 --> 00:17:01,140 Ајде да се обидеме тоа повторно. 336 00:17:01,140 --> 00:17:02,279 Еве ќе одиме. 337 00:17:02,279 --> 00:17:03,570 Добро, јас снимен нешто погрешно. 338 00:17:03,570 --> 00:17:04,580 Еве ќе одиме. 339 00:17:04,580 --> 00:17:05,080 Уф. 340 00:17:05,080 --> 00:17:07,910 341 00:17:07,910 --> 00:17:08,800 Уф. 342 00:17:08,800 --> 00:17:09,300 Во ред. 343 00:17:09,300 --> 00:17:10,791 Сега е потребно да се ослободи од тоа. 344 00:17:10,791 --> 00:17:11,290 Во ред. 345 00:17:11,290 --> 00:17:13,950 >> Па сега имам снимање на само "Уф". 346 00:17:13,950 --> 00:17:18,040 Па сега јас ќе одам да се оди напред и ова го нарекуваат "Уф". 347 00:17:18,040 --> 00:17:20,270 Одам да се врати на мојот скрипти, и сега 348 00:17:20,270 --> 00:17:25,460 известување има овој блок што се вика игра звук "meow" или репродуцира звук "Уф". 349 00:17:25,460 --> 00:17:28,920 Одам да го повлечете овој, и каде што треба да се стави ова за комична? 350 00:17:28,920 --> 00:17:31,740 351 00:17:31,740 --> 00:17:37,860 Да, па сега тоа е вид на кабриолет, бидејќи сега тоа block-- 352 00:17:37,860 --> 00:17:42,050 информации како ова ", ако на работ, отскокнување "е вид на автономни. 353 00:17:42,050 --> 00:17:43,704 Значи ми треба да го надминете овој. 354 00:17:43,704 --> 00:17:44,870 Дозволете ми да оди напред и да го направите тоа. 355 00:17:44,870 --> 00:17:48,630 Дозволете ми да се ослободи од ова и се врати на нашите оригинални, повеќе намерно 356 00:17:48,630 --> 00:17:49,870 функционалност. 357 00:17:49,870 --> 00:18:01,080 Така, "ако се допира работ, тогаш" Сакам да се менува, бидејќи Викторија предлага, 358 00:18:01,080 --> 00:18:02,480 180 степени. 359 00:18:02,480 --> 00:18:05,497 И не сакам да играм звукот "Уф" таму? 360 00:18:05,497 --> 00:18:11,800 361 00:18:11,800 --> 00:18:15,580 >> Да, забележите дека тоа е надвор дека жолта блок. 362 00:18:15,580 --> 00:18:17,680 Значи ова, исто така, ќе биде грешки, но јас не сум го забележал. 363 00:18:17,680 --> 00:18:21,290 Па јас ќе одам да го влечете до тука, и информации сега е во внатрешноста на "ако". 364 00:18:21,290 --> 00:18:24,250 Значи, "ако" е овој вид на како рака-како размачкана 365 00:18:24,250 --> 00:18:26,260 што се случува само на го направи она што е во него. 366 00:18:26,260 --> 00:18:30,216 Па сега ако јас одзумирате на ризикот од annoying-- 367 00:18:30,216 --> 00:18:32,860 368 00:18:32,860 --> 00:18:36,470 >> Компјутер: Уф, Уф, Уф. 369 00:18:36,470 --> 00:18:39,910 >> Дејвид MALAN: И тоа само ќе трае вечно. 370 00:18:39,910 --> 00:18:44,160 Сега само да се забрза работите тука, дозволете ми да оди напред и да се отвори, 371 00:18:44,160 --> 00:18:50,460 ајде say-- дозволете ми да одат на некои на моето работи од класа. 372 00:18:50,460 --> 00:18:53,000 373 00:18:53,000 --> 00:19:00,220 И дозволете ми да се отвори, да речеме, ова направен од еден од нашите наставата соработници 374 00:19:00,220 --> 00:19:01,500 пред неколку години. 375 00:19:01,500 --> 00:19:04,732 Значи, некои од вас може да се потсетиме оваа игра од недалечното минато, 376 00:19:04,732 --> 00:19:05,940 а тоа е всушност извонреден. 377 00:19:05,940 --> 00:19:08,190 И покрај тоа што ние го направивме наједноставните програми во моментов, 378 00:19:08,190 --> 00:19:09,980 ајде да се разгледа она што овој всушност изгледа како. 379 00:19:09,980 --> 00:19:10,650 Нека ме удри игра. 380 00:19:10,650 --> 00:19:14,210 381 00:19:14,210 --> 00:19:18,980 >> Значи во оваа игра, имаме жаба, и користење на стрелките keys-- 382 00:19:18,980 --> 00:19:23,340 тој зема поголеми чекори од мене remember-- Имам контрола над оваа жаба. 383 00:19:23,340 --> 00:19:29,630 А целта е да се добие низ зафатен патот без трчање во автомобили. 384 00:19:29,630 --> 00:19:34,735 И ајде да see-- ако одам до тука, мора да почека за најавите за да се движите од. 385 00:19:34,735 --> 00:19:38,130 386 00:19:38,130 --> 00:19:39,274 Ова се чувствува како бубачка. 387 00:19:39,274 --> 00:19:42,240 388 00:19:42,240 --> 00:19:43,495 Ова е вид на бубачка. 389 00:19:43,495 --> 00:19:45,980 390 00:19:45,980 --> 00:19:46,480 Во ред. 391 00:19:46,480 --> 00:19:51,550 Јас сум на овој овде, таму, а потоа да се задржи 392 00:19:51,550 --> 00:19:54,100 случува се додека не добиете сите жаби на крин влошки. 393 00:19:54,100 --> 00:19:55,920 Сега ова може да изгледа сè повеќе и повеќе комплекс, 394 00:19:55,920 --> 00:19:57,840 но, ајде да се обиде да се пробие ова долу ментално 395 00:19:57,840 --> 00:20:00,040 и усно на нејзините составни блокови. 396 00:20:00,040 --> 00:20:03,910 Па таму е веројатно загатка парче што не сме виделе уште 397 00:20:03,910 --> 00:20:07,440 но тоа е одговор на тастатурата, на работите ќе се погоди на тастатурата. 398 00:20:07,440 --> 00:20:11,660 >> Па таму е веројатно еден вид блок кој вели дека, ако клучот е еднаква нагоре, 399 00:20:11,660 --> 00:20:15,965 потоа да се направи нешто со Scratch-- Можеби тоа се движи од 10 чекори на овој начин. 400 00:20:15,965 --> 00:20:20,240 Ако не се притисне копчето, се движат 10 чекори На овој начин, или левото изборно копче, се движат 10 чекори 401 00:20:20,240 --> 00:20:21,710 На овој начин, 10 чекори за тоа. 402 00:20:21,710 --> 00:20:23,644 Сум јасно покажа на мачка во жаба. 403 00:20:23,644 --> 00:20:26,060 Па тоа е само кога костим, како гребење повици it-- ние 404 00:20:26,060 --> 00:20:28,440 само увезени слика на жаба. 405 00:20:28,440 --> 00:20:29,570 >> Но, што друго се случува? 406 00:20:29,570 --> 00:20:32,794 Кои други линии на код, она што другите го загатка парчиња 407 00:20:32,794 --> 00:20:35,460 не Блејк, нашата настава колеги, користат во оваа програма, очигледно? 408 00:20:35,460 --> 00:20:38,320 409 00:20:38,320 --> 00:20:42,730 Што се прави се што move-- што програмирањето се изгради? 410 00:20:42,730 --> 00:20:44,950 >> Движење, па sure-- се движи блок, за сигурен. 411 00:20:44,950 --> 00:20:49,330 И, што е тој потег блок внатрешноста, најверојатно? 412 00:20:49,330 --> 00:20:52,850 Да, некој вид на јамка, можеби засекогаш да го блокира, а можеби и да се повтори block-- 413 00:20:52,850 --> 00:20:54,070 Повторете се додека блок. 414 00:20:54,070 --> 00:20:57,330 И тоа е она што се прави на регистрите и крин влошки и сè друго потег 415 00:20:57,330 --> 00:20:57,990 напред и назад. 416 00:20:57,990 --> 00:21:00,270 Тоа е само случува бескрајно. 417 00:21:00,270 --> 00:21:03,180 >> Зошто некои од автомобилите се движат побрзо од другите? 418 00:21:03,180 --> 00:21:06,607 Што е различно за овие програми? 419 00:21:06,607 --> 00:21:09,690 Да, веројатно некои од нив се одвиваат повеќе чекори одеднаш, а некои од нив 420 00:21:09,690 --> 00:21:10,690 помалку чекори одеднаш. 421 00:21:10,690 --> 00:21:14,670 И визуелен ефект е брз наспроти бавно. 422 00:21:14,670 --> 00:21:16,030 >> Што мислиш, што се случи? 423 00:21:16,030 --> 00:21:19,700 Кога влегов ми жаба на целиот пат другата страна на улицата и реката 424 00:21:19,700 --> 00:21:23,560 кон крин рампа, нешто спомене случило. 425 00:21:23,560 --> 00:21:26,540 Што се случи веднаш штом ќе го направи тоа? 426 00:21:26,540 --> 00:21:27,210 Тој престана. 427 00:21:27,210 --> 00:21:29,680 Жаба запре, и Добив вториот жаба. 428 00:21:29,680 --> 00:21:33,155 Значи она што конструкција мора да биде се користи, што функција? 429 00:21:33,155 --> 00:21:36,020 430 00:21:36,020 --> 00:21:38,660 >> Да, па таму е некој вид на "Ако" состојба таму, исто така. 431 00:21:38,660 --> 00:21:41,909 И излегува out-- не видовме this-- но има и други блокови таму дека 432 00:21:41,909 --> 00:21:45,300 може да се каже, ако се допираат Друга работа, на екранот, 433 00:21:45,300 --> 00:21:47,720 ако сте допирање на крин рампа ", а потоа". 434 00:21:47,720 --> 00:21:50,810 И тогаш тоа е кога ние да се појават на втората жаба. 435 00:21:50,810 --> 00:21:54,969 Па дури и ако оваа игра е, секако, многу датум, иако на прв поглед 436 00:21:54,969 --> 00:21:58,010 има толку многу се случува on-- и Блејк не камшик ова во две минути, 437 00:21:58,010 --> 00:22:00,390 тоа веројатно го зеде неколку часа за да се создаде оваа игра 438 00:22:00,390 --> 00:22:03,850 врз основа на меморијата или неговите видеа на верзија на него недалечното минато е. 439 00:22:03,850 --> 00:22:07,940 Но, сите овие мали нешта се случува на екранот во изолација 440 00:22:07,940 --> 00:22:11,550 сведуваат на овие многу едноставна constructs-- движења или извештаи 441 00:22:11,550 --> 00:22:15,519 како ние разговаравме, јамки и услови, и тоа е за тоа. 442 00:22:15,519 --> 00:22:17,060 Има неколку други познавач карактеристики. 443 00:22:17,060 --> 00:22:19,130 Некои од нив се само естетски или акустична, 444 00:22:19,130 --> 00:22:20,964 како звуците јас само игра со. 445 00:22:20,964 --> 00:22:23,380 Но, во најголем дел, имаме во овој јазик, нула, 446 00:22:23,380 --> 00:22:25,350 сите основни градежни блокови кои 447 00:22:25,350 --> 00:22:29,280 имаат во C, Java, JavaScript, PHP, Ruby, Python 448 00:22:29,280 --> 00:22:32,960 и било кој број на други јазици. 449 00:22:32,960 --> 00:22:36,720 За било какви прашања во врска со нула? 450 00:22:36,720 --> 00:22:37,220 Во ред. 451 00:22:37,220 --> 00:22:40,303 Значи ние не ќе се нурне подлабоко да се нула, и покрај тоа што сте добредојдени овој викенд, 452 00:22:40,303 --> 00:22:42,860 особено ако имате деца или внуки и внуци и такви, 453 00:22:42,860 --> 00:22:44,220 да се запознаат со гребење. 454 00:22:44,220 --> 00:22:47,960 Тоа е всушност прекрасно разигран животната средина, со, како што велат неговите автори, 455 00:22:47,960 --> 00:22:49,120 многу високи тавани. 456 00:22:49,120 --> 00:22:51,670 И покрај тоа што започна со многу детали на ниско ниво, 457 00:22:51,670 --> 00:22:54,890 навистина може да направи доста со тоа, и ова е можеби 458 00:22:54,890 --> 00:22:57,360 демонстрација токму тоа. 459 00:22:57,360 --> 00:23:02,920 >> Но, ајде сега да транзиција кон некои повеќе софистицирани проблеми, ако сакате, 460 00:23:02,920 --> 00:23:05,870 познат како "пребарување" и "Сортирање", воопшто. 461 00:23:05,870 --> 00:23:09,500 Имавме овој телефон книга earlier-- еве уште еден само за discussion-- 462 00:23:09,500 --> 00:23:13,460 дека сме биле во можност да пребарување поефикасно, бидејќи 463 00:23:13,460 --> 00:23:15,270 на значителен претпоставка. 464 00:23:15,270 --> 00:23:17,655 И само за да биде јасно, што Претпоставката беше јас да прават 465 00:23:17,655 --> 00:23:19,280 при пребарување низ овој телефон книга? 466 00:23:19,280 --> 00:23:23,342 467 00:23:23,342 --> 00:23:25,300 Дека Мајк Смит беше во книгата на телефонот, иако јас 468 00:23:25,300 --> 00:23:27,410 ќе биде во можност да се справи со сценарио без него 469 00:23:27,410 --> 00:23:30,720 таму, ако јас само престана предвреме. 470 00:23:30,720 --> 00:23:31,806 Книгата е по азбучен ред. 471 00:23:31,806 --> 00:23:33,930 И тоа е многу дарежлива претпоставка, бидејќи тоа 472 00:23:33,930 --> 00:23:36,580 значи someone-- Јас сум вид на сечење агол, 473 00:23:36,580 --> 00:23:40,580 како што сум јас побрзо, бидејќи некој друг не е многу напорна работа за мене. 474 00:23:40,580 --> 00:23:43,120 >> Но, што ако телефонот книгата се вон едиции? 475 00:23:43,120 --> 00:23:47,050 Можеби Веризон добив мрзливи, само фрли имињата и броевите на сите таму 476 00:23:47,050 --> 00:23:50,120 можеби во редоследот по кој тие се регистрираа за телефонски услуги. 477 00:23:50,120 --> 00:23:54,570 И колку време е потребно за мене да се најде некој како Мајкл Смит? 478 00:23:54,570 --> 00:23:58,160 1.000 страница телефон book-- колку страници не морам да се погледне преку? 479 00:23:58,160 --> 00:23:58,905 >> Сите тие. 480 00:23:58,905 --> 00:24:00,030 Ти си вид на надвор од среќа. 481 00:24:00,030 --> 00:24:03,420 Вие буквално треба да се погледне во секој страница и ако телефонот книга е само 482 00:24:03,420 --> 00:24:04,450 случајно подредени. 483 00:24:04,450 --> 00:24:06,910 Можеби ќе имаат среќа и да се најде Мајк на првата страница, бидејќи тој 484 00:24:06,910 --> 00:24:08,826 беше првиот клиент да нареди телефонска услуга. 485 00:24:08,826 --> 00:24:10,760 Но, тој би можел да биде и последен, исто така. 486 00:24:10,760 --> 00:24:12,500 >> Значи случаен редослед не е добро. 487 00:24:12,500 --> 00:24:16,750 Па претпоставувам дека ние треба да ги сортирате телефон книга или воопшто податоци вид 488 00:24:16,750 --> 00:24:18,520 дека ние сме биле дадени. 489 00:24:18,520 --> 00:24:19,440 Како можеме да го направите тоа? 490 00:24:19,440 --> 00:24:21,360 >> Па, дозволете ми да се обиде едноставен пример тука. 491 00:24:21,360 --> 00:24:24,290 Дозволете ми да оди напред и да се фрли неколку броеви на табла. 492 00:24:24,290 --> 00:24:35,480 Да претпоставиме дека на броеви имаме се, да речеме, четири, два, еден, и три. 493 00:24:35,480 --> 00:24:38,390 И, Бен, се најде решение за овие броеви за нас. 494 00:24:38,390 --> 00:24:39,017 >> Во ред добро. 495 00:24:39,017 --> 00:24:39,850 Како го направи тоа? 496 00:24:39,850 --> 00:24:42,731 497 00:24:42,731 --> 00:24:43,230 Во ред. 498 00:24:43,230 --> 00:24:44,710 Така на проектот со најмалите вредност и на највисоко, 499 00:24:44,710 --> 00:24:46,084 и тоа е навистина добра интуиција. 500 00:24:46,084 --> 00:24:48,080 И да сфатат дека ние луѓето се всушност прилично 501 00:24:48,080 --> 00:24:49,913 добар во решавање на проблемите вака, барем 502 00:24:49,913 --> 00:24:51,810 кога податоците е релативно мал. 503 00:24:51,810 --> 00:24:54,860 Веднаш штом ќе почнете да имаат стотици на броеви, илјадници броеви, 504 00:24:54,860 --> 00:24:58,440 милиони броеви, Бен веројатно не може да го направи тоа доста така брзо, 505 00:24:58,440 --> 00:25:00,620 под претпоставка дека имало празнини во бројките. 506 00:25:00,620 --> 00:25:03,450 Прилично лесно да се смета за еден милион Во спротивно, само одзема време. 507 00:25:03,450 --> 00:25:07,150 >> Значи алгоритам што звучи како Бен користи само сега 508 00:25:07,150 --> 00:25:08,930 беше пребарување за најмалиот број. 509 00:25:08,930 --> 00:25:12,900 Па дури и покрај тоа што луѓето може да се земе во голем број на информации визуелно, 510 00:25:12,900 --> 00:25:14,830 компјутер е, всушност, малку повеќе ограничени. 511 00:25:14,830 --> 00:25:17,560 Компјутерот може само погледнете на еден бајт во еден момент 512 00:25:17,560 --> 00:25:20,770 или можеби четири бајти на time-- овие денови можеби 8 бајти на time-- 513 00:25:20,770 --> 00:25:24,450 но многу мал број на бајти во дадено време. 514 00:25:24,450 --> 00:25:28,480 >> Па со оглед дека ние навистина треба четири одделни вредности here-- 515 00:25:28,480 --> 00:25:32,440 и може да се мисли на Бен како што имаат теревенки за да се работи за компјутер како 516 00:25:32,440 --> 00:25:36,450 дека тој не може да се види ништо друго од еден број на time-- 517 00:25:36,450 --> 00:25:39,720 па ние обично ќе ги преземе, како и во Англиски јазик, ќе се чита од десно кон лево. 518 00:25:39,720 --> 00:25:42,870 Така, првиот број Бен најверојатно изгледаше на беше четири, а потоа многу брзо 519 00:25:42,870 --> 00:25:44,770 сфати дека е прилично голема number-- дозволете ми да ги бараме. 520 00:25:44,770 --> 00:25:45,357 >> Има две. 521 00:25:45,357 --> 00:25:45,940 Почекај минута. 522 00:25:45,940 --> 00:25:47,070 Двајца е помал од четири. 523 00:25:47,070 --> 00:25:47,986 Одам да се запамети. 524 00:25:47,986 --> 00:25:49,070 Две сега е најмала. 525 00:25:49,070 --> 00:25:50,417 Сега one-- тоа е дури и подобро. 526 00:25:50,417 --> 00:25:51,250 Тоа е дури и помал. 527 00:25:51,250 --> 00:25:54,000 Одам да се заборави за двајца и само се сеќавам една сега. 528 00:25:54,000 --> 00:25:56,550 >> И може да го запре во потрага? 529 00:25:56,550 --> 00:25:58,360 Па, би можел врз основа од оваа информација, 530 00:25:58,360 --> 00:26:00,477 но тој ќе е подобро пребарување остатокот од листата. 531 00:26:00,477 --> 00:26:02,060 Затоа што ако се нула во листата? 532 00:26:02,060 --> 00:26:03,643 Што ако негативен беа во листата? 533 00:26:03,643 --> 00:26:07,720 Тој знае само дека неговиот одговор е точно, ако тој е исцрпно 534 00:26:07,720 --> 00:26:08,729 провери целата листа. 535 00:26:08,729 --> 00:26:10,020 Значи ние се погледне на остатокот од оваа. 536 00:26:10,020 --> 00:26:11,394 Three-- што е губење на време. 537 00:26:11,394 --> 00:26:13,540 Имаш среќа, но јас бев уште точно да го стори тоа. 538 00:26:13,540 --> 00:26:17,857 И така сега тој веројатно избрани најмалиот број 539 00:26:17,857 --> 00:26:20,440 и само да го стави на почетокот на листата, како што јас ќе го направите тука. 540 00:26:20,440 --> 00:26:23,480 Сега, она што не го направите следниот, иако што не си се размислува за тоа речиси 541 00:26:23,480 --> 00:26:25,962 на овој степен? 542 00:26:25,962 --> 00:26:27,670 Повторете го процесот, па некој вид на јамка. 543 00:26:27,670 --> 00:26:28,920 Има една позната идеја. 544 00:26:28,920 --> 00:26:30,860 Па овде е четири. 545 00:26:30,860 --> 00:26:32,110 Кој во моментов е најмала. 546 00:26:32,110 --> 00:26:33,220 Тоа е кандидат. 547 00:26:33,220 --> 00:26:33,900 Не повеќе. 548 00:26:33,900 --> 00:26:34,770 Сега сум видел две. 549 00:26:34,770 --> 00:26:36,630 Тоа е следниот најмалиот елемент. 550 00:26:36,630 --> 00:26:40,800 Three-- тоа не е помал, толку сега Бен може да се извади двете. 551 00:26:40,800 --> 00:26:44,510 >> И сега ние се повторува процесот и се разбира три добива повлече од следната. 552 00:26:44,510 --> 00:26:45,420 Повторете го процесот. 553 00:26:45,420 --> 00:26:46,990 Четири добива извади. 554 00:26:46,990 --> 00:26:50,140 И сега ние сме надвор од броеви, па листата мора да бидат подредени. 555 00:26:50,140 --> 00:26:51,960 >> И навистина, ова е официјалниот алгоритам. 556 00:26:51,960 --> 00:26:56,610 А компјутерски научник би ова го нарекуваат "селекција вид" 557 00:26:56,610 --> 00:27:00,880 Идејата е вид на листа iteratively-- повторно 558 00:27:00,880 --> 00:27:03,807 и повторно и повторно избирање најмал број. 559 00:27:03,807 --> 00:27:06,140 И, што е убаво за тоа е тоа е само толку ебам интуитивен. 560 00:27:06,140 --> 00:27:07,470 Тоа е толку едноставно. 561 00:27:07,470 --> 00:27:11,100 И можете да го повтори истиот работа повторно и повторно. 562 00:27:11,100 --> 00:27:12,150 Тоа е едноставно. 563 00:27:12,150 --> 00:27:17,170 >> Во овој случај тоа беше брзо, но колку долго е, всушност, се земе? 564 00:27:17,170 --> 00:27:19,880 Ајде да го направите да изгледа и се чувствувате малку повеќе досадни. 565 00:27:19,880 --> 00:27:24,150 Така, еден, два, три, четири, пет и шест, седум, осум, девет, 10, 11, 12, 13, 14, 566 00:27:24,150 --> 00:27:26,160 15, 16-- произволен број. 567 00:27:26,160 --> 00:27:28,780 Јас само сакав повеќе оваа време од само четири. 568 00:27:28,780 --> 00:27:30,780 Значи, ако јас имам целина куп на броеви што now-- 569 00:27:30,780 --> 00:27:32,420 дури и не е важно што are-- ајде 570 00:27:32,420 --> 00:27:34,380 се размислува за она што овој алгоритам навистина е како. 571 00:27:34,380 --> 00:27:35,857 >> Да претпоставиме дека постојат броеви таму. 572 00:27:35,857 --> 00:27:38,190 Повторно, не е важно она што тие се, но тие се случајни. 573 00:27:38,190 --> 00:27:39,679 Прифаќам алгоритам на Бен. 574 00:27:39,679 --> 00:27:41,220 Јас треба да изберете најмал број. 575 00:27:41,220 --> 00:27:41,761 Што да правам? 576 00:27:41,761 --> 00:27:44,240 И јас одам да се физички го направите ова време да ја играат. 577 00:27:44,240 --> 00:27:46,099 Изглед, изглед, изглед, изглед, изглед. 578 00:27:46,099 --> 00:27:48,140 Само со време да стигнам до крајот на листа може да 579 00:27:48,140 --> 00:27:51,230 Сфаќам најмалите број беше две овој пат. 580 00:27:51,230 --> 00:27:52,720 Не е во листата. 581 00:27:52,720 --> 00:27:54,400 Па јас се спушти две. 582 00:27:54,400 --> 00:27:55,590 >> Што да правам понатаму? 583 00:27:55,590 --> 00:27:58,600 Изглед, изглед, изглед, изглед. 584 00:27:58,600 --> 00:28:02,250 Сега го најдов бројот седум, бидејќи има празнини во овие numbers-- 585 00:28:02,250 --> 00:28:03,300 но само произволни. 586 00:28:03,300 --> 00:28:03,800 Во ред. 587 00:28:03,800 --> 00:28:06,030 Па сега можам да се спушти седум. 588 00:28:06,030 --> 00:28:08,860 Гледајќи изглед, изглед. 589 00:28:08,860 --> 00:28:11,030 >> Сега сум претпоставувајќи, Се разбира, дека Бен не 590 00:28:11,030 --> 00:28:14,780 имаат дополнителни RAM меморија, дополнителни меморија, затоа што, се разбира, 591 00:28:14,780 --> 00:28:16,080 Јас сум во потрага на истиот број. 592 00:28:16,080 --> 00:28:18,246 Секако дека би можел да се сети сите оние броеви, 593 00:28:18,246 --> 00:28:19,930 и тоа е апсолутно точно. 594 00:28:19,930 --> 00:28:22,610 Но, ако Бен сеќава на сите на броевите тој се гледа, 595 00:28:22,610 --> 00:28:24,430 тој не се навистина направи основните напредок 596 00:28:24,430 --> 00:28:26,170 затоа што тој веќе има можноста за пребарување 597 00:28:26,170 --> 00:28:27,540 преку броеви на табла. 598 00:28:27,540 --> 00:28:29,373 Сеќавајќи се на сите броеви не помогне, 599 00:28:29,373 --> 00:28:32,490 бидејќи тој се уште може да се како компјутер само да се погледне, што рековме, еден број 600 00:28:32,490 --> 00:28:33,080 во време. 601 00:28:33,080 --> 00:28:35,760 Значи нема вид на измамник таму дека можете да потпора. 602 00:28:35,760 --> 00:28:39,170 >> Така, во реалноста, како што продолжи со барањето на листата, 603 00:28:39,170 --> 00:28:44,200 Јас буквално мора да се задржи само ќе напред и назад низ него, кубење на 604 00:28:44,200 --> 00:28:45,710 следниот најмал број. 605 00:28:45,710 --> 00:28:48,810 И како што можете да вид на заклучиме од моите глупави движења, 606 00:28:48,810 --> 00:28:50,860 тоа само добива многу мачна многу брзо, 607 00:28:50,860 --> 00:28:54,850 и јас се чини дека се ќе се вратам и напред, напред и назад доста. 608 00:28:54,850 --> 00:29:03,220 Сега да се биде фер, јас не треба да се оди доста како, добро, ајде да see-- да бидат фер, 609 00:29:03,220 --> 00:29:06,310 Јас не мора да одат доста како многу чекори секој пат. 610 00:29:06,310 --> 00:29:09,200 Бидејќи, се разбира, како што изберете броеви од листата, 611 00:29:09,200 --> 00:29:11,860 останатите листа е сè покус. 612 00:29:11,860 --> 00:29:14,240 >> И така, ајде да размислиме за колку чекори Јас сум, всушност, 613 00:29:14,240 --> 00:29:16,010 traipsing преку секое време. 614 00:29:16,010 --> 00:29:18,950 Во првата ситуација имавме 16 броеви, 615 00:29:18,950 --> 00:29:22,210 и така maximally-- ајде само го прават тоа за discussion-- 616 00:29:22,210 --> 00:29:25,640 Морав да се погледне преку 16 броеви да се најде и на најмалите. 617 00:29:25,640 --> 00:29:28,420 Но, штом еднаш искорна најмалиот број, како 618 00:29:28,420 --> 00:29:30,590 долго беше останатите листа, се разбира? 619 00:29:30,590 --> 00:29:31,420 Само 15. 620 00:29:31,420 --> 00:29:34,670 Значи колку броеви не Бен или јас ќе треба да се погледне преку вториот пат? 621 00:29:34,670 --> 00:29:36,832 15, само да одат и да се најде на најмалите. 622 00:29:36,832 --> 00:29:39,540 Но, сега, се разбира, на листата е, исто така, помал отколку што беше порано. 623 00:29:39,540 --> 00:29:42,540 Значи колку чекори не јас треба да го преземе следниот пат? 624 00:29:42,540 --> 00:29:49,970 14 и од 13 и од 12, плус точка, точка, точка, се додека јас сум лево со само еден. 625 00:29:49,970 --> 00:29:53,146 Па сега компјутерски научник би побара, добро, што значи дека сите еднакви? 626 00:29:53,146 --> 00:29:55,770 Тоа, всушност, е еднаква на некои конкретни број што би можеле да сигурно 627 00:29:55,770 --> 00:30:00,490 направи аритметички, но ние сакаме да се зборува во однос на ефикасноста на алгоритми 628 00:30:00,490 --> 00:30:04,940 малку повеќе formulaically, независно од тоа колку долго на листата е. 629 00:30:04,940 --> 00:30:06,240 >> И така, знаеш што? 630 00:30:06,240 --> 00:30:09,860 Ова е 16, но како што реков претходно, ајде да се јавите на големината на проблемот 631 00:30:09,860 --> 00:30:10,970 n, каде што n е некој број. 632 00:30:10,970 --> 00:30:13,220 Можеби тоа е 16, а можеби и тоа е три, можеби тоа е еден милион. 633 00:30:13,220 --> 00:30:13,761 Јас не знам. 634 00:30:13,761 --> 00:30:14,390 Не ми е гајле. 635 00:30:14,390 --> 00:30:16,520 Она што јас навистина го сакам е формула што можам 636 00:30:16,520 --> 00:30:19,420 користат за споредба овој алгоритам против други алгоритми 637 00:30:19,420 --> 00:30:22,350 дека некој може да тврдат дека се подобро или полошо. 638 00:30:22,350 --> 00:30:25,430 >> Значи излегува, и само јас знам од основно училиште, 639 00:30:25,430 --> 00:30:34,790 дека тоа всушност се работи надвор на истиот нешто што е n повеќе од n плус еден во текот на две. 640 00:30:34,790 --> 00:30:40,020 И ова се случува да се изедначи, на Се разбира, n квадрат плус n текот на две. 641 00:30:40,020 --> 00:30:43,250 Значи, ако јас сакав формула за колку чекори 642 00:30:43,250 --> 00:30:46,330 беа вклучени во потрага на сите од тие броеви повторно и повторно 643 00:30:46,330 --> 00:30:52,681 и повторно и повторно, јас би рекол тоа е n квадрат плус n текот на две. 644 00:30:52,681 --> 00:30:53,430 Но знаеш што? 645 00:30:53,430 --> 00:30:54,500 Ова само изгледа неуредна. 646 00:30:54,500 --> 00:30:56,470 Јас само навистина сакате општа смисла на нештата. 647 00:30:56,470 --> 00:30:58,810 И може да се сети од средно училиште дека постојат 648 00:30:58,810 --> 00:31:00,660 е идејата за највисока цел мандат. 649 00:31:00,660 --> 00:31:05,300 Кои од овие услови, n квадрат, n, или на половина, 650 00:31:05,300 --> 00:31:07,550 има најмногу влијание текот на времето? 651 00:31:07,550 --> 00:31:11,920 Колку е поголема n добива, кој за овие работи најмногу? 652 00:31:11,920 --> 00:31:15,560 >> Со други зборови, ако јас приклучок во милион, n квадрат 653 00:31:15,560 --> 00:31:17,900 ќе биде, најверојатно, факторот доминантен, 654 00:31:17,900 --> 00:31:21,670 бидејќи еден милион пати само по себе е многу поголема 655 00:31:21,670 --> 00:31:23,682 од плус еден дополнителен милиони евра. 656 00:31:23,682 --> 00:31:24,390 Па да знаете што? 657 00:31:24,390 --> 00:31:27,305 Ова е толку ебам големи број ако се соочат со број. 658 00:31:27,305 --> 00:31:28,430 Ова навистина не е важно. 659 00:31:28,430 --> 00:31:30,596 Ние сме само ќе крстот што надвор и да заборави за тоа. 660 00:31:30,596 --> 00:31:34,250 И така компјутерски научник би рекол дека ефикасноста на овој алгоритам 661 00:31:34,250 --> 00:31:37,850 е од редот на n squared-- Мислам навистина приближување. 662 00:31:37,850 --> 00:31:40,810 Тоа е вид на приближно n квадрат. 663 00:31:40,810 --> 00:31:44,130 Со текот на времето, толку е поголема и поголеми n добива, овој 664 00:31:44,130 --> 00:31:47,610 е добра проценка за тоа што ефикасност или недостаток на ефикасност 665 00:31:47,610 --> 00:31:49,400 на овој алгоритам всушност е. 666 00:31:49,400 --> 00:31:52,040 И јас се изведе тоа, се разбира, од всушност прави математика. 667 00:31:52,040 --> 00:31:54,040 Но сега јас сум само мавта моите раце, бидејќи јас само 668 00:31:54,040 --> 00:31:55,790 сакате општа смисла на овој алгоритам. 669 00:31:55,790 --> 00:31:58,850 >> Па со користење на истата логика, пак, ајде да се разгледа уште еден алгоритам 670 00:31:58,850 --> 00:32:01,162 веќе погледна at-- линеарно пребарување. 671 00:32:01,162 --> 00:32:02,870 Кога бев пребарување за телефон book-- 672 00:32:02,870 --> 00:32:05,980 не сортирање, пребарување преку телефон book-- 673 00:32:05,980 --> 00:32:09,197 ние се чуваат велејќи дека тоа е 1.000 чекори, или 500 чекори. 674 00:32:09,197 --> 00:32:10,280 Но, ајде да се генерализира дека. 675 00:32:10,280 --> 00:32:12,860 Ако има n страници книгата на телефонот, што е 676 00:32:12,860 --> 00:32:17,250 трчање време или ефикасноста на линеарно пребарување? 677 00:32:17,250 --> 00:32:19,750 Тоа е од редот на колку чекори да се најде 678 00:32:19,750 --> 00:32:24,210 Мајк Смит користење на линеарна пребарување, Првиот алгоритам, или дури и на секунда? 679 00:32:24,210 --> 00:32:27,240 680 00:32:27,240 --> 00:32:31,710 >> Во најлош случај, Мајк се наоѓа на крајот на книгата. 681 00:32:31,710 --> 00:32:35,590 Значи, ако телефонот книга има 1.000 страници, рековме последен пат, во најлош случај, 682 00:32:35,590 --> 00:32:38,380 тоа може да потрае приближно колку многу страници да се најде Мајк? 683 00:32:38,380 --> 00:32:38,990 Како 1000. 684 00:32:38,990 --> 00:32:39,830 Тоа е горната граница. 685 00:32:39,830 --> 00:32:41,790 Тоа е најлошата можна ситуација. 686 00:32:41,790 --> 00:32:44,410 Но, повторно, ние сме се движат подалеку од 1000 броеви како сега. 687 00:32:44,410 --> 00:32:45,730 Тоа е само n. 688 00:32:45,730 --> 00:32:47,470 >> Значи она што е логичниот заклучок? 689 00:32:47,470 --> 00:32:50,210 Наоѓање на Мајк во телефонски книга во која има n страници 690 00:32:50,210 --> 00:32:55,280 може да се земе, во најлош случај, колку чекори од редот на n? 691 00:32:55,280 --> 00:32:58,110 И навистина компјутер научник би рекол 692 00:32:58,110 --> 00:33:02,340 дека трчање време, или извршување или на ефикасноста 693 00:33:02,340 --> 00:33:07,470 или неефикасност, на алгоритам како линеарна пребарување е од редот на n. 694 00:33:07,470 --> 00:33:10,010 И ние може да се примени истата логиката на премин нешто 695 00:33:10,010 --> 00:33:13,170 како што го направија во втората алгоритам што го имавме со книгата на телефонот, 696 00:33:13,170 --> 00:33:16,040 каде што отидовме на две страници во исто време. 697 00:33:16,040 --> 00:33:20,120 >> Значи 1.000 страница телефон книга може да се со нас 500 страница се врти, плус еден 698 00:33:20,120 --> 00:33:21,910 ако ние двојно назад малку. 699 00:33:21,910 --> 00:33:26,590 Значи, ако именикот има n страници, но, ние сме прави две страници во еден момент, 700 00:33:26,590 --> 00:33:28,900 тоа е околу она што? 701 00:33:28,900 --> 00:33:33,190 N текот на две, па тоа е како n текот на две. 702 00:33:33,190 --> 00:33:38,490 Но, не сум направил барањето за пред моментот кога n над two-- 703 00:33:38,490 --> 00:33:41,060 тоа е вид на иста како само n. 704 00:33:41,060 --> 00:33:44,050 Тоа е само постојана фактор, компјутерски научници би рекол. 705 00:33:44,050 --> 00:33:45,970 Ајде да се фокусира само на променливи, really-- 706 00:33:45,970 --> 00:33:47,780 најголем променливи во равенката. 707 00:33:47,780 --> 00:33:52,530 >> Значи линеарно пребарување, без разлика дали тоа еден страница во време или две страници во еден момент, 708 00:33:52,530 --> 00:33:54,810 е еден вид на основа на истиот. 709 00:33:54,810 --> 00:33:56,880 Тоа е уште од редот на n. 710 00:33:56,880 --> 00:34:01,930 Но, јас тврдеше дека со мојата слика на почетокот дека третиот алгоритам не беше 711 00:34:01,930 --> 00:34:02,480 линеарна. 712 00:34:02,480 --> 00:34:03,605 Тоа не е права линија. 713 00:34:03,605 --> 00:34:08,659 Тоа беше тоа што крива линија, и алгебарската формула имаше што? 714 00:34:08,659 --> 00:34:11,812 Пријавете се на n-- така логаритам со основа две од n. 715 00:34:11,812 --> 00:34:14,520 И ние не треба да се оди во премногу многу детали за логаритми денес, 716 00:34:14,520 --> 00:34:17,394 Но, повеќето компјутерски научници не би дури и да ви кажам што е основата. 717 00:34:17,394 --> 00:34:20,639 Поради сето тоа е само константни фактори, така да се каже, 718 00:34:20,639 --> 00:34:22,659 само мало нумерички разлики. 719 00:34:22,659 --> 00:34:31,179 И така ова ќе биде многу честа начин за особено формални компјутер 720 00:34:31,179 --> 00:34:33,949 Научниците на одборот или програмери во бела табла 721 00:34:33,949 --> 00:34:36,889 всушност, тврдејќи кои алгоритам тие ќе го користат 722 00:34:36,889 --> 00:34:39,500 или што ефикасноста на нивните алгоритам е. 723 00:34:39,500 --> 00:34:42,960 >> И ова не е нужно нешто ќе разговараат во било која голема детали, 724 00:34:42,960 --> 00:34:47,889 но добар програмер е некој кој има солидна, формални позадина. 725 00:34:47,889 --> 00:34:50,120 Тој е во состојба да се зборува за вас во овој вид на начин 726 00:34:50,120 --> 00:34:53,350 а всушност се направи квалитативни аргументи 727 00:34:53,350 --> 00:34:56,870 зошто еден алгоритам или едно парче од софтвер 728 00:34:56,870 --> 00:35:00,165 е супериорен во однос на некој начин во друг. 729 00:35:00,165 --> 00:35:02,540 Затоа што секако може да се само ја стартувате програмата на една личност 730 00:35:02,540 --> 00:35:04,980 и смета на бројот на секунди што е потребно да се најде решение за некои броеви, 731 00:35:04,980 --> 00:35:06,710 и може да се кандидира на некои програма другата личност 732 00:35:06,710 --> 00:35:08,418 и смета на бројот на секунди што е потребно. 733 00:35:08,418 --> 00:35:12,840 Но, ова е поопшт начин што можете да го користите да се анализира алгоритми, 734 00:35:12,840 --> 00:35:15,520 ако сакате, само на хартија или само вербално. 735 00:35:15,520 --> 00:35:18,430 Без дури да ја извршува, без дури и се обидува примерок влезови, 736 00:35:18,430 --> 00:35:20,180 вие само може да се причина низ него. 737 00:35:20,180 --> 00:35:24,670 Така е и со ангажирање на инвеститорот или ако има на него или неа вид на се расправаат за вас 738 00:35:24,670 --> 00:35:28,460 зошто нивните алгоритам, нивните тајни сос за пребарување милијарди 739 00:35:28,460 --> 00:35:30,580 на веб страници за вашиот компанијата е подобро, овие 740 00:35:30,580 --> 00:35:33,302 се видови на аргументите кои ги идеално треба да бидат во можност да се направи. 741 00:35:33,302 --> 00:35:35,010 Или барем тие се видови на работи 742 00:35:35,010 --> 00:35:40,211 кој ќе излезе во дискусијата, во барем во многу формален дискусијата. 743 00:35:40,211 --> 00:35:40,710 Во ред. 744 00:35:40,710 --> 00:35:44,400 Значи Бен предложи нешто наречен селекција вид. 745 00:35:44,400 --> 00:35:48,200 Но јас ќе одам да предложи дека има другите начини на тоа, исто така. 746 00:35:48,200 --> 00:35:50,400 Она што јас не навистина ми се допаѓа за алгоритам на Ben 747 00:35:50,400 --> 00:35:54,400 е тоа што тој продолжи да чекори, или ја мене да оди, напред и назад 748 00:35:54,400 --> 00:35:56,930 и напред и назад и напред и назад. 749 00:35:56,930 --> 00:36:04,130 Што ако, наместо јас да се направи нешто како овие броеви тука 750 00:36:04,130 --> 00:36:08,200 и јас да се справи само со едни Бројот, пак, како што јас сум го дал? 751 00:36:08,200 --> 00:36:10,780 >> Со други зборови, еве мојата листа на броеви. 752 00:36:10,780 --> 00:36:12,944 Четири, еден, три, два. 753 00:36:12,944 --> 00:36:14,360 И јас одам да го направите следново. 754 00:36:14,360 --> 00:36:17,230 Одам да внесете броеви каде што припаѓа, а 755 00:36:17,230 --> 00:36:18,980 од изборот на нив еден по еден. 756 00:36:18,980 --> 00:36:20,820 Со други зборови, тука е број четири. 757 00:36:20,820 --> 00:36:22,430 >> Тука е оригиналниот мојата листа. 758 00:36:22,430 --> 00:36:25,290 И јас одам да се одржи во суштина нов листа овде. 759 00:36:25,290 --> 00:36:26,710 Значи ова е стариот листата. 760 00:36:26,710 --> 00:36:28,560 Ова е нова листа. 761 00:36:28,560 --> 00:36:30,220 Гледам број четири во прв план. 762 00:36:30,220 --> 00:36:34,500 Мојот нов листа е првично празен, па тоа е тривијално случај 763 00:36:34,500 --> 00:36:36,410 дека четири сега се избрани листа. 764 00:36:36,410 --> 00:36:39,560 Јас сум само преземање на бројот сум дал, и јас сум тоа ставање во мојата нова листа. 765 00:36:39,560 --> 00:36:41,460 >> Се подредени оваа нова листа? 766 00:36:41,460 --> 00:36:41,990 Да. 767 00:36:41,990 --> 00:36:45,090 Тоа е глупаво, бидејќи таму е само еден елемент, но тоа е апсолутно подредени. 768 00:36:45,090 --> 00:36:46,390 Нема ништо надвор од местото. 769 00:36:46,390 --> 00:36:49,290 Тоа е повеќе интересно, овој алгоритам, кога ќе се движи кон следниот чекор. 770 00:36:49,290 --> 00:36:50,550 >> Сега имам еден. 771 00:36:50,550 --> 00:36:55,430 Па, се разбира, му припаѓа на почетокот или на крајот на оваа нова листа? 772 00:36:55,430 --> 00:36:56,360 Почетокот. 773 00:36:56,360 --> 00:36:58,530 Па јас треба да направи некои работи сега. 774 00:36:58,530 --> 00:37:01,410 Сум бил со преземање на некои слободи со мојот маркер 775 00:37:01,410 --> 00:37:03,120 само со цртање работи каде што ги сакате, 776 00:37:03,120 --> 00:37:05,320 но тоа не е навистина точни во компјутер. 777 00:37:05,320 --> 00:37:08,530 А компјутерот, како што знаеме, има RAM меморија, или Случаен Пристап меморија, 778 00:37:08,530 --> 00:37:12,411 и тоа е еден бајт и уште еден бајт и друг бајт. 779 00:37:12,411 --> 00:37:14,910 И ако имате GIGABYTE на RAM меморија, имаш една милијарда бајти, 780 00:37:14,910 --> 00:37:16,680 но тие се физички во едно место. 781 00:37:16,680 --> 00:37:19,540 Вие не може само да се движат работите околу со цртање на табла 782 00:37:19,540 --> 00:37:20,750 каде што сакате. 783 00:37:20,750 --> 00:37:24,090 Значи, ако мојата нова листа има четири локации во меморијата, 784 00:37:24,090 --> 00:37:27,480 За жал, четири е веќе во погрешно место. 785 00:37:27,480 --> 00:37:30,410 >> Така да внесете број еден Јас не само да го привлече тука. 786 00:37:30,410 --> 00:37:31,901 Оваа локација во меморијата не постои. 787 00:37:31,901 --> 00:37:35,150 Тоа би било мамење, и сум бил мамење сликовито за неколку минути 788 00:37:35,150 --> 00:37:35,800 овде. 789 00:37:35,800 --> 00:37:40,950 Значи, навистина, ако сакам да се стави тука, Имам привремено да го копирате четири 790 00:37:40,950 --> 00:37:43,030 а потоа се стави на еден таму. 791 00:37:43,030 --> 00:37:45,500 >> Тоа е во ред, тоа е точно, тоа е технички можно, 792 00:37:45,500 --> 00:37:48,410 но сфати дека е дополнителна работа. 793 00:37:48,410 --> 00:37:50,460 Јас не само што се стави на бројот на место. 794 00:37:50,460 --> 00:37:53,026 Јас прв пат мораше да се движи број, а потоа го стави во место, 795 00:37:53,026 --> 00:37:54,650 па јас вид на двојно мојот обемот на работа. 796 00:37:54,650 --> 00:37:55,660 Па задржи дека во умот. 797 00:37:55,660 --> 00:37:57,120 >> Но, јас сега сум се направи со овој елемент. 798 00:37:57,120 --> 00:37:59,056 Сега сакам да го имате на бројот три. 799 00:37:59,056 --> 00:38:00,430 Каде што, се разбира, не го припаѓаат? 800 00:38:00,430 --> 00:38:01,480 Помеѓу. 801 00:38:01,480 --> 00:38:03,650 Јас не може да измамник повеќе и само да го стави таму, 802 00:38:03,650 --> 00:38:06,770 затоа што, повторно, оваа меморија е во физички локации. 803 00:38:06,770 --> 00:38:10,900 Па јас треба да го копирате четири и го стави на три овде. 804 00:38:10,900 --> 00:38:11,550 Не е голема работа. 805 00:38:11,550 --> 00:38:14,610 Тоа е само еден дополнителен чекор again-- чувствува многу ефтин. 806 00:38:14,610 --> 00:38:16,445 >> Но, сега сум се движи кон двете. 807 00:38:16,445 --> 00:38:17,820 Двајцата, се разбира, му припаѓа тука. 808 00:38:17,820 --> 00:38:20,990 Сега ќе почнете да се види како работата може да се таложат. 809 00:38:20,990 --> 00:38:23,520 Сега, она што можам да сторам? 810 00:38:23,520 --> 00:38:28,570 Да, јас треба да се движат на четири, тогаш треба да го копирате три, 811 00:38:28,570 --> 00:38:31,200 и сега можам да вметнете ги двете. 812 00:38:31,200 --> 00:38:34,460 И се фати со овој алгоритам, интересно е доволно, 813 00:38:34,460 --> 00:38:41,050 е дека претпоставиме дека имаме поекстремни случај кога тоа е да речеме осум, седум, 814 00:38:41,050 --> 00:38:45,150 шест, пет, четири, три, два, еден. 815 00:38:45,150 --> 00:38:49,450 Ова е, во многу контексти, Најлошото сценарио, 816 00:38:49,450 --> 00:38:51,570 бидејќи ебам нешто е буквално наназад. 817 00:38:51,570 --> 00:38:53,670 >> Тоа навистина не е влијае на алгоритам на Бен, 818 00:38:53,670 --> 00:38:55,940 затоа што во изборот на Ben вид, тој се случува да се задржи 819 00:38:55,940 --> 00:38:58,359 ќе напред и назад низ листата. 820 00:38:58,359 --> 00:39:01,150 И затоа што тој е секогаш во потрага низ целиот преостанат листа, 821 00:39:01,150 --> 00:39:02,858 тоа не е важно каде што елементите се. 822 00:39:02,858 --> 00:39:05,630 Но, во овој случај со мојата вметнување approach-- ајде да се обидеме ова. 823 00:39:05,630 --> 00:39:08,616 >> Така, еден, два, три, четири, пет, шест, седум, осум. 824 00:39:08,616 --> 00:39:11,630 Еден два три четири, пет, шест, седум, осум. 825 00:39:11,630 --> 00:39:14,320 Одам да се земе на осум, и каде можам да го стави? 826 00:39:14,320 --> 00:39:17,260 Па, на почетокот на мојата листа, бидејќи оваа нова листа е сортирана. 827 00:39:17,260 --> 00:39:18,760 И јас го крстот надвор. 828 00:39:18,760 --> 00:39:20,551 >> Каде можам да се стави на седум? 829 00:39:20,551 --> 00:39:21,050 Ебам тоа. 830 00:39:21,050 --> 00:39:23,174 Тоа треба да се оди таму, па Јас треба да направите некои копирање. 831 00:39:23,174 --> 00:39:26,820 832 00:39:26,820 --> 00:39:28,480 И сега на седум оди овде. 833 00:39:28,480 --> 00:39:29,860 Јас сега се движи кон шест. 834 00:39:29,860 --> 00:39:30,980 Сега тоа е дури и повеќе работа. 835 00:39:30,980 --> 00:39:32,570 >> Осум треба да оди тука. 836 00:39:32,570 --> 00:39:33,920 Седум мора да оди тука. 837 00:39:33,920 --> 00:39:35,450 Сега шест може да оди тука. 838 00:39:35,450 --> 00:39:37,950 Сега јас го дофати пет. 839 00:39:37,950 --> 00:39:40,560 Сега осум мора да оди тука, седум мора да оди тука, 840 00:39:40,560 --> 00:39:43,650 шест мора да оди тука, и сега пет и повторете. 841 00:39:43,650 --> 00:39:46,610 И јас сум прилично многу преместувајќи постојано. 842 00:39:46,610 --> 00:39:52,950 >> Па на крајот, ова algorithm-- ние ќе го нарекуваат вметнување sort--, всушност, 843 00:39:52,950 --> 00:39:55,020 има многу работа, исто така. 844 00:39:55,020 --> 00:39:56,970 Тоа е само различни вид на работа од Бен. 845 00:39:56,970 --> 00:40:00,090 работа на Бен имаше ми се случува напред и назад во секое време, 846 00:40:00,090 --> 00:40:03,510 изборот на следниот најмалите елемент повторно и повторно. 847 00:40:03,510 --> 00:40:06,660 Така беше тоа многу визуелни вид на работа. 848 00:40:06,660 --> 00:40:10,600 >> Овој други алгоритам, кој се уште е correct-- дека ќе одам на работа done-- 849 00:40:10,600 --> 00:40:12,800 го менува обемот на работа. 850 00:40:12,800 --> 00:40:15,420 Тоа изгледа како првично сте заштеда, затоа што ти си само 851 00:40:15,420 --> 00:40:19,190 кои се занимаваат со секој елемент до пред без одење сите 852 00:40:19,190 --> 00:40:20,930 начинот на кој се низ листата како Бен беше. 853 00:40:20,930 --> 00:40:25,300 Но, проблемот е, особено во овие луди случаи каде што тоа е за сите наназад, 854 00:40:25,300 --> 00:40:27,830 ти си само вид на одложување на напорна работа 855 00:40:27,830 --> 00:40:30,360 додека не треба да се поправат грешките. 856 00:40:30,360 --> 00:40:33,919 >> И така, ако може да се замисли ова осум и седум години и шест и пет 857 00:40:33,919 --> 00:40:36,710 а подоцна и четири и три и две движат својот пат низ листата, 858 00:40:36,710 --> 00:40:39,060 ние сме само смени видот на работа што го правиме. 859 00:40:39,060 --> 00:40:42,340 Наместо тоа го прават во почетокот на мојата повторување, 860 00:40:42,340 --> 00:40:45,250 Јас сум само тоа го прават во крајот на секоја итерација. 861 00:40:45,250 --> 00:40:50,550 Значи излегува дека овој алгоритам, исто така, обично се нарекува вметнување вид, 862 00:40:50,550 --> 00:40:52,190 Исто така, од редот на n квадрат. 863 00:40:52,190 --> 00:40:56,480 Тоа е всушност не се подобри, нема подобро на сите. 864 00:40:56,480 --> 00:41:00,810 >> Сепак, постои една третина пристап Јас би ни ги охрабри да се разгледа, 865 00:41:00,810 --> 00:41:02,970 што е ова. 866 00:41:02,970 --> 00:41:07,850 Значи Претпоставувам мојата листа, за едноставност повторно, е четири, еден, три, 867 00:41:07,850 --> 00:41:11,080 two-- само четири броеви. 868 00:41:11,080 --> 00:41:13,300 Бен имаше добра интуиција, добар човечки интуиција 869 00:41:13,300 --> 00:41:16,340 и досега, со кои сме ги решиле целиот листа eventually-- вметнување вид. 870 00:41:16,340 --> 00:41:18,020 Јас ни убедував заедно. 871 00:41:18,020 --> 00:41:22,530 Но, ајде да се разгледа Наједноставниот начин да го надминете овој список. 872 00:41:22,530 --> 00:41:24,110 >> Оваа листа не се подредени. 873 00:41:24,110 --> 00:41:26,130 Зошто? 874 00:41:26,130 --> 00:41:31,920 На англиски јазик, објасни зошто тоа не е всушност подредени. 875 00:41:31,920 --> 00:41:33,400 Што значи тоа да не да се решат? 876 00:41:33,400 --> 00:41:34,220 >> СТУДЕНТСКИ: Тоа не е секвенцијален. 877 00:41:34,220 --> 00:41:34,990 >> Дејвид MALAN: Не е секвенцијален. 878 00:41:34,990 --> 00:41:35,822 Дај ми еден пример. 879 00:41:35,822 --> 00:41:37,180 >> СТУДЕНТСКИ: Ставете ги во ред. 880 00:41:37,180 --> 00:41:37,440 >> Дејвид MALAN: Добро. 881 00:41:37,440 --> 00:41:38,790 Дај ми повеќе конкретен пример. 882 00:41:38,790 --> 00:41:39,832 >> СТУДЕНТСКИ: Растечки редослед. 883 00:41:39,832 --> 00:41:41,206 Дејвид MALAN: Не е растечки редослед. 884 00:41:41,206 --> 00:41:42,100 Попрецизно. 885 00:41:42,100 --> 00:41:45,190 Јас не знам што мислиш со нагорна линија. 886 00:41:45,190 --> 00:41:47,150 Што е проблемот? 887 00:41:47,150 --> 00:41:49,930 >> СТУДЕНТСКИ: Најмалото од броеви не е во првата простор. 888 00:41:49,930 --> 00:41:51,140 >> Дејвид MALAN: Најмалиот број е не во првиот простор. 889 00:41:51,140 --> 00:41:52,120 Бидете конкретни. 890 00:41:52,120 --> 00:41:55,000 Јас сум почнуваат да се фати за. 891 00:41:55,000 --> 00:41:59,470 Ние сме броење, но што е на ред овде? 892 00:41:59,470 --> 00:42:00,707 >> СТУДЕНТСКИ: нумерички редослед. 893 00:42:00,707 --> 00:42:02,040 Дејвид MALAN: нумерички редослед. 894 00:42:02,040 --> 00:42:04,248 вид на чување на сите тоа here-- многу високо ниво. 895 00:42:04,248 --> 00:42:07,450 Само буквално ми каже што е погрешно како и пет-годишниот сила. 896 00:42:07,450 --> 00:42:08,310 >> СТУДЕНТСКИ: плус еден. 897 00:42:08,310 --> 00:42:08,750 >> Дејвид MALAN: Што е тоа? 898 00:42:08,750 --> 00:42:09,610 >> СТУДЕНТСКИ: плус еден. 899 00:42:09,610 --> 00:42:11,235 >> Дејвид MALAN: Што сакаш да кажеш плус еден? 900 00:42:11,235 --> 00:42:12,754 901 00:42:12,754 --> 00:42:14,170 Дај ми еден поинаков пет години. 902 00:42:14,170 --> 00:42:16,840 903 00:42:16,840 --> 00:42:18,330 Што не е во ред, мамо? 904 00:42:18,330 --> 00:42:19,940 Што не е во ред, тато? 905 00:42:19,940 --> 00:42:22,808 Што сакаш да кажеш ова не е сортирана? 906 00:42:22,808 --> 00:42:24,370 >> СТУДЕНТСКИ: Тоа не е на вистинското место. 907 00:42:24,370 --> 00:42:25,580 >> Дејвид MALAN: Што е не е во право место? 908 00:42:25,580 --> 00:42:26,174 >> СТУДЕНТСКИ: Четири години. 909 00:42:26,174 --> 00:42:27,090 Дејвид MALAN: Добро, добро. 910 00:42:27,090 --> 00:42:29,110 Па четири не е местото каде што треба да биде. 911 00:42:29,110 --> 00:42:30,590 Поточно, дали е тоа така? 912 00:42:30,590 --> 00:42:33,000 Четири и, првиот два броја гледам. 913 00:42:33,000 --> 00:42:34,930 ова е во право? 914 00:42:34,930 --> 00:42:36,427 Не, тие се на ред, во ред? 915 00:42:36,427 --> 00:42:38,135 Всушност, мислам дека сега за компјутер, исто така. 916 00:42:38,135 --> 00:42:40,824 Тоа може само да се погледне во можеби една, можеби две работи once-- 917 00:42:40,824 --> 00:42:43,240 а всушност само една работа во исто време, но тоа може барем 918 00:42:43,240 --> 00:42:45,790 погледне во една работа, тогаш Следното нешто веднаш до него. 919 00:42:45,790 --> 00:42:47,380 >> Значи се овие, во ред? 920 00:42:47,380 --> 00:42:48,032 Се разбира не. 921 00:42:48,032 --> 00:42:48,740 Па да знаете што? 922 00:42:48,740 --> 00:42:51,020 Зошто не можеме да се земе бебето чекори за утврдување на овој проблем 923 00:42:51,020 --> 00:42:53,410 наместо да го прават овие фенси алгоритми како Бен, каде што 924 00:42:53,410 --> 00:42:56,440 тој вид на одредување на looping низ листата 925 00:42:56,440 --> 00:42:59,670 наместо да го прават она што го направив, каде што Јас само вид на фиксен како што ние одиме? 926 00:42:59,670 --> 00:43:03,650 Ајде само буквално се распаѓа на поимот order-- нумерички редослед, 927 00:43:03,650 --> 00:43:06,990 го наречеме она што want-- во овие парови споредби. 928 00:43:06,990 --> 00:43:07,590 >> Четири и еден. 929 00:43:07,590 --> 00:43:09,970 Дали е ова правилен ред? 930 00:43:09,970 --> 00:43:11,310 Значи, да го поправите тоа. 931 00:43:11,310 --> 00:43:14,700 Еден до четири, а потоа ние само ќе копија од тоа. 932 00:43:14,700 --> 00:43:15,560 Добро, добро. 933 00:43:15,560 --> 00:43:17,022 Јас фиксна еден до четири. 934 00:43:17,022 --> 00:43:18,320 Три и два? 935 00:43:18,320 --> 00:43:18,820 Бр 936 00:43:18,820 --> 00:43:21,690 Нека моите зборови одговараат на моите прсти. 937 00:43:21,690 --> 00:43:23,695 Четири и три? 938 00:43:23,695 --> 00:43:27,930 >> Тоа не е во ред, па јас ќе одам да се направи еден, три, четири, две. 939 00:43:27,930 --> 00:43:28,680 Во ред добро. 940 00:43:28,680 --> 00:43:32,310 Сега, четири и два? 941 00:43:32,310 --> 00:43:33,370 Ние треба да го надминете овој, исто така. 942 00:43:33,370 --> 00:43:36,700 Така, еден, три, два, четири. 943 00:43:36,700 --> 00:43:39,820 Така е тоа сортирани? 944 00:43:39,820 --> 00:43:43,170 Не, но тоа е поблиску до подредени? 945 00:43:43,170 --> 00:43:48,930 >> Тоа е, затоа што сме ги решиле ова грешка, дека сме ги решиле оваа грешка, 946 00:43:48,930 --> 00:43:50,370 и сме ги решиле оваа грешка. 947 00:43:50,370 --> 00:43:52,420 Значи ние фиксна три грешки веројатно. 948 00:43:52,420 --> 00:43:58,100 Се уште не навистина изгледа подредени, но тоа е објективно поблиску до сортирани 949 00:43:58,100 --> 00:44:00,080 затоа што ние фиксна некои од оние грешки. 950 00:44:00,080 --> 00:44:02,047 >> Сега, она што можам да направам следно? 951 00:44:02,047 --> 00:44:03,630 Јас вид на достигнала крајот на листата. 952 00:44:03,630 --> 00:44:05,680 Јас се чинеше дека имаат фиксни сите грешки, но нема. 953 00:44:05,680 --> 00:44:08,510 Затоа што во овој случај, некои броеви може да клобуркаше до поблиски 954 00:44:08,510 --> 00:44:10,410 на други броеви кои се уште се на ред. 955 00:44:10,410 --> 00:44:12,951 Значи, да го направат тоа повторно, а јас ќе само го прават тоа во место тоа време. 956 00:44:12,951 --> 00:44:14,170 Еден и три? 957 00:44:14,170 --> 00:44:14,720 Во ред е. 958 00:44:14,720 --> 00:44:16,070 Три и два? 959 00:44:16,070 --> 00:44:17,560 Се разбира дека не, па ајде да го промени тоа. 960 00:44:17,560 --> 00:44:19,160 Па два, три. 961 00:44:19,160 --> 00:44:21,340 Три и четири? 962 00:44:21,340 --> 00:44:24,370 И сега ајде да се биде особено педантни тука. 963 00:44:24,370 --> 00:44:26,350 Дали е тоа сортирани? 964 00:44:26,350 --> 00:44:29,280 Можете луѓето знаат дека тоа е сортирана. 965 00:44:29,280 --> 00:44:30,400 >> Јас треба да се обидете повторно. 966 00:44:30,400 --> 00:44:31,900 Значи Оливија се предлага се обидувам повторно. 967 00:44:31,900 --> 00:44:32,530 Зошто? 968 00:44:32,530 --> 00:44:35,810 Бидејќи компјутер нема луксузот на нашите човечки очи 969 00:44:35,810 --> 00:44:38,080 од само гледајќи back-- Добро, јас сум се направи. 970 00:44:38,080 --> 00:44:41,610 Како го прави компјутерот се утврди дека листата е сега се решат? 971 00:44:41,610 --> 00:44:44,590 Механички. 972 00:44:44,590 --> 00:44:47,650 >> Јас треба да се оди преку уште еднаш, и само ако јас 973 00:44:47,650 --> 00:44:51,190 не се направи / најде било какви грешки можам а потоа се заклучи како на компјутер, да, 974 00:44:51,190 --> 00:44:51,980 ние сме добро да отидевме. 975 00:44:51,980 --> 00:44:54,850 Значи еден и два, два и три, три и четири. 976 00:44:54,850 --> 00:44:58,030 Сега можам да дефинитивно да кажам дека ова е подредени, бидејќи не сум направил никакви промени. 977 00:44:58,030 --> 00:45:01,940 Сега тоа ќе биде грешка и само глупави ако Јас, на компјутерот, 978 00:45:01,940 --> 00:45:05,640 побара од истите прашања повторно очекуваат различни одговори. 979 00:45:05,640 --> 00:45:07,110 не треба да се случи. 980 00:45:07,110 --> 00:45:08,600 >> И така сега на листата се подредени. 981 00:45:08,600 --> 00:45:12,630 За жал, трчање време на Овој алгоритам е, исто така, N на квадрат. 982 00:45:12,630 --> 00:45:13,130 Зошто? 983 00:45:13,130 --> 00:45:19,520 Затоа што имаат n броеви, а во најлош случај треба да се движи n број 984 00:45:19,520 --> 00:45:23,637 n пати, бидејќи треба да се насочи назад за да се провери и потенцијално го надминете 985 00:45:23,637 --> 00:45:24,220 овие броеви. 986 00:45:24,220 --> 00:45:26,280 И ние може да направи повеќе формална анализа, исто така. 987 00:45:26,280 --> 00:45:29,530 >> Така што ова е за сите да се каже ние сме земени три различни пристапи, еден 988 00:45:29,530 --> 00:45:32,210 од нив веднаш интуитивен надвор од лилјак од Бен 989 00:45:32,210 --> 00:45:35,170 да предложи мојот вметнување вид на оваа 990 00:45:35,170 --> 00:45:38,540 каде што вид на изгубиме од вид шумата за дрва на почетокот. 991 00:45:38,540 --> 00:45:41,760 Но, тогаш, ако се чекор назад, Voila, решивме сортирање поим. 992 00:45:41,760 --> 00:45:43,824 Значи ова е, се осмелувам да кажам, пониско ниво можеби 993 00:45:43,824 --> 00:45:45,740 од некои од оние другите алгоритми, но ајде 994 00:45:45,740 --> 00:45:48,550 види ако не можеме да се визуелизира овие по пат на ова. 995 00:45:48,550 --> 00:45:51,450 >> Значи ова е некои убави софтвер кој некој 996 00:45:51,450 --> 00:45:56,110 напиша користење на шарени барови тоа е се случува да го направите следново за нас. 997 00:45:56,110 --> 00:45:57,736 Секој од овие барови претставува број. 998 00:45:57,736 --> 00:46:00,026 Повисоки бар, поголем бројот, толку е помал бар, 999 00:46:00,026 --> 00:46:00,990 толку е помал бројот. 1000 00:46:00,990 --> 00:46:05,880 Значи идеално сакаме убав пирамида каде што почнува мали и добива голема, 1001 00:46:05,880 --> 00:46:08,330 и тоа би значело дека овие барови се подредени. 1002 00:46:08,330 --> 00:46:11,200 Па јас ќе одам да се оди напред и да изберат, на пример, алгоритам на Ben 1003 00:46:11,200 --> 00:46:13,990 first-- селекција вид. 1004 00:46:13,990 --> 00:46:16,220 >> И ќе забележите она што таа го прави. 1005 00:46:16,220 --> 00:46:18,670 Начинот на кој тие го избрале да визуелизира овој алгоритам 1006 00:46:18,670 --> 00:46:22,090 е дека, исто како што беше одење низ мојата листа, 1007 00:46:22,090 --> 00:46:24,710 оваа програма е одење преку својата листа на броеви, 1008 00:46:24,710 --> 00:46:28,160 осветлување во секоја розова број кој што е во потрага на. 1009 00:46:28,160 --> 00:46:32,360 И, што е за да се случи сега? 1010 00:46:32,360 --> 00:46:35,154 >> Најмалиот број кој I и Бен се најде одеднаш 1011 00:46:35,154 --> 00:46:36,820 добива се пресели во почетокот на листата. 1012 00:46:36,820 --> 00:46:40,037 И ќе забележите дека тие не иселат на број, кој е таму, 1013 00:46:40,037 --> 00:46:41,120 и тоа е совршено добро. 1014 00:46:41,120 --> 00:46:42,600 Јас не навлегувам во тоа ниво на детали. 1015 00:46:42,600 --> 00:46:44,308 Но, ние треба да се стави тој број, некаде, 1016 00:46:44,308 --> 00:46:47,775 па ние само што се пресели во отворено место што е создадена. 1017 00:46:47,775 --> 00:46:49,900 Па јас ќе одам да се забрза овој , затоа што во спротивно 1018 00:46:49,900 --> 00:46:51,871 станува многу досаден брзо. 1019 00:46:51,871 --> 00:46:55,800 1020 00:46:55,800 --> 00:46:58,600 Анимација speed-- таму ќе одиме. 1021 00:46:58,600 --> 00:47:01,850 Па сега истиот принцип Бев примена, но 1022 00:47:01,850 --> 00:47:06,540 може да почне да се чувствувате алгоритам, ако волја, или да ја видите малку повеќе јасно. 1023 00:47:06,540 --> 00:47:13,190 И овој алгоритам има ефект на изборот на следниот најмалиот елемент, 1024 00:47:13,190 --> 00:47:16,422 така си оди за да почне да видите дека рампата на левата страна. 1025 00:47:16,422 --> 00:47:19,130 И на секој повторување, како што предлага, тоа го прави малку помалку работа. 1026 00:47:19,130 --> 00:47:21,921 Тоа не мора да одат сите на патот Вратете се на левиот крај на листата, 1027 00:47:21,921 --> 00:47:23,900 затоа што веќе знае тие се подредени. 1028 00:47:23,900 --> 00:47:28,129 Така што вид на се чувствува како да е забрзување, и покрај тоа што секој чекор е 1029 00:47:28,129 --> 00:47:29,420 преземање на иста количина на време. 1030 00:47:29,420 --> 00:47:31,600 Има само помалку чекори до крајот. 1031 00:47:31,600 --> 00:47:35,240 И сега можете да вид на се чувствува алгоритам чистење на крајот од неа, 1032 00:47:35,240 --> 00:47:37,040 и навистина сега тоа се подредени. 1033 00:47:37,040 --> 00:47:41,620 >> Значи вметнување вид е направено. 1034 00:47:41,620 --> 00:47:43,600 Јас треба да се ре-случајни низата. 1035 00:47:43,600 --> 00:47:45,940 И ќе забележите дека јас само може да задржиш randomizing, 1036 00:47:45,940 --> 00:47:50,630 а ние ќе се приближување на на истиот пристап, вметнување вид. 1037 00:47:50,630 --> 00:47:55,050 Дозволете ми да ви го успори до тука. 1038 00:47:55,050 --> 00:47:56,915 Да почнеме дека повеќе. 1039 00:47:56,915 --> 00:47:57,414 Стоп. 1040 00:47:57,414 --> 00:48:00,662 1041 00:48:00,662 --> 00:48:02,410 >> Ајде да го прескокнете четири. 1042 00:48:02,410 --> 00:48:03,200 Таму ќе одиме. 1043 00:48:03,200 --> 00:48:04,190 Случајни тие низа. 1044 00:48:04,190 --> 00:48:05,555 И тука ние go-- вметнување вид. 1045 00:48:05,555 --> 00:48:10,260 1046 00:48:10,260 --> 00:48:12,800 Игра. 1047 00:48:12,800 --> 00:48:17,280 Забележете дека тоа е се занимаваат со секој елемент со кои доаѓа веднаш, 1048 00:48:17,280 --> 00:48:20,282 но ако тоа припаѓа во огласот за доделување на погрешно место 1049 00:48:20,282 --> 00:48:21,740 сите на работа што треба да се случи. 1050 00:48:21,740 --> 00:48:24,700 Ние мора да се задржи менување на повеќе и повеќе елементи за да се направи простор 1051 00:48:24,700 --> 00:48:27,340 за оној кој сакаме да се стави во место. 1052 00:48:27,340 --> 00:48:30,740 >> Значи ние се фокусираме на левиот крај од само листата. 1053 00:48:30,740 --> 00:48:34,460 Забележи, дури и не се гледаше at-- ние не се истакнати во розова ништо 1054 00:48:34,460 --> 00:48:35,610 на десно. 1055 00:48:35,610 --> 00:48:38,180 Ние сме само се занимаваат со проблемите како што ние одиме, 1056 00:48:38,180 --> 00:48:40,430 но ние сме создавање на многу работи за нас самите уште. 1057 00:48:40,430 --> 00:48:44,410 И така, ако ние го забрза тоа сега да одат на проектот, 1058 00:48:44,410 --> 00:48:46,210 има различен чувствуваат кон него, навистина. 1059 00:48:46,210 --> 00:48:50,150 Тоа е само се фокусира на левата крајот, но тоа малку повеќе работа како needed-- 1060 00:48:50,150 --> 00:48:53,230 вид на мазнење работи повеќе, одредување на работите, 1061 00:48:53,230 --> 00:48:58,350 но на крајот се занимаваат со секој елемент едно по едно време 1062 00:48:58,350 --> 00:49:07,740 се додека не се дојде до the-- добро, Сите знаеме како тоа се случува да се стави крај, 1063 00:49:07,740 --> 00:49:09,700 па тоа е малку underwhelming можеби. 1064 00:49:09,700 --> 00:49:12,830 >> Но на листата во end-- spoiler-- се случува да се решат. 1065 00:49:12,830 --> 00:49:15,300 Па ајде да погледнеме во еден последен. 1066 00:49:15,300 --> 00:49:16,840 Не можеме само да ја активирате сега. 1067 00:49:16,840 --> 00:49:18,000 Ние сме речиси таму. 1068 00:49:18,000 --> 00:49:19,980 Две да одат, еден да одам. 1069 00:49:19,980 --> 00:49:22,680 И Voila. 1070 00:49:22,680 --> 00:49:23,450 Одлично. 1071 00:49:23,450 --> 00:49:27,220 >> Па сега ајде да се направи еден последен, повторно randomizing со балон вид. 1072 00:49:27,220 --> 00:49:31,690 И ќе забележите тука, особено ако го забават долу, ова води упад преку. 1073 00:49:31,690 --> 00:49:36,830 Но забележите тоа само прави парови comparisons-- вид на локални решенија. 1074 00:49:36,830 --> 00:49:39,050 Но, штом ќе се дојде до на крајот на листата во розова, 1075 00:49:39,050 --> 00:49:40,690 она што се случува да мора да се повтори? 1076 00:49:40,690 --> 00:49:44,539 1077 00:49:44,539 --> 00:49:46,830 Да, тоа се случува да треба да се во текот на проектот, бидејќи тоа само 1078 00:49:46,830 --> 00:49:49,870 фиксна парови грешки. 1079 00:49:49,870 --> 00:49:53,120 И дека може да се откри уште други. 1080 00:49:53,120 --> 00:49:58,950 И така, ако го забрза тоа, ќе се види дека, колку што самото име имплицира, 1081 00:49:58,950 --> 00:50:01,870 помалите elements-- или подобро, поголемите elements-- почнуваат 1082 00:50:01,870 --> 00:50:03,740 на меурот до врвот, ако сакате. 1083 00:50:03,740 --> 00:50:07,380 И помалите елементи се почнуваат да меур одредување на левата страна. 1084 00:50:07,380 --> 00:50:10,780 И навистина, тоа е вид на визуелен ефект, како и. 1085 00:50:10,780 --> 00:50:17,150 И така ова ќе заврши до завршувањето во многу сличен начин, исто така. 1086 00:50:17,150 --> 00:50:19,160 >> Ние не треба да се задржиме на овој особено еден. 1087 00:50:19,160 --> 00:50:21,010 Дозволете ми да се отвори ова сега, исто така. 1088 00:50:21,010 --> 00:50:24,040 Има неколку други алгоритми за сортирање во светот, од кои неколку 1089 00:50:24,040 --> 00:50:25,580 се заробени тука. 1090 00:50:25,580 --> 00:50:29,960 А особено за учениците кои не се мора визуелен или математички, 1091 00:50:29,960 --> 00:50:31,930 како и порано, може да се исто така го направите ова audially 1092 00:50:31,930 --> 00:50:34,210 Ако ние се дружат звук со ова. 1093 00:50:34,210 --> 00:50:36,990 И само за забава, тука е неколку различни алгоритми, 1094 00:50:36,990 --> 00:50:40,950 а еден од нив особено сте ќе забележите се нарекува "спојат вид." 1095 00:50:40,950 --> 00:50:43,250 >> Тоа, всушност, е фундаментално подобар алгоритам, 1096 00:50:43,250 --> 00:50:45,860 како што се спојат вид, еден од оние што ти си за да се види, 1097 00:50:45,860 --> 00:50:49,170 не е цел од n квадрат. 1098 00:50:49,170 --> 00:50:57,280 Тоа е од редот на n пати се логирате на n, што е, всушност, помали и на тој начин 1099 00:50:57,280 --> 00:50:58,940 побрзо од оние другите три. 1100 00:50:58,940 --> 00:51:00,670 И има неколку други глупо оние што ќе видиме. 1101 00:51:00,670 --> 00:51:01,933 >> Тука ќе одиме со некои звук. 1102 00:51:01,933 --> 00:51:06,620 1103 00:51:06,620 --> 00:51:10,490 Ова е вметнување вид, па повторно тоа е само се занимаваат со елементи 1104 00:51:10,490 --> 00:51:13,420 како што дојде. 1105 00:51:13,420 --> 00:51:17,180 Ова е меур вид, па затоа е со оглед на нив парови во исто време. 1106 00:51:17,180 --> 00:51:22,030 1107 00:51:22,030 --> 00:51:24,490 И повторно, најголемата елементи се жуборот на врвот. 1108 00:51:24,490 --> 00:51:38,098 1109 00:51:38,098 --> 00:51:41,710 >> Потоа селекција вид. 1110 00:51:41,710 --> 00:51:45,420 Ова е алгоритам на Бен, каде што повторно тој е изборот iteratively 1111 00:51:45,420 --> 00:51:46,843 следниот најмалиот елемент. 1112 00:51:46,843 --> 00:51:49,801 1113 00:51:49,801 --> 00:51:53,900 И повторно, сега навистина може да се слушне дека тоа е забрзување, но само доколку 1114 00:51:53,900 --> 00:51:58,230 како што тоа го прави помалку и помалку работи на секој повторување. 1115 00:51:58,230 --> 00:52:04,170 Ова е побрзо еден, се спојат вид, која сортирање групи на броеви 1116 00:52:04,170 --> 00:52:05,971 заедно, а потоа комбинирање на нив. 1117 00:52:05,971 --> 00:52:07,720 Значи look-- лево половина е веќе сортирана. 1118 00:52:07,720 --> 00:52:14,165 >> Сега е сортирањето на десната половина, и сега тоа се случува да се комбинираат во една. 1119 00:52:14,165 --> 00:52:19,160 Ова е нешто што се нарекува "Gnome вид." 1120 00:52:19,160 --> 00:52:23,460 И можете да вид на се види дека тоа се случува и назад, 1121 00:52:23,460 --> 00:52:27,950 одредување работат малку тука и таму пред продолжува до нова работа. 1122 00:52:27,950 --> 00:52:32,900 1123 00:52:32,900 --> 00:52:33,692 И тоа е тоа. 1124 00:52:33,692 --> 00:52:36,400 Има уште еден вид, кој е навистина само за академски цели, 1125 00:52:36,400 --> 00:52:40,980 наречен "глупава вид", која ги зема вашите податоци, тоа сортира по случаен избор, 1126 00:52:40,980 --> 00:52:43,350 а потоа проверува дали се подредени. 1127 00:52:43,350 --> 00:52:47,880 И ако тоа не е, тоа повторно да го сортира по случаен избор, проверува дали тоа е сортирана, 1128 00:52:47,880 --> 00:52:49,440 и ако не се повторува. 1129 00:52:49,440 --> 00:52:52,660 И во теорија, probabilistically ова ќе заврши, 1130 00:52:52,660 --> 00:52:54,140 но по доста време. 1131 00:52:54,140 --> 00:52:56,930 Тоа не е повеќето ефикасни алгоритми. 1132 00:52:56,930 --> 00:53:02,550 Така било прашања во врска со оние особено алгоритми или ништо 1133 00:53:02,550 --> 00:53:04,720 поврзани таму, исто така? 1134 00:53:04,720 --> 00:53:09,430 >> Па, ајде сега да одгатнат што сите овие линии се дека јас сум бил цртеж 1135 00:53:09,430 --> 00:53:15,090 и она што јас сум под претпоставка дека компјутерот може да се направи под хауба. 1136 00:53:15,090 --> 00:53:18,650 Јас би рекол дека сите овие броеви Продолжувам drawing-- тие треба да се 1137 00:53:18,650 --> 00:53:21,330 чуваат некаде во меморијата. 1138 00:53:21,330 --> 00:53:24,130 Ние ќе се ослободи од овој човек сега, исто така. 1139 00:53:24,130 --> 00:53:30,110 >> Значи парче меморија во computer-- така RAM DIMM е 1140 00:53:30,110 --> 00:53:35,480 она што го барав за вчера, двојна Вграден меморија module-- изгледа вака. 1141 00:53:35,480 --> 00:53:39,370 И секоја од овие малку црна чипови некои број на бајти, обично. 1142 00:53:39,370 --> 00:53:44,380 И тогаш злато иглички се допаѓа жици кои го поврзете на компјутер, 1143 00:53:44,380 --> 00:53:47,521 и зелен силикон плоча е само она што чува се што сите заедно. 1144 00:53:47,521 --> 00:53:48,770 Па што значи тоа навистина значи? 1145 00:53:48,770 --> 00:53:53,180 Ако јас вид на се подготви оваа иста слика, да претпоставиме дека за едноставност 1146 00:53:53,180 --> 00:53:55,280 дека ова DIMM, двојна РЕГИСТРАЦИЈА мемориски модул, 1147 00:53:55,280 --> 00:54:00,530 е еден гигабајт RAM меморија, еден гигабајт меморија, која е колку вкупно бајти? 1148 00:54:00,530 --> 00:54:02,100 Една GIGABYTE е колку бајти? 1149 00:54:02,100 --> 00:54:04,860 1150 00:54:04,860 --> 00:54:06,030 Повеќе од тоа. 1151 00:54:06,030 --> 00:54:09,960 1.124 е килограм, 1000. 1152 00:54:09,960 --> 00:54:11,730 Мега е милиони евра. 1153 00:54:11,730 --> 00:54:14,570 Giga е една милијарда. 1154 00:54:14,570 --> 00:54:15,070 >> Дали сум лежи? 1155 00:54:15,070 --> 00:54:16,670 Можеме да дури и чита етикетата? 1156 00:54:16,670 --> 00:54:19,920 Ова е всушност 128 гигабајти, па тоа е повеќе. 1157 00:54:19,920 --> 00:54:22,130 Но, ние ќе се преправа дека ова е само еден гигабајт. 1158 00:54:22,130 --> 00:54:25,640 Па тоа значи дека има милијарди бајти меморија на располагање за мене 1159 00:54:25,640 --> 00:54:29,770 или 8 милијарди парчиња, но ние ќе да се зборува во однос на бајти сега, 1160 00:54:29,770 --> 00:54:30,750 се движи напред. 1161 00:54:30,750 --> 00:54:36,330 >> Па што значи тоа е тоа е еден бајт, ова е уште еден бајт, 1162 00:54:36,330 --> 00:54:38,680 ова е уште еден бајт, И ако навистина сакаше 1163 00:54:38,680 --> 00:54:43,280 да бидат конкретни ние ќе треба да подготви милијарда малку плоштади. 1164 00:54:43,280 --> 00:54:44,320 Но, што значи тоа? 1165 00:54:44,320 --> 00:54:46,420 Па, дозволете ми да зумирате во на оваа слика. 1166 00:54:46,420 --> 00:54:50,900 Ако имам нешто што изгледа вака сега, тоа е четири бајти. 1167 00:54:50,900 --> 00:54:53,710 >> И така, може да се стави четири броја тука. 1168 00:54:53,710 --> 00:54:54,990 Еден два три четири. 1169 00:54:54,990 --> 00:55:00,170 Или би можел да се стави четири букви или симболи. 1170 00:55:00,170 --> 00:55:02,620 "Еееј!" би можеле да одат право, таму, бидејќи секоја од буквите, 1171 00:55:02,620 --> 00:55:04,370 што беше порано, може да се претстави 1172 00:55:04,370 --> 00:55:06,650 со осум бита или ASCII или бајт. 1173 00:55:06,650 --> 00:55:09,370 Значи со други зборови, може да 8 милијарди стави работите во 1174 00:55:09,370 --> 00:55:11,137 на овој еден стап на меморија. 1175 00:55:11,137 --> 00:55:14,345 Сега, она што значи да се стави работите назад да се врати назад во меморијата, како тоа? 1176 00:55:14,345 --> 00:55:17,330 Тоа е она што програмер би го нарекол "низа". 1177 00:55:17,330 --> 00:55:21,250 Во компјутерска програма, што не мислам дека за основната хардвер, сама по себе. 1178 00:55:21,250 --> 00:55:24,427 Вие само мислам на себе како што имаат пристап до вкупно една милијарда бајти, 1179 00:55:24,427 --> 00:55:26,010 и може да се нешто што сакате со него. 1180 00:55:26,010 --> 00:55:27,880 Но, за погодност генерално е покорисно 1181 00:55:27,880 --> 00:55:31,202 да се задржи вашето право меморија еден до друг се допаѓа ова. 1182 00:55:31,202 --> 00:55:33,660 Значи, ако јас зумирате на this-- затоа што, секако, не се случува 1183 00:55:33,660 --> 00:55:39,310 да се подготви една милијарда малку squares-- Да претпоставиме дека овој форум претставува 1184 00:55:39,310 --> 00:55:40,610 кои се лепат на меморија сега. 1185 00:55:40,610 --> 00:55:43,800 И јас само ќе се повлече колку што ми маркер завршува давање мене. 1186 00:55:43,800 --> 00:55:46,420 1187 00:55:46,420 --> 00:55:52,300 Така, сега имаме стап меморија на одборот 1188 00:55:52,300 --> 00:55:56,400 што доби еден, два, три, четири, пет, шест, еден, два, три, четири, пет, шест, 1189 00:55:56,400 --> 00:56:01,130 seven-- така 42 бајти на меморија на вкупно екранот. 1190 00:56:01,130 --> 00:56:01,630 Ти благодарам. 1191 00:56:01,630 --> 00:56:02,838 Да, не ми аритметички право. 1192 00:56:02,838 --> 00:56:05,120 Значи 42 бајти меморија тука. 1193 00:56:05,120 --> 00:56:06,660 Па што значи тоа всушност значи? 1194 00:56:06,660 --> 00:56:09,830 Па, компјутерски програмер всушност, ќе се генерално 1195 00:56:09,830 --> 00:56:12,450 мислам на тоа како адресибилен меморија. 1196 00:56:12,450 --> 00:56:16,630 Со други зборови, секој еден од овие локации во меморија, хардвер, 1197 00:56:16,630 --> 00:56:18,030 има единствена адреса. 1198 00:56:18,030 --> 00:56:22,020 >> Тоа не е како комплекс како Еден Brattle Плоштад, Кембриџ, Масачусетс., 02138. 1199 00:56:22,020 --> 00:56:23,830 Наместо тоа, тоа е само еден број. 1200 00:56:23,830 --> 00:56:27,930 Ова е бајт бројот нула, ова е еден, ова е два, тоа е три, 1201 00:56:27,930 --> 00:56:30,327 и ова е 41. 1202 00:56:30,327 --> 00:56:30,910 Почекај минута. 1203 00:56:30,910 --> 00:56:32,510 Мислев дека рече 42 пред еден миг. 1204 00:56:32,510 --> 00:56:35,050 1205 00:56:35,050 --> 00:56:37,772 Почнав да бројам на нула, па тоа е всушност точни. 1206 00:56:37,772 --> 00:56:40,980 Сега не треба да се, всушност, го подготви во облик на мрежа, и ако го нацрта тоа во облик на мрежа 1207 00:56:40,980 --> 00:56:43,520 Мислам дека работите всушност, да се добие малку погрешно. 1208 00:56:43,520 --> 00:56:46,650 Што програмер би, во неговиот или нејзиниот ум, 1209 00:56:46,650 --> 00:56:50,310 генерално мислам на ова меморија е исто како на лента, 1210 00:56:50,310 --> 00:56:53,340 како парче леплива лента тоа само продолжува и натаму засекогаш 1211 00:56:53,340 --> 00:56:54,980 или додека не снема меморија. 1212 00:56:54,980 --> 00:56:59,200 Значи, повеќе заеднички начин да се подготви и само се размислува за меморија 1213 00:56:59,200 --> 00:57:03,710 ќе биде дека ова е бајт нула, еден, два, три, а потоа точка, точка, точка. 1214 00:57:03,710 --> 00:57:07,650 И имаш вкупно 42 такви бајти, па дури и иако физички таа всушност може да 1215 00:57:07,650 --> 00:57:09,480 да биде нешто повеќе вака. 1216 00:57:09,480 --> 00:57:12,850 >> Значи, ако сега мислите дека на вашиот меморија што е оваа, како на лента, 1217 00:57:12,850 --> 00:57:17,640 тоа е она што на програмерот повторно би го нарекол низа на меморија. 1218 00:57:17,640 --> 00:57:20,660 И кога сакате да всушност складираат нешто во меморијата на компјутерот, 1219 00:57:20,660 --> 00:57:23,290 обично се чува на работите назад-до-назад кон назад-до-назад. 1220 00:57:23,290 --> 00:57:25,010 Значи ние сме биле зборува за бројки. 1221 00:57:25,010 --> 00:57:30,880 И кога сакав да ги реши проблемите како четири, еден, три, два, 1222 00:57:30,880 --> 00:57:33,820 иако бев само цртање само броевите четири, еден, три, 1223 00:57:33,820 --> 00:57:39,490 две на табла, компјутерот ќе навистина треба ова подесување во меморијата. 1224 00:57:39,490 --> 00:57:43,347 >> И она што ќе биде во близина на две во меморијата на компјутерот? 1225 00:57:43,347 --> 00:57:44,680 Па, нема одговор на тоа. 1226 00:57:44,680 --> 00:57:45,770 Ние навистина не знам. 1227 00:57:45,770 --> 00:57:48,200 И така додека компјутер не е потребно, 1228 00:57:48,200 --> 00:57:51,440 тоа не треба да се грижат што е следно на бројки, е заинтересиран за тоа. 1229 00:57:51,440 --> 00:57:55,130 И кога реков претходно дека компјутер може да се погледне само на една адреса во еден момент, 1230 00:57:55,130 --> 00:57:56,170 ова е вид на зошто. 1231 00:57:56,170 --> 00:57:59,490 >> Не за разлика од евиденција плеер и главата за читање 1232 00:57:59,490 --> 00:58:03,030 само да биде во можност да се погледне во одреден Мило ми е во физичка рекорд стар ков 1233 00:58:03,030 --> 00:58:06,500 во исто време, на сличен начин може еден компјутер, благодарение 1234 00:58:06,500 --> 00:58:09,810 на своите процесорот и неговите Интел настава во собата, 1235 00:58:09,810 --> 00:58:12,480 меѓу чија настава се чита од меморија 1236 00:58:12,480 --> 00:58:15,590 или да го зачувате до memory-- на компјутер може само да се погледне 1237 00:58:15,590 --> 00:58:19,210 на едно место, на time-- понекогаш и комбинација од нив, 1238 00:58:19,210 --> 00:58:21,770 но, навистина само едно место во исто време. 1239 00:58:21,770 --> 00:58:24,770 Значи, кога ќе се прави овие различни алгоритми, 1240 00:58:24,770 --> 00:58:28,110 Јас не сум само пишување во vacuum-- четири, еден, три, два. 1241 00:58:28,110 --> 00:58:30,849 Овие бројки всушност припаѓаат некаде физичка меморија. 1242 00:58:30,849 --> 00:58:32,890 Па така постојат малечки транзистори или некој вид 1243 00:58:32,890 --> 00:58:35,840 од електроника под качулка складирање на овие вредности. 1244 00:58:35,840 --> 00:58:40,460 >> И збирно, колку битови се вклучени во моментов, само за да биде јасно? 1245 00:58:40,460 --> 00:58:45,580 Значи ова е четири бајти, или сега е 32 бита вкупно. 1246 00:58:45,580 --> 00:58:49,280 Па таму се всушност 32 нули и единици оние компонирањето овие четири работи. 1247 00:58:49,280 --> 00:58:52,070 Има дури и повеќе овде, но повторно не ми е гајле за тоа. 1248 00:58:52,070 --> 00:58:55,120 >> Па сега ајде да прашам друго прашање со користење на меморијата, 1249 00:58:55,120 --> 00:58:57,519 затоа што на крајот на денот е во варијанса. 1250 00:58:57,519 --> 00:59:00,310 Без разлика на она што може да се направи со на компјутер, на крајот на денот 1251 00:59:00,310 --> 00:59:02,560 хардверот е уште исто под хауба. 1252 00:59:02,560 --> 00:59:04,670 Како можам да се складира збор тука? 1253 00:59:04,670 --> 00:59:09,710 Па, еден збор на компјутер како "Еееј!" ќе се чуваат исто како и оваа. 1254 00:59:09,710 --> 00:59:12,300 И ако си сакал подолг збор, можете едноставно да 1255 00:59:12,300 --> 00:59:19,120 избрише тој и да каже нешто како "здраво" и продавница за тоа тука. 1256 00:59:19,120 --> 00:59:23,930 >> И така тука, исто така, ова contiguousness всушност е предност, 1257 00:59:23,930 --> 00:59:26,530 затоа што компјутерот може да се само читаат од десно кон лево. 1258 00:59:26,530 --> 00:59:28,680 Но, тука е прашањето. 1259 00:59:28,680 --> 00:59:33,480 Во контекст на овој збор, H-Е-Л-Л-О, фантастичен точка, 1260 00:59:33,480 --> 00:59:38,740 како може на компјутер знае каде зборот почнува и каде зборот ќе заврши? 1261 00:59:38,740 --> 00:59:41,690 1262 00:59:41,690 --> 00:59:43,800 Во контекст на броеви, како не на компјутер 1263 00:59:43,800 --> 00:59:48,396 знам колку долго редоследот на броеви е или каде што почнува? 1264 00:59:48,396 --> 00:59:50,270 Па, излегува out-- и нема да одат премногу 1265 00:59:50,270 --> 00:59:54,970 во ова ниво на detail-- компјутери движат работите околу себе во меморијата 1266 00:59:54,970 --> 00:59:57,800 буквално по пат на овие адреси. 1267 00:59:57,800 --> 01:00:02,080 Значи во компјутер, ако сте пишување на код за да ги чувате работите 1268 01:00:02,080 --> 01:00:05,800 како зборови, она што се навистина прави е пишување 1269 01:00:05,800 --> 01:00:11,320 изрази, кои се сетам каде во меморијата на компјутерот овие зборови. 1270 01:00:11,320 --> 01:00:14,370 Па дозволете ми да се направи многу, многу едноставен пример. 1271 01:00:14,370 --> 01:00:18,260 >> Одам да се оди напред и да отвори едноставна програма текст, 1272 01:00:18,260 --> 01:00:20,330 а јас ќе одам да се создаде датотека наречена hello.c. 1273 01:00:20,330 --> 01:00:22,849 Поголемиот дел од оваа информација Нема да навлегувам во во голема детали, 1274 01:00:22,849 --> 01:00:25,140 но јас ќе одам да се напише програма во тој ист јазик, 1275 01:00:25,140 --> 01:00:31,140 C. Ова е далеку повеќе застрашувачки, Јас би рекол, од нула, 1276 01:00:31,140 --> 01:00:32,490 но тоа е многу слични во духот. 1277 01:00:32,490 --> 01:00:34,364 Всушност, овие кадрава braces-- може да се вид на 1278 01:00:34,364 --> 01:00:37,820 мислам на она што јас само направив што е оваа. 1279 01:00:37,820 --> 01:00:39,240 >> Ајде да го направите ова, всушност. 1280 01:00:39,240 --> 01:00:45,100 Кога зелено знаме кликнато, го направите следново. 1281 01:00:45,100 --> 01:00:50,210 Сакам да се печати "Здраво". 1282 01:00:50,210 --> 01:00:51,500 Па сега тоа е pseudocode. 1283 01:00:51,500 --> 01:00:53,000 Јас сум вид на замаглување на линии. 1284 01:00:53,000 --> 01:00:56,750 Во C, овој јазик Зборувам за, оваа линија на печатење здраво 1285 01:00:56,750 --> 01:01:01,940 всушност станува "printf" со некои загради и точка-запирка. 1286 01:01:01,940 --> 01:01:03,480 >> Но, тоа е иста идеја. 1287 01:01:03,480 --> 01:01:06,730 И тоа многу user-friendly "Кога зелено знаме кликнато" станува 1288 01:01:06,730 --> 01:01:10,182 многу повеќе таинствени "int главната неважечки." 1289 01:01:10,182 --> 01:01:12,890 И ова навистина нема мапирање, па јас сум само ќе го игнорираат тоа. 1290 01:01:12,890 --> 01:01:17,210 Но, големите загради се како криви мозаик парчиња се допаѓа ова. 1291 01:01:17,210 --> 01:01:18,700 >> Па можете да вид на се погоди. 1292 01:01:18,700 --> 01:01:22,357 Дури и ако никогаш не сум програмиран пред тоа, она што оваа програма најверојатно да направам? 1293 01:01:22,357 --> 01:01:25,560 1294 01:01:25,560 --> 01:01:28,000 Веројатно отпечатоци Здраво со фантастичен точка. 1295 01:01:28,000 --> 01:01:29,150 >> Па ајде да се обидеме тоа. 1296 01:01:29,150 --> 01:01:30,800 Одам да го спаси. 1297 01:01:30,800 --> 01:01:34,000 И ова е, пак, многу стара училишна средина. 1298 01:01:34,000 --> 01:01:35,420 Јас не може да кликнете, не можам да се повлечете. 1299 01:01:35,420 --> 01:01:36,910 Морам да внесувате команди. 1300 01:01:36,910 --> 01:01:41,320 Значи сакам да ја стартувате програмата, што значи Јас би можеле да го направите ова, како hello.c. 1301 01:01:41,320 --> 01:01:42,292 Тоа е датотека истрчав. 1302 01:01:42,292 --> 01:01:43,500 Но, чекај, јас сум недостасува чекор. 1303 01:01:43,500 --> 01:01:46,470 Што ние велат дека е потребно чекор за јазик како C? 1304 01:01:46,470 --> 01:01:49,470 Јас сум само пишан извор код, но она што ми е потребно? 1305 01:01:49,470 --> 01:01:50,670 Да, јас треба компајлерот. 1306 01:01:50,670 --> 01:01:57,670 Така, на мојот Mac тука, имам програма наречена GCC, GNU C компајлер, 1307 01:01:57,670 --> 01:02:03,990 кој ми дозволува да се направи this-- пак мојот изворен код во, ние ќе го наречеме, 1308 01:02:03,990 --> 01:02:04,930 машински код. 1309 01:02:04,930 --> 01:02:10,180 >> И јас може да се види дека, повторно, како што следува, овие 1310 01:02:10,180 --> 01:02:14,090 се нули и јас само создадена од мојот изворниот код, 1311 01:02:14,090 --> 01:02:15,730 сите нули и единици. 1312 01:02:15,730 --> 01:02:17,770 И ако сакам да се кандидира мојот program-- тоа се случува 1313 01:02:17,770 --> 01:02:23,010 да се нарече a.out за историски reasons-- "здраво". 1314 01:02:23,010 --> 01:02:24,070 Јас може да се кандидира повторно. 1315 01:02:24,070 --> 01:02:25,690 Здраво, здраво, здраво. 1316 01:02:25,690 --> 01:02:27,430 И се чини дека да се работи. 1317 01:02:27,430 --> 01:02:31,000 >> Но, тоа значи некаде во мојата меморија на компјутерот се зборовите 1318 01:02:31,000 --> 01:02:35,279 H-Е-Л-Л-О, извичник. 1319 01:02:35,279 --> 01:02:38,070 И што излезе, исто како настрана, она што на компјутерот, вообичаено, би 1320 01:02:38,070 --> 01:02:40,550 направите, така што тоа не знае каде работи на проектот и end-- тоа е 1321 01:02:40,550 --> 01:02:42,460 ќе се стави посебен симбол тука. 1322 01:02:42,460 --> 01:02:46,064 И Конвенцијата е да се стави број нула на крајот на некој збор 1323 01:02:46,064 --> 01:02:48,230 така што ќе се знае каде всушност завршува, така што ќе 1324 01:02:48,230 --> 01:02:52,750 не се задржи печатење на повеќе и повеќе ликови отколку што навистина имаат намера. 1325 01:02:52,750 --> 01:02:55,400 >> Но, готова брза тука, дури и иако ова е прилично таинствени, 1326 01:02:55,400 --> 01:02:58,140 е дека тоа е во крајна линија релативно едноставна. 1327 01:02:58,140 --> 01:03:04,550 Сте биле дадени вид на лента, празна простор на кој може да се пишуваат писма. 1328 01:03:04,550 --> 01:03:07,150 Вие едноставно треба да имаат посебен симбол, како произволно 1329 01:03:07,150 --> 01:03:10,316 бројот нула, да се стави на крајот на Вашите зборови, така што компјутерот не знае, 1330 01:03:10,316 --> 01:03:13,410 О, јас треба да престане печатење по Гледам точка на фантастичен. 1331 01:03:13,410 --> 01:03:16,090 Бидејќи следниот нешто таму е ASCII вредност од нула, 1332 01:03:16,090 --> 01:03:19,125 или нула карактер како некој ќе го наречеме. 1333 01:03:19,125 --> 01:03:21,500 Но, има еден вид на проблем тука, и ајде да се врати назад 1334 01:03:21,500 --> 01:03:23,320 на броеви за момент. 1335 01:03:23,320 --> 01:03:28,720 Да претпоставиме дека јас не, всушност, имаат низа на броеви, 1336 01:03:28,720 --> 01:03:30,730 и да претпоставиме дека програма што го пишувам 1337 01:03:30,730 --> 01:03:34,680 како одделение книга на наставникот и наставниците во училница. 1338 01:03:34,680 --> 01:03:38,720 И оваа програма им овозможува на него или неа да напишеш во оценките на нивните ученици 1339 01:03:38,720 --> 01:03:39,960 на квизови. 1340 01:03:39,960 --> 01:03:43,750 И да претпоставиме дека студентот добива 100 на првиот квиз, можеби 1341 01:03:43,750 --> 01:03:49,920 како 80 на следниот, а потоа 75, а потоа 90 на четвртиот квиз. 1342 01:03:49,920 --> 01:03:54,150 >> Значи во овој момент во приказната, низата е на големината на четири. 1343 01:03:54,150 --> 01:03:58,470 Има апсолутно повеќе меморија во компјутер, но низа, така да се каже, 1344 01:03:58,470 --> 01:04:00,350 е на големината на четири. 1345 01:04:00,350 --> 01:04:06,060 Да претпоставиме сега дека наставникот сака да се додели една петтина квиз на класата. 1346 01:04:06,060 --> 01:04:08,510 Па, една од работите што или таа се случува да треба да направите 1347 01:04:08,510 --> 01:04:10,650 сега е да се сместат на дополнителна вредност тука. 1348 01:04:10,650 --> 01:04:15,490 Но, ако низата наставникот има создадени во оваа програма е за големината за, 1349 01:04:15,490 --> 01:04:22,440 еден од проблемот со низа е дека што не може само да ја задржите додавањето на меморија. 1350 01:04:22,440 --> 01:04:26,470 Затоа што ако некој друг дел од Програмата има зборот "еј" таму? 1351 01:04:26,470 --> 01:04:29,650 >> Со други зборови, мојата меморија може да биде се користи за ништо во програма. 1352 01:04:29,650 --> 01:04:33,250 И ако однапред јас ја внеле во, еј, Сакам да го внесете четири квизот резултати, 1353 01:04:33,250 --> 01:04:34,784 тие може да оди тука и тука. 1354 01:04:34,784 --> 01:04:37,700 И ако одеднаш се промени вашиот ум подоцна и да се каже сакам една петтина квиз 1355 01:04:37,700 --> 01:04:40,872 резултат, вие не само да го стави каде што сакате, 1356 01:04:40,872 --> 01:04:42,580 затоа што ако тоа меморија се користи 1357 01:04:42,580 --> 01:04:45,990 за нешто else-- некоја друга програма или некоја друга карактеристика на програмата 1358 01:04:45,990 --> 01:04:46,910 дека сте водење? 1359 01:04:46,910 --> 01:04:50,650 Значи мора да се размислува однапред како сакате да ги чувате вашите податоци, 1360 01:04:50,650 --> 01:04:54,480 бидејќи сега сте насликани се во дигитален агол. 1361 01:04:54,480 --> 01:04:57,280 >> Значи учител би можеле наместо каже кога пишување програма 1362 01:04:57,280 --> 01:04:59,360 за чување на неговите или нејзините оценки, знаеш што? 1363 01:04:59,360 --> 01:05:04,180 Одам да се бара, кога пишувате мојата програма, 1364 01:05:04,180 --> 01:05:12,070 дека сакам нула, еден, два, три, четири, пет, шест, осум оценки вкупно. 1365 01:05:12,070 --> 01:05:15,320 Така, еден, два, три, четири, пет, шест, седум, осум. 1366 01:05:15,320 --> 01:05:18,612 Наставникот може само во текот на расподели меморија кога пишувате неговата или нејзината програма 1367 01:05:18,612 --> 01:05:19,570 и да каже, знаеш што? 1368 01:05:19,570 --> 01:05:22,236 Јас никогаш нема да се додели повеќе од осум квизови во еден семестар. 1369 01:05:22,236 --> 01:05:23,130 Тоа е само луд. 1370 01:05:23,130 --> 01:05:24,470 Никогаш нема да се доделат. 1371 01:05:24,470 --> 01:05:28,270 Така што на овој начин тој или таа има флексибилност за да ја запази студент резултати, 1372 01:05:28,270 --> 01:05:33,010 како 75, 90, а можеби и една дополнителна каде ученикот доби екстра кредит, 105. 1373 01:05:33,010 --> 01:05:36,130 >> Но, ако никогаш не наставникот ги користи овие три места, 1374 01:05:36,130 --> 01:05:38,860 има интуитивен готова брза тука. 1375 01:05:38,860 --> 01:05:41,410 Тој или таа е само губење на простор. 1376 01:05:41,410 --> 01:05:44,790 Значи со други зборови, не е ова заеднички Губитокот во програмирање 1377 01:05:44,790 --> 01:05:48,241 каде што можете да ги распредели точно колку меморија како сакате, 1378 01:05:48,241 --> 01:05:51,490 Добрата страна на тоа е дека сте супер efficient-- што не си се непотребното 1379 01:05:51,490 --> 01:05:54,640 во all-- но во надолна линија, од кои е тоа што ако го промените вашиот ум кога 1380 01:05:54,640 --> 01:05:58,780 користење на програмата што сакате да ги чувате повеќе податоци отколку што првично се наменети. 1381 01:05:58,780 --> 01:06:03,030 >> Па можеби решението е, тогаш, напишете вашиот програми на таков начин 1382 01:06:03,030 --> 01:06:05,605 кои тие ги користат повеќе меморија отколку што навистина треба. 1383 01:06:05,605 --> 01:06:07,730 На овој начин не се случува да се кандидира во овој проблем, 1384 01:06:07,730 --> 01:06:09,730 но сте се непотребното. 1385 01:06:09,730 --> 01:06:12,960 И повеќе меморија вашата програма го користи, Како што разговаравме вчера, на помалку 1386 01:06:12,960 --> 01:06:15,410 меморија, која е на располагање за други програми, 1387 01:06:15,410 --> 01:06:18,790 толку побрзо вашиот компјутер може да се забави , бидејќи на виртуелна меморија. 1388 01:06:18,790 --> 01:06:22,670 И така идеално решение би можело да биде тоа? 1389 01:06:22,670 --> 01:06:24,610 >> Под-издвојување изгледа лошо. 1390 01:06:24,610 --> 01:06:27,030 Над-издвојување изгледа лошо. 1391 01:06:27,030 --> 01:06:31,120 Значи она што би можело да биде подобро решение? 1392 01:06:31,120 --> 01:06:32,390 Пренасочување. 1393 01:06:32,390 --> 01:06:33,590 Бидете повеќе динамичен. 1394 01:06:33,590 --> 01:06:37,520 Не сила сами да се избере приори, на почетокот, она што сакам да. 1395 01:06:37,520 --> 01:06:41,370 И, секако, не се над-одвои, да не би да биде губење на време. 1396 01:06:41,370 --> 01:06:45,770 >> И така да се постигне таа цел, треба да се фрли оваа податочна структура, 1397 01:06:45,770 --> 01:06:48,100 така да се каже, далеку. 1398 01:06:48,100 --> 01:06:51,080 И така, програмер обично ќе ги користи 1399 01:06:51,080 --> 01:06:55,940 е нешто што не е наречен низа, но листа на поврзани. 1400 01:06:55,940 --> 01:07:00,860 Со други зборови, тој или таа ќе почнат да мислат на нивната меморија 1401 01:07:00,860 --> 01:07:05,280 како вид на облик кој тие може да се подготви на следниов начин. 1402 01:07:05,280 --> 01:07:08,520 Ако сакам да се сместат во еден број на program-- така што е септември, 1403 01:07:08,520 --> 01:07:12,600 Јас сум со оглед на моите студенти квиз; сакам за чување на првиот квиз на учениците, 1404 01:07:12,600 --> 01:07:16,220 и тие се здобија со 100 на it-- јас идам да прашам мојот компјутер, 1405 01:07:16,220 --> 01:07:19,540 по пат на програмата сум напишано, за едно парче на меморија. 1406 01:07:19,540 --> 01:07:22,570 И јас одам да ја запази број 100 во неа, и тоа е тоа. 1407 01:07:22,570 --> 01:07:24,820 >> Потоа, неколку недели подоцна кога ќе се моето второ квиз, 1408 01:07:24,820 --> 01:07:27,890 и тоа е време да напишеш со тоа што 90%, идам 1409 01:07:27,890 --> 01:07:32,129 да побара од компјутер, еј, компјутер, Може ли уште едно парче на меморија? 1410 01:07:32,129 --> 01:07:34,170 Тоа се случува да ми даде овој празни парче на меморија. 1411 01:07:34,170 --> 01:07:39,370 Одам да се стави во број 90, но во мојата програма некако или other-- 1412 01:07:39,370 --> 01:07:42,100 и ние не ќе се грижи за синтаксата на this-- ми треба 1413 01:07:42,100 --> 01:07:44,430 некако синџирот овие работи заедно. 1414 01:07:44,430 --> 01:07:47,430 И јас ќе ги синџирот заедно со она што изгледа како стрела тука. 1415 01:07:47,430 --> 01:07:50,050 >> Третиот квиз што доаѓа, Јас ќе одам да се каже, еј, компјутер, 1416 01:07:50,050 --> 01:07:51,680 Дај ми уште една парче на меморија. 1417 01:07:51,680 --> 01:07:54,660 И јас одам да се спушти што и да е, како и 75, 1418 01:07:54,660 --> 01:07:56,920 и јас треба да синџирот на овој заедно сега некако. 1419 01:07:56,920 --> 01:08:00,290 Четврто квиз доаѓа заедно, а можеби и тоа е кон крајот на семестарот. 1420 01:08:00,290 --> 01:08:03,140 И од тој момент мојата програма може да се користат меморија 1421 01:08:03,140 --> 01:08:05,540 насекаде, во целиот физички. 1422 01:08:05,540 --> 01:08:08,170 И така само за клоци, јас сум случува да се подготви овој натаму 1423 01:08:08,170 --> 01:08:11,260 quiz-- го заборавам она што беше, јас дека можеби 80 или something-- 1424 01:08:11,260 --> 01:08:12,500 начин овде. 1425 01:08:12,500 --> 01:08:15,920 >> Но, тоа е во ред, бидејќи сликовито Одам да се подготви оваа линија. 1426 01:08:15,920 --> 01:08:19,063 Со други зборови, во реалноста, во областа на хардверот на вашиот компјутер, 1427 01:08:19,063 --> 01:08:20,979 на првиот резултат на сила завршуваат тука, бидејќи тоа е 1428 01:08:20,979 --> 01:08:22,529 право на почетокот на семестарот. 1429 01:08:22,529 --> 01:08:25,810 Следниот би можеле да завршат тука бидејќи малку време помина 1430 01:08:25,810 --> 01:08:27,210 и програмата постојано работи. 1431 01:08:27,210 --> 01:08:30,060 Следниот резултат, кој беше 75, може да биде овде. 1432 01:08:30,060 --> 01:08:33,420 И последниот резултат може да биде 80, што е повеќе од тука. 1433 01:08:33,420 --> 01:08:38,729 >> Така, во реалноста, физички, ова може да биде што меморијата на вашиот компјутер како изгледа. 1434 01:08:38,729 --> 01:08:41,569 Но, тоа не е корисна ментална парадигма за компјутерски програмер. 1435 01:08:41,569 --> 01:08:44,649 Зошто треба да се грижат каде што подлец вашите податоци се заврши? 1436 01:08:44,649 --> 01:08:46,200 Вие само сакате да ја зачувате податоци. 1437 01:08:46,200 --> 01:08:49,390 >> Ова е вид на како нашата дискусија порано за цртање на коцка. 1438 01:08:49,390 --> 01:08:52,200 Зошто ви е гајле што аголот е на коцка 1439 01:08:52,200 --> 01:08:53,740 и како треба да се претвори да го нацрта тоа? 1440 01:08:53,740 --> 01:08:54,950 Вие само сакате коцка. 1441 01:08:54,950 --> 01:08:57,359 Слично на тоа тука, само сакам да одделение книга. 1442 01:08:57,359 --> 01:08:59,559 Вие само сакате да се размислува за ова како листа на броеви. 1443 01:08:59,559 --> 01:09:01,350 Кој се грижи како тоа е спроведува во областа на хардверот? 1444 01:09:01,350 --> 01:09:05,180 >> Значи апстракција сега е оваа слика овде. 1445 01:09:05,180 --> 01:09:07,580 Ова е поврзана листа, како програмер би ја нарекол, 1446 01:09:07,580 --> 01:09:10,640 доколку имате листа, очигледно на броеви. 1447 01:09:10,640 --> 01:09:14,990 Но, тоа е поврзано сликовито по пат на овие стрели, 1448 01:09:14,990 --> 01:09:18,510 и сите овие стрели are-- под капакот на моторот, ако сте љубопитни, 1449 01:09:18,510 --> 01:09:23,210 потсетиме дека нашите физички хардвер има адреси нула, еден, два, три, четири. 1450 01:09:23,210 --> 01:09:28,465 Сите овие стрели се е како мапа или насоки, каде што доколку 90 is-- сега 1451 01:09:28,465 --> 01:09:29,090 Добив да се брои. 1452 01:09:29,090 --> 01:09:31,750 >> Нула, еден, два, три, четири, пет, шест, седум. 1453 01:09:31,750 --> 01:09:35,640 Тоа изгледа како на 90 години е во мемориска адреса бројот седум. 1454 01:09:35,640 --> 01:09:38,460 Сите овие стрели се е како мало парче хартија 1455 01:09:38,460 --> 01:09:42,439 дека е давање насоки на програма која вели следат оваа карта 1456 01:09:42,439 --> 01:09:43,880 да стигнете до локацијата седум. 1457 01:09:43,880 --> 01:09:46,680 И таму ќе ги најдете на вториот квиз резултат студентот. 1458 01:09:46,680 --> 01:09:52,100 Во меѓувреме, 75-- ако продолжам ова, ова е седум, осум, девет, 10, 11, 12, 1459 01:09:52,100 --> 01:09:54,240 13, 14, 15. 1460 01:09:54,240 --> 01:09:59,080 >> Овој други стрелка едноставно претставува карта на локација во меморијата 15. 1461 01:09:59,080 --> 01:10:02,550 Но, повторно, програмер генерално не не се грижи за тоа ниво на детали. 1462 01:10:02,550 --> 01:10:05,530 И во повеќето секој програмирање јазик и денес, на програмерот 1463 01:10:05,530 --> 01:10:10,490 дури и не ќе знае каде во меморијата овие броеви всушност се. 1464 01:10:10,490 --> 01:10:14,830 Сите тој или таа треба да се грижат за се дека тие се на некој начин поврзани заедно 1465 01:10:14,830 --> 01:10:18,390 во податочна структура се допаѓа ова. 1466 01:10:18,390 --> 01:10:21,580 >> Но, се покажа не да се добие премногу технички. 1467 01:10:21,580 --> 01:10:27,430 Но, само затоа што можеби може да да си дозволи да ја имаат оваа дискусија овде, 1468 01:10:27,430 --> 01:10:33,630 Да претпоставиме дека ние враќате овој проблем тука на низа. 1469 01:10:33,630 --> 01:10:35,780 Ајде да видиме дали Жалиме случува тука. 1470 01:10:35,780 --> 01:10:42,950 Ова е 100, 90, 75 и 80. 1471 01:10:42,950 --> 01:10:44,980 >> Дозволете накратко да се направи ова тврдење. 1472 01:10:44,980 --> 01:10:48,980 Ова е низа, и повторно, Истакнатите карактеристики на низа 1473 01:10:48,980 --> 01:10:52,400 е дека сите на вашите податоци се назад до назад да се врати во memory-- буквално 1474 01:10:52,400 --> 01:10:56,830 еден бајт или можеби четири бајти, некои фиксни број на бајти далеку. 1475 01:10:56,830 --> 01:11:00,710 Во листа на поврзани, кои би можеле да се повлече вака, под хаубата кои 1476 01:11:00,710 --> 01:11:02,000 знае каде тој звук е? 1477 01:11:02,000 --> 01:11:03,630 Тоа дури и не треба да тече вака. 1478 01:11:03,630 --> 01:11:06,050 Некои од податоците може да биде назад кон лево до таму. 1479 01:11:06,050 --> 01:11:07,530 Вие дури и не знаат. 1480 01:11:07,530 --> 01:11:15,430 >> И така со ред, имаш функција, познат како случаен пристап. 1481 01:11:15,430 --> 01:11:20,570 И она што е случаен пристап е дека компјутерот може да скокне веднаш 1482 01:11:20,570 --> 01:11:22,730 на било која локација во низа. 1483 01:11:22,730 --> 01:11:23,580 Зошто? 1484 01:11:23,580 --> 01:11:26,000 Затоа што компјутерот знае дека првата локација е 1485 01:11:26,000 --> 01:11:29,540 нула, еден, два, три. 1486 01:11:29,540 --> 01:11:33,890 >> И така, ако сакате да се оди од овој елемент на следниот елемент, 1487 01:11:33,890 --> 01:11:36,099 вие буквално, во ум компјутерот, само додадете. 1488 01:11:36,099 --> 01:11:39,140 Ако сакате да се оди на третиот елемент, само додадете one-- следниот елемент, само 1489 01:11:39,140 --> 01:11:40,290 додадете. 1490 01:11:40,290 --> 01:11:42,980 Сепак, во оваа верзија на приказната, да претпоставиме 1491 01:11:42,980 --> 01:11:46,080 компјутер моментално е во потрага во или се занимаваат со бројот 100. 1492 01:11:46,080 --> 01:11:49,770 Како да се дојде до следното одделение во одделение книга? 1493 01:11:49,770 --> 01:11:52,560 >> Мора да се земе седум чекори, кој е произволен. 1494 01:11:52,560 --> 01:11:58,120 За да се добие на следниот, ќе мора да се уште осум чекори за да добие до 15 години. 1495 01:11:58,120 --> 01:12:02,250 Со други зборови, тоа не е постојан јаз меѓу броеви, 1496 01:12:02,250 --> 01:12:04,857 и така тоа само зема компјутер повеќе време е поентата. 1497 01:12:04,857 --> 01:12:06,940 Компјутерот мора да бараат преку меморија, со цел 1498 01:12:06,940 --> 01:12:08,990 да се најде она што го барате. 1499 01:12:08,990 --> 01:12:14,260 >> Па со оглед на низа има тенденција да биде structure-- брзо податоци, затоа што 1500 01:12:14,260 --> 01:12:17,610 буквално може само да се направи едноставни аритметички и да добиете, каде сакате со додавање на една, 1501 01:12:17,610 --> 01:12:21,300 за instance-- на поврзани листа, ќе го жртвува таа карактеристика. 1502 01:12:21,300 --> 01:12:24,020 Вие не може да оди од првиот до втората од трето до четвртото место. 1503 01:12:24,020 --> 01:12:25,240 Мора да се следат на сајтот. 1504 01:12:25,240 --> 01:12:28,160 Вие мора да преземе повеќе чекори да се дојде до тие вредности, кои 1505 01:12:28,160 --> 01:12:30,230 Се чини дека се додавајќи цена. 1506 01:12:30,230 --> 01:12:35,910 Значи ние сме плаќаат цена, но она што беше функција која Дан беше бараат овде? 1507 01:12:35,910 --> 01:12:38,110 Што прави поврзани листа очигледно ни овозможи да се направи, 1508 01:12:38,110 --> 01:12:40,240 која е потеклото на ова особено приказна? 1509 01:12:40,240 --> 01:12:43,250 1510 01:12:43,250 --> 01:12:43,830 >> Токму така. 1511 01:12:43,830 --> 01:12:46,220 А динамичен големината на тоа. 1512 01:12:46,220 --> 01:12:48,040 Ние можеме да додадете на оваа листа. 1513 01:12:48,040 --> 01:12:51,430 Ние дури и може да се намали листата, па дека ние сме само да користи многу меморија 1514 01:12:51,430 --> 01:12:55,560 како што ние, всушност, сакаат и така ние никогаш не сме над-издвојување. 1515 01:12:55,560 --> 01:12:58,470 >> Сега само да биде навистина НИТ-picky, има скриени трошоци. 1516 01:12:58,470 --> 01:13:01,980 Значи, вие не треба само да ме убеди вас дека ова е една огромна Губитокот. 1517 01:13:01,980 --> 01:13:04,190 Има уште една скриени трошоци овде. 1518 01:13:04,190 --> 01:13:06,550 Во корист, да биде јасно, е дека ние се динамика. 1519 01:13:06,550 --> 01:13:10,359 Ако сакам друг елемент, јас само може да подготви него и го стави на број во таму. 1520 01:13:10,359 --> 01:13:12,150 А потоа можам да ја водат со слика тука, 1521 01:13:12,150 --> 01:13:14,970 со оглед на тоа овде, повторно, ако јас сум јас насликани во еден агол, 1522 01:13:14,970 --> 01:13:19,410 ако нешто друго веќе е користење меморијата тука, јас сум надвор од среќа. 1523 01:13:19,410 --> 01:13:21,700 Јас сум си насликани во аголот. 1524 01:13:21,700 --> 01:13:24,390 >> Но она што е скриено чини во оваа слика? 1525 01:13:24,390 --> 01:13:27,690 Тоа не е само на износот на времето што е потребно 1526 01:13:27,690 --> 01:13:29,870 да одам од тука до тука, што е за седум чекори, а потоа 1527 01:13:29,870 --> 01:13:32,820 осум чекори, што е повеќе од еден. 1528 01:13:32,820 --> 01:13:34,830 Што е уште еден скриен цена? 1529 01:13:34,830 --> 01:13:35,440 Не само време. 1530 01:13:35,440 --> 01:13:44,790 1531 01:13:44,790 --> 01:13:49,940 Дополнителни информации се потребни за да се постигне оваа слика. 1532 01:13:49,940 --> 01:13:53,210 >> Да, таа карта, тие мали парчиња хартија, како што се задржи опишувајќи ги како. 1533 01:13:53,210 --> 01:13:55,650 Овие arrows-- оние кои не се бесплатни. 1534 01:13:55,650 --> 01:13:57,660 А computer-- знаете што компјутер има. 1535 01:13:57,660 --> 01:13:58,790 Таа има нули и единици. 1536 01:13:58,790 --> 01:14:03,170 Ако сакате да ја претставува стрела или карта или број, треба некои меморија. 1537 01:14:03,170 --> 01:14:05,950 Па на другата цената што плаќаат за список на поврзани, 1538 01:14:05,950 --> 01:14:09,070 заеднички компјутерски науки ресурси, исто така е простор. 1539 01:14:09,070 --> 01:14:11,710 >> И навистина е така, па најчесто, меѓу размени 1540 01:14:11,710 --> 01:14:15,580 во процесот на дизајнирање на софтверското инженерство системи е време и space-- 1541 01:14:15,580 --> 01:14:18,596 се две од вашиот состојки, две на својата повеќето скапи состојки. 1542 01:14:18,596 --> 01:14:21,220 Ова ми се чини повеќе време бидејќи треба да го следи оваа карта, 1543 01:14:21,220 --> 01:14:25,730 но тоа е, исто така, ме чини повеќе простор затоа што мора да се задржи оваа карта наоколу. 1544 01:14:25,730 --> 01:14:28,730 Значи надеж, како што ние сме вид на дискутирано во текот на вчерашниот и денешниот ден, 1545 01:14:28,730 --> 01:14:31,720 е дека придобивките ќе ги надминуваат трошоците. 1546 01:14:31,720 --> 01:14:33,870 >> Но, нема очигледно решение овде. 1547 01:14:33,870 --> 01:14:35,870 Можеби тоа е better-- a la брз и валкан, 1548 01:14:35,870 --> 01:14:38,660 како Карим предложи earlier-- да се фрли меморија на проблемот. 1549 01:14:38,660 --> 01:14:42,520 Само купи повеќе меморија, мислам помалку тешки за решавање на проблемот, 1550 01:14:42,520 --> 01:14:44,595 и да ги реши на полесен начин. 1551 01:14:44,595 --> 01:14:46,720 И навистина порано, кога ние разговаравме за размени, 1552 01:14:46,720 --> 01:14:49,190 тоа не е простор во компјутер и време. 1553 01:14:49,190 --> 01:14:51,810 Тоа беше време инвеститорот, кој е уште еден ресурс. 1554 01:14:51,810 --> 01:14:54,829 >> Значи, повторно, тоа е оваа балансирање се обидува да се одлучи кои од тие работи 1555 01:14:54,829 --> 01:14:55,870 подготвени да потрошат си? 1556 01:14:55,870 --> 01:14:57,380 Кој е најмалку скап? 1557 01:14:57,380 --> 01:15:01,040 Што дава подобри резултати? 1558 01:15:01,040 --> 01:15:01,540 Да? 1559 01:15:01,540 --> 01:15:11,310 1560 01:15:11,310 --> 01:15:12,580 >> Навистина. 1561 01:15:12,580 --> 01:15:15,970 Во овој случај, ако сте претставуваат броеви во maps-- 1562 01:15:15,970 --> 01:15:18,820 тие се нарекуваат во многу јазици "Совети" или "адреси" - 1563 01:15:18,820 --> 01:15:20,390 што е двојно повеќе од простор. 1564 01:15:20,390 --> 01:15:24,390 Тоа не треба да биде толку лоша како двојно повеќе Во моментов ние сме само чување на броеви. 1565 01:15:24,390 --> 01:15:27,410 Да претпоставиме дека сме биле чување пациентот евиденција во hospital-- 1566 01:15:27,410 --> 01:15:30,870 па имињата Пирсон е, телефонски броеви, броеви на социјално осигурување, лекар 1567 01:15:30,870 --> 01:15:31,540 историја. 1568 01:15:31,540 --> 01:15:34,160 Ова поле може да биде многу, многу поголем, во кој случај 1569 01:15:34,160 --> 01:15:38,000 малечки покажувач, на адреса на следниот element-- тоа не е голема работа. 1570 01:15:38,000 --> 01:15:40,620 Тоа е толку раб чини дека не е важно. 1571 01:15:40,620 --> 01:15:43,210 Но, во овој случај, да, тоа е двојно зголемување. 1572 01:15:43,210 --> 01:15:45,290 Добро прашање. 1573 01:15:45,290 --> 01:15:47,900 >> Ајде да зборуваме за време на малку повеќе конкретно. 1574 01:15:47,900 --> 01:15:50,380 Што е трчање време на од пребарувањето оваа листа? 1575 01:15:50,380 --> 01:15:53,640 Да претпоставиме дека јас сакав да го бара преку сите оценки на учениците, 1576 01:15:53,640 --> 01:15:55,980 и таму е n оценки во оваа податочна структура. 1577 01:15:55,980 --> 01:15:58,830 Овде, исто така, може да се позајмуваат вокабуларот на претходно. 1578 01:15:58,830 --> 01:16:00,890 Ова е линеарна структура на податоци. 1579 01:16:00,890 --> 01:16:04,570 >> Биг О од n е она што е потребно за да до крајот на оваа структура на податоци, 1580 01:16:04,570 --> 01:16:08,410 whereas-- и не сме виделе ова before-- низа ви дава 1581 01:16:08,410 --> 01:16:13,555 она што се нарекува постојан време, што значи еден чекор или два чекори или 10 steps-- 1582 01:16:13,555 --> 01:16:14,180 не е важно. 1583 01:16:14,180 --> 01:16:15,440 Тоа е фиксен број. 1584 01:16:15,440 --> 01:16:17,440 Таа не треба ништо да се направи со големината на низата. 1585 01:16:17,440 --> 01:16:20,130 А причината за тоа, повторно, е случаен пристап. 1586 01:16:20,130 --> 01:16:23,180 На компјутерот може само веднаш Скокни на друга локација, 1587 01:16:23,180 --> 01:16:27,770 затоа што тие се сите исти Одалеченост од сè друго. 1588 01:16:27,770 --> 01:16:29,112 Не постои размислување кои се вклучени. 1589 01:16:29,112 --> 01:16:31,900 1590 01:16:31,900 --> 01:16:32,400 Во ред. 1591 01:16:32,400 --> 01:16:39,230 Значи, ако можам да се обидам наслика две финалето слики. 1592 01:16:39,230 --> 01:16:42,830 А многу чести и е позната како хаш табелата. 1593 01:16:42,830 --> 01:16:51,120 Значи за да се мотивираат оваа дискусија, дозволете ми да мислам за тоа како да го направите тоа. 1594 01:16:51,120 --> 01:16:52,610 >> Па, како за ова? 1595 01:16:52,610 --> 01:16:55,160 Да претпоставиме дека проблемот сакаме да го решиме сега 1596 01:16:55,160 --> 01:16:58,360 спроведува во dictionary-- па еден куп на англиски зборови 1597 01:16:58,360 --> 01:16:59,330 или нешто друго. 1598 01:16:59,330 --> 01:17:02,724 А целта е да се биде во можност да одговори прашања на формата е овој збор? 1599 01:17:02,724 --> 01:17:04,640 Значи сакате да се спроведе на проверка на правопис, само 1600 01:17:04,640 --> 01:17:07,220 како и физичко речникот кои може да се погледне на работите во. 1601 01:17:07,220 --> 01:17:10,490 Да претпоставиме дека јас да го направите ова со низа. 1602 01:17:10,490 --> 01:17:12,590 Јас би можеле да го направите тоа. 1603 01:17:12,590 --> 01:17:20,756 >> И да претпоставиме зборовите се јаболко и банана и диња. 1604 01:17:20,756 --> 01:17:23,330 1605 01:17:23,330 --> 01:17:26,465 И не можам да се сетам на овошје кои почнуваат со г, па ние сме само 1606 01:17:26,465 --> 01:17:27,590 ќе има три плодови. 1607 01:17:27,590 --> 01:17:31,510 Значи ова е низа, и ние сме складирање на сите од овие зборови 1608 01:17:31,510 --> 01:17:34,200 во овој речник како низа. 1609 01:17:34,200 --> 01:17:39,350 Прашањето, тогаш, е како на друго место би можеле да се сместат овие информации? 1610 01:17:39,350 --> 01:17:43,160 >> Па, јас сум вид на мамење тука, затоа што секоја од овие букви во зборот 1611 01:17:43,160 --> 01:17:44,490 е навистина индивидуална бајт. 1612 01:17:44,490 --> 01:17:46,740 Значи, ако јас навистина сакаше да биде НИТ-picky, јас навистина треба да 1613 01:17:46,740 --> 01:17:49,600 се дели на овој горе во многу помали делови од меморијата, 1614 01:17:49,600 --> 01:17:51,289 а ние може да го направи токму тоа. 1615 01:17:51,289 --> 01:17:53,580 Но, ние се случува да се кандидира во истиот проблем како порано. 1616 01:17:53,580 --> 01:17:56,674 Што ако, како Merriam Webster или Оксфорд не секој year-- додаваат зборовите 1617 01:17:56,674 --> 01:17:59,340 на dictionary-- ние не мора да сакаат да се наслика 1618 01:17:59,340 --> 01:18:00,780 во еден агол со низа? 1619 01:18:00,780 --> 01:18:05,710 >> Така, наместо, можеби попаметен приод е да се стави на Apple во своите јазол или кутија, 1620 01:18:05,710 --> 01:18:11,190 како што би рекле, банана, и тогаш тука имаме диња. 1621 01:18:11,190 --> 01:18:14,990 1622 01:18:14,990 --> 01:18:16,790 И ние низа овие работи заедно. 1623 01:18:16,790 --> 01:18:19,980 Значи ова е низа, и ова е поврзана листа. 1624 01:18:19,980 --> 01:18:23,300 Ако не сосема може да се види, тоа само вели: "низа", а тоа вели: "листа". 1625 01:18:23,300 --> 01:18:25,780 >> Значи ние треба исто Точниот прашања како и досега, 1626 01:18:25,780 --> 01:18:28,600 при што сега имаме динамика во нашата листа поврзани. 1627 01:18:28,600 --> 01:18:31,090 Но ние имаме прилично бавен речникот. 1628 01:18:31,090 --> 01:18:32,870 Да претпоставиме дека сакам да се погледне до зборот. 1629 01:18:32,870 --> 01:18:35,430 Тоа би можело да ми се големи О од n чекори, бидејќи зборот би можел 1630 01:18:35,430 --> 01:18:37,840 да бидат сите на начин на крајот на листата, како диња. 1631 01:18:37,840 --> 01:18:40,600 И излегува дека во програмирање, вид 1632 01:18:40,600 --> 01:18:42,700 на светиот грал на податоци структури, е нешто 1633 01:18:42,700 --> 01:18:46,620 кој ви дава постојана време како низа 1634 01:18:46,620 --> 01:18:50,870 но дека се уште ви дава динамика. 1635 01:18:50,870 --> 01:18:52,940 >> Значи ние можеме да го имаат најдоброто од двата света? 1636 01:18:52,940 --> 01:18:55,570 И навистина, има нешто наречен хаш табелата 1637 01:18:55,570 --> 01:18:59,320 кој ви овозможува да го прават токму дека, иако околу. 1638 01:18:59,320 --> 01:19:03,140 Хаш табелата е познавач структура на податоците кои ги 1639 01:19:03,140 --> 01:19:06,340 може да го сметаме како комбинација на една array-- 1640 01:19:06,340 --> 01:19:12,390 и јас одам да го нацрта како this-- и поврзани листи 1641 01:19:12,390 --> 01:19:17,310 дека ќе се повлече како овој овде. 1642 01:19:17,310 --> 01:19:19,760 >> И начинот на кој оваа работа дела е како што следува. 1643 01:19:19,760 --> 01:19:23,310 1644 01:19:23,310 --> 01:19:29,540 Ако ова now-- хаш table-- е мојот трет податочна структура, 1645 01:19:29,540 --> 01:19:32,590 и сакам да ги чувате зборовите во оваа, јас не 1646 01:19:32,590 --> 01:19:35,440 сакате да ги чувате само сите зборови да се врати назад за да се врати да се врати. 1647 01:19:35,440 --> 01:19:37,430 Сакам да се потпора на некои парче на информации 1648 01:19:37,430 --> 01:19:40,330 за зборовите кои ќе ги споделите ми да го добиете, каде тоа е побрзо. 1649 01:19:40,330 --> 01:19:43,666 >> Па со оглед на зборовите од јаболко и банана и диња, 1650 01:19:43,666 --> 01:19:45,040 Јас намерно избра овие зборови. 1651 01:19:45,040 --> 01:19:45,340 Зошто? 1652 01:19:45,340 --> 01:19:47,631 Што е еден вид на основа различно за три? 1653 01:19:47,631 --> 01:19:49,950 1654 01:19:49,950 --> 01:19:51,484 Што е очигледно? 1655 01:19:51,484 --> 01:19:52,900 Тие почнуваат со различни букви. 1656 01:19:52,900 --> 01:19:53,900 >> Па да знаете што? 1657 01:19:53,900 --> 01:19:57,120 Наместо да се стави сите мои зборови во исто кофа, така да се каже, 1658 01:19:57,120 --> 01:20:00,390 како во една голема листа, зошто да не Јас барем да се обидат оптимизација 1659 01:20:00,390 --> 01:20:04,180 и направи мојот листи 1/26 толку долго. 1660 01:20:04,180 --> 01:20:07,440 А краен оптимизација може да биде зошто не 1661 01:20:07,440 --> 01:20:10,650 I-- при внесување на збор во оваа податочна структура, 1662 01:20:10,650 --> 01:20:14,300 во меморијата на компјутерот, зошто не го ставам сите 'а' зборови тука, 1663 01:20:14,300 --> 01:20:17,270 сите зборови "b" тука, и сите "c" зборови тука? 1664 01:20:17,270 --> 01:20:24,610 Значи ова завршува ставање јаболко тука, тука банана, диња тука, 1665 01:20:24,610 --> 01:20:25,730 и така натаму. 1666 01:20:25,730 --> 01:20:31,700 >> И ако имам дополнителни зборот like-- што е друг? 1667 01:20:31,700 --> 01:20:36,640 Јаболко, банана, круша. 1668 01:20:36,640 --> 01:20:39,370 Секој мисли на овошје која започнува со a, b, c или? 1669 01:20:39,370 --> 01:20:40,570 Blueberry-- совршена. 1670 01:20:40,570 --> 01:20:43,990 Тоа се случува да се заокружи тука. 1671 01:20:43,990 --> 01:20:47,530 И така ние се чини дека имаат малку подобро решение, 1672 01:20:47,530 --> 01:20:50,820 затоа што сега ако сакам за да пребарувате за Apple, јас 1673 01:20:50,820 --> 01:20:53,200 first-- јас не само нурне во мојот податоци структура. 1674 01:20:53,200 --> 01:20:54,850 Јас не се нурне во меморијата на компјутерот ми е. 1675 01:20:54,850 --> 01:20:56,530 Јас прв пат се погледне на првата буква. 1676 01:20:56,530 --> 01:20:58,610 >> И тоа е она што на компјутер научник би рекол. 1677 01:20:58,610 --> 01:21:00,760 Вие хаш во вашите податоци структура. 1678 01:21:00,760 --> 01:21:04,100 Ќе се земе вашиот влез, кои во овој случај е збор како јаболко. 1679 01:21:04,100 --> 01:21:07,150 Можете да го анализира, да гледа во на првата буква во овој случај, 1680 01:21:07,150 --> 01:21:08,340 а со тоа hashing. 1681 01:21:08,340 --> 01:21:10,950 Hashing е општ термин со кој ќе се земе нешто како влез 1682 01:21:10,950 --> 01:21:12,116 и ќе се произведуваат некои излез. 1683 01:21:12,116 --> 01:21:15,090 И излез во тој случај е локацијата 1684 01:21:15,090 --> 01:21:18,150 сакате да пребарувате, првиот локација, втората локација, на третото место. 1685 01:21:18,150 --> 01:21:22,160 Значи влезот е јаболко, излезот е во прв план. 1686 01:21:22,160 --> 01:21:25,054 Влезот е банана, на излезот треба да биде втор. 1687 01:21:25,054 --> 01:21:27,220 Влезот е диња, излезот треба да биде на третото место. 1688 01:21:27,220 --> 01:21:30,320 Влезот е боровинки, на излез треба повторно да биде втор. 1689 01:21:30,320 --> 01:21:34,010 И тоа е она што ви помага да се Кратенки преку вашата меморија 1690 01:21:34,010 --> 01:21:39,050 со цел да се дојде до зборови или податоци поефикасно. 1691 01:21:39,050 --> 01:21:43,330 >> Сега тоа намалување на одредување на нашето време потенцијално од колку што е еден од 26, 1692 01:21:43,330 --> 01:21:45,850 затоа што ако се претпостави дека ќе има толку многу "а" зборови како "Z" 1693 01:21:45,850 --> 01:21:48,080 зборови како зборови на "П", кој не е навистина realistic-- 1694 01:21:48,080 --> 01:21:50,830 ви се случува да имаат искривувања низ одредени букви од alphabet-- 1695 01:21:50,830 --> 01:21:53,204 но ова ќе биде постепена пристап кој не дозволува 1696 01:21:53,204 --> 01:21:55,930 да се добие на зборовите на многу побрзо. 1697 01:21:55,930 --> 01:21:59,660 И во реалноста, на еден софистициран програма, Googles на светот, 1698 01:21:59,660 --> 01:22:02,180 на Фејсбук кои на world-- тие ќе го користат хаш табелата 1699 01:22:02,180 --> 01:22:03,740 за многу различни цели. 1700 01:22:03,740 --> 01:22:06,590 Но, тие не би биле толку наивни само да се погледне на првата буква 1701 01:22:06,590 --> 01:22:09,700 во јаболко или банана или круша или диња, 1702 01:22:09,700 --> 01:22:13,420 бидејќи, како што може да се види овие листи се уште може да се добие долго. 1703 01:22:13,420 --> 01:22:17,130 >> И така ова се уште може да се вид на linear-- така вид на бавно, 1704 01:22:17,130 --> 01:22:19,980 како и со голема О од n што зборувавме порано. 1705 01:22:19,980 --> 01:22:25,290 Значи она што вистински добар хаш табелата ќе do-- тоа ќе има многу поголема низа. 1706 01:22:25,290 --> 01:22:28,574 И тоа ќе се користи многу повеќе софистицирани функција hashing, 1707 01:22:28,574 --> 01:22:30,240 така што тоа не само погледнете во "А". 1708 01:22:30,240 --> 01:22:35,480 Можеби тоа изгледа на "А-P-P-л-е" и на некој начин се претвора овие пет букви 1709 01:22:35,480 --> 01:22:38,400 во локацијата каде што Apple треба да се чуваат. 1710 01:22:38,400 --> 01:22:42,660 Ние сме само наивно користење на буквата "а" сам, затоа што тоа е убав и едноставен. 1711 01:22:42,660 --> 01:22:44,600 >> Но, хаш табелата, На крајот, може да се мисли 1712 01:22:44,600 --> 01:22:47,270 на како комбинација на низа, од кои секоја 1713 01:22:47,270 --> 01:22:51,700 има поврзани листа кои идеално треба да биде што е можно пократок. 1714 01:22:51,700 --> 01:22:54,364 И ова не е очигледно решение. 1715 01:22:54,364 --> 01:22:57,280 Всушност, голем дел од фино подесување што се случува под хаубата кога 1716 01:22:57,280 --> 01:22:59,654 спроведување на овие видови на софистицирани структури на податоци 1717 01:22:59,654 --> 01:23:01,640 е она што е во право должината на низата? 1718 01:23:01,640 --> 01:23:03,250 Кој е вистинскиот хеш функција? 1719 01:23:03,250 --> 01:23:04,830 Како да се чувате работите во меморијата? 1720 01:23:04,830 --> 01:23:07,249 >> Но сфати колку брзо овој вид на дискусија 1721 01:23:07,249 --> 01:23:10,540 ескалираше, или толку далеку што тоа е вид на над глава во овој момент, кој 1722 01:23:10,540 --> 01:23:11,360 е во ред. 1723 01:23:11,360 --> 01:23:18,820 Но, ние започна, да се потсетиме, со вистински нешто на ниско ниво и електронски. 1724 01:23:18,820 --> 01:23:20,819 И така ова повторно е ова Темата на апстракција, 1725 01:23:20,819 --> 01:23:23,610 кога еднаш ќе почнете да ги преземат за готово, во ред, јас сум it-- стигнавме таму е 1726 01:23:23,610 --> 01:23:26,680 виртуелна меморија, во ред, разбрав, секој физичка локација има адреса, 1727 01:23:26,680 --> 01:23:29,910 Добро, јас го зедов тоа, што може да претставува тие адреси како arrows-- 1728 01:23:29,910 --> 01:23:34,650 можете многу брзо да почне да имаат пософистицирани разговори кои 1729 01:23:34,650 --> 01:23:38,360 на крајот се чини дека се ни овозможи за решавање на проблеми како што се пребарување 1730 01:23:38,360 --> 01:23:41,620 и сортирање поефикасно. 1731 01:23:41,620 --> 01:23:44,190 И остатокот увери, too-- бидејќи сметам дека ова 1732 01:23:44,190 --> 01:23:48,700 е најдлабокото ние сме поминале во некои на овие CS теми proper-- имаме 1733 01:23:48,700 --> 01:23:51,880 направи во еден ден и половина на овој истакне она што вообичаено може да се направи во текот 1734 01:23:51,880 --> 01:23:55,520 текот на осум недели во еден семестар. 1735 01:23:55,520 --> 01:23:59,670 >> За било какви прашања во врска со овие? 1736 01:23:59,670 --> 01:24:01,100 Не? 1737 01:24:01,100 --> 01:24:01,940 Во ред. 1738 01:24:01,940 --> 01:24:05,610 Па, зошто да не се откажеш таму, започне ручек неколку минути порано, 1739 01:24:05,610 --> 01:24:07,052 продолжи и во само за еден час? 1740 01:24:07,052 --> 01:24:08,760 И јас ќе траат малку со прашања. 1741 01:24:08,760 --> 01:24:11,343 Тогаш јас ќе одам да мора да одат да потрае неколку повици ако тоа е во ред. 1742 01:24:11,343 --> 01:24:15,000 Јас ќе се сврти на некоја музика во меѓувреме, но ручек треба да биде околу аголот. 1743 01:24:15,000 --> 01:24:17,862