1 00:00:00,000 --> 00:00:11,100 2 00:00:11,100 --> 00:00:12,300 >> SPEAKER 1: Хей всички! 3 00:00:12,300 --> 00:00:13,890 Добре дошли отново в раздел. 4 00:00:13,890 --> 00:00:17,480 Толкова се радвам да видя толкова много от вас, както тук, и всеки, който гледа онлайн. 5 00:00:17,480 --> 00:00:18,760 6 00:00:18,760 --> 00:00:20,920 Така че, както обикновено обратно дошли. 7 00:00:20,920 --> 00:00:24,360 Надявам се, че всички сте имали прекрасен уикенд, пълен с почивка, релаксация. 8 00:00:24,360 --> 00:00:26,026 Вчера беше красиво навън. 9 00:00:26,026 --> 00:00:27,525 Така че, надявам се да се радва на открито. 10 00:00:27,525 --> 00:00:28,840 11 00:00:28,840 --> 00:00:30,610 >> Така че на първо няколко съобщения. 12 00:00:30,610 --> 00:00:31,920 13 00:00:31,920 --> 00:00:32,700 Окачествяването. 14 00:00:32,700 --> 00:00:37,350 Така че, повечето от вас трябва да са придобили едно приятел от мен за вашата Scratch Pset, 15 00:00:37,350 --> 00:00:39,920 както и класификация за Pset 1. 16 00:00:39,920 --> 00:00:41,000 17 00:00:41,000 --> 00:00:42,220 Така, само няколко неща. 18 00:00:42,220 --> 00:00:45,150 Не забравяйте да използвате check50 в style50. 19 00:00:45,150 --> 00:00:47,250 Те са предназначени да бъдат ресурси за вас, момчета, 20 00:00:47,250 --> 00:00:50,660 да се уверите, че сте се най-много точки, колкото можете 21 00:00:50,660 --> 00:00:52,390 без ненужно да ги губи. 22 00:00:52,390 --> 00:00:54,407 Така че, неща като стил са много важни. 23 00:00:54,407 --> 00:00:55,740 Ние ще да излети за него. 24 00:00:55,740 --> 00:00:58,115 Някои от вас може би вече Забелязах, че от вашия Pset. 25 00:00:58,115 --> 00:00:58,920 26 00:00:58,920 --> 00:01:01,450 И check50 е просто наистина лесен начин да се уверите, 27 00:01:01,450 --> 00:01:05,050 че ние всъщност връщане какво трябва да бъдат върнати на потребителя, 28 00:01:05,050 --> 00:01:06,690 и че всичко работи правилно. 29 00:01:06,690 --> 00:01:08,690 30 00:01:08,690 --> 00:01:12,040 >> На втората бележка, се уверете, че качване неща се до правилната папка. 31 00:01:12,040 --> 00:01:14,470 Това прави живота ми просто Малко по-трудно 32 00:01:14,470 --> 00:01:18,836 ако качите Pset 2 в Pset 1 защото когато изтегля неща, 33 00:01:18,836 --> 00:01:20,085 те не се изтегля, правилно. 34 00:01:20,085 --> 00:01:21,690 35 00:01:21,690 --> 00:01:24,560 И аз знам, че е малко деформирани в системата, за да свикна, 36 00:01:24,560 --> 00:01:26,950 но просто е супер внимателни, дори и само за мен, 37 00:01:26,950 --> 00:01:30,080 така че, когато вие получавате имейли в като 2 часа сутринта и аз съм оценяване. 38 00:01:30,080 --> 00:01:33,710 Ако не е, защото аз трябва да гледам всичко около вашия Pset. 39 00:01:33,710 --> 00:01:34,440 Cool. 40 00:01:34,440 --> 00:01:37,270 >> Знам, че е рано, но аз напълно се е излетяло охрана 41 00:01:37,270 --> 00:01:40,800 от есе, което се дължи този петък, че моите професори бяха точно като, о, да. 42 00:01:40,800 --> 00:01:42,550 Не забравяйте, че имате есе дължи в петък. 43 00:01:42,550 --> 00:01:45,780 Така че, аз знам, никой не се интересува от да се мисли за midterms, 44 00:01:45,780 --> 00:01:50,620 но първия си тест е на 15-ти октомври който октомври, не е от тази седмица. 45 00:01:50,620 --> 00:01:53,290 Така че, може да е по-рано отколкото сте очаквали е всичко. 46 00:01:53,290 --> 00:01:57,510 Така, че не сте хвърлен неподготвен, когато Споменавам раздел, че през следващата седмица, о, 47 00:01:57,510 --> 00:02:00,560 викторината си следващата седмица, аз мислех, Аз ще ви дам малко повече 48 00:02:00,560 --> 00:02:01,500 на главите сега. 49 00:02:01,500 --> 00:02:02,970 50 00:02:02,970 --> 00:02:04,660 >> Така че, проблема си зададете, номер три. 51 00:02:04,660 --> 00:02:07,070 Колко хора са чели спец от любопитство? 52 00:02:07,070 --> 00:02:08,560 53 00:02:08,560 --> 00:02:09,199 OK. 54 00:02:09,199 --> 00:02:10,229 Имаме една двойка. 55 00:02:10,229 --> 00:02:12,320 Вид надолу от миналата седмица, но това е ОК. 56 00:02:12,320 --> 00:02:13,650 Знам, че беше красиво навън. 57 00:02:13,650 --> 00:02:15,120 58 00:02:15,120 --> 00:02:16,660 Така Break Out. 59 00:02:16,660 --> 00:02:21,010 Определено, след като се направи днес четете спец поне 60 00:02:21,010 --> 00:02:25,240 опитайте като свалянето разпространение на кодове и бягане 61 00:02:25,240 --> 00:02:27,430 като първоначална нещо, което те ви помоля да. 62 00:02:27,430 --> 00:02:28,681 63 00:02:28,681 --> 00:02:32,590 Тъй като ние сме с помощта разпределение код и библиотека 64 00:02:32,590 --> 00:02:36,790 че сме били само using-- --It само За втори път сме правили този Pset, 65 00:02:36,790 --> 00:02:38,650 луди неща могат да се случат с вашия уред, 66 00:02:38,650 --> 00:02:41,370 и искате да откриете, че сега в сравнение с по-късно. 67 00:02:41,370 --> 00:02:45,570 >> Защото, ако това е в четвъртък вечер или това е Сряда вечер и по някаква причина 68 00:02:45,570 --> 00:02:48,912 Вашият уред просто не прави искате да стартирате с библиотеката 69 00:02:48,912 --> 00:02:50,620 или с разпределението код, това означава, 70 00:02:50,620 --> 00:02:52,309 вие дори не може да започне да прави кодирането. 71 00:02:52,309 --> 00:02:54,100 Тъй като не може да се провери да видим дали тя работи. 72 00:02:54,100 --> 00:02:55,975 Вие не ще бъде в състояние за да видите дали той съставя. 73 00:02:55,975 --> 00:03:00,500 Искаш ли да се грижи за тези, които в началото седмицата, когато все още можете да се свържете с мен 74 00:03:00,500 --> 00:03:03,100 или някоя от другите TFS, и можем да получим тези фиксирани. 75 00:03:03,100 --> 00:03:05,410 Тъй като това са въпроси които се случва да ви спре 76 00:03:05,410 --> 00:03:07,120 от извършване на реален напредък. 77 00:03:07,120 --> 00:03:10,055 Това не е като един бъг, че може просто вид прескачам. 78 00:03:10,055 --> 00:03:10,712 79 00:03:10,712 --> 00:03:13,420 Ако имате проблеми с вашия уред или разпространение на кодове, 80 00:03:13,420 --> 00:03:16,211 Наистина ли искате да се вземат, че грижи за по-рано, отколкото късно. 81 00:03:16,211 --> 00:03:20,410 Така че, дори ако не сте ще всъщност започнете кодиране, изтеглите разпределението 82 00:03:20,410 --> 00:03:24,040 код, прочетете спец, уверете се, всичко работи там. 83 00:03:24,040 --> 00:03:25,134 OK? 84 00:03:25,134 --> 00:03:27,675 Ако само можете да направите това, аз Обещавам живота ви ще бъде по-лесно. 85 00:03:27,675 --> 00:03:28,800 86 00:03:28,800 --> 00:03:31,410 И така, вие вероятно ще да го направя точно сега, нали? 87 00:03:31,410 --> 00:03:32,100 OK. 88 00:03:32,100 --> 00:03:33,950 Така че, на всички въпроси там? 89 00:03:33,950 --> 00:03:35,850 Всички логистични неща? 90 00:03:35,850 --> 00:03:36,910 Всеки е добре? 91 00:03:36,910 --> 00:03:38,270 OK. 92 00:03:38,270 --> 00:03:41,700 >> Общи условия за тези от ви в стаята и онлайн. 93 00:03:41,700 --> 00:03:45,437 Отивам да се опитва да превключвате между PowerPoint в уреда 94 00:03:45,437 --> 00:03:47,270 защото ние ще да се правят някои кодиране 95 00:03:47,270 --> 00:03:53,630 днес от популярни търсенето на анонимните анкета предложение изпратих миналата седмица. 96 00:03:53,630 --> 00:03:55,480 Така че, ние ще се правят някои кодиране. 97 00:03:55,480 --> 00:03:57,800 Така че, ако вие също искат на огън на вашите уреди, 98 00:03:57,800 --> 00:04:02,910 и вие трябва да имам имейл от мен, с примерен файл. 99 00:04:02,910 --> 00:04:04,310 Моля, чувствайте се свободни да правят това. 100 00:04:04,310 --> 00:04:07,340 >> Така че, ние ще говорим за GDB, което е дебъгер. 101 00:04:07,340 --> 00:04:09,970 Това ще ви помогне вид разбера къде 102 00:04:09,970 --> 00:04:11,860 нещата са наред в кода си. 103 00:04:11,860 --> 00:04:15,370 Това е наистина само един начин да се засили чрез вашия код, както това се случва, 104 00:04:15,370 --> 00:04:19,100 и да бъде в състояние да отпечатате променливи или да видим какво всъщност се случва 105 00:04:19,100 --> 00:04:22,980 под капака стихове си програма само с тичане, това е като Faulting, 106 00:04:22,980 --> 00:04:25,030 и вие сте като няма представа какво точно се е случило тук. 107 00:04:25,030 --> 00:04:26,730 Аз не знам какъв ред се провали в. 108 00:04:26,730 --> 00:04:29,040 Аз не знам къде се обърка. 109 00:04:29,040 --> 00:04:31,280 Така че, GDB ще ви помогне с това. 110 00:04:31,280 --> 00:04:35,240 Също така, ако сте решили да продължи да, и да вземат 61, 111 00:04:35,240 --> 00:04:38,430 това ще е много, наистина да ви бъде най-добър приятел, защото аз мога да ви кажа 112 00:04:38,430 --> 00:04:40,840 защото аз ще съм през този клас. 113 00:04:40,840 --> 00:04:43,620 >> Отиваме да разгледаме двоичен търсене, което, ако вие не забравяйте 114 00:04:43,620 --> 00:04:47,540 великият пример на телефонния указател спектакъл от класа. 115 00:04:47,540 --> 00:04:50,620 Ние ще се прилагане на това, и разхождах из че малко повече, 116 00:04:50,620 --> 00:04:54,650 и след това отиваме през четири различни видове, които са Bubble, 117 00:04:54,650 --> 00:04:56,285 Подбор, вмъкване и Merge. 118 00:04:56,285 --> 00:04:57,830 119 00:04:57,830 --> 00:04:58,330 Cool. 120 00:04:58,330 --> 00:05:00,390 Така че, GDB, както споменах, е дебъгер. 121 00:05:00,390 --> 00:05:01,400 122 00:05:01,400 --> 00:05:09,370 И те са вид на големите неща, на големите функции или команди 123 00:05:09,370 --> 00:05:13,240 че можете да използвате в GDB, и аз ще ходя вас чрез демонстрация на това в секунда. 124 00:05:13,240 --> 00:05:15,360 >> Така че, това не е просто ще остане абстрактен. 125 00:05:15,360 --> 00:05:18,000 Ще се опитам и да го направи като бетон е възможно за вас, момчета. 126 00:05:18,000 --> 00:05:19,870 Така че, да се счупи. 127 00:05:19,870 --> 00:05:22,200 Той или ще бъде почивка като някои номер, който 128 00:05:22,200 --> 00:05:26,900 представлява линия във вашата програма, или можете да назовем функция. 129 00:05:26,900 --> 00:05:30,150 Така че, ако ти кажа пробие основната, тя ще спре на главната, 130 00:05:30,150 --> 00:05:32,400 и нека ви преведе през тази функция. 131 00:05:32,400 --> 00:05:36,350 >> Също така, ако имате някаква външна функционира като Swap или Cube, 132 00:05:36,350 --> 00:05:38,450 че ние погледна миналата седмица. 133 00:05:38,450 --> 00:05:41,780 Ако ви кажа, наруши една от тези, всеки път, когато програмата ви удари, че 134 00:05:41,780 --> 00:05:44,290 тя ще изчака, за да кажи какво да правя. 135 00:05:44,290 --> 00:05:47,860 Преди това само ще изпълнява, така че в действителност може да се оттегли във вътрешността на функцията 136 00:05:47,860 --> 00:05:49,020 и да видим какво се случва. 137 00:05:49,020 --> 00:05:50,370 138 00:05:50,370 --> 00:05:53,515 Така че, Next, просто прескача Следващата линия, преминава функции. 139 00:05:53,515 --> 00:05:54,730 140 00:05:54,730 --> 00:05:55,560 Стъпка. 141 00:05:55,560 --> 00:05:56,810 Те всички са малко абстрактно. 142 00:05:56,810 --> 00:06:00,530 Така че, аз съм просто ще да тече през тях, но вие ще ги видите в употреба в секунда. 143 00:06:00,530 --> 00:06:01,810 >> Стъпка в дадена функция. 144 00:06:01,810 --> 00:06:04,170 Така че, както казах, като с Swap, че ще 145 00:06:04,170 --> 00:06:07,110 ви позволи да всъщност, като че ли сте като физически засилване вътре, 146 00:06:07,110 --> 00:06:10,990 можете да се забъркваш с тези променливи, печат какви са те, да видим какво се случва. 147 00:06:10,990 --> 00:06:12,140 148 00:06:12,140 --> 00:06:14,830 Списък буквално само ще отпечата от заобикалящата код. 149 00:06:14,830 --> 00:06:17,570 Така че, ако имате нещо да забравя когато сте във вашата програма, 150 00:06:17,570 --> 00:06:19,880 или се чудите това, което се случва около него, 151 00:06:19,880 --> 00:06:23,790 това просто ще отпечатате сегмент от искал пет или шест линии около него. 152 00:06:23,790 --> 00:06:26,080 Така че, можете да се ориентирате за това къде се намирате. 153 00:06:26,080 --> 00:06:27,230 154 00:06:27,230 --> 00:06:28,650 >> Печат някои променлива. 155 00:06:28,650 --> 00:06:34,590 Така че, ако имате ключа като в Цезар, че ние ще разгледаме. 156 00:06:34,590 --> 00:06:36,220 Може да се каже Print Key във всеки един момент. 157 00:06:36,220 --> 00:06:40,070 Тя ще ви кажа каква е стойността е толкова че може би някъде по пътя, 158 00:06:40,070 --> 00:06:42,070 можете презаписано ключ. 159 00:06:42,070 --> 00:06:45,495 Всъщност можете да кажете, че тъй като всъщност може да се отбележи, че стойност. 160 00:06:45,495 --> 00:06:46,500 161 00:06:46,500 --> 00:06:48,780 >> В местните жители, само отпечатъците вашите локални променливи. 162 00:06:48,780 --> 00:06:53,120 Така че, по всяко време, вие сте в една линия, и просто искате да видите като, о. 163 00:06:53,120 --> 00:06:54,270 Каква е моята ли? 164 00:06:54,270 --> 00:06:57,020 Каква е тази ключова ценност че аз се инициализира тук? 165 00:06:57,020 --> 00:06:58,537 Какво е посланието на този етап? 166 00:06:58,537 --> 00:07:00,370 Тя просто ще отпечата всички на тези, така че да 167 00:07:00,370 --> 00:07:04,330 не трябва да се индивидуално се каже, Print I. Print Message. 168 00:07:04,330 --> 00:07:04,970 Print Key. 169 00:07:04,970 --> 00:07:06,190 170 00:07:06,190 --> 00:07:07,700 И тогава дисплея. 171 00:07:07,700 --> 00:07:10,370 Какво, че прави, е като ви стъпка чрез програмата, 172 00:07:10,370 --> 00:07:13,980 тя просто ще се уверите, че това е показване на някаква определена променлива 173 00:07:13,980 --> 00:07:14,780 във всеки един момент. 174 00:07:14,780 --> 00:07:17,160 Така че можете also-- --it е вид на пряк път, когато 175 00:07:17,160 --> 00:07:19,530 не е нужно да продължава напред, като, о. 176 00:07:19,530 --> 00:07:23,150 Print Key или Print I. Тя просто автоматично ще го направя за теб. 177 00:07:23,150 --> 00:07:25,959 >> Така че, с това, ние отиваме да видим как това отива. 178 00:07:25,959 --> 00:07:28,000 Отивам да се опита и да преминат на моя уред. 179 00:07:28,000 --> 00:07:30,200 180 00:07:30,200 --> 00:07:31,271 Виж, ако мога да направя това. 181 00:07:31,271 --> 00:07:31,770 All. 182 00:07:31,770 --> 00:07:40,970 183 00:07:40,970 --> 00:07:42,370 Ние просто ще го отразяват. 184 00:07:42,370 --> 00:07:44,530 Няма нищо по-луд на моя лаптоп все пак. 185 00:07:44,530 --> 00:07:49,600 186 00:07:49,600 --> 00:07:50,100 OK. 187 00:07:50,100 --> 00:07:57,030 188 00:07:57,030 --> 00:08:01,054 Това трябва да бъде тази. 189 00:08:01,054 --> 00:08:01,795 Тя е толкова малка. 190 00:08:01,795 --> 00:08:03,730 191 00:08:03,730 --> 00:08:05,120 Да видим дали можем да направим това. 192 00:08:05,120 --> 00:08:09,970 193 00:08:09,970 --> 00:08:10,940 >> OK. 194 00:08:10,940 --> 00:08:15,305 Алис е очевидно борейки тук само за малко, 195 00:08:15,305 --> 00:08:17,995 но ние ще го получите в Моменто. 196 00:08:17,995 --> 00:08:20,810 197 00:08:20,810 --> 00:08:22,020 OK. 198 00:08:22,020 --> 00:08:25,900 Ние просто ще се увеличи тази. 199 00:08:25,900 --> 00:08:28,770 200 00:08:28,770 --> 00:08:29,380 OK. 201 00:08:29,380 --> 00:08:31,679 Може ли всеки вид се види, че? 202 00:08:31,679 --> 00:08:32,470 Може би малко по-малко? 203 00:08:32,470 --> 00:08:33,594 Знам, че е малко по-малък. 204 00:08:33,594 --> 00:08:34,570 205 00:08:34,570 --> 00:08:37,530 Вие не може съвсем да разбера как да се направи това по-голям. 206 00:08:37,530 --> 00:08:38,350 Ако някой знае. 207 00:08:38,350 --> 00:08:40,309 Някой знае ли как да се направи по-голям? 208 00:08:40,309 --> 00:08:40,932 OK. 209 00:08:40,932 --> 00:08:42,140 Отиваме да се търкаля с него. 210 00:08:42,140 --> 00:08:45,801 Няма значение, така или иначе, защото това е просто това е код, който вие трябва да 211 00:08:45,801 --> 00:08:46,300 имаме. 212 00:08:46,300 --> 00:08:48,310 >> Какво е по-важно е терминал тук. 213 00:08:48,310 --> 00:08:52,840 214 00:08:52,840 --> 00:08:58,690 И ние имаме тук Защо е толкова малка? 215 00:08:58,690 --> 00:09:02,325 216 00:09:02,325 --> 00:09:02,825 Настройки. 217 00:09:02,825 --> 00:09:07,920 218 00:09:07,920 --> 00:09:08,420 О. 219 00:09:08,420 --> 00:09:09,500 True Айк. 220 00:09:09,500 --> 00:09:10,880 Как е това? 221 00:09:10,880 --> 00:09:11,770 От там. 222 00:09:11,770 --> 00:09:19,370 223 00:09:19,370 --> 00:09:21,810 Това ли е по-добре за всички? 224 00:09:21,810 --> 00:09:22,525 OK ,. 225 00:09:22,525 --> 00:09:23,025 Cool. 226 00:09:23,025 --> 00:09:25,830 227 00:09:25,830 --> 00:09:28,220 >> Знаеш ли, когато сте в CS технически трудности клас 228 00:09:28,220 --> 00:09:32,971 са вид на част от the-- Така че, нека да изчистите това. 229 00:09:32,971 --> 00:09:33,470 OK. 230 00:09:33,470 --> 00:09:38,060 Така че, точно тук, в раздел, което имахме тук. 231 00:09:38,060 --> 00:09:40,830 Цезар е изпълним файл. 232 00:09:40,830 --> 00:09:41,800 Така че го е направил. 233 00:09:41,800 --> 00:09:46,370 Така че, едно нещо, което да се реализира с GDB е че тя работи само на изпълними файлове. 234 00:09:46,370 --> 00:09:48,040 Така че, не можете да го стартирате по dotsy. 235 00:09:48,040 --> 00:09:50,532 Трябва наистина да се направи уверите, че вашият код компилира, 236 00:09:50,532 --> 00:09:51,865 и че тя действително може да се управлява. 237 00:09:51,865 --> 00:09:52,970 238 00:09:52,970 --> 00:09:56,186 >> Така че, уверете се, че ако това не стане събират, за да го да се съберат, 239 00:09:56,186 --> 00:09:57,810 така че да можете да вид тече през него. 240 00:09:57,810 --> 00:10:04,590 Така че, за да стартирате GDB, всичко, което правим, Gloria тип GDB, и след това просто 241 00:10:04,590 --> 00:10:06,250 файла, който искате. 242 00:10:06,250 --> 00:10:08,240 Аз винаги misspell Цезар. 243 00:10:08,240 --> 00:10:11,730 Но вие искате да се уверите, тъй като това е един изпълним, 244 00:10:11,730 --> 00:10:14,210 точка флаш ти, така че означава, че започваш 245 00:10:14,210 --> 00:10:19,240 да тече CSI ти започваш да се изпълни това файлове или с дебъгер. 246 00:10:19,240 --> 00:10:19,910 OK. 247 00:10:19,910 --> 00:10:22,885 Така че, можете да направите това, можете да получите този вид безсмислици. 248 00:10:22,885 --> 00:10:24,250 249 00:10:24,250 --> 00:10:25,750 Тя е само на всички неща за дебъгер. 250 00:10:25,750 --> 00:10:28,200 Вие наистина не трябва да се се тревожи за това точно сега. 251 00:10:28,200 --> 00:10:31,460 И както виждате, ние имаме това отворени parens БВП, близки parens, 252 00:10:31,460 --> 00:10:34,690 и просто вид прилича нашата командния ред, нали? 253 00:10:34,690 --> 00:10:37,010 >> Така че, това, което ние искаме да do-- --So, Първото нещо, 254 00:10:37,010 --> 00:10:39,570 е, че ние искаме да изберем място, където да го счупи. 255 00:10:39,570 --> 00:10:42,332 Така че, има един бъг в тази програма Caesar 256 00:10:42,332 --> 00:10:44,290 че аз се въведе, че отиваме, за да разберете. 257 00:10:44,290 --> 00:10:45,330 258 00:10:45,330 --> 00:10:56,350 Това, което тя не е необходимо на входа Barfoo във всички капачки, и по някаква причина 259 00:10:56,350 --> 00:11:01,950 това не променя A. Тя просто напуска само тя, е всичко друго, правилно, 260 00:11:01,950 --> 00:11:03,980 но второто писмо А остава непроменена. 261 00:11:03,980 --> 00:11:07,120 Така че, ние ще се опитаме и разбера защо това е така. 262 00:11:07,120 --> 00:11:10,440 Така че, първо трябва нещо обикновено искате да направите, когато започне на GDB 263 00:11:10,440 --> 00:11:12,010 е да разбера къде да го счупят. 264 00:11:12,010 --> 00:11:14,956 >> Така че Цезар е доста кратка програма. 265 00:11:14,956 --> 00:11:16,330 Ние просто трябва една функция, нали? 266 00:11:16,330 --> 00:11:18,520 Каква е нашата функция в Цезар? 267 00:11:18,520 --> 00:11:19,590 268 00:11:19,590 --> 00:11:24,350 Има само една функция, Главна нали? 269 00:11:24,350 --> 00:11:26,490 Main е функция за всички ваши програми. 270 00:11:26,490 --> 00:11:29,230 Ако не сте имали Main, бих могъл е малко притеснен в момента, 271 00:11:29,230 --> 00:11:31,000 но се надявам всичко, което трябваше Главна там. 272 00:11:31,000 --> 00:11:34,150 И така, какво можем да направим, е да можем да просто се счупи на Майн, просто ей така. 273 00:11:34,150 --> 00:11:35,190 Така че, той казва, OK. 274 00:11:35,190 --> 00:11:37,430 Ние поставяме нашата гранична стойност един там. 275 00:11:37,430 --> 00:11:42,870 >> Така че, сега нещо трябва да запомните е Caesar има една команда аргумент ред точно 276 00:11:42,870 --> 00:11:45,150 и ние не сме направили, че все още никъде. 277 00:11:45,150 --> 00:11:47,560 Така че, това, което правите е, когато всъщност отиде да работи 278 00:11:47,560 --> 00:11:51,540 програмата, всяка програма, която сте работи в GDB, че се нуждае от командния ред 279 00:11:51,540 --> 00:11:55,010 аргументи, започваш да въведете когато за първи път започнете да го използвате. 280 00:11:55,010 --> 00:11:59,280 Така че, в този случай, ние правим Стартирай с ключ на три. 281 00:11:59,280 --> 00:12:00,770 282 00:12:00,770 --> 00:12:02,040 И това всъщност ще започне. 283 00:12:02,040 --> 00:12:08,480 >> Така че, ако ви видя тук, имаме Ако RC не е равно на две. 284 00:12:08,480 --> 00:12:12,210 Така че, ако вие, момчета, всички от които имат този файл, че аз изпратих до 285 00:12:12,210 --> 00:12:15,100 ще видите, че това е като първа линия нашата основна функция, нали? 286 00:12:15,100 --> 00:12:17,890 Това е проверка, за да видим дали имаме точния брой аргументи. 287 00:12:17,890 --> 00:12:20,620 Така че, ако се чудите ако RC е правилна, 288 00:12:20,620 --> 00:12:23,250 можете да направите нещо точно като Print RC. 289 00:12:23,250 --> 00:12:24,380 290 00:12:24,380 --> 00:12:28,640 RC е две, което е това, което очаквахме, нали? 291 00:12:28,640 --> 00:12:32,010 >> Така че, можем да отидем Next, и да продължи сам. 292 00:12:32,010 --> 00:12:33,200 Така че, ние имаме някои ключови там. 293 00:12:33,200 --> 00:12:34,260 294 00:12:34,260 --> 00:12:37,090 И ние можем да отпечатате нашия ключ да се уверите, че е правилно. 295 00:12:37,090 --> 00:12:38,380 296 00:12:38,380 --> 00:12:39,500 Интересно. 297 00:12:39,500 --> 00:12:41,210 Не е точно това, което очаквахме. 298 00:12:41,210 --> 00:12:44,810 Така че, едно нещо, което да се реализира с GDB също е 299 00:12:44,810 --> 00:12:49,000 че това не е, докато вие всъщност удари На следващо място, че линията, която току-що видяхте 300 00:12:49,000 --> 00:12:50,720 всъщност е изпълнена. 301 00:12:50,720 --> 00:12:53,870 Така че, в този случай Key все още не е определен. 302 00:12:53,870 --> 00:12:57,050 Така че, Key е някаква ценност боклук който виждате на дъното там. 303 00:12:57,050 --> 00:13:03,680 Negative $ 120-- --It на един милиард И нещо странни неща, нали? 304 00:13:03,680 --> 00:13:05,340 Това не е ключът, който очаквахме. 305 00:13:05,340 --> 00:13:10,720 Но ако ние се удари Next, и след това ние опитайте и ключ за печат, това е три. 306 00:13:10,720 --> 00:13:11,710 >> Всеки вижда, че? 307 00:13:11,710 --> 00:13:13,780 Така че, ако се получи нещо че вие ​​сте като почака. 308 00:13:13,780 --> 00:13:15,540 Това е напълно погрешно, и аз не знам 309 00:13:15,540 --> 00:13:20,150 как това ще се случи, защото всичко, което искам да направите, е да зададете номер, променлива, 310 00:13:20,150 --> 00:13:22,900 опитайте удря След това опитайте печат отново, и да видим дали работи. 311 00:13:22,900 --> 00:13:27,830 Тъй като това е само ще се изпълни и всъщност възлага нещо, след като 312 00:13:27,830 --> 00:13:29,340 натиснете Next. 313 00:13:29,340 --> 00:13:30,336 Уверете се смисъл на всички? 314 00:13:30,336 --> 00:13:30,836 Ами нали? 315 00:13:30,836 --> 00:13:33,220 >> SPEAKER 2: Когато случайно номера какво означава това? 316 00:13:33,220 --> 00:13:34,790 >> SPEAKER 1: Това е просто случаен принцип. 317 00:13:34,790 --> 00:13:35,710 Това е просто боклук. 318 00:13:35,710 --> 00:13:38,320 Това е просто нещо, което си компютър на случаен принцип ще присвоите. 319 00:13:38,320 --> 00:13:39,721 320 00:13:39,721 --> 00:13:40,220 Cool. 321 00:13:40,220 --> 00:13:45,760 Така че, сега ние можем да преминат през и т.н. сега имаме този текст GetString. 322 00:13:45,760 --> 00:13:48,600 Така че, нека просто да се въведе това, което ще се случи, когато се удари Next тук. 323 00:13:48,600 --> 00:13:51,320 Нашата GDB вид изчезва, нали? 324 00:13:51,320 --> 00:13:55,720 Това е така, защото GetString сега се изпълнява, нали? 325 00:13:55,720 --> 00:14:01,460 Така че, когато видяхме, обикновен текст се равнява GetString, отворени parens и parens, 326 00:14:01,460 --> 00:14:04,380 и ние удари Next, която има всъщност изпълнява сега. 327 00:14:04,380 --> 00:14:06,580 Така че, това е очакване ни за въвеждане на нещо. 328 00:14:06,580 --> 00:14:13,560 >> Така че, ние отиваме да въведете нашата храна, която е това, което е липса както ви казах 329 00:14:13,560 --> 00:14:18,020 и че просто се казва, че това е завършено изпълнение, че закрито 330 00:14:18,020 --> 00:14:19,980 скоба означава, че е излизане от тази линия. 331 00:14:19,980 --> 00:14:21,170 332 00:14:21,170 --> 00:14:25,420 Така че, ние може да удари Next, и сега, когато съм че всички сте запознати от Цезар, 333 00:14:25,420 --> 00:14:27,260 това е, какво е тази линия ще направим. 334 00:14:27,260 --> 00:14:32,030 Това е за Int I е равна на 0, N е равно на Strlen, обикновен текст, а след това 335 00:14:32,030 --> 00:14:33,960 I е по-малко от N, I, плюс, плюс. 336 00:14:33,960 --> 00:14:35,210 Каква е тази линия ще правиш? 337 00:14:35,210 --> 00:14:37,900 338 00:14:37,900 --> 00:14:39,160 Отворете съобщението. 339 00:14:39,160 --> 00:14:39,770 Cool. 340 00:14:39,770 --> 00:14:41,330 Така че, нека да започнем да правим това. 341 00:14:41,330 --> 00:14:47,210 >> Така че, в случай че това условие съвпадат, за първата ни един? 342 00:14:47,210 --> 00:14:52,250 Ако това е B, това е обикновен текст I. Ние може да получите информация за нашите местни жители. 343 00:14:52,250 --> 00:14:53,610 344 00:14:53,610 --> 00:14:57,970 Така че, аз е нула, и ако е шест, което ние очакваме и нашата ключ е три. 345 00:14:57,970 --> 00:14:59,227 Всичко, което има смисъл, нали? 346 00:14:59,227 --> 00:15:01,310 Тези цифри са точно това, което трябва да бъде. 347 00:15:01,310 --> 00:15:02,590 348 00:15:02,590 --> 00:15:03,870 Така че, си тананика? 349 00:15:03,870 --> 00:15:05,620 SPEAKER 3: Имам случайни числа за мината. 350 00:15:05,620 --> 00:15:09,156 351 00:15:09,156 --> 00:15:12,030 SPEAKER 1: Е, ние можем да --we check-- да говорите за това в секунда. 352 00:15:12,030 --> 00:15:14,110 353 00:15:14,110 --> 00:15:15,750 Но вие трябва да получавате това. 354 00:15:15,750 --> 00:15:17,700 355 00:15:17,700 --> 00:15:20,130 Така че, ако имаме капитал B за първия ни един, 356 00:15:20,130 --> 00:15:22,080 това състояние трябва да го хване, нали? 357 00:15:22,080 --> 00:15:27,120 Така че, ако ние натиснете Next, ние виждаме, че този Ако действително изпълнява. 358 00:15:27,120 --> 00:15:29,220 Защото, ако сте след заедно в кода си, 359 00:15:29,220 --> 00:15:33,460 тази линия тук, където обикновен текст I се заменя с това аритметика, 360 00:15:33,460 --> 00:15:35,720 изпълнява само ако, ако състояние е правилно, нали? 361 00:15:35,720 --> 00:15:36,905 362 00:15:36,905 --> 00:15:40,240 >> GDB само ще ви покажа неща, които в действителност оперират. 363 00:15:40,240 --> 00:15:45,140 Така че, ако това условие, ако не е изпълнено, това е просто ще преминете към следващия ред. 364 00:15:45,140 --> 00:15:46,540 OK? 365 00:15:46,540 --> 00:15:48,510 Така че, ние имаме това. 366 00:15:48,510 --> 00:15:51,171 Тази скоба означава, че е приключването на този цикъл сега. 367 00:15:51,171 --> 00:15:52,420 Така, че ще започне отново. 368 00:15:52,420 --> 00:15:54,760 369 00:15:54,760 --> 00:15:56,280 Просто ей така. 370 00:15:56,280 --> 00:15:59,120 Така, че можем да получим информация за нашите местни жители тук, 371 00:15:59,120 --> 00:16:02,575 и ние виждаме, че първата ни писмо се е променило, нали? 372 00:16:02,575 --> 00:16:05,150 Това е сега Е, тъй като тя трябва да бъде. 373 00:16:05,150 --> 00:16:07,360 Така че, можем да продължим нататък. 374 00:16:07,360 --> 00:16:08,500 >> И ние имаме тази проверка. 375 00:16:08,500 --> 00:16:09,916 И тази проверка трябва да работи, нали? 376 00:16:09,916 --> 00:16:12,570 Това е А. Трябва да се промени три букви напред. 377 00:16:12,570 --> 00:16:14,320 378 00:16:14,320 --> 00:16:16,530 Но ако забележите, ние се получи нещо по-различно. 379 00:16:16,530 --> 00:16:17,580 380 00:16:17,580 --> 00:16:22,860 Така че в този случай тук, я хвана то, и така тази линия изпълнена, 381 00:16:22,860 --> 00:16:28,620 които модифициран нашия B. Но в този случай тук, 382 00:16:28,620 --> 00:16:32,860 имаме, че тя просто го прескочи, и отиде до [? L София Филм Фест. ?] 383 00:16:32,860 --> 00:16:34,660 Така че нещо се случва там. 384 00:16:34,660 --> 00:16:37,780 Какво, че ви казва, е, че ние знаем, че той трябва да хване тук, 385 00:16:37,780 --> 00:16:39,200 но това не е така. 386 00:16:39,200 --> 00:16:42,210 Може ли някой да видим какво ни Проблемът е в тази линия? 387 00:16:42,210 --> 00:16:45,380 388 00:16:45,380 --> 00:16:46,969 Това е много минути нещо. 389 00:16:46,969 --> 00:16:48,510 И вие също може да погледнете кода си. 390 00:16:48,510 --> 00:16:49,980 391 00:16:49,980 --> 00:16:54,940 Това е също така line-- забравя какво линия е в there-- но това е в [недоловим]. 392 00:16:54,940 --> 00:16:55,480 Да? 393 00:16:55,480 --> 00:16:58,639 >> SPEAKER 4: Това е по-голям от страница, ако сте го прочели в книгата. 394 00:16:58,639 --> 00:16:59,430 SPEAKER 1: Точно така. 395 00:16:59,430 --> 00:17:02,620 Така че, дебъгер не може да каже ви, но дебъгер 396 00:17:02,620 --> 00:17:05,880 може ли да попречи на линия че знаете, не функционира. 397 00:17:05,880 --> 00:17:09,319 И понякога, когато особено по-късно през семестъра, когато 398 00:17:09,319 --> 00:17:12,910 имаш работа със сто, а сто няколко реда код, а вие 399 00:17:12,910 --> 00:17:16,190 Не знам къде е липса, това е чудесен начин да го направя. 400 00:17:16,190 --> 00:17:17,900 401 00:17:17,900 --> 00:17:18,989 Така че, ние открихме нашата грешка. 402 00:17:18,989 --> 00:17:21,530 Можете да го оправя във файла, и след това можете да го стартирате отново, 403 00:17:21,530 --> 00:17:23,029 и всичко ще работи перфектно. 404 00:17:23,029 --> 00:17:24,970 405 00:17:24,970 --> 00:17:30,590 И най-голямото нещо, което е това може да изглежда като, OK. 406 00:17:30,590 --> 00:17:31,090 Да. 407 00:17:31,090 --> 00:17:31,370 Cool. 408 00:17:31,370 --> 00:17:32,744 Знаеш, че това, което търсите. 409 00:17:32,744 --> 00:17:34,910 Така че, знаех какво да правя. 410 00:17:34,910 --> 00:17:39,021 >> GDB може да бъде супер полезно, защото може да разпечатате всички тези неща, които ви 411 00:17:39,021 --> 00:17:39,520 не би. 412 00:17:39,520 --> 00:17:41,160 Това е много по-полезно, отколкото ФОРМАТ. 413 00:17:41,160 --> 00:17:43,440 Колко от вас използват като ФОРМАТ отчети 414 00:17:43,440 --> 00:17:46,200 да разбера къде е грешка беше, нали? 415 00:17:46,200 --> 00:17:48,450 Така че, с това, че не правим Трябва да продължаваме назад, 416 00:17:48,450 --> 00:17:51,139 и искал да коментира в ФОРМАТ или коментирате, 417 00:17:51,139 --> 00:17:52,930 и да разбера какво трябва да се печата. 418 00:17:52,930 --> 00:17:55,670 Това всъщност само ви позволява да стъпка през разпечатва неща 419 00:17:55,670 --> 00:18:00,000 като отиваш през, така, можете да се наблюдава как те се променят в реално време, 420 00:18:00,000 --> 00:18:02,190 като програмата се изпълнява. 421 00:18:02,190 --> 00:18:04,390 >> И тя не взема малко малко на привикване. 422 00:18:04,390 --> 00:18:07,850 Бих силно препоръчвам просто вид че е малко разочарован с него 423 00:18:07,850 --> 00:18:08,930 за сега. 424 00:18:08,930 --> 00:18:13,450 Ако прекарвате повече от час на Следващата седмица се научите как да използвате GDB, 425 00:18:13,450 --> 00:18:16,140 вие ще си спестите толкова много време по-късно. 426 00:18:16,140 --> 00:18:18,750 И буквално. разказваме това хора всяка година, 427 00:18:18,750 --> 00:18:23,890 и аз си спомням, когато взех клас, аз бях като, че ще се оправи. 428 00:18:23,890 --> 00:18:24,700 Не. 429 00:18:24,700 --> 00:18:27,030 Pset 6 дойде и аз бях като, аз ще научите 430 00:18:27,030 --> 00:18:29,500 как да се използва GDB, защото аз не правя знам какво става тук. 431 00:18:29,500 --> 00:18:32,940 >> Така че, ако имате време, така че го използвате за по-малки програми 432 00:18:32,940 --> 00:18:35,697 че ти започваш да бъде работа на открито, като работи 433 00:18:35,697 --> 00:18:37,530 чрез нещо като Visionare, като този. 434 00:18:37,530 --> 00:18:38,800 435 00:18:38,800 --> 00:18:42,850 Или, ако искате допълнително практика, аз съм сигурен, че Аз може да излезе с бъги програми, 436 00:18:42,850 --> 00:18:45,300 за да можете да трасира ако искате. 437 00:18:45,300 --> 00:18:49,300 >> Но ако просто да отнеме известно време, за да се получи свикна с него, просто да си поиграете с нея, 438 00:18:49,300 --> 00:18:50,550 тя наистина ще ви служи добре. 439 00:18:50,550 --> 00:18:52,591 И това е наистина един от тези неща, които току-що 440 00:18:52,591 --> 00:18:57,340 трябва да се опита и да получите мръсни ръце с, преди наистина да го разбере. 441 00:18:57,340 --> 00:19:02,090 Аз наистина само той разбира веднъж Аз трябваше да трасира неща с него, 442 00:19:02,090 --> 00:19:08,170 и това е много по-хубаво да има представа за как да се трасира по-скоро рано, отколкото късно. 443 00:19:08,170 --> 00:19:08,850 OK. 444 00:19:08,850 --> 00:19:09,625 Cool. 445 00:19:09,625 --> 00:19:12,960 Знам, че е нещо като интензивен курс в GDB, 446 00:19:12,960 --> 00:19:16,400 и аз определено ще работи за получаване на те да изглеждат по-големи следващия път. 447 00:19:16,400 --> 00:19:17,590 448 00:19:17,590 --> 00:19:18,280 Cool. 449 00:19:18,280 --> 00:19:20,390 >> Така че, ако се върнем към нашата PowerPoint. 450 00:19:20,390 --> 00:19:27,194 451 00:19:27,194 --> 00:19:28,110 Дали това ще се работи? 452 00:19:28,110 --> 00:19:29,711 453 00:19:29,711 --> 00:19:30,210 AWH. 454 00:19:30,210 --> 00:19:31,101 Да. 455 00:19:31,101 --> 00:19:31,600 OK. 456 00:19:31,600 --> 00:19:35,480 Така че, ако някога ви се наложи някоя от тези, отново, там е в списъка. 457 00:19:35,480 --> 00:19:37,160 458 00:19:37,160 --> 00:19:40,830 Така Binary Search, която всеки помни великия спектакъл на David 459 00:19:40,830 --> 00:19:42,259 извличане на телефонни указатели на половина. 460 00:19:42,259 --> 00:19:44,050 Аз наистина не получите телефонни книги вече, 461 00:19:44,050 --> 00:19:46,530 тъй като, когато се направи Вземи телефонни книги тези дни? 462 00:19:46,530 --> 00:19:48,220 Аз наистина не знам. 463 00:19:48,220 --> 00:19:49,840 464 00:19:49,840 --> 00:19:50,590 The Binary търсене. 465 00:19:50,590 --> 00:19:52,464 Дали някой си спомня как Binary произведения търсене? 466 00:19:52,464 --> 00:19:54,380 467 00:19:54,380 --> 00:19:55,220 Някой изобщо? 468 00:19:55,220 --> 00:19:56,325 Така ли? 469 00:19:56,325 --> 00:19:58,283 SPEAKER 5: Знаеш ли, когато погледнете коя половина 470 00:19:58,283 --> 00:20:01,146 би било в въз основа на това, и да се отървете от другата половина. 471 00:20:01,146 --> 00:20:01,896 >> SPEAKER 1 Точно така. 472 00:20:01,896 --> 00:20:06,290 Така че, Binary Search, това е вид на A-- --we искал да го наричат ​​разделяй и владей. 473 00:20:06,290 --> 00:20:09,170 Така че, това, което ще направим, е да вие ще погледнете в центъра, 474 00:20:09,170 --> 00:20:11,990 и ще видите, ако тя отговаря на това, което търсите. 475 00:20:11,990 --> 00:20:15,420 И ако това не стане, тогава ще се опитаме да разбера, е, че ще бъдат оставени 476 00:20:15,420 --> 00:20:16,450 половината или дясната половина. 477 00:20:16,450 --> 00:20:19,325 Така че, това може да бъде, ако търсите на нещо, което е по азбучен ред, 478 00:20:19,325 --> 00:20:20,720 виждате ли, о. 479 00:20:20,720 --> 00:20:22,750 Дали Allison дойде пред M? 480 00:20:22,750 --> 00:20:23,250 Да. 481 00:20:23,250 --> 00:20:25,030 Така че, ние ще Посетете първото полувреме. 482 00:20:25,030 --> 00:20:26,450 >> Или тя може да бъде както с числа. 483 00:20:26,450 --> 00:20:28,830 Всичко, което можете да за сравнение, може да се сортира. 484 00:20:28,830 --> 00:20:29,920 485 00:20:29,920 --> 00:20:31,260 Можете да използвате двоично търсене. 486 00:20:31,260 --> 00:20:32,340 487 00:20:32,340 --> 00:20:37,455 Така че, всеки, който помни това графика или какво е това? 488 00:20:37,455 --> 00:20:39,520 Това е асимптотичната сложност. 489 00:20:39,520 --> 00:20:42,830 Така че, тази графика просто описва колко време 490 00:20:42,830 --> 00:20:46,230 ще ви отведе до решаване на проблем, тъй като да увеличи броя на нещата, 491 00:20:46,230 --> 00:20:47,090 че използвате. 492 00:20:47,090 --> 00:20:51,260 >> Така че, ние имаме N, което е линейно време. 493 00:20:51,260 --> 00:20:54,560 Ако N над две, което е малко по-добре, все още расте супер бързо. 494 00:20:54,560 --> 00:20:58,360 И тогава ние сме Влез, което е това, което ние считаме Binary Search. 495 00:20:58,360 --> 00:21:03,630 Ако забележите, като проблем получава много и много по-голям, 496 00:21:03,630 --> 00:21:06,600 времето, което ви е необходимо, за да го решим наистина не се увеличи толкова много. 497 00:21:06,600 --> 00:21:09,010 Това е като да сравним тук в началото. 498 00:21:09,010 --> 00:21:10,060 Вие сте като OK. 499 00:21:10,060 --> 00:21:13,000 Нещо тук не е така наистина въпрос, който един ние използваме, 500 00:21:13,000 --> 00:21:16,220 но можете да получите до един милион, милиард. 501 00:21:16,220 --> 00:21:20,010 Вие се опитвате да намерите some-- --you're се опитва да намери игла в купа сено. 502 00:21:20,010 --> 00:21:21,550 >> Мисля, че искате този проблем. 503 00:21:21,550 --> 00:21:25,850 Вие искате тази сложност, не линейна, защото за всички вас 504 00:21:25,850 --> 00:21:30,049 знаете ще се търсят чрез всяка отделна игла, нещо от сено, 505 00:21:30,049 --> 00:21:31,340 се опитва да търси иглата. 506 00:21:31,340 --> 00:21:34,730 И това не е твърде забавно, по мое мнение. 507 00:21:34,730 --> 00:21:35,500 Харесва ми бързо. 508 00:21:35,500 --> 00:21:36,620 Обичам ефективен. 509 00:21:36,620 --> 00:21:40,450 И като трудолюбиви студенти вас момчета са, знаете, работят умни, 510 00:21:40,450 --> 00:21:43,010 не по-трудно тип нещо, как сте може да компенсира тези алгоритми. 511 00:21:43,010 --> 00:21:45,110 512 00:21:45,110 --> 00:21:47,910 >> Така че, ние ще ходим чрез само един бърз пример. 513 00:21:47,910 --> 00:21:51,090 Мисля, че вие, момчета, трябва да имат ръка на Binary Search, 514 00:21:51,090 --> 00:21:54,352 но в случай, че някой е малко по- размита, искам да го засили, 515 00:21:54,352 --> 00:21:56,310 отиваме просто да отида чрез пример тук. 516 00:21:56,310 --> 00:21:59,490 Така че, ние не търсим, ако масива съдържа седем. 517 00:21:59,490 --> 00:22:00,540 518 00:22:00,540 --> 00:22:06,010 >> И така, първото нещо, което правим, е погледнете в центъра, нали? 519 00:22:06,010 --> 00:22:09,340 А също и ти започваш да се кодиране Binary Търсене само за секунда. 520 00:22:09,340 --> 00:22:11,310 Така че, това ще бъде забавно. 521 00:22:11,310 --> 00:22:13,710 Така че ние с нетърпение в средна малки масиви 3. 522 00:22:13,710 --> 00:22:15,501 Има 3 равни 7? 523 00:22:15,501 --> 00:22:16,000 Не. 524 00:22:16,000 --> 00:22:18,670 525 00:22:18,670 --> 00:22:19,550 Това е шест. 526 00:22:19,550 --> 00:22:21,480 Значи, това е по-малко от или повече от седем? 527 00:22:21,480 --> 00:22:23,080 528 00:22:23,080 --> 00:22:23,960 По-малко от. 529 00:22:23,960 --> 00:22:24,570 Да. 530 00:22:24,570 --> 00:22:25,170 Хубави момчета за работа. 531 00:22:25,170 --> 00:22:25,569 532 00:22:25,569 --> 00:22:27,360 Аз чувствам, че искал аз трябва има бонбони, защото аз 533 00:22:27,360 --> 00:22:29,460 искам да го изхвърля в дворовете. 534 00:22:29,460 --> 00:22:30,270 Това е, което аз ще направя следващата седмица. 535 00:22:30,270 --> 00:22:31,436 Това ще ви предпази момчета остър. 536 00:22:31,436 --> 00:22:32,560 537 00:22:32,560 --> 00:22:34,690 >> Така че, ние изхвърляме, че Първата половина, нали? 538 00:22:34,690 --> 00:22:35,670 е по-малко от. 539 00:22:35,670 --> 00:22:39,325 ние знаем, че всичко на този от лявата страна 540 00:22:39,325 --> 00:22:41,700 ще бъде по-малко от това, което ние всъщност търсите. 541 00:22:41,700 --> 00:22:43,491 Така че, няма нужда да обърне внимание на това. 542 00:22:43,491 --> 00:22:45,120 Просто забрави за това. 543 00:22:45,120 --> 00:22:48,720 Така че, сега се вгледаме в полето наша страна ръка, и ние с нетърпение в средата там, 544 00:22:48,720 --> 00:22:50,510 и сега е девет. 545 00:22:50,510 --> 00:22:55,510 Така че, 9 is-- --Everyone? 546 00:22:55,510 --> 00:22:57,470 По-голямо от това, което сме търсите, нали? 547 00:22:57,470 --> 00:22:59,860 Така че, ние отиваме да хвърлят далеч всичко надясно. 548 00:22:59,860 --> 00:23:00,970 549 00:23:00,970 --> 00:23:01,940 Подобно на това. 550 00:23:01,940 --> 00:23:03,700 Сега, всички ние сме оставени с такава. 551 00:23:03,700 --> 00:23:07,760 Така че, ние проверяваме, е този какво ние, което търсите? е то. 552 00:23:07,760 --> 00:23:08,970 Намерихме това, което искахме. 553 00:23:08,970 --> 00:23:10,440 554 00:23:10,440 --> 00:23:11,690 Така че сме готови. 555 00:23:11,690 --> 00:23:12,550 Bilinear Search. 556 00:23:12,550 --> 00:23:15,740 >> И ако забележите, ние имаше седем входа там. 557 00:23:15,740 --> 00:23:24,320 Отне ни само като три пъти, но ако правиш като един милиард, 558 00:23:24,320 --> 00:23:28,190 вие знаете колко стъпки тя би предприеме, ако имахме четири милиарда неща? 559 00:23:28,190 --> 00:23:29,940 560 00:23:29,940 --> 00:23:30,455 Всякакви предположения? 561 00:23:30,455 --> 00:23:32,286 562 00:23:32,286 --> 00:23:33,960 Това е 32. 563 00:23:33,960 --> 00:23:37,110 32 стъпки, за да намерят нещо в четири милиарда 564 00:23:37,110 --> 00:23:39,650 масив, защото на правомощията на две. 565 00:23:39,650 --> 00:23:43,550 Така е две до 32, е четири милиарда. 566 00:23:43,550 --> 00:23:50,430 >> Така че доста луд как сте все още в рамките на като сравнително малък брой стъпки 567 00:23:50,430 --> 00:23:52,650 да се намери нещо в четири милиарда елементи. 568 00:23:52,650 --> 00:23:55,730 Така че по тази бележка, ние сме ще се кодират това 569 00:23:55,730 --> 00:23:58,950 така че вие ​​всъщност може да вид видим как работи това. 570 00:23:58,950 --> 00:24:01,520 Добре, така че вие ​​може да кодекс. 571 00:24:01,520 --> 00:24:04,100 Отивам да ви момчета, нека говорим за малко. 572 00:24:04,100 --> 00:24:07,970 Запознайте се с хората около вас, което е това, което някой иска от последния раздел. 573 00:24:07,970 --> 00:24:10,280 >> Така че, да се запознаят с хората около вас. 574 00:24:10,280 --> 00:24:11,305 Говорете за малко. 575 00:24:11,305 --> 00:24:12,580 576 00:24:12,580 --> 00:24:15,730 И всичко, което искам от теб момчета, точно сега е просто 577 00:24:15,730 --> 00:24:17,575 опитайте се да се създаде описание на Псевдокод. 578 00:24:17,575 --> 00:24:18,075 OK? 579 00:24:18,075 --> 00:24:20,825 580 00:24:20,825 --> 00:24:21,325 Уау. 581 00:24:21,325 --> 00:24:23,320 582 00:24:23,320 --> 00:24:29,520 Всичко, което искам от вас, момчета, е, че сте просто ще попълните това, докато случай. 583 00:24:29,520 --> 00:24:32,170 Така че аз поставих тези горни и по-ниски граници, които 584 00:24:32,170 --> 00:24:35,250 представлява началото и в края на нашия масив. 585 00:24:35,250 --> 00:24:40,440 И вие ще действително линия през и разбера 586 00:24:40,440 --> 00:24:42,470 какво правим в тази линия, докато. 587 00:24:42,470 --> 00:24:45,810 >> Така че, ако можете да разбера out-- имам намек there-- какви са случаите, 588 00:24:45,810 --> 00:24:46,640 това, което имаме тук? 589 00:24:46,640 --> 00:24:48,100 590 00:24:48,100 --> 00:24:51,560 Така че, ако искате, за да разбера случаи, ние ще Псевдокод тези 591 00:24:51,560 --> 00:24:53,350 и тогава ние всъщност ще им код. 592 00:24:53,350 --> 00:24:55,330 И това ще бъде, аз мисля, да се надяваме, че ще 593 00:24:55,330 --> 00:24:56,788 е малко по-лесно, отколкото сте очаквали. 594 00:24:56,788 --> 00:24:57,554 595 00:24:57,554 --> 00:25:00,220 Тъй като това не е толкова много код, всъщност, което е наистина страхотно. 596 00:25:00,220 --> 00:25:34,110 597 00:25:34,110 --> 00:25:35,018 >> Мм-хм? 598 00:25:35,018 --> 00:25:35,893 >> STUDENT: [недоловим]? 599 00:25:35,893 --> 00:25:36,984 600 00:25:36,984 --> 00:25:37,650 ИНСТРУКТОР: Да. 601 00:25:37,650 --> 00:25:38,595 Имаше нещо да се намери в средата. 602 00:25:38,595 --> 00:25:39,552 >> STUDENT: Така че ние можем да използваме това. 603 00:25:39,552 --> 00:25:39,770 OK. 604 00:25:39,770 --> 00:25:40,603 >> ИНСТРУКТОР: Perfect. 605 00:25:40,603 --> 00:25:42,950 Така че това е първото нещо, което трябва да направим. 606 00:25:42,950 --> 00:25:44,330 Така че намери средата. 607 00:25:44,330 --> 00:25:45,415 608 00:25:45,415 --> 00:25:45,915 Страхотно. 609 00:25:45,915 --> 00:25:47,770 610 00:25:47,770 --> 00:25:55,010 Така че, имате ли представа за това как бихме могли всъщност се намери средата с код? 611 00:25:55,010 --> 00:25:55,980 >> Студентът: Да. 612 00:25:55,980 --> 00:25:57,000 п над 2? 613 00:25:57,000 --> 00:25:58,500 614 00:25:58,500 --> 00:25:59,500 ИНСТРУКТОР: Значи п над 2. 615 00:25:59,500 --> 00:26:05,170 Така че едно нещо, което трябва да запомните е, че вашите горни и долни граници се променят. 616 00:26:05,170 --> 00:26:08,110 Ние продължаваме да свива страна на масива, което търсим да. 617 00:26:08,110 --> 00:26:11,970 Така п над 2 ще работи само за първото нещо, което правим. 618 00:26:11,970 --> 00:26:17,810 Така че, като горната и долната предвид, как бихме могли да получите, че средната елемент? 619 00:26:17,810 --> 00:26:20,640 Тъй като ние искаме средата между горната и долната част, нали? 620 00:26:20,640 --> 00:26:21,730 621 00:26:21,730 --> 00:26:22,494 Мм-хм? 622 00:26:22,494 --> 00:26:23,369 >> STUDENT: [недоловим]. 623 00:26:23,369 --> 00:26:26,170 624 00:26:26,170 --> 00:26:28,080 >> ИНСТРУКТОР: Така че ние имаме някаква средна. 625 00:26:28,080 --> 00:26:32,730 И това ще бъде горната плюс ниска над 2. 626 00:26:32,730 --> 00:26:34,740 627 00:26:34,740 --> 00:26:35,690 Awesome. 628 00:26:35,690 --> 00:26:36,570 Има отидем. 629 00:26:36,570 --> 00:26:37,280 Един ред надолу. 630 00:26:37,280 --> 00:26:38,560 Вие, момчета, сте на път. 631 00:26:38,560 --> 00:26:41,400 Така че сега ние имаме средна, какво искаме да направим? 632 00:26:41,400 --> 00:26:45,050 633 00:26:45,050 --> 00:26:45,900 Просто като цяло. 634 00:26:45,900 --> 00:26:47,734 Не е нужно да го кодират. 635 00:26:47,734 --> 00:26:48,335 Да. 636 00:26:48,335 --> 00:26:49,210 STUDENT: [недоловим]? 637 00:26:49,210 --> 00:27:00,310 638 00:27:00,310 --> 00:27:10,310 ИНСТРУКТОР: Така че това е плюс, защото сте намирането на средното между двете 639 00:27:10,310 --> 00:27:10,810 на тях. 640 00:27:10,810 --> 00:27:11,890 641 00:27:11,890 --> 00:27:17,370 Така че, ако мислите за тях като вид увеличаване в от страните, 642 00:27:17,370 --> 00:27:21,640 мисля за него като наближите средата, вие искате по този начин. 643 00:27:21,640 --> 00:27:27,150 Така че, ако сте били на двете страни на средна, а ние имаме като 5 и 7. 644 00:27:27,150 --> 00:27:31,440 Когато ги съберем ли получавате 12, разделяте с 2, е шест. 645 00:27:31,440 --> 00:27:33,726 >> Понякога е трудно да се обясни защо това работи, 646 00:27:33,726 --> 00:27:35,600 но ако работите чрез пример понякога 647 00:27:35,600 --> 00:27:37,962 това ще ви помогне да разберете, ако тя трябва да бъде плюс или минус. 648 00:27:37,962 --> 00:27:38,846 Да. 649 00:27:38,846 --> 00:27:40,830 >> STUDENT: [недоловим] точно в средата 650 00:27:40,830 --> 00:27:43,950 ако те са имали случай, когато там е много по-малък брой 651 00:27:43,950 --> 00:27:45,860 и като един голям номер? 652 00:27:45,860 --> 00:27:49,750 >> ИНСТРУКТОР: Така че всичко, което трябва е средата на масива. 653 00:27:49,750 --> 00:27:53,010 Така че, ако сте имали един куп малки номера и след един наистина голям брой 654 00:27:53,010 --> 00:27:54,799 в крайна сметка, това не е от значение. 655 00:27:54,799 --> 00:27:56,840 Всичко, което има значение, е, че те са подредени, просто 656 00:27:56,840 --> 00:27:59,339 искам да гледам в средата на масива, защото все още сте 657 00:27:59,339 --> 00:28:00,700 нацепване на вашия проблем в половината. 658 00:28:00,700 --> 00:28:03,020 659 00:28:03,020 --> 00:28:03,680 Cool. 660 00:28:03,680 --> 00:28:06,430 Така че сега ние имаме средна, какво ще правим сега? 661 00:28:06,430 --> 00:28:07,150 >> STUDENT: сравнение. 662 00:28:07,150 --> 00:28:08,150 ИНСТРУКТОР: за сравнение. 663 00:28:08,150 --> 00:28:11,670 Така сравнение средната за value_wanted. 664 00:28:11,670 --> 00:28:14,300 665 00:28:14,300 --> 00:28:15,160 Cool. 666 00:28:15,160 --> 00:28:17,950 Така че виждате тук имаме тази стойност, което искаме тук. 667 00:28:17,950 --> 00:28:22,012 668 00:28:22,012 --> 00:28:23,095 Не забравяйте, че това е масив. 669 00:28:23,095 --> 00:28:24,100 670 00:28:24,100 --> 00:28:26,970 Така средната отнася до индекса. 671 00:28:26,970 --> 00:28:29,785 Така че ние искаме да направим стойности на средната. 672 00:28:29,785 --> 00:28:32,380 673 00:28:32,380 --> 00:28:35,650 Не забравяйте, ако искате за сравнение, двойни равни. 674 00:28:35,650 --> 00:28:38,250 Можете да направите еднократна равнява сте просто ще я прехвърли, 675 00:28:38,250 --> 00:28:41,090 и след това, разбира се, това е ще бъде стойността, която желаете. 676 00:28:41,090 --> 00:28:42,300 Така че не прави това. 677 00:28:42,300 --> 00:28:44,350 >> Така че отиваме да се види дали стойностите в средата 678 00:28:44,350 --> 00:28:46,460 е равна на стойността, което искаме. 679 00:28:46,460 --> 00:28:47,749 680 00:28:47,749 --> 00:28:48,790 Не забравяйте скоби. 681 00:28:48,790 --> 00:28:50,520 682 00:28:50,520 --> 00:28:52,235 Dropbox трябва да си отиде. 683 00:28:52,235 --> 00:28:54,140 684 00:28:54,140 --> 00:28:56,200 Така че това, което правим в този случай? 685 00:28:56,200 --> 00:28:59,360 Ако това е, което искаме да се върне? 686 00:28:59,360 --> 00:29:01,510 687 00:29:01,510 --> 00:29:02,626 Ние се опитваме да се каже. 688 00:29:02,626 --> 00:29:03,440 >> STUDENT: Печат на разстояние. 689 00:29:03,440 --> 00:29:05,314 >> ИНСТРУКТОР: Ами, ние не искате да отпечатате. 690 00:29:05,314 --> 00:29:08,220 Така че това е булев тук, така че ние искате да се върнете вярно или невярно. 691 00:29:08,220 --> 00:29:12,280 Ние казвате, е този брой на [? RRA? ?] Така че, ако това е, 692 00:29:12,280 --> 00:29:13,788 ние просто го връща истина. 693 00:29:13,788 --> 00:29:16,780 694 00:29:16,780 --> 00:29:17,760 Ако мога да заклинание вярно. 695 00:29:17,760 --> 00:29:18,830 696 00:29:18,830 --> 00:29:20,805 >> STUDENT: Защо няма да ви се върне нула? 697 00:29:20,805 --> 00:29:22,930 ИНСТРУКТОР: Така бихте могли да върне нула, ако искате. 698 00:29:22,930 --> 00:29:26,780 Но в този случай, тъй като нашата функция връща булев, 699 00:29:26,780 --> 00:29:28,962 ние трябва да се върне или вярно или невярно. 700 00:29:28,962 --> 00:29:30,920 STUDENT: Когато сте казвайки булев израз, 701 00:29:30,920 --> 00:29:33,450 можете ли да го определя като равна на фалшива? 702 00:29:33,450 --> 00:29:39,860 Например, ако аз искам да кажа, че ако това условие не е изпълнено, като е горната равнява невярно. 703 00:29:39,860 --> 00:29:42,332 Ще го разберете, ако просто постави фалшива от другата страна? 704 00:29:42,332 --> 00:29:43,040 ИНСТРУКТОР: Да. 705 00:29:43,040 --> 00:29:44,820 Така че в действителност, ако сте някога прави нещо 706 00:29:44,820 --> 00:29:49,600 като е горната или е по-ниска, който връща истина или лъжа 707 00:29:49,600 --> 00:29:53,850 и това е всъщност лош стил речем равнява равнява вярно или равни 708 00:29:53,850 --> 00:29:54,840 се равнява на невярна. 709 00:29:54,840 --> 00:30:00,210 Вие искате да използвате този резултат както на себе си като на вашия чек. 710 00:30:00,210 --> 00:30:04,720 711 00:30:04,720 --> 00:30:05,860 Не е това, което исках. 712 00:30:05,860 --> 00:30:08,150 713 00:30:08,150 --> 00:30:09,240 Това е, което исках. 714 00:30:09,240 --> 00:30:13,205 Така че в случай на питате за нещо като запазите този в с. 715 00:30:13,205 --> 00:30:16,320 716 00:30:16,320 --> 00:30:25,150 >> Така че, ако имаме INT главната (недействителни) и нещо като това. 717 00:30:25,150 --> 00:30:31,922 И имате, ако е горната на някакъв вход и сте 718 00:30:31,922 --> 00:30:33,630 пита дали можете да направите нещо подобно? 719 00:30:33,630 --> 00:30:35,010 720 00:30:35,010 --> 00:30:35,679 Така ли е? 721 00:30:35,679 --> 00:30:37,470 STUDENT: Аз се опитвах да го направя [недоловим]. 722 00:30:37,470 --> 00:30:38,450 Защото ако it's-- 723 00:30:38,450 --> 00:30:39,200 ИНСТРУКТОР: Точно така. 724 00:30:39,200 --> 00:30:41,197 Значи вие искате това да бъде фалшива, нали? 725 00:30:41,197 --> 00:30:41,780 Студентът: Да. 726 00:30:41,780 --> 00:30:45,960 ИНСТРУКТОР: Така че в този случай искам тя да се изпълни, ако това не е вярно. 727 00:30:45,960 --> 00:30:50,510 Така готино нещо, което правя е това. 728 00:30:50,510 --> 00:30:52,900 729 00:30:52,900 --> 00:30:55,650 Така че не забравяйте, удивителен точка отрича неща? 730 00:30:55,650 --> 00:30:58,270 Той казва, че [недоловим] не означава. 731 00:30:58,270 --> 00:31:03,590 Така че, ако погледнем само тази част тук, ще 732 00:31:03,590 --> 00:31:05,740 се каже, че се изчислява на невярно, колкото искате да. 733 00:31:05,740 --> 00:31:06,790 734 00:31:06,790 --> 00:31:09,880 Не е вярно, невярно, които означава това ще се изпълни. 735 00:31:09,880 --> 00:31:11,037 Това прави ли смисъл? 736 00:31:11,037 --> 00:31:11,620 Студентът: Да. 737 00:31:11,620 --> 00:31:12,453 ИНСТРУКТОР: Awesome. 738 00:31:12,453 --> 00:31:13,800 739 00:31:13,800 --> 00:31:14,300 OK. 740 00:31:14,300 --> 00:31:16,330 Така че бихме могли просто да се върне вярно в този случай. 741 00:31:16,330 --> 00:31:20,357 Така че сега ние имаме две други случаите, в този случай. 742 00:31:20,357 --> 00:31:21,565 Какви са нашите две други случаи? 743 00:31:21,565 --> 00:31:31,610 744 00:31:31,610 --> 00:31:32,900 Нека просто да го направя по този начин. 745 00:31:32,900 --> 00:31:40,660 Така че нека да започнем с друго Ако стойностите на средата 746 00:31:40,660 --> 00:31:43,230 е по-малко от стойността, което искаме. 747 00:31:43,230 --> 00:31:47,200 748 00:31:47,200 --> 00:31:52,020 Така че нашата стойност в средата е по-малко от стойността, която търсим. 749 00:31:52,020 --> 00:31:53,765 750 00:31:53,765 --> 00:31:56,720 >> Така че, който граница, което правите мисля, че ние искаме да се актуализира? 751 00:31:56,720 --> 00:31:57,870 752 00:31:57,870 --> 00:31:58,780 Горната или долната? 753 00:31:58,780 --> 00:32:01,440 754 00:32:01,440 --> 00:32:01,940 Горна? 755 00:32:01,940 --> 00:32:03,230 756 00:32:03,230 --> 00:32:06,470 Така че, от коя страна на масива ние ще трябва да се гледаш? 757 00:32:06,470 --> 00:32:07,500 >> STUDENT: Колкото по-ниска. 758 00:32:07,500 --> 00:32:09,750 >> ИНСТРУКТОР: Ние отиваме да се търсят в ляво. 759 00:32:09,750 --> 00:32:11,120 Така друго, ако малка стойност е по-малко. 760 00:32:11,120 --> 00:32:14,730 Така средната си стойност тук е по-малко от това, което искаме. 761 00:32:14,730 --> 00:32:17,202 Така че ние искаме да приемате от дясната страна на нашия масив. 762 00:32:17,202 --> 00:32:18,910 Така че ние ще актуализира ниска нашата граница. 763 00:32:18,910 --> 00:32:20,210 764 00:32:20,210 --> 00:32:23,020 Така че ние ще превъзложите ни по-ниска. 765 00:32:23,020 --> 00:32:25,221 И какво мислите, че трябва да е по-ниска? 766 00:32:25,221 --> 00:32:26,304 STUDENT: Средната стойност? 767 00:32:26,304 --> 00:32:27,446 768 00:32:27,446 --> 00:32:28,820 ИНСТРУКТОР: Така средната value-- 769 00:32:28,820 --> 00:32:30,136 STUDENT: Plus 1. 770 00:32:30,136 --> 00:32:31,010 ИНСТРУКТОР: --plus 1. 771 00:32:31,010 --> 00:32:32,300 772 00:32:32,300 --> 00:32:34,380 Може ли някой да ми каже защо имаме, че плюс 1? 773 00:32:34,380 --> 00:32:35,730 >> STUDENT: [? Никаква стойност?] е по-равен с него. 774 00:32:35,730 --> 00:32:36,120 >> ИНСТРУКТОР: Точно така. 775 00:32:36,120 --> 00:32:38,661 Защото ние вече знаем, че нашата средна стойност не е равно на 776 00:32:38,661 --> 00:32:42,750 то и ние искаме да го изключи от всички следващи търсения. 777 00:32:42,750 --> 00:32:46,360 Ако сте пропуснали, че плюс 1, това ще искал линия за неопределено време. 778 00:32:46,360 --> 00:32:49,620 И вие просто ще бъдат уловени в безкраен цикъл и тогава ще segfault 779 00:32:49,620 --> 00:32:50,370 и нещата вървят зле. 780 00:32:50,370 --> 00:32:54,780 Така че винаги се уверете, че не сте включително стойността, която току-що 781 00:32:54,780 --> 00:32:55,380 погледна. 782 00:32:55,380 --> 00:32:58,530 Така че ние се грижим за това с един плюс един. 783 00:32:58,530 --> 00:33:04,840 >> Така че сега ние имаме последната ни състояние което аз винаги заради безопасността 784 00:33:04,840 --> 00:33:12,664 можете да проверите тук, в противен случай, ако стойността на средата е по-голяма от стойността 785 00:33:12,664 --> 00:33:13,163 искаме. 786 00:33:13,163 --> 00:33:16,260 787 00:33:16,260 --> 00:33:20,230 Това означава, че ние искаме лявата половина ръка. 788 00:33:20,230 --> 00:33:21,350 789 00:33:21,350 --> 00:33:23,260 Така че кой ще ходим да се актуализира? 790 00:33:23,260 --> 00:33:23,760 Upper. 791 00:33:23,760 --> 00:33:25,470 792 00:33:25,470 --> 00:33:26,970 И какво е това ще се равнява? 793 00:33:26,970 --> 00:33:31,630 794 00:33:31,630 --> 00:33:33,690 Близкия минус едно, защото Разбира се, ние искаме 795 00:33:33,690 --> 00:33:38,370 за да сме сигурни, че не сте гледаше, че средната стойност отново. 796 00:33:38,370 --> 00:33:41,830 797 00:33:41,830 --> 00:33:45,110 И тогава ние я имаме. 798 00:33:45,110 --> 00:33:45,610 Това е всичко. 799 00:33:45,610 --> 00:33:46,820 Това е всичко, двоично търсене е. 800 00:33:46,820 --> 00:33:48,190 Това не е толкова лошо, нали? 801 00:33:48,190 --> 00:33:51,590 Това е като 10 линии код с бяло пространство. 802 00:33:51,590 --> 00:33:57,510 Така че, много мощен, много полезна, ще ви било то с помощта на един от по-късните си psets. 803 00:33:57,510 --> 00:33:59,360 Може би не е това, но по-късно. 804 00:33:59,360 --> 00:34:00,670 Така че това се учи. 805 00:34:00,670 --> 00:34:01,510 Обичам го. 806 00:34:01,510 --> 00:34:02,980 Тя ще се отнасят с теб добре. 807 00:34:02,980 --> 00:34:05,370 Така Някой има ли въпроси, свързани с двоично търсене? 808 00:34:05,370 --> 00:34:06,196 Да. 809 00:34:06,196 --> 00:34:09,840 >> STUDENT: Има ли значение дали си п е равна или странно? 810 00:34:09,840 --> 00:34:10,750 >> ИНСТРУКТОР: No. 811 00:34:10,750 --> 00:34:18,150 Защото ние се хвърли на средата като пад, той просто ще го отреже. 812 00:34:18,150 --> 00:34:21,600 Така той ще остане цяло число и тя ще в крайна сметка се справи през всичко. 813 00:34:21,600 --> 00:34:23,909 Така че не е нужно да се притеснявате за това. 814 00:34:23,909 --> 00:34:24,580 Всеки добър? 815 00:34:24,580 --> 00:34:25,659 816 00:34:25,659 --> 00:34:26,850 Awesome. 817 00:34:26,850 --> 00:34:27,919 Cool. 818 00:34:27,919 --> 00:34:30,836 Така че, вие, момчета, имам това. 819 00:34:30,836 --> 00:34:33,380 820 00:34:33,380 --> 00:34:33,880 Slideshow. 821 00:34:33,880 --> 00:34:35,719 822 00:34:35,719 --> 00:34:43,270 Така че, както ние говорим за, знам David спомена сложността автономна работа. 823 00:34:43,270 --> 00:34:44,420 824 00:34:44,420 --> 00:34:50,340 >> Така че в най-добрия случай това е просто един, който ние наричаме константно време. 825 00:34:50,340 --> 00:34:51,909 Може ли някой да ми каже защо това би могло да бъде? 826 00:34:51,909 --> 00:34:52,969 827 00:34:52,969 --> 00:34:55,800 Какъв тип сценарий би това води? 828 00:34:55,800 --> 00:34:58,260 829 00:34:58,260 --> 00:34:58,760 Мм-хм. 830 00:34:58,760 --> 00:34:59,926 >> STUDENT: [недоловим] first-- 831 00:34:59,926 --> 00:35:00,789 832 00:35:00,789 --> 00:35:03,830 ИНСТРУКТОР: Така че средата е най- Първият елемент, който стигаме до, нали? 833 00:35:03,830 --> 00:35:08,167 Така че или масив от един или каквото и да търсите само 834 00:35:08,167 --> 00:35:09,750 се случва да бъде пляскам потупване по средата. 835 00:35:09,750 --> 00:35:11,190 836 00:35:11,190 --> 00:35:13,380 Така че това е нашата най-добрият случай. 837 00:35:13,380 --> 00:35:17,540 Вие не можете да получите в реални проблеми, най-вероятно ще достигне [недоловим], че често. 838 00:35:17,540 --> 00:35:18,667 839 00:35:18,667 --> 00:35:19,750 Какво ще кажете за най-лошото нашия случай? 840 00:35:19,750 --> 00:35:21,270 Най-лошия случай ни е дневник п. 841 00:35:21,270 --> 00:35:25,360 И това трябва да се направи с цялото правомощия на две нещо, което говорихме. 842 00:35:25,360 --> 00:35:30,930 >> Така че в най-лошия случай това би означавало, че ние трябваше да посегнат на масива надолу 843 00:35:30,930 --> 00:35:33,270 докато е елемент на един. 844 00:35:33,270 --> 00:35:34,810 845 00:35:34,810 --> 00:35:38,930 Така че ние трябваше да го отрежат наполовина толкова пъти, колкото бихме могли да. 846 00:35:38,930 --> 00:35:41,430 Ето защо това е дневник н защото можете просто да се раздели на две. 847 00:35:41,430 --> 00:35:42,890 848 00:35:42,890 --> 00:35:45,830 Така предположения, неща, трябва да знаете, ако сте някога 849 00:35:45,830 --> 00:35:48,050 ще се използва двоично търсене. 850 00:35:48,050 --> 00:35:50,680 Вашите елементи трябва да бъдат сортирани. 851 00:35:50,680 --> 00:35:53,890 Те трябва да бъдат сортирани, защото това е единственият ви начин 852 00:35:53,890 --> 00:35:57,060 може да знае, ако вие сте в състояние да изхвърля половината от него. 853 00:35:57,060 --> 00:36:00,260 >> Ако сте имали този объркан чанта на номера и казваш, 854 00:36:00,260 --> 00:36:05,380 Добре, аз отивам да се провери средата номер и номер Търся 855 00:36:05,380 --> 00:36:08,510 е по-малко от това, аз съм просто ще произволно да изхвърли половината. 856 00:36:08,510 --> 00:36:11,130 Може би не знаете, ако ви номера в другата половина. 857 00:36:11,130 --> 00:36:12,655 Вашият списък трябва да бъдат сортирани. 858 00:36:12,655 --> 00:36:14,030 859 00:36:14,030 --> 00:36:16,560 Както е добре, това може да бъде върви напред малко, 860 00:36:16,560 --> 00:36:18,360 но трябва да има произволен достъп. 861 00:36:18,360 --> 00:36:21,940 Трябва да бъде в състояние само да отидете на тази средна елемент. 862 00:36:21,940 --> 00:36:25,110 Ако трябва да преминават чрез нещо 863 00:36:25,110 --> 00:36:28,630 или тя ще ви отведе на допълнителни стъпки да стигнем до този среден елемент, 864 00:36:28,630 --> 00:36:31,750 това не е влизане н повече, защото добавяте повече работа в нея. 865 00:36:31,750 --> 00:36:34,800 И това ще направи малко повече чувство за две седмици, 866 00:36:34,800 --> 00:36:37,950 но аз просто вид искаше да предговор, вие даде представа за това какво е 867 00:36:37,950 --> 00:36:38,999 да дойде. 868 00:36:38,999 --> 00:36:40,790 Но това са двете важни предположения 869 00:36:40,790 --> 00:36:44,804 от което се нуждаете за двоичен списък. 870 00:36:44,804 --> 00:36:45,720 Уверете се, че е сортиран. 871 00:36:45,720 --> 00:36:47,920 Това е най-голямата за вие в момента. 872 00:36:47,920 --> 00:36:52,170 И за това ние можем да отидем в остатъка от видове. 873 00:36:52,170 --> 00:36:56,444 Така четири sorts-- балон, вмъкване, подбор, и се сливат. 874 00:36:56,444 --> 00:36:57,485 Те са всички видове готино. 875 00:36:57,485 --> 00:37:02,860 Ако вие, момчета решават да вземат CS 124, вие ще научите за най-различни видове. 876 00:37:02,860 --> 00:37:07,575 И ако сте фен XKCD, има е наистина страхотен комикс за 877 00:37:07,575 --> 00:37:11,530 като наистина неефективни видове, които съм силно препоръчвам ви ще разгледаме. 878 00:37:11,530 --> 00:37:16,170 Един от тях е като паника нещо, което е като, о, не, върнете случаен масив. 879 00:37:16,170 --> 00:37:16,991 Shutdown система. 880 00:37:16,991 --> 00:37:17,490 Остави. 881 00:37:17,490 --> 00:37:19,070 882 00:37:19,070 --> 00:37:21,500 Така че шантавите хумор винаги е добре. 883 00:37:21,500 --> 00:37:22,620 884 00:37:22,620 --> 00:37:25,750 >> Така че има ли някой си спомня вид на като само обща представа 885 00:37:25,750 --> 00:37:27,810 за това как работи балон вид. 886 00:37:27,810 --> 00:37:31,130 887 00:37:31,130 --> 00:37:32,155 Спомняш ли си? 888 00:37:32,155 --> 00:37:32,755 >> Студентът: Да. 889 00:37:32,755 --> 00:37:33,970 >> ИНСТРУКТОР: Отидете за него. 890 00:37:33,970 --> 00:37:38,980 >> STUDENT: Значи става чрез и ако тя е по-голям, тогава вие сменяте двете. 891 00:37:38,980 --> 00:37:39,820 >> ИНСТРУКТОР: Мм-хм. 892 00:37:39,820 --> 00:37:40,564 Точно така. 893 00:37:40,564 --> 00:37:41,730 Така че просто обхождане чрез. 894 00:37:41,730 --> 00:37:43,050 Ти провери две числа. 895 00:37:43,050 --> 00:37:46,510 Ако този преди е по-голям от този, след това 896 00:37:46,510 --> 00:37:50,230 можете просто да ги сменяте, така че в по този начин всички по-голям брой 897 00:37:50,230 --> 00:37:54,990 балон нагоре към края на списъка и всички по-ниски числа балон надолу. 898 00:37:54,990 --> 00:37:59,355 >> Дали той ви покажа момчета прохладата звуков ефект сортиране видео? 899 00:37:59,355 --> 00:38:00,480 Това е нещо готино. 900 00:38:00,480 --> 00:38:01,510 901 00:38:01,510 --> 00:38:05,200 Така че, както Робърт току-що каза, алгоритъмът че просто преминете през списъка, 902 00:38:05,200 --> 00:38:07,930 размяна на съседни стойности ако те не са в ред. 903 00:38:07,930 --> 00:38:10,975 И след това просто да повтаряме докато не направите всички суапове. 904 00:38:10,975 --> 00:38:11,990 905 00:38:11,990 --> 00:38:12,740 Така че не е зле, нали? 906 00:38:12,740 --> 00:38:14,080 907 00:38:14,080 --> 00:38:16,319 Така че ние просто има един бърз пример тук. 908 00:38:16,319 --> 00:38:18,360 Така че това ще се оправи ги във възходящ ред. 909 00:38:18,360 --> 00:38:19,470 910 00:38:19,470 --> 00:38:23,470 Така че, когато ние преминаваме през първата време, ние с нетърпение през осем 911 00:38:23,470 --> 00:38:26,880 и шест очевидно не са в ред, ние ги разменят. 912 00:38:26,880 --> 00:38:27,985 >> Така че погледнете на следващата. 913 00:38:27,985 --> 00:38:29,430 Осем, а не четири в ред. 914 00:38:29,430 --> 00:38:30,450 Разменени тях. 915 00:38:30,450 --> 00:38:32,530 И след осем и две, да ги сменяте. 916 00:38:32,530 --> 00:38:33,470 Има отидем. 917 00:38:33,470 --> 00:38:39,519 Така след първото си подаване, можете Знам, че най-голямата си номер 918 00:38:39,519 --> 00:38:41,810 ще бъде по целия път в горната част, защото това е просто 919 00:38:41,810 --> 00:38:44,210 ще бъде постоянно по-голям от всичко останало 920 00:38:44,210 --> 00:38:46,810 и това е просто ще балон нагоре по целия път до края там. 921 00:38:46,810 --> 00:38:48,226 Ли, че има смисъл за всички? 922 00:38:48,226 --> 00:38:48,560 923 00:38:48,560 --> 00:38:49,060 Cool. 924 00:38:49,060 --> 00:38:51,310 925 00:38:51,310 --> 00:38:53,920 >> Така че след това ние гледаме на нашия втори пас. 926 00:38:53,920 --> 00:38:54,980 Шест и четири, превключвател. 927 00:38:54,980 --> 00:38:55,920 Шест и две, превключвател. 928 00:38:55,920 --> 00:38:58,700 И сега имаме няколко неща в ред. 929 00:38:58,700 --> 00:39:02,240 Така за всеки така, че ние направи през целия ни списък, 930 00:39:02,240 --> 00:39:06,320 ние знаем, че като че много номера в края ще бъдат сортирани. 931 00:39:06,320 --> 00:39:07,690 932 00:39:07,690 --> 00:39:09,610 Така че правим трета атака, който е един суап. 933 00:39:09,610 --> 00:39:10,860 934 00:39:10,860 --> 00:39:15,910 И тогава на нашето четвърто мине, ние имаме нула слотове. 935 00:39:15,910 --> 00:39:18,570 И така, ние знаем, че нашата масив е сортиран. 936 00:39:18,570 --> 00:39:20,900 >> И това е най-големия нещо с балон вид. 937 00:39:20,900 --> 00:39:23,720 Ние знаем, че когато ние имат нулеви суапове, че 938 00:39:23,720 --> 00:39:26,497 означава, че всичко е в пълен ред. 939 00:39:26,497 --> 00:39:27,580 Това е нещо за това как ние проверяваме. 940 00:39:27,580 --> 00:39:28,740 941 00:39:28,740 --> 00:39:36,480 Така че ние също ще се кодират балон нещо, което също не е толкова лошо. 942 00:39:36,480 --> 00:39:38,120 Никой от тях не са толкова зле. 943 00:39:38,120 --> 00:39:40,210 Знам, че те може да изглежда малко страшно. 944 00:39:40,210 --> 00:39:42,124 Знам, че когато взех класа, дори когато 945 00:39:42,124 --> 00:39:44,290 поучаваше класа за за първи път миналата година, 946 00:39:44,290 --> 00:39:46,165 Аз бях като, как мога да направя това? 947 00:39:46,165 --> 00:39:48,540 Логично е на теория, но как ние всъщност правим това? 948 00:39:48,540 --> 00:39:51,420 Което е защо аз също искам да ходя чрез код с вас тук. 949 00:39:51,420 --> 00:39:54,915 Така че имам Псевдокод за вас, момчета, този път. 950 00:39:54,915 --> 00:39:55,950 951 00:39:55,950 --> 00:39:58,970 Така че просто да се има предвид, тъй като ние сме на път да премине през. 952 00:39:58,970 --> 00:40:04,210 Така че ние имаме някакъв брояч, който следи от нашите суапове, 953 00:40:04,210 --> 00:40:08,370 защото ние трябва да се уверите, че ние сме проверка на това. 954 00:40:08,370 --> 00:40:11,830 И ние обхождане на целия масив тъй като ние просто направихме с този пример. 955 00:40:11,830 --> 00:40:12,900 956 00:40:12,900 --> 00:40:17,325 Ако преди елемент е по-голям от елемента след където сме в, 957 00:40:17,325 --> 00:40:20,760 ние ги разменят и ние увеличаваме нашето брояч, защото веднага след като сменяте, 958 00:40:20,760 --> 00:40:23,850 ние искаме да споделите нашата борба знаеш. 959 00:40:23,850 --> 00:40:26,247 Всякакви въпроси там? 960 00:40:26,247 --> 00:40:27,580 Нещо изглежда смешно тук. 961 00:40:27,580 --> 00:40:29,225 962 00:40:29,225 --> 00:40:32,350 STUDENT: Смятате ли настроите брояча на нула всеки път, когато мине през примката? 963 00:40:32,350 --> 00:40:34,339 Не ти продължавай обратно до нула всеки път? 964 00:40:34,339 --> 00:40:35,505 ИНСТРУКТОР: Не е задължително. 965 00:40:35,505 --> 00:40:39,710 Така че това, което се случва, е, че ние проверете тук. 966 00:40:39,710 --> 00:40:43,830 Така че, докато, не забравяйте, това ще се изпълни веднъж без да се провалят. 967 00:40:43,830 --> 00:40:46,480 Така че това се случва, за да настроите брояч, равна на нула, 968 00:40:46,480 --> 00:40:48,070 След това ще превъртите през. 969 00:40:48,070 --> 00:40:50,590 Както се повтаря чрез, тя ще се актуализира брояч. 970 00:40:50,590 --> 00:40:51,870 971 00:40:51,870 --> 00:40:56,900 Както се актуализира брояч, когато това е направено, когато той е достигнал края на масива, 972 00:40:56,900 --> 00:41:00,830 ако нашият списък не е сортирана, брояч ще са актуализирани. 973 00:41:00,830 --> 00:41:01,840 974 00:41:01,840 --> 00:41:07,150 >> Така че след това той проверява състоянието и казва, OK, е контрапродуктивно по-голяма от нула. 975 00:41:07,150 --> 00:41:09,290 Ако е така, да го направя отново. 976 00:41:09,290 --> 00:41:14,340 Вие искате да възстановите, така че когато проверете, брояч е равна на нула. 977 00:41:14,340 --> 00:41:18,240 Ако отидете през сортиран масив, нищо не се променя, 978 00:41:18,240 --> 00:41:21,355 това се провали, и вие върнете подредени списъка. 979 00:41:21,355 --> 00:41:23,104 980 00:41:23,104 --> 00:41:24,020 Ли, че има смисъл? 981 00:41:24,020 --> 00:41:24,940 982 00:41:24,940 --> 00:41:26,356 STUDENT: Тя може по малко. 983 00:41:26,356 --> 00:41:27,147 ИНСТРУКТОР: OK. 984 00:41:27,147 --> 00:41:28,980 Ако има някакъв друг въпрос, който идва. 985 00:41:28,980 --> 00:41:30,180 986 00:41:30,180 --> 00:41:30,680 Да. 987 00:41:30,680 --> 00:41:33,760 >> STUDENT: Какво би функцията е за смяна на елементи? 988 00:41:33,760 --> 00:41:36,900 >> ИНСТРУКТОР: Така че всъщност можем да напишем че ако ние отиваме в момента. 989 00:41:36,900 --> 00:41:37,801 990 00:41:37,801 --> 00:41:38,300 Cool. 991 00:41:38,300 --> 00:41:42,155 Така че по тази бележка, Алисън се случва да се върнете към уреда. 992 00:41:42,155 --> 00:41:43,080 Това ще бъде забавно. 993 00:41:43,080 --> 00:41:45,170 994 00:41:45,170 --> 00:41:47,390 И ние имаме хубава Метод на мехурчето нещо тук. 995 00:41:47,390 --> 00:41:50,800 Така че аз вече направих колоездене масива. 996 00:41:50,800 --> 00:41:53,030 Ние разполагаме със суапове, че са равни на нула. 997 00:41:53,030 --> 00:41:54,480 998 00:41:54,480 --> 00:41:58,440 Така че ние искаме да суап съседни елементи, ако те не са на ред. 999 00:41:58,440 --> 00:42:03,020 Така че първото нещо, което трябва да се да се превъртите през нашия масив. 1000 00:42:03,020 --> 00:42:04,500 1001 00:42:04,500 --> 00:42:08,260 >> Е, как мислиш, че биха могли превъртите през нашия масив? 1002 00:42:08,260 --> 00:42:09,720 1003 00:42:09,720 --> 00:42:13,990 Ние имаме за и аз се равнява на 0. 1004 00:42:13,990 --> 00:42:16,950 1005 00:42:16,950 --> 00:42:22,454 Искаме и да бъде по-малко от п минус 1, минус к. 1006 00:42:22,454 --> 00:42:23,870 И аз ще обясня, че в една секунда. 1007 00:42:23,870 --> 00:42:26,280 1008 00:42:26,280 --> 00:42:32,830 Така че това е една оптимизация тук, където, Спомням си как ми каза след всеки пас 1009 00:42:32,830 --> 00:42:36,655 чрез WE масив Знам, че каквото и да е on-- 1010 00:42:36,655 --> 00:42:43,590 1011 00:42:43,590 --> 00:42:46,295 >> Така след един пас ние Знам, че това се сортира. 1012 00:42:46,295 --> 00:42:47,370 1013 00:42:47,370 --> 00:42:50,060 След две минавания знаем че всичко това се сортира. 1014 00:42:50,060 --> 00:42:52,750 След три комбинация ние Знам, че е сортиран. 1015 00:42:52,750 --> 00:42:55,620 Така, както аз съм итерации масива тук, 1016 00:42:55,620 --> 00:43:01,090 е това е като се уверите, само да отида чрез това, което ние знаем, е сортиран. 1017 00:43:01,090 --> 00:43:01,644 OK? 1018 00:43:01,644 --> 00:43:02,810 Това е просто една оптимизация. 1019 00:43:02,810 --> 00:43:04,430 1020 00:43:04,430 --> 00:43:08,210 Можете да го напиша просто наивно итерации през всичко, 1021 00:43:08,210 --> 00:43:09,970 тя просто ще отнеме повече време. 1022 00:43:09,970 --> 00:43:12,470 С този четири контур е просто хубава оптимизация 1023 00:43:12,470 --> 00:43:18,460 защото знаем, че след всяко пълно итерация масива тук, 1024 00:43:18,460 --> 00:43:24,050 като всеки пълен цикъл тук, ние знаем, че още един от тези елементи 1025 00:43:24,050 --> 00:43:25,760 ще бъдат подредени в края. 1026 00:43:25,760 --> 00:43:28,294 >> Така че ние не трябва да се притеснявате за тях. 1027 00:43:28,294 --> 00:43:29,710 Ли, че има смисъл за всички? 1028 00:43:29,710 --> 00:43:30,950 Това готино малък трик? 1029 00:43:30,950 --> 00:43:32,060 1030 00:43:32,060 --> 00:43:37,270 Така че в този случай, ако ние сме итерации чрез, 1031 00:43:37,270 --> 00:43:50,590 ние знаем, че искате да проверите дали масив п и п плюс 1 са в ред. 1032 00:43:50,590 --> 00:43:52,640 1033 00:43:52,640 --> 00:43:53,559 OK. 1034 00:43:53,559 --> 00:43:54,600 Така че тук е Псевдокод. 1035 00:43:54,600 --> 00:43:57,540 Ние искаме да се провери дали масив п и п плюс 1 са в ред. 1036 00:43:57,540 --> 00:43:59,520 И така, какво може да имаме там? 1037 00:43:59,520 --> 00:44:01,090 1038 00:44:01,090 --> 00:44:03,120 Това ще бъде някакъв условно. 1039 00:44:03,120 --> 00:44:04,220 Това ще бъде, ако. 1040 00:44:04,220 --> 00:44:07,066 >> STUDENT: Ако масив п е по-малко от масив п плюс 1. 1041 00:44:07,066 --> 00:44:07,816 ИНСТРУКТОР: Мм-хм. 1042 00:44:07,816 --> 00:44:09,000 1043 00:44:09,000 --> 00:44:10,699 Е, по-малка или по-голяма от. 1044 00:44:10,699 --> 00:44:11,615 STUDENT: Над. 1045 00:44:11,615 --> 00:44:15,850 1046 00:44:15,850 --> 00:44:17,620 След това ние искаме да ги разменят. 1047 00:44:17,620 --> 00:44:18,570 Точно така. 1048 00:44:18,570 --> 00:44:23,570 Така че сега ние се в това, което е най- механизъм за тях смяна? 1049 00:44:23,570 --> 00:44:24,840 1050 00:44:24,840 --> 00:44:28,137 Така минахме през това кратко време, вид суап функция миналата седмица. 1051 00:44:28,137 --> 00:44:29,595 Дали някой си спомня как тя работи? 1052 00:44:29,595 --> 00:44:32,300 1053 00:44:32,300 --> 00:44:34,950 Така че не можем просто да ги превъзлагате, нали? 1054 00:44:34,950 --> 00:44:36,640 Тъй като един от тях ще се загуби. 1055 00:44:36,640 --> 00:44:41,696 Ако сме казали А е равна на В и след това B е равна на А, всички внезапно двамата 1056 00:44:41,696 --> 00:44:43,150 са само равна на B. 1057 00:44:43,150 --> 00:44:45,720 >> Така че това, което трябва да направите, е, че ние има временна променлива, която е 1058 00:44:45,720 --> 00:44:49,055 ще се проведе един от нашите, докато ние сме в процес на смяна. 1059 00:44:49,055 --> 00:44:50,200 1060 00:44:50,200 --> 00:44:56,464 Така че това, което имаме, е, че ще има някакъв инт температура е равна to-- можете да го зададете 1061 00:44:56,464 --> 00:44:59,130 за това, което сте искам, просто уверете се, че можете да следите it-- 1062 00:44:59,130 --> 00:45:01,840 така че в този случай, аз отивам да той възлага на масив N плюс 1. 1063 00:45:01,840 --> 00:45:03,360 1064 00:45:03,360 --> 00:45:07,674 Така че това ще се проведе независимо от стойност е, че вторият блок 1065 00:45:07,674 --> 00:45:08,590 че ние не търсим в. 1066 00:45:08,590 --> 00:45:09,700 1067 00:45:09,700 --> 00:45:13,240 >> И тогава ще можем да направим, е да можем да отидем напред и да превъзложите масив п плюс 1, 1068 00:45:13,240 --> 00:45:14,990 защото ние знаем, имат тази стойност се съхранява. 1069 00:45:14,990 --> 00:45:16,645 1070 00:45:16,645 --> 00:45:19,270 Това е също един от най-големите things-- Аз не знам дали някой от вас 1071 00:45:19,270 --> 00:45:23,780 има въпроси, по които, ако преминат два реда код изведнъж нещата работят. 1072 00:45:23,780 --> 00:45:25,880 Поръчка е много важно в CS. 1073 00:45:25,880 --> 00:45:29,450 Така че се уверете, че диаграмата нещата, ако е възможно 1074 00:45:29,450 --> 00:45:31,230 за това какво всъщност се случва. 1075 00:45:31,230 --> 00:45:34,256 Така че сега ние ще превъзлагане масив п плюс 1, 1076 00:45:34,256 --> 00:45:36,005 защото ние знаем, имат тази стойност се съхранява. 1077 00:45:36,005 --> 00:45:37,090 1078 00:45:37,090 --> 00:45:41,560 >> И ние може да възложи това на масив N или в този случай масив аз. 1079 00:45:41,560 --> 00:45:50,540 1080 00:45:50,540 --> 00:45:51,465 Твърде много променливи. 1081 00:45:51,465 --> 00:45:54,230 1082 00:45:54,230 --> 00:45:55,470 OK. 1083 00:45:55,470 --> 00:46:01,500 Така че сега ние сме преотстъпва масив аз плюс 1 е равно на това, което е в масив аз. 1084 00:46:01,500 --> 00:46:08,240 И сега можем да се върнем и зададете масив и с какво? 1085 00:46:08,240 --> 00:46:10,680 1086 00:46:10,680 --> 00:46:11,180 Някой? 1087 00:46:11,180 --> 00:46:13,490 1088 00:46:13,490 --> 00:46:14,010 >> STUDENT: 10. 1089 00:46:14,010 --> 00:46:14,680 >> ИНСТРУКТОР: 10. 1090 00:46:14,680 --> 00:46:15,180 Точно така. 1091 00:46:15,180 --> 00:46:16,930 1092 00:46:16,930 --> 00:46:18,640 И едно последно нещо. 1093 00:46:18,640 --> 00:46:21,840 Ако сме го замениха сега, какво трябва да направим? 1094 00:46:21,840 --> 00:46:23,740 Какво е едно нещо, че ще ни каже 1095 00:46:23,740 --> 00:46:27,542 ако някога се прекрати тази програма? 1096 00:46:27,542 --> 00:46:29,250 Това, което ни казва, че ние имате подредени списък? 1097 00:46:29,250 --> 00:46:31,560 1098 00:46:31,560 --> 00:46:33,750 Ако ние не се изпълняват никакви суапове, нали? 1099 00:46:33,750 --> 00:46:36,900 Ако суапове е равно на нула в края на това. 1100 00:46:36,900 --> 00:46:42,975 Така че всеки път, когато се извърши замяна, тъй като ние просто е тук, ние искаме да се актуализира суапове. 1101 00:46:42,975 --> 00:46:45,002 1102 00:46:45,002 --> 00:46:47,210 И знам, че е имало въпрос по-рано за да ви 1103 00:46:47,210 --> 00:46:49,689 използва нула или едно вместо на вярно или невярно. 1104 00:46:49,689 --> 00:46:50,980 И това е, което прави този тук. 1105 00:46:50,980 --> 00:46:52,750 Така че това казва, че ако не суапове. 1106 00:46:52,750 --> 00:47:01,310 Така че, ако суапове е нула, което винаги съм is-- получите моите истини и ми falses смесват. 1107 00:47:01,310 --> 00:47:03,960 Искаме ни да се оцени да е вярно и това не е. 1108 00:47:03,960 --> 00:47:07,680 1109 00:47:07,680 --> 00:47:09,630 Така че, ако това е нула, а след това е лъжа. 1110 00:47:09,630 --> 00:47:12,560 Ако го отрича с [? взрив?] тя се превръща в истина. 1111 00:47:12,560 --> 00:47:13,975 Така след тази линия се изпълнява. 1112 00:47:13,975 --> 00:47:15,060 1113 00:47:15,060 --> 00:47:17,370 >> Истини и невярна и нули и единици получават луди. 1114 00:47:17,370 --> 00:47:20,690 Само ако бавно ходи чрез нея той ще има смисъл. 1115 00:47:20,690 --> 00:47:23,320 Но това е малкото, което този малко код тук прави. 1116 00:47:23,320 --> 00:47:26,490 Така че това проверява, за да видите сме правили суапове. 1117 00:47:26,490 --> 00:47:30,054 Така че, ако това е всичко, освен нулев, той ще бъде фалшива 1118 00:47:30,054 --> 00:47:31,970 и цялото това нещо е ще се изпълни отново. 1119 00:47:31,970 --> 00:47:33,150 1120 00:47:33,150 --> 00:47:33,650 Cool? 1121 00:47:33,650 --> 00:47:34,660 1122 00:47:34,660 --> 00:47:36,000 >> STUDENT: Какво означава прекъсване направя? 1123 00:47:36,000 --> 00:47:38,990 >> ИНСТРУКТОР: Пробив просто ти избухне на цикъла. 1124 00:47:38,990 --> 00:47:41,570 Така че в този случай тя ще точно като сложи край на програмата 1125 00:47:41,570 --> 00:47:43,828 а вие просто ще имате подредени списък. 1126 00:47:43,828 --> 00:47:44,536 STUDENT: Невероятно. 1127 00:47:44,536 --> 00:47:48,094 1128 00:47:48,094 --> 00:47:49,010 ИНСТРУКТОР: Съжалявам? 1129 00:47:49,010 --> 00:47:52,110 STUDENT: Защото преди това ние използва писмена 1 над писмено нула 1130 00:47:52,110 --> 00:47:54,170 да представи, че ако които ще работят или не. 1131 00:47:54,170 --> 00:47:54,878 >> ИНСТРУКТОР: Да. 1132 00:47:54,878 --> 00:47:56,410 Така че можете да се върнете нула или 1. 1133 00:47:56,410 --> 00:47:58,950 В този случай, тъй като ние не сме всъщност правиш нещо с тази функция, 1134 00:47:58,950 --> 00:48:00,150 ние просто искаме да се счупят. 1135 00:48:00,150 --> 00:48:02,680 Ние наистина не се грижи за него. 1136 00:48:02,680 --> 00:48:06,960 Brake също е добро, ако той се използва за излизане 1137 00:48:06,960 --> 00:48:10,710 на четири линии или условия, които вие не искате да запазите изпълнява. 1138 00:48:10,710 --> 00:48:12,110 Тя просто ще ви отведе от тях. 1139 00:48:12,110 --> 00:48:13,587 1140 00:48:13,587 --> 00:48:14,795 Това е малко нещо нюанс. 1141 00:48:14,795 --> 00:48:16,737 1142 00:48:16,737 --> 00:48:18,445 Имам чувството, че има много ръка къдрене, 1143 00:48:18,445 --> 00:48:19,740 като ще научите за това скоро. 1144 00:48:19,740 --> 00:48:20,955 >> Но вие ще научите повече за това скоро. 1145 00:48:20,955 --> 00:48:21,500 Обещавам. 1146 00:48:21,500 --> 00:48:22,670 1147 00:48:22,670 --> 00:48:23,170 OK. 1148 00:48:23,170 --> 00:48:24,840 Така се получи ли всеки балон нещо? 1149 00:48:24,840 --> 00:48:25,550 Не е твърде лошо. 1150 00:48:25,550 --> 00:48:31,910 Превъртите през, суап неща с помощта на температура променлива, и ние сме всичко е готово там? 1151 00:48:31,910 --> 00:48:32,960 Cool. 1152 00:48:32,960 --> 00:48:34,080 Awesome. 1153 00:48:34,080 --> 00:48:34,807 OK. 1154 00:48:34,807 --> 00:48:35,765 Обратно към PowerPoint. 1155 00:48:35,765 --> 00:48:38,140 1156 00:48:38,140 --> 00:48:40,130 Всякакви въпроси, по принцип за това досега? 1157 00:48:40,130 --> 00:48:41,200 1158 00:48:41,200 --> 00:48:41,700 Cool. 1159 00:48:41,700 --> 00:48:43,110 1160 00:48:43,110 --> 00:48:43,695 Мм-хм. 1161 00:48:43,695 --> 00:48:45,279 >> STUDENT: [недоловим] INT главната обикновено. 1162 00:48:45,279 --> 00:48:46,695 Трябва ли да има, че за това? 1163 00:48:46,695 --> 00:48:48,400 1164 00:48:48,400 --> 00:48:53,550 >> ИНСТРУКТОР: Така че ние просто търсите точно на действителното алгоритъм за сортиране. 1165 00:48:53,550 --> 00:48:54,559 1166 00:48:54,559 --> 00:48:56,350 Ако го имаше в като по-голяма програма, 1167 00:48:56,350 --> 00:48:57,891 вие ще трябва пад основната някъде. 1168 00:48:57,891 --> 00:49:00,070 1169 00:49:00,070 --> 00:49:02,880 В зависимост от това къде сте използвате този алгоритъм, 1170 00:49:02,880 --> 00:49:05,860 тя ще се определи какво е се върна от него. 1171 00:49:05,860 --> 00:49:09,960 Но за нашия случай, ние сме строго гледа как прави това всъщност 1172 00:49:09,960 --> 00:49:11,300 обхождане чрез масив. 1173 00:49:11,300 --> 00:49:12,570 Така че не се притеснявайте за това. 1174 00:49:12,570 --> 00:49:14,150 1175 00:49:14,150 --> 00:49:19,830 >> Така че ние говорим за най-добрия случай и най-лошите сценарии за двоично търсене. 1176 00:49:19,830 --> 00:49:22,470 Така че това е важно също така да се направи че за всеки един от нашите видове. 1177 00:49:22,470 --> 00:49:24,200 1178 00:49:24,200 --> 00:49:27,560 И така, какво мислите, че е най-лошото случай по време на работа на балон нещо? 1179 00:49:27,560 --> 00:49:29,560 1180 00:49:29,560 --> 00:49:30,700 Вие, момчета, не помниш ли? 1181 00:49:30,700 --> 00:49:31,784 >> STUDENT: N минус 1. 1182 00:49:31,784 --> 00:49:32,700 ИНСТРУКТОР: N минус 1. 1183 00:49:32,700 --> 00:49:35,070 Така че това означава, че има N минус 1 сравнения. 1184 00:49:35,070 --> 00:49:40,060 Така че едно е да осъзнаем е, че на първата итерация, 1185 00:49:40,060 --> 00:49:43,360 ние преминем, сравним тези two-- така че това е едно. 1186 00:49:43,360 --> 00:49:46,685 Тези две, три, четири. 1187 00:49:46,685 --> 00:49:48,070 1188 00:49:48,070 --> 00:49:55,050 Така след една итерация ние Вече имаме четири сравнения. 1189 00:49:55,050 --> 00:49:58,230 Когато говоря по време на работа и п. 1190 00:49:58,230 --> 00:50:04,680 N е броят на сравнения като функция на колко елементи 1191 00:50:04,680 --> 00:50:05,570 имаме. 1192 00:50:05,570 --> 00:50:06,430 OK? 1193 00:50:06,430 --> 00:50:08,860 >> Така че проверете, имаме четири. 1194 00:50:08,860 --> 00:50:11,780 Следващият път, когато знаят, че ние не правим трябва да се грижи за това. 1195 00:50:11,780 --> 00:50:15,140 Ние сравняваме тези две, тези две, тези две, 1196 00:50:15,140 --> 00:50:20,050 и ако не сме имали, че оптимизация с четири цикъла, че съм написал, 1197 00:50:20,050 --> 00:50:22,750 ще се сравняват тук все пак. 1198 00:50:22,750 --> 00:50:26,170 Така че вие ​​ще трябва да минава през масива 1199 00:50:26,170 --> 00:50:34,380 и да н сравнения п пъти, защото всеки път, когато ние 1200 00:50:34,380 --> 00:50:36,670 стартирате чрез нея ние някак едно нещо. 1201 00:50:36,670 --> 00:50:38,300 1202 00:50:38,300 --> 00:50:41,475 >> И всеки път, когато минава през масива, ние правим н сравнения. 1203 00:50:41,475 --> 00:50:42,920 1204 00:50:42,920 --> 00:50:46,330 Така че нашите по време на работа за това е всъщност н квадрат, което 1205 00:50:46,330 --> 00:50:48,400 е много по-зле в нашата влезете край, защото това 1206 00:50:48,400 --> 00:50:51,965 означава, че ако имахме четири милиард елементи, това е 1207 00:50:51,965 --> 00:50:55,260 Ще ни отнеме четири милиарда квадрат вместо 32. 1208 00:50:55,260 --> 00:51:01,240 Така че най-доброто време на работа, но за някои неща, 1209 00:51:01,240 --> 00:51:04,610 нали знаете, ако сте в определен набор от елементи 1210 00:51:04,610 --> 00:51:06,540 Метод на мехурчето може да бъде добре да се използва. 1211 00:51:06,540 --> 00:51:07,530 >> OK. 1212 00:51:07,530 --> 00:51:12,290 Така че сега това, което е най-добрият случай Runtime? 1213 00:51:12,290 --> 00:51:14,357 1214 00:51:14,357 --> 00:51:14,940 STUDENT: Нула? 1215 00:51:14,940 --> 00:51:16,420 Или 1? 1216 00:51:16,420 --> 00:51:18,140 >> ИНСТРУКТОР: Значи 1 би един сравнение. 1217 00:51:18,140 --> 00:51:19,114 Точно така. 1218 00:51:19,114 --> 00:51:20,002 >> STUDENT: N минус 1? 1219 00:51:20,002 --> 00:51:21,380 1220 00:51:21,380 --> 00:51:22,320 >> ИНСТРУКТОР: Така че, да. 1221 00:51:22,320 --> 00:51:22,990 Така N минус едно. 1222 00:51:22,990 --> 00:51:26,510 Винаги, когато имате понятие като п минус 1, ние сме склонни просто да го оставиш 1223 00:51:26,510 --> 00:51:31,680 и ние просто да кажем н защото имате за сравнение всеки от these-- всяка двойка. 1224 00:51:31,680 --> 00:51:36,470 Така че би било N минус 1, което ние ние току-що се каже, е около п. 1225 00:51:36,470 --> 00:51:39,280 Когато имаш работа с продължителност на работа, всичко е в доближава. 1226 00:51:39,280 --> 00:51:43,860 Докато експонентата е вярна, ти си доста добър. 1227 00:51:43,860 --> 00:51:45,700 >> Това е, как да се справяме с него. 1228 00:51:45,700 --> 00:51:47,410 1229 00:51:47,410 --> 00:51:51,780 Така че най-добрия случай е N, който означава, че списъкът е вече подредени, 1230 00:51:51,780 --> 00:51:54,320 и всичко, което правим се управлява чрез и проверете дали е сортиран. 1231 00:51:54,320 --> 00:51:56,110 1232 00:51:56,110 --> 00:51:56,855 Cool. 1233 00:51:56,855 --> 00:51:57,355 Добре. 1234 00:51:57,355 --> 00:51:58,980 1235 00:51:58,980 --> 00:52:01,920 Така че, както виждате тук, ние Просто трябва още няколко графики. 1236 00:52:01,920 --> 00:52:02,660 Така н квадрат. 1237 00:52:02,660 --> 00:52:03,780 1238 00:52:03,780 --> 00:52:05,120 Fun. 1239 00:52:05,120 --> 00:52:09,730 Много по-лошо, отколкото п както виждаме, и много, много по-лошо, отколкото дневник 2n. 1240 00:52:09,730 --> 00:52:12,060 И тогава можете да получите в регистрационните дневници. 1241 00:52:12,060 --> 00:52:18,020 И вземете 124, можете да получите в като дневник звезда, която е като луд. 1242 00:52:18,020 --> 00:52:20,172 Така че, ако проявявате интерес, търсене дневник звезда. 1243 00:52:20,172 --> 00:52:20,880 Това е нещо забавно. 1244 00:52:20,880 --> 00:52:22,800 1245 00:52:22,800 --> 00:52:24,220 Така че ние имаме тази велика диаграма. 1246 00:52:24,220 --> 00:52:25,360 1247 00:52:25,360 --> 00:52:28,720 Само глави нагоре, това е прекрасен диаграма, за да има 1248 00:52:28,720 --> 00:52:31,350 за средносрочния защото ние дълго, за да ви попитам тези изтънява. 1249 00:52:31,350 --> 00:52:36,090 Така само за хедс-ъп, имат тази на вашия средносрочна на вашия хубав мамят лист 1250 00:52:36,090 --> 00:52:36,616 там. 1251 00:52:36,616 --> 00:52:37,990 Така че ние просто погледна балон вид. 1252 00:52:37,990 --> 00:52:39,510 1253 00:52:39,510 --> 00:52:42,370 В най-лошия случай, п квадрат, най-добрият случай, п. 1254 00:52:42,370 --> 00:52:43,367 1255 00:52:43,367 --> 00:52:44,950 И ние отиваме да погледнем към другите. 1256 00:52:44,950 --> 00:52:47,940 >> И както можете да видите, единственото един, който наистина се справя добре 1257 00:52:47,940 --> 00:52:50,910 е сливане нещо, което ще получите в защо. 1258 00:52:50,910 --> 00:52:52,690 1259 00:52:52,690 --> 00:52:55,215 Така че ние ще отидем до следващия here-- вид избор. 1260 00:52:55,215 --> 00:52:56,360 1261 00:52:56,360 --> 00:52:58,420 Дали някой си спомня как Избор на вид е работил? 1262 00:52:58,420 --> 00:53:05,200 1263 00:53:05,200 --> 00:53:05,700 Отидете за него. 1264 00:53:05,700 --> 00:53:08,210 >> STUDENT: Основно проверете ред и създаване на нов списък. 1265 00:53:08,210 --> 00:53:11,001 И точно както сте пускането елементи в, ги поставя на правилното място 1266 00:53:11,001 --> 00:53:11,750 в новия списък. 1267 00:53:11,750 --> 00:53:14,040 >> ИНСТРУКТОР: Така че звуци по-скоро като вмъкване вид. 1268 00:53:14,040 --> 00:53:15,040 Но ти си много близо. 1269 00:53:15,040 --> 00:53:15,915 Те са много сходни. 1270 00:53:15,915 --> 00:53:17,440 Дори и аз да ги смесва понякога. 1271 00:53:17,440 --> 00:53:18,981 Преди този раздел, аз бях като, изчакайте. 1272 00:53:18,981 --> 00:53:20,130 1273 00:53:20,130 --> 00:53:20,630 OK. 1274 00:53:20,630 --> 00:53:24,141 Така че това, което искате да направите, е избор на нещо, 1275 00:53:24,141 --> 00:53:25,890 начина, по който можеш да се сетиш за това и начина, по който 1276 00:53:25,890 --> 00:53:30,140 Аз съм сигурен, че не се опитват да получат ги смесва, е тя преминава през 1277 00:53:30,140 --> 00:53:33,280 и избира най-малкия номер и да го 1278 00:53:33,280 --> 00:53:36,070 поставя, че в началото на вашия списък. 1279 00:53:36,070 --> 00:53:37,730 Той я разменя с тази първа точка. 1280 00:53:37,730 --> 00:53:42,600 1281 00:53:42,600 --> 00:53:45,370 Те всъщност са пример за мен. 1282 00:53:45,370 --> 00:53:46,540 Awesome. 1283 00:53:46,540 --> 00:53:50,130 Така че просто начин да се мисли за it-- избор вид, изберете най-малката стойност. 1284 00:53:50,130 --> 00:53:51,940 И ние ще тече през пример 1285 00:53:51,940 --> 00:53:55,320 което мисля, че ще помогне, защото Мисля, визуализации винаги помагат. 1286 00:53:55,320 --> 00:53:58,510 Така че да започнем с нещо че е напълно сортиран. 1287 00:53:58,510 --> 00:54:00,730 Red ще бъде сортиран, зелено ще бъдат сортирани. 1288 00:54:00,730 --> 00:54:02,190 Всичко това ще има смисъл в секунда. 1289 00:54:02,190 --> 00:54:08,950 >> Така че проверете и ние обхождане от началото до края. 1290 00:54:08,950 --> 00:54:12,320 И ние казваме, OK, 2 ни най-малък номер. 1291 00:54:12,320 --> 00:54:15,680 Така че ние ще вземем 2 и отиваме да го премести в предната част на нашия масив 1292 00:54:15,680 --> 00:54:17,734 защото това е най- най-малкият номер, който имаме. 1293 00:54:17,734 --> 00:54:19,150 Така че това е, което това се прави тук. 1294 00:54:19,150 --> 00:54:20,820 Това е просто ще замени тези две. 1295 00:54:20,820 --> 00:54:21,850 1296 00:54:21,850 --> 00:54:25,450 Така че сега ние имаме сортирано част и несортирани част. 1297 00:54:25,450 --> 00:54:27,810 И това, което е добре да се помни, за избор на сортиране 1298 00:54:27,810 --> 00:54:30,690 е, че ние сме само избора от несортиран част. 1299 00:54:30,690 --> 00:54:32,220 1300 00:54:32,220 --> 00:54:34,527 >> Сортираните част просто оставят на мира. 1301 00:54:34,527 --> 00:54:35,660 Мм-хм? 1302 00:54:35,660 --> 00:54:38,452 >> STUDENT: Как не го знае какво е най-малкото, без да го сравняват 1303 00:54:38,452 --> 00:54:39,868 за всяка друга стойност в масива. 1304 00:54:39,868 --> 00:54:41,250 ИНСТРУКТОР: Това го прави сравнение. 1305 00:54:41,250 --> 00:54:42,041 Харесва ни да го пропуснат. 1306 00:54:42,041 --> 00:54:43,850 Това е само общото цяло. 1307 00:54:43,850 --> 00:54:44,831 Да. 1308 00:54:44,831 --> 00:54:47,205 Когато пишем кода съм сигурен, че ще бъде по-доволни. 1309 00:54:47,205 --> 00:54:48,696 1310 00:54:48,696 --> 00:54:53,030 Но да съхранявате този първи елемент, тъй като най-малката. 1311 00:54:53,030 --> 00:54:56,110 Можете да сравните и вие се каже, ОК, това е по-малък? 1312 00:54:56,110 --> 00:54:56,660 Да. 1313 00:54:56,660 --> 00:54:57,460 Дръжте го. 1314 00:54:57,460 --> 00:54:58,640 Ето това е по-малък? 1315 00:54:58,640 --> 00:54:59,660 Не? 1316 00:54:59,660 --> 00:55:02,510 >> Това е вашият най-малката, я прехвърли към стойността си. 1317 00:55:02,510 --> 00:55:06,340 И ще бъде много по-щастлив когато ние преминаваме през кода. 1318 00:55:06,340 --> 00:55:07,510 1319 00:55:07,510 --> 00:55:13,970 Така че проверете, ние го сменяте, така че след това ние гледаме на този несортирани част. 1320 00:55:13,970 --> 00:55:15,810 Така че отиваме да изберете три. 1321 00:55:15,810 --> 00:55:18,890 Отиваме да го постави на най- края на нашето сортирани част. 1322 00:55:18,890 --> 00:55:20,267 1323 00:55:20,267 --> 00:55:23,100 И ние просто ще продължим да правим , че прави това, и прави това. 1324 00:55:23,100 --> 00:55:24,130 1325 00:55:24,130 --> 00:55:27,420 Така че това е нашият вид Псевдокод тук. 1326 00:55:27,420 --> 00:55:29,470 1327 00:55:29,470 --> 00:55:31,380 Ние ще го кодира тук в секунда. 1328 00:55:31,380 --> 00:55:34,140 1329 00:55:34,140 --> 00:55:37,270 Но просто нещо да ходят чрез на високо ниво. 1330 00:55:37,270 --> 00:55:40,275 Ти започваш да се премине от и п е равно на 0 до минус 2. 1331 00:55:40,275 --> 00:55:41,570 1332 00:55:41,570 --> 00:55:43,530 Това е друг оптимизация. 1333 00:55:43,530 --> 00:55:45,020 Не се притеснявайте твърде много за него. 1334 00:55:45,020 --> 00:55:46,620 Така че, както се казва. 1335 00:55:46,620 --> 00:55:49,660 1336 00:55:49,660 --> 00:55:54,406 Както Яков казва, как правим следите на това, което ни минимум е? 1337 00:55:54,406 --> 00:55:55,030 Откъде да знаем? 1338 00:55:55,030 --> 00:55:57,060 Ние трябва да се сравняват всичко в нашия списък. 1339 00:55:57,060 --> 00:55:59,600 >> Така минималната равнява аз. 1340 00:55:59,600 --> 00:56:03,870 Това е просто казвам, в този случай индексът на нашата минимална стойност. 1341 00:56:03,870 --> 00:56:07,660 Така че след това ще превъртите през и тя отива от й се равнява аз плюс 1. 1342 00:56:07,660 --> 00:56:11,420 Така че ние вече знаем, че това е първата ни елемент. 1343 00:56:11,420 --> 00:56:13,240 Ние не трябва да го сравни с себе си. 1344 00:56:13,240 --> 00:56:16,970 Така че започнете да го сравни с другия такава, която е защо тя е и плюс 1 до п 1345 00:56:16,970 --> 00:56:20,110 минус 1, което е край на масива там. 1346 00:56:20,110 --> 00:56:25,090 И каза, че ако масив на J е по-малко от масив минути, 1347 00:56:25,090 --> 00:56:29,200 тогава можем да превъзложите където нашите минимални показатели е. 1348 00:56:29,200 --> 00:56:37,470 >> И ако мин не е равно на I, като там, където бяхме обратно тук. 1349 00:56:37,470 --> 00:56:38,950 1350 00:56:38,950 --> 00:56:41,790 Така че харесва, когато за първи път е направил това. 1351 00:56:41,790 --> 00:56:49,310 В този случай, тя ще започне в нула, то в крайна сметка ще са две. 1352 00:56:49,310 --> 00:56:53,010 Така мин не би равен и в края на краищата. 1353 00:56:53,010 --> 00:56:55,720 Това ни позволява да знаем, че ние трябва да ги сменяте. 1354 00:56:55,720 --> 00:56:57,420 1355 00:56:57,420 --> 00:57:00,470 Чувствам се като конкретен пример ще помогне на много повече от това. 1356 00:57:00,470 --> 00:57:04,970 Така че аз ще се кодира това с вас, момчета точно сега и аз мисля, че ще бъде по-добре. 1357 00:57:04,970 --> 00:57:07,380 1358 00:57:07,380 --> 00:57:11,350 >> Сортове са склонни да работят по този начин, в тази то често е по-добре просто да ги види. 1359 00:57:11,350 --> 00:57:12,780 1360 00:57:12,780 --> 00:57:17,280 Така че това, което искаме да направим, е да първо искам най-малките 1361 00:57:17,280 --> 00:57:19,890 елемент в неговата позиция в масива. 1362 00:57:19,890 --> 00:57:21,280 Точно това, което се казва Яков. 1363 00:57:21,280 --> 00:57:23,090 Вие трябва да се съхранява, че по някакъв начин. 1364 00:57:23,090 --> 00:57:25,900 Така че ние ще започнем тук итерации над масива. 1365 00:57:25,900 --> 00:57:28,970 Отиваме да се каже, това е нашата първо един, само за да започнете. 1366 00:57:28,970 --> 00:57:38,308 Така че ние ще трябва инт най-малката е равна на масив на аз. 1367 00:57:38,308 --> 00:57:40,500 1368 00:57:40,500 --> 00:57:45,050 >> Така че едно е да забележите, всеки време този цикъл се изпълнява, 1369 00:57:45,050 --> 00:57:48,550 ние започваме с една стъпка по-напред. 1370 00:57:48,550 --> 00:57:54,780 1371 00:57:54,780 --> 00:57:57,440 Когато започнем да погледнем на този един. 1372 00:57:57,440 --> 00:58:00,840 Следващия път, когато превъртате през, ние започваме по този 1373 00:58:00,840 --> 00:58:02,680 и тя ни най-малката стойност възлагане. 1374 00:58:02,680 --> 00:58:10,450 Така че това е много подобен на балон сортиране когато знаем, че след един пас, 1375 00:58:10,450 --> 00:58:11,700 този последен елемент е сортиран. 1376 00:58:11,700 --> 00:58:12,810 1377 00:58:12,810 --> 00:58:15,120 При избор на вид, това е точно обратното. 1378 00:58:15,120 --> 00:58:18,950 >> На всеки пас, ние знаем, че първата е сортиран. 1379 00:58:18,950 --> 00:58:21,360 След втората ПРЕМИНАВАНЕ вторият ще бъдат сортирани. 1380 00:58:21,360 --> 00:58:26,470 И както си видял с примери на слайд, нашата подредени част просто продължава да расте. 1381 00:58:26,470 --> 00:58:34,020 Така че от създаването си малкият да масиви аз, всичко, което прави 1382 00:58:34,020 --> 00:58:37,340 се свива, което ние не търсим най-така, 1383 00:58:37,340 --> 00:58:40,164 да се намали броят сравнения правим. 1384 00:58:40,164 --> 00:58:41,770 Това прави ли смисъл за всички? 1385 00:58:41,770 --> 00:58:42,920 1386 00:58:42,920 --> 00:58:46,380 Имате ли нужда от мен, за да тече през тази отново по-бавно или с други думи? 1387 00:58:46,380 --> 00:58:47,180 Аз съм щастлив да. 1388 00:58:47,180 --> 00:58:48,095 1389 00:58:48,095 --> 00:58:48,595 OK. 1390 00:58:48,595 --> 00:58:50,060 1391 00:58:50,060 --> 00:58:55,540 >> Така че ние сме съхраняване на стойност в този момент, 1392 00:58:55,540 --> 00:58:57,840 но ние също искаме да се съхранява на индекса. 1393 00:58:57,840 --> 00:59:01,010 Така че ние отиваме, за да съхраните позиция на най-малките 1394 00:59:01,010 --> 00:59:02,770 един, който е просто ще бъде т. 1395 00:59:02,770 --> 00:59:04,357 1396 00:59:04,357 --> 00:59:05,440 Така че сега Яков е изпълнено. 1397 00:59:05,440 --> 00:59:06,870 Имаме неща съхраняват. 1398 00:59:06,870 --> 00:59:08,240 1399 00:59:08,240 --> 00:59:11,870 И сега ние трябва да се търси чрез на несортиран част на масива. 1400 00:59:11,870 --> 00:59:18,170 Така че в този случай това ще бъде нашата несортиран. 1401 00:59:18,170 --> 00:59:20,980 1402 00:59:20,980 --> 00:59:22,462 Това е т. 1403 00:59:22,462 --> 00:59:25,430 1404 00:59:25,430 --> 00:59:26,210 OK. 1405 00:59:26,210 --> 00:59:30,040 >> Така че това, което ние ще направим ще бъде за една линия. 1406 00:59:30,040 --> 00:59:32,066 Всеки път, когато трябва да се обхождане чрез масив, 1407 00:59:32,066 --> 00:59:33,440 ума си може да отиде за една линия. 1408 00:59:33,440 --> 00:59:34,760 1409 00:59:34,760 --> 00:59:38,090 Така че за някои INT к equals-- какво мислим 1410 00:59:38,090 --> 00:59:39,700 к ще се равнява да започнете? 1411 00:59:39,700 --> 00:59:41,580 1412 00:59:41,580 --> 00:59:44,766 Това е, което ние поставяме като малката стойност и ние искаме да го сравни. 1413 00:59:44,766 --> 00:59:47,090 Какво искаме да го сравни с? 1414 00:59:47,090 --> 00:59:48,730 Това ще бъде следващия един, нали? 1415 00:59:48,730 --> 00:59:53,200 Така че ние искаме к трябва да се инициализира до и плюс 1, за да започнете. 1416 00:59:53,200 --> 00:59:55,350 1417 00:59:55,350 --> 01:00:02,800 >> И ние искаме к в този случай ние вече са размер съхранява тук, 1418 01:00:02,800 --> 01:00:03,930 така че може просто да използвате размер. 1419 01:00:03,930 --> 01:00:06,240 Размера, размера на масива. 1420 01:00:06,240 --> 01:00:09,620 И ние просто искаме да актуализира к от по едно време. 1421 01:00:09,620 --> 01:00:17,410 1422 01:00:17,410 --> 01:00:17,910 Cool. 1423 01:00:17,910 --> 01:00:19,650 1424 01:00:19,650 --> 01:00:23,430 Така че сега ние трябва да намерим най-малкият елемент тук. 1425 01:00:23,430 --> 01:00:24,470 1426 01:00:24,470 --> 01:00:31,380 Така че, ако ние обхождане през него, искам да кажа, ако масив на к 1427 01:00:31,380 --> 01:00:37,080 е по-малко от най-малката value-- това е мястото, където ние сме всъщност 1428 01:00:37,080 --> 01:00:42,950 следене на това, което е най-малката here-- 1429 01:00:42,950 --> 01:00:47,740 След това ние искаме да превъзложите това, което ни най-малката стойност. 1430 01:00:47,740 --> 01:00:50,645 >> Това означава, че, о, ние сме итерации през тук. 1431 01:00:50,645 --> 01:00:51,699 1432 01:00:51,699 --> 01:00:53,740 Каквато и да е стойност е тук не най-малката ни нещо. 1433 01:00:53,740 --> 01:00:54,448 Ние не го искаме. 1434 01:00:54,448 --> 01:00:56,100 Искаме да я прехвърли. 1435 01:00:56,100 --> 01:01:02,050 Така че, ако ние сме го пренасочване, какво правим мислите, че може да е в този код тук? 1436 01:01:02,050 --> 01:01:04,160 Искаме да превъзложите малката и позиция. 1437 01:01:04,160 --> 01:01:05,740 1438 01:01:05,740 --> 01:01:07,010 Така че това, което е най-малкият в момента? 1439 01:01:07,010 --> 01:01:08,422 1440 01:01:08,422 --> 01:01:09,130 STUDENT: Array к. 1441 01:01:09,130 --> 01:01:09,963 ИНСТРУКТОР: Array к. 1442 01:01:09,963 --> 01:01:13,480 1443 01:01:13,480 --> 01:01:15,956 И каква е позицията на предприятието? 1444 01:01:15,956 --> 01:01:20,940 1445 01:01:20,940 --> 01:01:23,000 Какво индексите на ни най-малката стойност? 1446 01:01:23,000 --> 01:01:24,030 1447 01:01:24,030 --> 01:01:24,530 Това е просто к. 1448 01:01:24,530 --> 01:01:25,690 1449 01:01:25,690 --> 01:01:27,790 Така масив к, к, те съвпадат. 1450 01:01:27,790 --> 01:01:31,670 1451 01:01:31,670 --> 01:01:33,120 Така че ние искахме да превъзлагате този. 1452 01:01:33,120 --> 01:01:34,390 1453 01:01:34,390 --> 01:01:39,950 И тогава, след като ние открихме, ни най-малкото, така че в края на този цикъл за 1454 01:01:39,950 --> 01:01:45,100 тук сме намерили това, което ни най-малък стойност не е, така че ние просто го сменяте. 1455 01:01:45,100 --> 01:01:47,100 1456 01:01:47,100 --> 01:01:50,816 В този случай, като се каже, ни най-малката стойност е тук. 1457 01:01:50,816 --> 01:01:51,940 Това е най-малката стойност. 1458 01:01:51,940 --> 01:01:57,690 >> Ние просто искаме да го сменяте тук, което е какво суап функция на дъното 1459 01:01:57,690 --> 01:02:01,270 направил, който току-що написах заедно преди няколко минути. 1460 01:02:01,270 --> 01:02:02,775 Така трябва да изглежда познато. 1461 01:02:02,775 --> 01:02:04,320 1462 01:02:04,320 --> 01:02:08,030 И тогава той просто ще обхождане чрез докато достигне докрай 1463 01:02:08,030 --> 01:02:13,100 до края, което означава, че имат нулеви елементи, които не е сортиран 1464 01:02:13,100 --> 01:02:14,800 и всичко останало е сортиран. 1465 01:02:14,800 --> 01:02:16,216 1466 01:02:16,216 --> 01:02:16,715 Направете смисъл? 1467 01:02:16,715 --> 01:02:18,010 1468 01:02:18,010 --> 01:02:19,280 А малко по-конкретно? 1469 01:02:19,280 --> 01:02:19,990 Помощта на код? 1470 01:02:19,990 --> 01:02:21,720 1471 01:02:21,720 --> 01:02:26,410 >> STUDENT: За размер, никога наистина го определят или да го промените, 1472 01:02:26,410 --> 01:02:27,340 как да го разбера? 1473 01:02:27,340 --> 01:02:32,380 >> ИНСТРУКТОР: Така че едно е да забележите тук е размерът на инт. 1474 01:02:32,380 --> 01:02:35,680 Така че ние да кажеш в този sort-- сортиране е функция в тази case-- е 1475 01:02:35,680 --> 01:02:40,770 Избор на вид, той е преминал с функцията. 1476 01:02:40,770 --> 01:02:43,460 Така че, ако той не бе приет , можете да направите нещо 1477 01:02:43,460 --> 01:02:47,840 като с дължината на масива или ще превъртите през 1478 01:02:47,840 --> 01:02:49,390 да се намери дължината. 1479 01:02:49,390 --> 01:02:52,680 Но тъй като той е преминал в, можем просто да го използвате. 1480 01:02:52,680 --> 01:02:55,720 Можете просто да приемем, че на потребителя ти даде валиден размер, който 1481 01:02:55,720 --> 01:02:57,698 всъщност представлява размер на масива. 1482 01:02:57,698 --> 01:02:59,461 1483 01:02:59,461 --> 01:02:59,960 Cool? 1484 01:02:59,960 --> 01:03:01,610 1485 01:03:01,610 --> 01:03:05,870 >> Ако вие имате някакви проблеми с тях или искате повече практика кодиране видове 1486 01:03:05,870 --> 01:03:08,050 на собствения си, вие трябва да отидете study.cs50. 1487 01:03:08,050 --> 01:03:11,560 1488 01:03:11,560 --> 01:03:12,670 Това е един инструмент. 1489 01:03:12,670 --> 01:03:15,040 Те имат за проверка, че всъщност може да се пише. 1490 01:03:15,040 --> 01:03:16,180 Те правят Псевдокод. 1491 01:03:16,180 --> 01:03:19,310 Те имат повече видеоклипове и пързалки включително тези, които аз използвам тук. 1492 01:03:19,310 --> 01:03:23,150 Така че, ако все още се чувствате малко размита, опитайте се, че навън. 1493 01:03:23,150 --> 01:03:25,670 Както винаги, дойде да говори с мен, също. 1494 01:03:25,670 --> 01:03:26,320 Въпрос? 1495 01:03:26,320 --> 01:03:28,611 >> STUDENT: Възможно ли е да изречете размер е предварително дефинирано? 1496 01:03:28,611 --> 01:03:29,234 1497 01:03:29,234 --> 01:03:29,900 ИНСТРУКТОР: Да. 1498 01:03:29,900 --> 01:03:35,570 Размер е предварително дефинирано до тук, в декларацията на функцията. 1499 01:03:35,570 --> 01:03:39,060 Значи да приемем, че той е бил приет в от потребителя, както и за улеснение, 1500 01:03:39,060 --> 01:03:41,896 ние ще приемем, че потребителското ни даде правилния размер. 1501 01:03:41,896 --> 01:03:43,240 Cool. 1502 01:03:43,240 --> 01:03:44,390 Така че това е избор на вид. 1503 01:03:44,390 --> 01:03:45,590 1504 01:03:45,590 --> 01:03:47,640 Момчета, знам, че ние се учим много днес. 1505 01:03:47,640 --> 01:03:49,710 Тя е гъста данни за раздел. 1506 01:03:49,710 --> 01:03:51,880 1507 01:03:51,880 --> 01:03:57,340 Така че с това, ние ще за да отидете на вмъкване вид. 1508 01:03:57,340 --> 01:04:01,550 1509 01:04:01,550 --> 01:04:02,510 >> OK. 1510 01:04:02,510 --> 01:04:06,100 Така че преди това ние трябва да направим нашия анализ по време на работа тук. 1511 01:04:06,100 --> 01:04:10,190 Така че в най-добрия случай, предоставено, тъй като аз ви показах 1512 01:04:10,190 --> 01:04:11,960 таблицата вече вид го подари. 1513 01:04:11,960 --> 01:04:15,430 Но най-добрия случай по време на работа, какво ще кажеш? 1514 01:04:15,430 --> 01:04:17,310 1515 01:04:17,310 --> 01:04:18,130 Всичко подредени. 1516 01:04:18,130 --> 01:04:21,040 1517 01:04:21,040 --> 01:04:22,070 N на квадрат. 1518 01:04:22,070 --> 01:04:24,780 Всеки, който има обяснение защо мислиш ли? 1519 01:04:24,780 --> 01:04:29,060 1520 01:04:29,060 --> 01:04:30,519 >> STUDENT: Вие сте сравняване through-- 1521 01:04:30,519 --> 01:04:31,268 ИНСТРУКТОР: Точно така. 1522 01:04:31,268 --> 01:04:32,540 Вие сте сравняване сам. 1523 01:04:32,540 --> 01:04:35,630 На всяка итерация, въпреки че ние сме намаляващи това от една страна, 1524 01:04:35,630 --> 01:04:38,950 все още търсят чрез всичко, за да се намери най-малката. 1525 01:04:38,950 --> 01:04:42,390 Така че, дори ако вашият най-малката стойност е тук, в началото, 1526 01:04:42,390 --> 01:04:44,710 все още го сравни срещу всичко останало 1527 01:04:44,710 --> 01:04:46,550 да се уверите, че това е най-малкото нещо. 1528 01:04:46,550 --> 01:04:49,820 Така вие ще се окажете минава през приблизително н квадрат пъти. 1529 01:04:49,820 --> 01:04:51,090 1530 01:04:51,090 --> 01:04:51,590 Добре. 1531 01:04:51,590 --> 01:04:52,785 И това, което е най-лошия случай? 1532 01:04:52,785 --> 01:04:54,350 1533 01:04:54,350 --> 01:04:57,980 Също н квадрат, защото започваш да се прави, че една и съща процедура. 1534 01:04:57,980 --> 01:05:01,670 Така че в този случай, изборът на вид има нещо 1535 01:05:01,670 --> 01:05:04,010 че ние също наричаме очакваното изпълнение. 1536 01:05:04,010 --> 01:05:07,400 Така че в другите, ние просто знам горните и долни граници. 1537 01:05:07,400 --> 01:05:11,180 В зависимост от това колко луд ни списък е или как е сортиран и да е, 1538 01:05:11,180 --> 01:05:15,350 те варират между п или п квадрат. 1539 01:05:15,350 --> 01:05:16,550 Ние не знаем. 1540 01:05:16,550 --> 01:05:22,820 >> Но тъй като избор вид има същите най-лошото и най-доброто дело, което ни казва, че 1541 01:05:22,820 --> 01:05:25,880 без значение какъв вид на входа ние имат, независимо дали това е напълно 1542 01:05:25,880 --> 01:05:29,130 сортирано или напълно обратната подредени, това е 1543 01:05:29,130 --> 01:05:30,740 ще отнеме същото количество време. 1544 01:05:30,740 --> 01:05:33,760 Така че в този случай, ако спомняте от нашата маса, 1545 01:05:33,760 --> 01:05:38,610 всъщност имаше стойност, която тези два вида не са, 1546 01:05:38,610 --> 01:05:40,390 който се очаква по време на работа. 1547 01:05:40,390 --> 01:05:43,350 Така че ние знаем, че когато бягаме избор вид, 1548 01:05:43,350 --> 01:05:45,380 това е гарантирано да стартирате н квадрат време. 1549 01:05:45,380 --> 01:05:46,630 Не е променливост там. 1550 01:05:46,630 --> 01:05:47,630 Това е просто очаква. 1551 01:05:47,630 --> 01:05:48,820 1552 01:05:48,820 --> 01:05:52,140 И, отново, ако искате да научите повече, да вземе CS 124 през пролетта. 1553 01:05:52,140 --> 01:05:55,370 1554 01:05:55,370 --> 01:05:56,712 Добре. 1555 01:05:56,712 --> 01:05:57,545 Виждали сме това. 1556 01:05:57,545 --> 01:05:58,530 1557 01:05:58,530 --> 01:05:59,030 Cool. 1558 01:05:59,030 --> 01:06:00,930 Така вмъкване вид. 1559 01:06:00,930 --> 01:06:03,330 И аз най-вероятно ще да гори през това. 1560 01:06:03,330 --> 01:06:05,440 Аз няма да се налага вие да го кодират. 1561 01:06:05,440 --> 01:06:06,580 Ние просто ще минеш през нея. 1562 01:06:06,580 --> 01:06:10,500 Така вмъкване вид е един вид на подобен на избор на сортиране 1563 01:06:10,500 --> 01:06:14,460 че ние имаме и двете на несортиран и сортират част на масива. 1564 01:06:14,460 --> 01:06:20,260 >> Но това, което е различно е, че като отидем през един по един, 1565 01:06:20,260 --> 01:06:24,210 ние просто да вземе независимо от броя е следващата в нашата несортиран, 1566 01:06:24,210 --> 01:06:28,507 и правилно го оправи в нашата сортиран масив. 1567 01:06:28,507 --> 01:06:30,090 Това ще направи по-дълбок смисъл с един пример. 1568 01:06:30,090 --> 01:06:31,140 1569 01:06:31,140 --> 01:06:35,430 Така че всичко започва като несортиран, Точно както с избора на сортиране. 1570 01:06:35,430 --> 01:06:38,740 И ние отиваме да сортирате това възходящ ред, както ние сме били. 1571 01:06:38,740 --> 01:06:40,360 1572 01:06:40,360 --> 01:06:43,340 Така на първата ни пас вземем първата стойност 1573 01:06:43,340 --> 01:06:46,700 и ние казваме, добре, вие сте Сега в списъка от себе си. 1574 01:06:46,700 --> 01:06:49,150 >> Тъй като вие сте в списък от себе си, са подредени. 1575 01:06:49,150 --> 01:06:52,460 Поздравления за това, че Първият елемент в този масив. 1576 01:06:52,460 --> 01:06:54,800 Вие вече сте подредени всички по своему. 1577 01:06:54,800 --> 01:06:58,900 Така че сега ние имаме сортирано и е сортиран масив. 1578 01:06:58,900 --> 01:07:01,760 Така че сега ние приемаме на първо място. 1579 01:07:01,760 --> 01:07:05,600 Какво се случва между тук и тук е, че ние казваме, 1580 01:07:05,600 --> 01:07:08,890 ОК, ние ще разгледаме в първата стойност на нашата несортиран масив 1581 01:07:08,890 --> 01:07:13,270 и отиваме да го въведете в правилното място в сортиран масив. 1582 01:07:13,270 --> 01:07:21,460 >> Така че това, което ние правим, е да вземем 5 и ние казваме, OK, 5 е по-голяма от 3, 1583 01:07:21,460 --> 01:07:24,630 така че ние просто го поставете дясната правото на това. 1584 01:07:24,630 --> 01:07:25,130 Ние сме добре. 1585 01:07:25,130 --> 01:07:26,200 1586 01:07:26,200 --> 01:07:28,420 Така че след това преминете към следващата ни един. 1587 01:07:28,420 --> 01:07:29,720 И ние приемаме 2. 1588 01:07:29,720 --> 01:07:34,330 Ние казваме, OK, 2 е по-малко от 3, така че ние знаем, че 1589 01:07:34,330 --> 01:07:36,220 трябва да бъде в пред нашия списък сега. 1590 01:07:36,220 --> 01:07:41,800 Така че това, което правим е, че ние натиснете 3 и 5 надолу и ние се движат 2 в първата слот. 1591 01:07:41,800 --> 01:07:42,990 1592 01:07:42,990 --> 01:07:45,870 Така че ние просто го поставите в на правилното място трябва да бъде. 1593 01:07:45,870 --> 01:07:46,960 1594 01:07:46,960 --> 01:07:49,470 >> Тогава ние с нетърпение в нашия следващия, и да кажем 6. 1595 01:07:49,470 --> 01:07:53,620 OK, 6 е по-голям от всичко в нашата сортиран масив, 1596 01:07:53,620 --> 01:07:56,000 така че ние просто го маркирате към края. 1597 01:07:56,000 --> 01:07:56,960 И тогава ние гледаме на 4. 1598 01:07:56,960 --> 01:07:58,130 1599 01:07:58,130 --> 01:08:03,020 4 е по-малко от 6, това е по-малко от 5, но това е по-голямо от 3. 1600 01:08:03,020 --> 01:08:06,270 Така че ние просто го поставете в полето по средата между 3 и 5. 1601 01:08:06,270 --> 01:08:07,380 1602 01:08:07,380 --> 01:08:10,530 Така че да се направи, че малко малко по-конкретни, 1603 01:08:10,530 --> 01:08:12,280 тук е един вид на представа за това какво се е случило. 1604 01:08:12,280 --> 01:08:16,430 Така че за всеки несортирани елемент, ние определи къде в сортиран част 1605 01:08:16,430 --> 01:08:17,090 е то. 1606 01:08:17,090 --> 01:08:20,680 >> Така че, като се има предвид сортирани и несортирани, 1607 01:08:20,680 --> 01:08:26,080 ние трябва да преминават през и фигура къде тя се вписва в сортиран масив. 1608 01:08:26,080 --> 01:08:31,460 И ние го поставете чрез изместване на елементи вдясно от него надолу. 1609 01:08:31,460 --> 01:08:34,910 И тогава ние просто продължавай итерации чрез докато ние 1610 01:08:34,910 --> 01:08:39,270 имат напълно подредени списък където несортирани сега е нула 1611 01:08:39,270 --> 01:08:41,720 и сортирани заема цялост на нашия списък. 1612 01:08:41,720 --> 01:08:43,146 1613 01:08:43,146 --> 01:08:45,854 Така че, отново, за да направим нещата още по-конкретно, имаме Псевдокод. 1614 01:08:45,854 --> 01:08:47,979 1615 01:08:47,979 --> 01:08:52,410 >> Така че основно, защото е равно на 0 до п минус 1, 1616 01:08:52,410 --> 01:08:54,790 това е само дължината на нашия масив. 1617 01:08:54,790 --> 01:09:00,979 Имаме някакъв елемент, който е равен на Първият масив или първите индекси. 1618 01:09:00,979 --> 01:09:03,200 Зададохме й равно на това. 1619 01:09:03,200 --> 01:09:04,649 1620 01:09:04,649 --> 01:09:09,210 Така че, докато й е по-голяма от нула и масив, J минус 1 1621 01:09:09,210 --> 01:09:11,660 е по-голяма от елемент, така че всичко, което прави 1622 01:09:11,660 --> 01:09:17,479 е като се уверите, че си й наистина представлява 1623 01:09:17,479 --> 01:09:20,010 на несортиран част на масива. 1624 01:09:20,010 --> 01:09:30,745 >> Така че, докато все още има неща, да сортирате и й минус един is-- какво 1625 01:09:30,745 --> 01:09:31,840 е й елемент? 1626 01:09:31,840 --> 01:09:34,760 J никога не е дефинирана тук. 1627 01:09:34,760 --> 01:09:35,677 Това е нещо досадно. 1628 01:09:35,677 --> 01:09:36,176 OK. 1629 01:09:36,176 --> 01:09:36,689 Както и да е. 1630 01:09:36,689 --> 01:09:39,899 Така й минус 1, вие сте проверка елементът преди него. 1631 01:09:39,899 --> 01:09:46,460 Искаш да кажеш, OK, е елемент преди където и да am-- нека 1632 01:09:46,460 --> 01:09:47,540 всъщност направи това. 1633 01:09:47,540 --> 01:09:52,580 1634 01:09:52,580 --> 01:09:56,830 Така че нека да кажем, че това е като на втория ни пропуск. 1635 01:09:56,830 --> 01:09:59,525 Така че аз ще бъде равен 1, което е тук. 1636 01:09:59,525 --> 01:10:03,310 1637 01:10:03,310 --> 01:10:06,025 >> Така че аз ще бъде равен на 1. 1638 01:10:06,025 --> 01:10:09,510 1639 01:10:09,510 --> 01:10:13,702 Това ще бъде 2, 4, 5, 6, 7. 1640 01:10:13,702 --> 01:10:16,060 1641 01:10:16,060 --> 01:10:16,750 Добре. 1642 01:10:16,750 --> 01:10:20,945 Така че нашата елемент в този случай ще бъде равно на 4. 1643 01:10:20,945 --> 01:10:22,110 1644 01:10:22,110 --> 01:10:24,946 И ние имаме някои й, че е ще бъде равна на 1. 1645 01:10:24,946 --> 01:10:29,770 1646 01:10:29,770 --> 01:10:30,971 О, й се намаляващи. 1647 01:10:30,971 --> 01:10:31,720 Ето какво е то. 1648 01:10:31,720 --> 01:10:35,680 Така че й е равна аз, така че какво е това поговорка е, че както ние се движат напред, 1649 01:10:35,680 --> 01:10:37,530 ние просто като се уверите, че ние не сме над 1650 01:10:37,530 --> 01:10:43,520 индексира този начин, когато ние се опитваме да поставите нещата в нашата подредени списък. 1651 01:10:43,520 --> 01:10:49,850 >> Така че, когато й е равна на 1 в този случай и масив й минус one-- така масив й минус 1 1652 01:10:49,850 --> 01:10:54,610 е 2 в тази case-- ако това е по-голяма от елемент, 1653 01:10:54,610 --> 01:10:57,700 След всичко това се прави се променя нещата. 1654 01:10:57,700 --> 01:11:04,790 Така че в този случай, масив й минус едно ще бъде масив нула, което е 2. 1655 01:11:04,790 --> 01:11:08,430 2 е не по-голямо от 4, така че това не се изпълни. 1656 01:11:08,430 --> 01:11:11,460 Така че промяната не се движи надолу. 1657 01:11:11,460 --> 01:11:18,790 Това, което прави тук, е просто преместване на сортиран масив надолу. 1658 01:11:18,790 --> 01:11:22,340 1659 01:11:22,340 --> 01:11:26,400 В този случай, всъщност, ние може да do-- нека направим този 3. 1660 01:11:26,400 --> 01:11:28,080 1661 01:11:28,080 --> 01:11:31,970 Така че, ако ние сме на разходка из с този пример, ние сега сме тук. 1662 01:11:31,970 --> 01:11:32,740 Това се сортира. 1663 01:11:32,740 --> 01:11:34,492 1664 01:11:34,492 --> 01:11:35,200 Това е сортиран. 1665 01:11:35,200 --> 01:11:39,090 1666 01:11:39,090 --> 01:11:39,860 Cool? 1667 01:11:39,860 --> 01:11:46,620 Така че е равно на 2, така че ни елемент е равна на 3. 1668 01:11:46,620 --> 01:11:47,920 1669 01:11:47,920 --> 01:11:52,270 И нашата й е равна на 2. 1670 01:11:52,270 --> 01:12:00,620 Така че ние гледаме през и ние се каже, добре, е масив й минус едно 1671 01:12:00,620 --> 01:12:03,470 по-голяма от елемента че ние не търсим най-? 1672 01:12:03,470 --> 01:12:05,540 И отговорът е да, нали? 1673 01:12:05,540 --> 01:12:11,275 4 е по-голяма от 3 и J е 2, така че този код се изпълнява. 1674 01:12:11,275 --> 01:12:12,510 1675 01:12:12,510 --> 01:12:18,550 >> Така че сега това, което правим масив в 2, така че точно тук, ние ги сменяте. 1676 01:12:18,550 --> 01:12:25,620 Така че ние просто да кажем, OK, масив при 2 сега ще бъде 3. 1677 01:12:25,620 --> 01:12:28,130 1678 01:12:28,130 --> 01:12:32,340 И й се щеше да се равнява на J минус 1, което е 1. 1679 01:12:32,340 --> 01:12:34,590 1680 01:12:34,590 --> 01:12:37,200 Това е ужасно, но вие получите представа. 1681 01:12:37,200 --> 01:12:38,360 J сега е равен на 1. 1682 01:12:38,360 --> 01:12:44,360 И масив й е просто ще бъде равна на нашата елемент, който е 4. 1683 01:12:44,360 --> 01:12:45,950 1684 01:12:45,950 --> 01:12:48,570 Изтрих нещо, което не трябва да имате или miswrote нещо, 1685 01:12:48,570 --> 01:12:49,910 но вие получите представа. 1686 01:12:49,910 --> 01:12:50,640 >> Той се движи в п. 1687 01:12:50,640 --> 01:12:51,920 1688 01:12:51,920 --> 01:12:57,960 И след това, ако това беше, че ще контур отново и тя ще каже, добре, й е 1 сега. 1689 01:12:57,960 --> 01:13:00,665 И масив й минус 1 стана 2 е. 1690 01:13:00,665 --> 01:13:01,750 1691 01:13:01,750 --> 01:13:03,760 Има две по-малко от нашия елемент? 1692 01:13:03,760 --> 01:13:04,540 Не? 1693 01:13:04,540 --> 01:13:07,970 Това означава, че ние сме Създава този елемент 1694 01:13:07,970 --> 01:13:10,110 в правилното място в нашия сортиран масив. 1695 01:13:10,110 --> 01:13:14,400 След това можем да вземем това и да кажем, OK, нашата сортиран масив е тук. 1696 01:13:14,400 --> 01:13:19,940 И това ще отнеме този номер 6 и да бъде като, добре, е 6 по-малко от тази цифра? 1697 01:13:19,940 --> 01:13:20,480 Не? 1698 01:13:20,480 --> 01:13:21,080 Cool. 1699 01:13:21,080 --> 01:13:22,680 Ние сме добре. 1700 01:13:22,680 --> 01:13:23,530 >> Направи го пак. 1701 01:13:23,530 --> 01:13:24,740 Ние казваме: 7. 1702 01:13:24,740 --> 01:13:29,010 7 е по-малко от края на нашия сортиран масив? 1703 01:13:29,010 --> 01:13:29,520 Не. 1704 01:13:29,520 --> 01:13:30,430 Така че ние сме добре. 1705 01:13:30,430 --> 01:13:32,760 Така че това ще бъдат сортирани. 1706 01:13:32,760 --> 01:13:38,610 По принцип всичко това прави го казва излитане 1707 01:13:38,610 --> 01:13:42,060 първият елемент на Вашата несортиран масив, 1708 01:13:42,060 --> 01:13:46,010 разбера къде отива в сортиран масив. 1709 01:13:46,010 --> 01:13:48,780 И това просто се грижи на суаповете за да направите това. 1710 01:13:48,780 --> 01:13:51,300 Вие сте основно само смяна докато не е на правилното място. 1711 01:13:51,300 --> 01:13:53,600 1712 01:13:53,600 --> 01:13:56,990 Визуалният образ е, че сте движи всичко надолу, като направите това. 1713 01:13:56,990 --> 01:13:59,420 >> Така че това е като половината балон вид стил. 1714 01:13:59,420 --> 01:14:02,280 1715 01:14:02,280 --> 01:14:03,420 Вижте проучване 50. 1716 01:14:03,420 --> 01:14:06,000 Аз силно препоръчваме да се опитва да кодира това по своему. 1717 01:14:06,000 --> 01:14:07,220 1718 01:14:07,220 --> 01:14:12,450 Ако имате някакви въпроси или искате да виж примерен код за вмъкване вид, 1719 01:14:12,450 --> 01:14:13,750 моля да ме уведомите. 1720 01:14:13,750 --> 01:14:14,500 Аз винаги съм наоколо. 1721 01:14:14,500 --> 01:14:16,600 1722 01:14:16,600 --> 01:14:20,200 Така че най-лошия случай по време на работа и най-добрите случаи по време на работа. 1723 01:14:20,200 --> 01:14:30,700 Като човек, видял от масата вече ти показах, че е както п квадрат и п. 1724 01:14:30,700 --> 01:14:35,590 >> Така вид излизането от това, което говорихме за с предишните ни видове, най-лошото 1725 01:14:35,590 --> 01:14:38,760 случай по време на работа е, че ако това е напълно несортирани, 1726 01:14:38,760 --> 01:14:42,530 ние трябва да се сравняват всички тези п пъти. 1727 01:14:42,530 --> 01:14:47,020 Ние правим един куп сравнения защото, ако тя е в обратен ред, 1728 01:14:47,020 --> 01:14:50,360 отиваме да се каже, добре, това е същото, това е добре, 1729 01:14:50,360 --> 01:14:54,650 и това ще трябва да бъдат сравнени срещу първия, който ще бъде преместен обратно. 1730 01:14:54,650 --> 01:14:56,710 И тъй като ние се към края на опашката, ние имаме 1731 01:14:56,710 --> 01:14:59,440 за сравнение, сравнявате и сравни срещу всичко. 1732 01:14:59,440 --> 01:15:03,030 >> Така че в крайна сметка е приблизително н квадрат. 1733 01:15:03,030 --> 01:15:09,510 Ако това е вярно тогава се каже, OK, 2, вие сте добре. 1734 01:15:09,510 --> 01:15:11,330 3, което в сравнение с 2. 1735 01:15:11,330 --> 01:15:12,310 Ти си добър. 1736 01:15:12,310 --> 01:15:14,150 4, можете просто да се сравни с опашката. 1737 01:15:14,150 --> 01:15:14,990 Ти си добър. 1738 01:15:14,990 --> 01:15:17,140 6, сравни с опашката, вие сте наред. 1739 01:15:17,140 --> 01:15:20,870 Така че за всяка точка, ако тя е вече подредени, вие сте едно сравнение. 1740 01:15:20,870 --> 01:15:22,320 Така че това е просто п. 1741 01:15:22,320 --> 01:15:26,840 И тъй като ние имаме най-добрия случай по време на работа от п и най-лошия случай по време на работа на п 1742 01:15:26,840 --> 01:15:28,680 квадрат, ние нямаме очаквания по време на работа. 1743 01:15:28,680 --> 01:15:31,290 1744 01:15:31,290 --> 01:15:34,020 >> Просто зависи от хаос от нашия списък там. 1745 01:15:34,020 --> 01:15:35,860 1746 01:15:35,860 --> 01:15:39,530 И отново, друг графика и друга маса. 1747 01:15:39,530 --> 01:15:41,170 Така че разлики между видове. 1748 01:15:41,170 --> 01:15:44,180 Аз съм просто ще бриз през, аз Чувствам се като ние говорихме подробно 1749 01:15:44,180 --> 01:15:46,570 за това как всички те вид на варира и да се свърже заедно. 1750 01:15:46,570 --> 01:15:50,564 Така се сливат нещо е последният Аз ще ви отегчавам с момчета. 1751 01:15:50,564 --> 01:15:52,105 Ние имаме доста пъстра картина. 1752 01:15:52,105 --> 01:15:53,860 1753 01:15:53,860 --> 01:15:56,040 Така се сливат нещо е рекурсивен алгоритъм. 1754 01:15:56,040 --> 01:15:59,910 И така, да ви момчета знаят какво рекурсивно функция е? 1755 01:15:59,910 --> 01:16:01,550 1756 01:16:01,550 --> 01:16:03,320 >> Всеки, който иска да каже? 1757 01:16:03,320 --> 01:16:04,739 Искаш ли да опиташ? 1758 01:16:04,739 --> 01:16:07,280 Така рекурсивно функция е просто функция, която нарича себе си. 1759 01:16:07,280 --> 01:16:08,570 1760 01:16:08,570 --> 01:16:11,590 Така че, ако вие, момчета са познати с последователността на Фибоначи, 1761 01:16:11,590 --> 01:16:15,670 че е смята рекурсивни защото вземете предишните две 1762 01:16:15,670 --> 01:16:17,530 и ги добавете заедно да получи следващата си един. 1763 01:16:17,530 --> 01:16:21,440 Така рекурсивно, аз винаги мисля на рекурсия, тъй като като спирала 1764 01:16:21,440 --> 01:16:24,430 така сте като спираловидно надолу в нея. 1765 01:16:24,430 --> 01:16:27,150 Но това е просто функция който нарича себе си. 1766 01:16:27,150 --> 01:16:32,660 >> И, всъщност, наистина бързо I може да ви покаже какво прилича това. 1767 01:16:32,660 --> 01:16:34,260 1768 01:16:34,260 --> 01:16:41,840 Така рекурсивни тук, ако погледнем, това е рекурсивни начин да обобщим над масив. 1769 01:16:41,840 --> 01:16:45,900 1770 01:16:45,900 --> 01:16:47,880 Така че всичко, което правим, е имаме функция сума 1771 01:16:47,880 --> 01:16:52,210 сума, която се размер и масив. 1772 01:16:52,210 --> 01:16:55,210 И ако забележите, размер понижавания от по един път. 1773 01:16:55,210 --> 01:17:00,365 И всички го прави е, ако х е равно на zero-- така, ако размерът на масива 1774 01:17:00,365 --> 01:17:02,710 е равна на zero-- го връща нула. 1775 01:17:02,710 --> 01:17:10,440 >> В противен случай той обобщава този Последният елемент на масива, 1776 01:17:10,440 --> 01:17:14,790 и след това отнема сумата от останалата част от масива. 1777 01:17:14,790 --> 01:17:17,555 Така че това е просто да го счупи на по-малки и по-малки проблеми. 1778 01:17:17,555 --> 01:17:18,990 1779 01:17:18,990 --> 01:17:21,890 Дълга история кратко, рекурсия, функция, която нарича себе си. 1780 01:17:21,890 --> 01:17:25,740 Ако това е всичко, което имам от това, това е, което рекурсивно функция. 1781 01:17:25,740 --> 01:17:29,870 Ако сте приели 51, вие ще получите много, много комфортно с рекурсия. 1782 01:17:29,870 --> 01:17:31,110 1783 01:17:31,110 --> 01:17:32,370 Това е наистина страхотно. 1784 01:17:32,370 --> 01:17:34,660 Той направи смисъл като 3 AM една нощ навън. 1785 01:17:34,660 --> 01:17:37,900 И аз бях като, защо никога не използвам това? 1786 01:17:37,900 --> 01:17:39,170 1787 01:17:39,170 --> 01:17:42,430 >> Така че за сливане вид, основно какво ще направите, е, че е 1788 01:17:42,430 --> 01:17:45,620 ще го съборят и да го счупи надолу, докато това е просто отделни елементи. 1789 01:17:45,620 --> 01:17:47,570 Отделните елементи са лесно да се справи. 1790 01:17:47,570 --> 01:17:48,070 Ние виждаме това. 1791 01:17:48,070 --> 01:17:50,760 Ако имате такъв елемент, това е вече се счита сортиран. 1792 01:17:50,760 --> 01:17:53,800 Така че на входа на наш елементи, ако п е по-малко от 2, 1793 01:17:53,800 --> 01:17:58,120 просто се върнете, защото това средство е 0 или 1, както сме виждали. 1794 01:17:58,120 --> 01:18:00,050 Тези елементи се считат сортирани. 1795 01:18:00,050 --> 01:18:02,170 >> В противен случай тя се счупи на две. 1796 01:18:02,170 --> 01:18:06,336 Подреди първата половина, се справи със секунда половина, а след това да ги обедините заедно. 1797 01:18:06,336 --> 01:18:07,460 Защо тя се нарича сливане вид. 1798 01:18:07,460 --> 01:18:08,700 1799 01:18:08,700 --> 01:18:12,155 Така че ние имаме тук ще сортирате тях. 1800 01:18:12,155 --> 01:18:13,410 1801 01:18:13,410 --> 01:18:17,210 Така че ние продължаваме с тях докато е размерът на масива 1. 1802 01:18:17,210 --> 01:18:20,790 Така че, когато това е едно, ние просто се върнете защото това е сортиран масив, 1803 01:18:20,790 --> 01:18:23,940 и това е сортиран масив, и това е сортиран масив, ние всички сме подредени. 1804 01:18:23,940 --> 01:18:25,390 1805 01:18:25,390 --> 01:18:29,420 Така че след това, което правим е, че ние започнете да ги сливат заедно. 1806 01:18:29,420 --> 01:18:31,820 >> Така че начина, по който може да мисли за сливане е 1807 01:18:31,820 --> 01:18:36,240 просто извадете по-малък номер на всеки от подсекторите масиви 1808 01:18:36,240 --> 01:18:38,330 и просто да го добавите към появиха масив. 1809 01:18:38,330 --> 01:18:44,290 Така че, ако погледнете тук, когато имаме тези набори имаме 4, 6 и 1. 1810 01:18:44,290 --> 01:18:47,280 Когато искаме да се слеят тези, ние гледаме на тези първи две 1811 01:18:47,280 --> 01:18:50,730 и ние казваме, OK, 1 е по-малък, той отива на фронта. 1812 01:18:50,730 --> 01:18:54,330 4 и 6, няма нищо да се сравни да, просто го маркирате към края. 1813 01:18:54,330 --> 01:18:58,020 >> Когато ние комбинираме тези две, ние просто вземе по-малката от тези две, 1814 01:18:58,020 --> 01:18:59,310 така че това е едно. 1815 01:18:59,310 --> 01:19:01,690 И сега ние приемаме по-малък от тези две, така че 2. 1816 01:19:01,690 --> 01:19:03,330 По-малки от тези две, три. 1817 01:19:03,330 --> 01:19:06,260 По-малки от тези две, четири, пет, шест. 1818 01:19:06,260 --> 01:19:08,630 Значи просто издърпване тях. 1819 01:19:08,630 --> 01:19:11,210 И тъй като те са сортирани по-горе, 1820 01:19:11,210 --> 01:19:14,300 просто трябва един сравнение всеки път там. 1821 01:19:14,300 --> 01:19:19,610 Така че по-код тук, просто представителство. 1822 01:19:19,610 --> 01:19:24,410 Така че започнете от средата и сортирате ляво и дясно 1823 01:19:24,410 --> 01:19:26,180 и след това просто се слеят тези. 1824 01:19:26,180 --> 01:19:30,080 >> И ние нямаме код за сливане на точно тук. 1825 01:19:30,080 --> 01:19:34,110 Но, отново, ако отидете на учат 50, тя ще бъде там. 1826 01:19:34,110 --> 01:19:36,860 В противен случай дойде да говориш с мен ако все още сте объркани. 1827 01:19:36,860 --> 01:19:42,340 Така готино нещо тук е, че най-добрият случай, най-лошия случай, и се очаква по време на работа 1828 01:19:42,340 --> 01:19:46,250 всички са в дневника н, който е далеч по-добре, отколкото ние сме 1829 01:19:46,250 --> 01:19:48,000 виждал за останалата част от нашите сортове. 1830 01:19:48,000 --> 01:19:51,840 Виждали сме п квадрат и това, което ние всъщност 1831 01:19:51,840 --> 01:19:54,380 получите тук е н н влезете, което е страхотно. 1832 01:19:54,380 --> 01:19:55,830 >> Виж колко по-добре, че е така. 1833 01:19:55,830 --> 01:19:56,780 Такава хубава крива. 1834 01:19:56,780 --> 01:19:58,130 1835 01:19:58,130 --> 01:20:00,120 Така че много по-ефективно. 1836 01:20:00,120 --> 01:20:03,510 Ако някога може, използване слеят вид. 1837 01:20:03,510 --> 01:20:04,810 Това ще ви спести време. 1838 01:20:04,810 --> 01:20:07,670 Тогава пак, както казахме, ако сте изложени в тази по-ниска регион, 1839 01:20:07,670 --> 01:20:09,480 тя не направи това голяма част от разликата. 1840 01:20:09,480 --> 01:20:11,360 Можете да получите до хиляди и хиляди входове, 1841 01:20:11,360 --> 01:20:13,318 вие определено искате по-ефективен алгоритъм. 1842 01:20:13,318 --> 01:20:14,730 1843 01:20:14,730 --> 01:20:19,400 И, отново, нашата прекрасна маса на всички видове, които вие научили днес. 1844 01:20:19,400 --> 01:20:21,157 >> Така че аз знам, че е било по-гъста ден. 1845 01:20:21,157 --> 01:20:23,490 Това не е задължително да става да ви помогне с вашия pset. 1846 01:20:23,490 --> 01:20:28,250 Но аз просто искам да се направи отказ от отговорност този раздел не е само за psets. 1847 01:20:28,250 --> 01:20:31,240 All този материал е справедливо игра за вашите midterms. 1848 01:20:31,240 --> 01:20:35,430 И също така, ако го направите продължи с CS, те са наистина важни основи 1849 01:20:35,430 --> 01:20:37,870 че ще ви е необходимо да знаете. 1850 01:20:37,870 --> 01:20:41,700 Така няколко дни ще бъдат малко повече pset помощ, 1851 01:20:41,700 --> 01:20:44,600 но след няколко седмици ще бъдат много по-действителното съдържание 1852 01:20:44,600 --> 01:20:46,600 че може да не изглежда супер полезно за вас точно сега, 1853 01:20:46,600 --> 01:20:51,215 но обещавам, ако продължите нататък ще бъде много, много полезно. 1854 01:20:51,215 --> 01:20:52,560 1855 01:20:52,560 --> 01:20:54,250 >> Така, че това е за раздел. 1856 01:20:54,250 --> 01:20:55,250 Първа на жицата. 1857 01:20:55,250 --> 01:20:56,570 Аз го направих в рамките на една минута. 1858 01:20:56,570 --> 01:20:58,262 1859 01:20:58,262 --> 01:20:58,970 Но там ще отида. 1860 01:20:58,970 --> 01:21:01,240 И аз ще имам понички или бонбони. 1861 01:21:01,240 --> 01:21:03,464 Има ли някой алергичен към нещо, между другото? 1862 01:21:03,464 --> 01:21:05,307 1863 01:21:05,307 --> 01:21:05,890 Яйца и мляко. 1864 01:21:05,890 --> 01:21:08,120 Така понички са не? 1865 01:21:08,120 --> 01:21:09,400 1866 01:21:09,400 --> 01:21:10,160 OK. 1867 01:21:10,160 --> 01:21:10,770 Добре. 1868 01:21:10,770 --> 01:21:12,120 Шоколадът не? 1869 01:21:12,120 --> 01:21:12,620 Starburst. 1870 01:21:12,620 --> 01:21:13,837 1871 01:21:13,837 --> 01:21:14,670 Starbursts са добри. 1872 01:21:14,670 --> 01:21:15,170 OK. 1873 01:21:15,170 --> 01:21:17,045 Отиваме да има Избухваща звезда следващата седмица след това. 1874 01:21:17,045 --> 01:21:18,240 Това е, което ще получите. 1875 01:21:18,240 --> 01:21:19,690 Вие, момчета, имате голям седмица. 1876 01:21:19,690 --> 01:21:20,460 Прочетете си спец. 1877 01:21:20,460 --> 01:21:22,130 >> Нека да знаят, ако имате някакви въпроси. 1878 01:21:22,130 --> 01:21:25,300 Pset две степени трябва да бъдат до вас от четвъртък. 1879 01:21:25,300 --> 01:21:28,320 Ако имате някакви въпроси, за това как класирани нещо 1880 01:21:28,320 --> 01:21:32,250 или защо I степен нещо, както аз е, моля пишете ми, дойде да говори с мен. 1881 01:21:32,250 --> 01:21:34,210 Аз съм малко луд този седмица, но аз обещавам 1882 01:21:34,210 --> 01:21:36,340 Аз все пак ще отговори в рамките на 24 часа. 1883 01:21:36,340 --> 01:21:38,240 Така че има голяма седмица на всички. 1884 01:21:38,240 --> 01:21:40,090 Успех на вашия pset. 1885 01:21:40,090 --> 01:21:41,248