1 00:00:00,000 --> 00:00:03,332 >> [Мусиц плаиинг] 2 00:00:03,332 --> 00:00:06,490 >> Анди Пенг: Добродошли у недељу 3. члана. 3 00:00:06,490 --> 00:00:09,550 Хвала, момци, за све долази на овај раније време данас старт. 4 00:00:09,550 --> 00:00:11,466 Имамо леп, мало интимна група данас. 5 00:00:11,466 --> 00:00:14,570 Дакле, надам се да ћемо доћи до финиш, можда, раније, 6 00:00:14,570 --> 00:00:15,780 мало раније данас. 7 00:00:15,780 --> 00:00:22,057 Тако брзо, само су неки најаве за дневни ред данас. 8 00:00:22,057 --> 00:00:23,890 Пре него што почнемо, да смо да само прећи 9 00:00:23,890 --> 00:00:28,910 неколико кратких логистичка питања, псет питања, дебрифинга, такве ствари. 10 00:00:28,910 --> 00:00:30,250 А онда ћемо ронити право у. 11 00:00:30,250 --> 00:00:34,710 Ми ћемо користити за отклањање грешака под називом ГДБ да старт раскринкавање наш код, што Дејвид 12 00:00:34,710 --> 00:00:36,550 објашњено у предавању пре неки дан. 13 00:00:36,550 --> 00:00:39,420 Идемо преко четири врсте сорти. 14 00:00:39,420 --> 00:00:42,310 Идемо преко њих врло брзо јер су прилично интензивна. 15 00:00:42,310 --> 00:00:45,710 Али знам да су сви слајдови и изворни код су увек на мрежи. 16 00:00:45,710 --> 00:00:50,810 Дакле, слободно, на вашем увиду, да вратимо и да погледамо то. 17 00:00:50,810 --> 00:00:53,930 >> Ми ћемо проћи кроз асимптотско нотација, која 18 00:00:53,930 --> 00:00:55,944 је само фенси начин да се каже "рунтимес," 19 00:00:55,944 --> 00:00:58,360 где имамо велики О, која Дејвид је објашњено у предавању. 20 00:00:58,360 --> 00:01:01,550 А имамо и Омега, који је доња граница рунтиме. 21 00:01:01,550 --> 00:01:06,450 И причаћемо још мало дубински о томе како оне посао. 22 00:01:06,450 --> 00:01:10,160 И на крају, ићи ћемо преко бинарном претрагом, јер су многи од вас који су већ 23 00:01:10,160 --> 00:01:15,190 Погледао своје псетс вероватно знате да то је питање које је у својој псет. 24 00:01:15,190 --> 00:01:17,470 Дакле, сви ће бити срећни да покривамо то данас. 25 00:01:17,470 --> 00:01:20,610 >> И на крају, по вашим секција повратне информације, заправо 26 00:01:20,610 --> 00:01:23,000 лево око 15 минута на крај само да одем 27 00:01:23,000 --> 00:01:27,730 логистику псет3, било каква питања, можда мало смерница, ако хоћете, 28 00:01:27,730 --> 00:01:28,990 пре него што почнемо програмирање. 29 00:01:28,990 --> 00:01:30,890 Дакле, хајде да покушамо да се кроз материјал прилично брзо. 30 00:01:30,890 --> 00:01:33,880 И онда можемо да проведемо неко време узимајући више питања за псет. 31 00:01:33,880 --> 00:01:35,230 ОК. 32 00:01:35,230 --> 00:01:39,570 >> Брзо, тако да само неколико најаве пре него што почнемо данас. 33 00:01:39,570 --> 00:01:45,410 Прво, велцоме то што то је преко два ваших псетс. 34 00:01:45,410 --> 00:01:49,432 Узео сам погледамо твој-- Да, идемо добили аплауз за то. 35 00:01:49,432 --> 00:01:51,140 Заправо, био сам стварно, заиста импресиониран. 36 00:01:51,140 --> 00:01:55,800 Ја оцењују први псет за вас прошле недеље и ви урадили невероватно. 37 00:01:55,800 --> 00:01:58,290 >> Стил је био на месту Поред неколико коментара. 38 00:01:58,290 --> 00:02:00,660 Побрините се да увек Коментаришући свој код. 39 00:02:00,660 --> 00:02:03,040 Али твоји псетс су били на месту. 40 00:02:03,040 --> 00:02:05,549 И кееп ит уп. 41 00:02:05,549 --> 00:02:08,090 И то је добро за гредер да видим да сте се ставља 42 00:02:08,090 --> 00:02:10,704 как много напора у вашем стилу и ваш дизајн у вашем коду 43 00:02:10,704 --> 00:02:12,120 да желимо да видите. 44 00:02:12,120 --> 00:02:16,450 Тако сам пролазио моје захвалности за остале Тас. 45 00:02:16,450 --> 00:02:19,210 >> Међутим постоје Неколико брифинге питања 46 00:02:19,210 --> 00:02:22,010 Само желим да одем да како би мој живот 47 00:02:22,010 --> 00:02:24,900 и много другог ТАС 'живи мало лакше. 48 00:02:24,900 --> 00:02:28,220 Прво сам приметио ово Недељу прошлост колико вас 49 00:02:28,220 --> 00:02:32,301 су ради цхецк50 на Ваш број пред вама поднесе? 50 00:02:32,301 --> 00:02:32,800 ОК. 51 00:02:32,800 --> 00:02:36,690 Дакле, свако треба да ради цхецк50, јер-- А Ве тајна-- ствари 52 00:02:36,690 --> 00:02:41,540 рун цхецк50 као део нашег исправности скрипте за тестирање свој код. 53 00:02:41,540 --> 00:02:45,480 Дакле, ако ваш код пропада цхецк50, по свој прилици, 54 00:02:45,480 --> 00:02:47,570 вероватно је да ће фаил нашу чек као добро. 55 00:02:47,570 --> 00:02:49,320 Понекад момци има праве одговоре. 56 00:02:49,320 --> 00:02:52,200 Као, у похлепан, неке од имате праве бројеве, 57 00:02:52,200 --> 00:02:53,960 само одштампате неке додатне ствари. 58 00:02:53,960 --> 00:02:55,940 И то екстра ствари заправо не чек, 59 00:02:55,940 --> 00:02:58,440 јер рачунар не знам шта је то тражио. 60 00:02:58,440 --> 00:03:00,981 И тако да ће само проћи кроз, види да ваш излаз не 61 00:03:00,981 --> 00:03:03,810 одговара оно што ми очекујемо одговор да буде, и означите је погрешно. 62 00:03:03,810 --> 00:03:06,560 >> И знам да се догодило у неки од ваших случајева ове недеље. 63 00:03:06,560 --> 00:03:09,870 Зато сам се и отишао ручно реградед свачији кода. 64 00:03:09,870 --> 00:03:12,780 У будућности, иако, молим вас, проверите да ли 65 00:03:12,780 --> 00:03:14,570 да бежиш Провери 50 на кода. 66 00:03:14,570 --> 00:03:17,970 Зато што је нека врста бола за ТА морати да се вратим и ручно прекласирање 67 00:03:17,970 --> 00:03:21,197 сваки псет за сваки сингл, мало промашио инстанца. 68 00:03:21,197 --> 00:03:22,530 Тако да нисам скинути бодове. 69 00:03:22,530 --> 00:03:25,210 Мислим да сам скинуо можда један или два за дизајн. 70 00:03:25,210 --> 00:03:27,710 У будућности, иако, ако ви неуспеха цхецк50, 71 00:03:27,710 --> 00:03:31,330 поени ће бити предузете офф за исправност. 72 00:03:31,330 --> 00:03:35,020 >> Осим тога, псетс су због петком у подне. 73 00:03:35,020 --> 00:03:38,990 Мислим да је седам минута касног периода милост која ми вам дати. 74 00:03:38,990 --> 00:03:42,434 По Харвард време, они дозвољено да бити седам минута касније на све. 75 00:03:42,434 --> 00:03:44,350 Дакле, овде на Јејлу, ми ћемо придржавају и то. 76 00:03:44,350 --> 00:03:47,910 Али прилично, у 12:07, Ако ваш псет није у, 77 00:03:47,910 --> 00:03:49,720 то ће бити означен као касно. 78 00:03:49,720 --> 00:03:53,160 И тако док је означен као касни, ТА-- сам 79 00:03:53,160 --> 00:03:54,870 и даље ће бити оцењивање своје псетс. 80 00:03:54,870 --> 00:03:56,760 Дакле, и даље ћете видети разред појавити. 81 00:03:56,760 --> 00:03:58,820 Међутим, знамо да је на крај семестра, 82 00:03:58,820 --> 00:04:02,270 све заостале псетс ће само бити аутоматски зероед компјутер. 83 00:04:02,270 --> 00:04:04,490 >> Ми ово радимо из два разлога. 84 00:04:04,490 --> 00:04:09,220 Један, понекад добијамо оправдано, као изговора декана, 85 00:04:09,220 --> 00:04:10,762 касније да ја не знам још. 86 00:04:10,762 --> 00:04:13,761 Зато смо желели да будемо сигурни да градинг све за сваки случај, као, ја сам 87 00:04:13,761 --> 00:04:15,080 недостаје оправдање Деан је. 88 00:04:15,080 --> 00:04:17,000 И друго, имајте на ум, још увек можете 89 00:04:17,000 --> 00:04:19,370 дроп један псет да има пуном обиму бодова. 90 00:04:19,370 --> 00:04:21,430 И тако смо желели да разред све ваше псетс само 91 00:04:21,430 --> 00:04:24,730 да се уверите да је ваш обим је тамо и ви их покушавате. 92 00:04:24,730 --> 00:04:29,150 Дакле, чак и ако је касно, ти ћеш и даље добити кредит за обиму бодова, мислим. 93 00:04:29,150 --> 00:04:33,730 >> Дакле, поука ове приче је, да да ваши псетс у на време. 94 00:04:33,730 --> 00:04:38,350 А ако нису у на време, знам да то није сјајно. 95 00:04:38,350 --> 00:04:41,678 Да, пре него што наставимо, да ли неко има Сва питања у вези псет повратне информације? 96 00:04:41,678 --> 00:04:42,178 Да. 97 00:04:42,178 --> 00:04:43,630 >> ПУБЛИКА: Да ли сте Кажемо може пасти један од псетс? 98 00:04:43,630 --> 00:04:44,296 >> Анди Пенг: Да. 99 00:04:44,296 --> 00:04:47,050 Дакле, ту је девет псетс укупни у току семестра. 100 00:04:47,050 --> 00:04:50,610 А ако имате обим поинтс-- тако да обим је само, 101 00:04:50,610 --> 00:04:53,567 прилично, да ли покушавају Проблем, стављаш на време, 102 00:04:53,567 --> 00:04:56,150 ти показује да сте показали сте прочитали спец. 103 00:04:56,150 --> 00:04:57,191 То је прилично много простора. 104 00:04:57,191 --> 00:04:59,370 А ако се испуњавају Обим бодова, ми 105 00:04:59,370 --> 00:05:03,360 може пасти најниже један од пуног опсега. 106 00:05:03,360 --> 00:05:06,790 Дакле, то је у своју предност на завршити и покушајте сваки псет. 107 00:05:06,790 --> 00:05:10,320 >> Чак и ако нико од уплоад-- да раде, уплоад их све. 108 00:05:10,320 --> 00:05:13,711 И онда надам се моћи да да ти дам неке од тих тачака назад. 109 00:05:13,711 --> 00:05:14,210 Кул. 110 00:05:14,210 --> 00:05:16,780 Има ли још питања? 111 00:05:16,780 --> 00:05:17,840 Велики. 112 00:05:17,840 --> 00:05:21,960 >> Друго, канцеларија хоурс-- неколико брзе белешке о радног времена. 113 00:05:21,960 --> 00:05:24,300 Дакле, прво, доћи рано у недељу. 114 00:05:24,300 --> 00:05:26,909 Нико није икада у Радно време понедељком. 115 00:05:26,909 --> 00:05:28,700 Цхристабел дошао Радно време прошле ноћи. 116 00:05:28,700 --> 00:05:29,691 Да, Цхристабел. 117 00:05:29,691 --> 00:05:32,190 И шта имамо у канцеларији сати синоћ, Цхристабел? 118 00:05:32,190 --> 00:05:33,020 >> ПУБЛИКА: Имали смо сладолед. 119 00:05:33,020 --> 00:05:36,160 >> Анди Пенг: Дакле, то је у реду, имали смо сладолед на радног времена синоћ. 120 00:05:36,160 --> 00:05:39,390 Иако не могу да вам обећам да имаћемо сладолед на радног времена 121 00:05:39,390 --> 00:05:43,230 сваке недеље, шта могу да вам обећам је да ће бити знатно 122 00:05:43,230 --> 00:05:45,380 боље студент ТА однос. 123 00:05:45,380 --> 00:05:47,650 Као легално, то је као три према један. 124 00:05:47,650 --> 00:05:50,350 Док Упоредите то са Четвртак, имаш око 150 125 00:05:50,350 --> 00:05:52,830 Заиста је нагласио децу и не сладолед. 126 00:05:52,830 --> 00:05:55,360 И то је само није продуктивно за кога. 127 00:05:55,360 --> 00:05:58,730 Дакле, поука ове приче је, доћи рано да радног времена и добрих ствари 128 00:05:58,730 --> 00:06:00,310 ће се десити. 129 00:06:00,310 --> 00:06:02,110 >> Такође, долази спреман да постављају питања. 130 00:06:02,110 --> 00:06:03,200 Знате? 131 00:06:03,200 --> 00:06:05,420 Без обзира шта Тас, ја Мислим, да је рекао, 132 00:06:05,420 --> 00:06:10,710 смо се неколико ученика који долазе у четвртак у, као, 10:50 133 00:06:10,710 --> 00:06:15,100 не што прочитате спец биће као помози ми, помози ми. 134 00:06:15,100 --> 00:06:18,200 Нажалост, у том тренутку, ту је не можемо много да урадимо да ти помогнем. 135 00:06:18,200 --> 00:06:19,590 Зато молим те рано у недељу. 136 00:06:19,590 --> 00:06:22,040 Дођи рано за радног времена. 137 00:06:22,040 --> 00:06:23,350 Дођите спремни да постављају питања. 138 00:06:23,350 --> 00:06:25,310 Уверите се да вас, као студент, где су 139 00:06:25,310 --> 00:06:27,620 морате тако да буде ТАС могу вас водити заједно, 140 00:06:27,620 --> 00:06:32,850 што је оно што радно време Треба одвојити за. 141 00:06:32,850 --> 00:06:37,380 >> Друго, тако да знам професоре воле да нас изненади са тестовима. 142 00:06:37,380 --> 00:06:39,439 Имао сам професора оне као, јо, узгред буди речено, 143 00:06:39,439 --> 00:06:41,230 сећам се тог испит имате следећег понедељка. 144 00:06:41,230 --> 00:06:42,855 Да, нисам знао за тај испит. 145 00:06:42,855 --> 00:06:45,630 Зато ћу бити тај ТА да вас подсети све то квиз 146 00:06:45,630 --> 00:06:47,270 0-- јер, знате, ми смо ЦС. 147 00:06:47,270 --> 00:06:50,730 Сада када смо урадили низова, добијате зашто је квиз 0, не Куиз 1, а? 148 00:06:50,730 --> 00:06:51,320 ОК. 149 00:06:51,320 --> 00:06:52,490 Ох, имам неке цхуцклес на тај један. 150 00:06:52,490 --> 00:06:53,120 ОК. 151 00:06:53,120 --> 00:06:59,710 >> Дакле, квиз 0 ће бити 14. октобар, ако ти си у понедељак-среда секције 152 00:06:59,710 --> 00:07:02,920 и 15. октобар ако сте у Уторак-Четвртак секција. 153 00:07:02,920 --> 00:07:05,630 Ово не важи за оне на Харварду 154 00:07:05,630 --> 00:07:10,350 ко-- Мислим да ће све бити узимајући своје квизове 14.. 155 00:07:10,350 --> 00:07:13,560 >> Тако да, следеће недеље, ако Дејвид, у предавању, иде, 156 00:07:13,560 --> 00:07:15,747 Да, тако о томе квиз следеће недеље, сви 157 00:07:15,747 --> 00:07:17,580 неће бити шокиран, јер сте дошли у одељку 158 00:07:17,580 --> 00:07:19,664 и знате да ваш Квиз 0 је за две недеље. 159 00:07:19,664 --> 00:07:21,580 А ми ћемо имати преглед сесије и све. 160 00:07:21,580 --> 00:07:26,360 Значи нема бриге око се уплашио за то. 161 00:07:26,360 --> 00:07:29,890 Сва питања пре-- било каквих питања на свим погледу логистичких питања, 162 00:07:29,890 --> 00:07:32,591 норматив, радно време, профили? 163 00:07:32,591 --> 00:07:33,090 Да. 164 00:07:33,090 --> 00:07:35,100 >> ПУБЛИКА: Дакле, квиз је ће бити у току предавања? 165 00:07:35,100 --> 00:07:35,766 >> Анди Пенг: Да. 166 00:07:35,766 --> 00:07:39,460 Тако квизу, мислим да је 60 минута додељена у том термину 167 00:07:39,460 --> 00:07:42,240 који сте управо ћу у амфитеатру. 168 00:07:42,240 --> 00:07:44,810 Дакле, не морате да дође у о, као, случајним 7:00 пм. 169 00:07:44,810 --> 00:07:46,140 Све је добро. 170 00:07:46,140 --> 00:07:47,100 Да. 171 00:07:47,100 --> 00:07:50,060 Кул. 172 00:07:50,060 --> 00:07:50,840 >> У реду. 173 00:07:50,840 --> 00:07:54,330 Тако ћемо увести концепт да вам 174 00:07:54,330 --> 00:08:00,760 ове недеље да Давид има већ некако од дотакао у предавању прошле недеље. 175 00:08:00,760 --> 00:08:02,010 То се зове ГДБ. 176 00:08:02,010 --> 00:08:05,570 А колико вас, док је у ток писања своје псетс, 177 00:08:05,570 --> 00:08:09,981 Приметио велики дугме на коме пише "Дебуг" на врху ИДЕ? 178 00:08:09,981 --> 00:08:10,480 ОК. 179 00:08:10,480 --> 00:08:13,770 Дакле, сада смо заиста ћу да ископају мистерија шта то дугме реално 180 00:08:13,770 --> 00:08:14,270 ради. 181 00:08:14,270 --> 00:08:16,790 И гарантујем ти, то је лепа, лепа ствар. 182 00:08:16,790 --> 00:08:20,740 >> Дакле, до сада, мислим дошло је до две ствари 183 00:08:20,740 --> 00:08:23,320 студенти су обично били радили када дебуггинг псетс. 184 00:08:23,320 --> 00:08:27,635 Један, они или додати у принтф () - тако да сваких неколико редова, 185 00:08:27,635 --> 00:08:29,760 они додају у принтф () - Ох, шта је ово променљива? 186 00:08:29,760 --> 00:08:32,551 Ох, шта је ово променљива сада-- а ви врста видите напредовање 187 00:08:32,551 --> 00:08:33,940 вашег кода док ради. 188 00:08:33,940 --> 00:08:37,030 Или други начин деца то је да они само напишите целу ствар 189 00:08:37,030 --> 00:08:38,610 и онда овако на крају. 190 00:08:38,610 --> 00:08:39,970 Надам се да ради. 191 00:08:39,970 --> 00:08:44,851 Ја вам гарантујем, ГДБ је боље од оба ова метода. 192 00:08:44,851 --> 00:08:45,350 Да. 193 00:08:45,350 --> 00:08:46,980 Тако ће ово бити ваш нови најбољи пријатељ. 194 00:08:46,980 --> 00:08:51,780 Зато што је то дивна ствар који визуелно приказује и 195 00:08:51,780 --> 00:08:54,850 шта је твој број ради у специфичној тачки 196 00:08:54,850 --> 00:08:57,486 као и шта све ваше варијабле носе, 197 00:08:57,486 --> 00:08:59,610 као што су њихове вредности, у том одређене тачке. 198 00:08:59,610 --> 00:09:02,670 И на овај начин, можете стварно сет бреакпоинт у вашем коду. 199 00:09:02,670 --> 00:09:04,350 Можете да покренете кроз линију по линију. 200 00:09:04,350 --> 00:09:07,324 И ГДБ ће само имати за ви, приказан за вас, 201 00:09:07,324 --> 00:09:09,490 ста све ваше варијабли су, шта раде, 202 00:09:09,490 --> 00:09:10,656 шта се дешава у коду. 203 00:09:10,656 --> 00:09:13,240 И на такав начин, то је много лакше да видим 204 00:09:13,240 --> 00:09:17,120 шта се дешава, уместо од принтф-инг или записивао своје изјаве. 205 00:09:17,120 --> 00:09:19,160 >> Тако ћемо урадити један пример касније. 206 00:09:19,160 --> 00:09:20,660 Дакле, ово изгледа помало апстрактно. 207 00:09:20,660 --> 00:09:23,490 Без бриге, урадићемо примере. 208 00:09:23,490 --> 00:09:29,170 И тако у суштини, три највећа, највише коришћене функције мораћете ГДБ 209 00:09:29,170 --> 00:09:32,500 су Даље, Степ преко, и корак у тастера. 210 00:09:32,500 --> 00:09:34,860 Идем над главом ту, у ствари, сада. 211 00:09:34,860 --> 00:09:40,930 >> Дакле, да ли ви све видите да или да зоом ин мало? 212 00:09:40,930 --> 00:09:43,220 213 00:09:43,220 --> 00:09:44,470 У позадини, можете ли то видите? 214 00:09:44,470 --> 00:09:45,730 Да ли зоом ин? 215 00:09:45,730 --> 00:09:46,480 Само мало? 216 00:09:46,480 --> 00:09:49,390 OK kul. 217 00:09:49,390 --> 00:09:50,280 Ево га. 218 00:09:50,280 --> 00:09:50,960 ОК. 219 00:09:50,960 --> 00:09:57,000 >> Па ја имам, овде, моја имплементација за похлепан. 220 00:09:57,000 --> 00:10:01,430 И док многи од вас написао похлепни у вхиле петље форм-- да 221 00:10:01,430 --> 00:10:04,890 је савршено прихватљив начин да урадите То-- други начин да то урадите је да једноставно 222 00:10:04,890 --> 00:10:06,280 поделити у модуло. 223 00:10:06,280 --> 00:10:09,290 Јер, онда можете имати свој вредност и онда имати свој остатак. 224 00:10:09,290 --> 00:10:11,150 И онда једноставно не могу додати све заједно. 225 00:10:11,150 --> 00:10:13,390 Да ли логику онога што радим Овде има смисла за све, 226 00:10:13,390 --> 00:10:14,117 пре него што почнемо? 227 00:10:14,117 --> 00:10:16,760 228 00:10:16,760 --> 00:10:17,980 Врста? 229 00:10:17,980 --> 00:10:18,710 Кул. 230 00:10:18,710 --> 00:10:19,210 Велики. 231 00:10:19,210 --> 00:10:21,290 То је прилично секси комад кода, рекао бих. 232 00:10:21,290 --> 00:10:23,502 Као што сам рекао, Дејвид, у предавања, после неког времена, 233 00:10:23,502 --> 00:10:25,960 сви ви ћете почети видети код као нешто што је прелепо. 234 00:10:25,960 --> 00:10:29,950 И понекад када видите лепа код, то је тако дивно осећање. 235 00:10:29,950 --> 00:10:35,410 >> Па ипак, док овај код је веома лепа, она не ради исправно. 236 00:10:35,410 --> 00:10:37,750 Дакле, хајде да цхецк50 на ово. 237 00:10:37,750 --> 00:10:39,440 Проверите 50 20-- ооп. 238 00:10:39,440 --> 00:10:43,221 239 00:10:43,221 --> 00:10:43,720 2? 240 00:10:43,720 --> 00:10:44,990 Да ли је то псет2? 241 00:10:44,990 --> 00:10:46,870 Да. 242 00:10:46,870 --> 00:10:47,520 О, псет1. 243 00:10:47,520 --> 00:10:50,970 244 00:10:50,970 --> 00:10:52,890 ОК. 245 00:10:52,890 --> 00:10:53,900 Дакле, трчимо цхецк50. 246 00:10:53,900 --> 00:11:01,550 247 00:11:01,550 --> 00:11:07,170 >> И као што ви можете да видите овде, то је зато што није неколико случајева. 248 00:11:07,170 --> 00:11:10,165 А за неке од вас, у Наравно да ради свој проблем сетова, 249 00:11:10,165 --> 00:11:11,110 ти си као, ах, зашто не ради. 250 00:11:11,110 --> 00:11:13,318 Зашто је то ради за неке Вредности али не и за друге? 251 00:11:13,318 --> 00:11:17,760 Па, ГДБ ће помоћи да схватите зашто ти улази нису радили. 252 00:11:17,760 --> 00:11:18,320 >> ОК. 253 00:11:18,320 --> 00:11:21,640 Па да видимо, један од чекови сам због недостатка цхецк50 254 00:11:21,640 --> 00:11:24,920 је улаз вредност 0.41. 255 00:11:24,920 --> 00:11:27,830 Тако је тачан одговор који требало би да се је 4. 256 00:11:27,830 --> 00:11:33,090 Али уместо оно што ја штампање је 3-Н, што није тачно. 257 00:11:33,090 --> 00:11:36,190 Дакле, хајде да ради ручно, само уверите се да цхецк50 ради. 258 00:11:36,190 --> 00:11:36,940 Хајде да урадимо ./грееди. 259 00:11:36,940 --> 00:11:40,130 260 00:11:40,130 --> 00:11:43,340 Упс, морам да похлепни. 261 00:11:43,340 --> 00:11:43,840 Ево га. 262 00:11:43,840 --> 00:11:44,381 Сада ./грееди. 263 00:11:44,381 --> 00:11:46,950 264 00:11:46,950 --> 00:11:47,670 >> Колико дугује? 265 00:11:47,670 --> 00:11:49,550 Хајде да урадимо 0.41. 266 00:11:49,550 --> 00:11:52,590 И Да, видимо овде да је оутпуттинг 3 267 00:11:52,590 --> 00:11:55,160 када је тачан одговор, у ствари, треба да буде 4. 268 00:11:55,160 --> 00:12:01,460 Дакле, хајде да уђе ГДБ и видимо како ћемо може ићи око причвршћивање овај проблем. 269 00:12:01,460 --> 00:12:03,992 >> Дакле, први корак у Увек отклањање грешака код 270 00:12:03,992 --> 00:12:05,950 је да поставите тачку прекида, или тачка у којој сте 271 00:12:05,950 --> 00:12:09,079 Желим рачунара или дебуггер да почнемо да тражимо у. 272 00:12:09,079 --> 00:12:11,120 Дакле, ако заиста не Знаш шта је твој проблем, 273 00:12:11,120 --> 00:12:14,670 Обично, типичан ствар коју желимо да урадите је да поставимо тачку прекида на главни. 274 00:12:14,670 --> 00:12:18,520 Дакле, ако ви можете видети ово црвено дугме тамо, 275 00:12:18,520 --> 00:12:22,860 Да, то ми је подешавању Бреакпоинт за главну функцију. 276 00:12:22,860 --> 00:12:24,130 Кликнем то. 277 00:12:24,130 --> 00:12:26,130 >> И онда могу да одем до мог дугме Дебуг. 278 00:12:26,130 --> 00:12:27,036 Ударио сам то дугме. 279 00:12:27,036 --> 00:12:31,710 280 00:12:31,710 --> 00:12:36,555 Дозволите ми да зоом напоље ако могу. 281 00:12:36,555 --> 00:12:38,020 Ево га. 282 00:12:38,020 --> 00:12:40,730 Тако имамо овде, панел са десне стране. 283 00:12:40,730 --> 00:12:43,680 Жао ми је, момци у леђа, ви не видим јако добро. 284 00:12:43,680 --> 00:12:49,090 Али у суштини, све ово право панел ради 285 00:12:49,090 --> 00:12:53,130 је праћење и истакнути линија, која је линија кода 286 00:12:53,130 --> 00:12:56,640 да ли је рачунар тренутно ради, као и све ваше варијабли 287 00:12:56,640 --> 00:12:57,600 овде. 288 00:12:57,600 --> 00:13:00,487 >> Дакле, имаш центи, кованице, н све прогласио за различите ствари 289 00:13:00,487 --> 00:13:01,070 у овом тренутку. 290 00:13:01,070 --> 00:13:04,850 Без бриге, јер немамо ствари инитиализед их на било варијабли још. 291 00:13:04,850 --> 00:13:07,200 Дакле, у рачунару, компјутер је само видети, 292 00:13:07,200 --> 00:13:14,376 Ох, 32767 био последњи половни функција те меморије у мом компјутеру. 293 00:13:14,376 --> 00:13:16,000 И то је где центи тренутно је. 294 00:13:16,000 --> 00:13:19,360 Али не да када једном покренете код, оно треба да постане покренут. 295 00:13:19,360 --> 00:13:24,110 >> Дакле, идемо кроз, линију по линија, шта се овде дешава. 296 00:13:24,110 --> 00:13:25,350 ОК. 297 00:13:25,350 --> 00:13:29,400 Дакле, овде су три дугмад коју сам управо објаснио. 298 00:13:29,400 --> 00:13:34,090 Имате представе, или Рун функцију, дугме, имате Корак преко дугмета, 299 00:13:34,090 --> 00:13:36,600 а имате и корак у дугмету. 300 00:13:36,600 --> 00:13:41,260 И у суштини, све три их само проћи кроз кода 301 00:13:41,260 --> 00:13:42,690 и раде различите ствари. 302 00:13:42,690 --> 00:13:45,680 >> Тако типично, када отклањање грешака, не желимо да само притисните Плаи, 303 00:13:45,680 --> 00:13:47,930 јер Игра ће само покренути Ваш код на крају. 304 00:13:47,930 --> 00:13:49,070 А онда нећете заправо Знаш шта је твој проблем 305 00:13:49,070 --> 00:13:51,432 је осим ако нисте подесили више бреакпоинт. 306 00:13:51,432 --> 00:13:53,890 Ако сте поставили више Бреакпоинтс, само ће се аутоматски 307 00:13:53,890 --> 00:13:56,030 бежи од једног бреакпоинт, да следећи, да следећи. 308 00:13:56,030 --> 00:13:58,030 Али у овом случају имамо само да је један, зато што ми 309 00:13:58,030 --> 00:13:59,970 желе да раде свој пут од врха на доле до дна. 310 00:13:59,970 --> 00:14:04,830 Дакле, ми ћемо игнорисати то дугме сада за потребе овог програма. 311 00:14:04,830 --> 00:14:08,230 >> Тако Корак преко функције само кораци преко сваког линије 312 00:14:08,230 --> 00:14:11,510 и говори вам шта рачунар ради. 313 00:14:11,510 --> 00:14:14,630 Корак у функцију иде у стварни функцију 314 00:14:14,630 --> 00:14:16,000 то је на линију кода. 315 00:14:16,000 --> 00:14:19,070 Тако на пример, као принтф (), то је функција, зар не? 316 00:14:19,070 --> 00:14:21,980 Да сам хтео да се физички корак у принтф () функцију, 317 00:14:21,980 --> 00:14:25,610 Ја бих ићи у комаду Код где је написао и види иф () 318 00:14:25,610 --> 00:14:26,730 шта се тамо дешава. 319 00:14:26,730 --> 00:14:29,924 >> Али обично, претпостављамо да код које смо вам дати ради. 320 00:14:29,924 --> 00:14:31,340 Претпостављамо да принтф () ради. 321 00:14:31,340 --> 00:14:33,170 Претпостављамо да Затамњена () ради. 322 00:14:33,170 --> 00:14:35,170 Дакле, нема потребе да се корак у те функције. 323 00:14:35,170 --> 00:14:37,170 Али, ако постоји функције да се напише 324 00:14:37,170 --> 00:14:39,060 који желите да проверите шта се дешава, 325 00:14:39,060 --> 00:14:41,200 бисте желели да корак у ту функцију. 326 00:14:41,200 --> 00:14:43,940 >> Дакле, сада ми ћемо само на корак над овим делом кода. 327 00:14:43,940 --> 00:14:44,485 Па да видимо. 328 00:14:44,485 --> 00:14:46,547 О, штампа, "ох хаи, како много промена се дугује? " 329 00:14:46,547 --> 00:14:47,130 Ми не занима. 330 00:14:47,130 --> 00:14:49,830 Знамо да ради, тако да смо корак преко њега. 331 00:14:49,830 --> 00:14:53,290 >> Тако Н, који је наш пливајући да имамо инитиализед-- или децларед-- 332 00:14:53,290 --> 00:14:56,810 горе у врху, сада смо једнак то ГетФлоат (). 333 00:14:56,810 --> 00:14:57,810 Дакле, хајде да корак преко тога. 334 00:14:57,810 --> 00:14:59,580 И ми видимо на дно овде, програм 335 00:14:59,580 --> 00:15:03,360 ме је навело да улаз вредност. 336 00:15:03,360 --> 00:15:08,580 Дакле, хајде да унесете вредности желимо за тестирање овде, што је 0,41. 337 00:15:08,580 --> 00:15:09,160 Велики. 338 00:15:09,160 --> 00:15:12,780 >> Дакле, сада н-- урадите ви видите Овде, на боттом-- је 339 00:15:12,780 --> 00:15:15,140 сторед-- јер ми још увек није заокружена, то је 340 00:15:15,140 --> 00:15:19,540 складиштити у овом попут гиганта пловак који је 0,4099999996, 341 00:15:19,540 --> 00:15:22,550 што је довољно близу да наше сврхе, сада, на 0.41. 342 00:15:22,550 --> 00:15:26,090 И онда ћемо видети касније, како смо наставити гази преко програма, 343 00:15:26,090 --> 00:15:29,850 после овде, Н је постало заобљене и центи постао 41. 344 00:15:29,850 --> 00:15:30,350 Велики. 345 00:15:30,350 --> 00:15:32,230 Дакле, знамо да наше заокруживања ради. 346 00:15:32,230 --> 00:15:34,700 Знамо да имамо тачан број центи, 347 00:15:34,700 --> 00:15:36,990 тако да знамо да је то Не баш проблем. 348 00:15:36,990 --> 00:15:40,050 >> Дакле, ми настављамо степпинг у овој програму. 349 00:15:40,050 --> 00:15:40,900 Идемо овде. 350 00:15:40,900 --> 00:15:46,139 И тако након ове линије кода, можемо треба да знају колико четвртине имамо. 351 00:15:46,139 --> 00:15:46,680 Ми прекорачити. 352 00:15:46,680 --> 00:15:52,040 А видиш да не, у ствари, имам једну квартал јер смо одузме 25 353 00:15:52,040 --> 00:15:53,790 из наше почетне вредности од 41. 354 00:15:53,790 --> 00:15:55,890 И имамо 16 остало за наше центи. 355 00:15:55,890 --> 00:15:58,830 >> Да ли сви разумеју како Програм се повлачи кроз 356 00:15:58,830 --> 00:16:02,980 и зашто центи је сада постао 16 и зашто, сада, ковани новац је постао 1? 357 00:16:02,980 --> 00:16:04,610 Да ли је свако следеће ту логику? 358 00:16:04,610 --> 00:16:05,110 Кул. 359 00:16:05,110 --> 00:16:07,860 Дакле, од овог тренутка, Радна програма, зар не? 360 00:16:07,860 --> 00:16:09,797 Знамо да ради тачно оно што је хтео. 361 00:16:09,797 --> 00:16:11,880 И нисмо у ствари треба да одштампате, каква 362 00:16:11,880 --> 00:16:14,430 је центи у овом тренутку, оно што је кованица у овом тренутку. 363 00:16:14,430 --> 00:16:17,170 >> Ми и даље пролази кроз програм. 364 00:16:17,170 --> 00:16:18,100 Искорачи. 365 00:16:18,100 --> 00:16:18,620 Кул. 366 00:16:18,620 --> 00:16:19,700 Идемо преко ситниш. 367 00:16:19,700 --> 00:16:20,200 Велики. 368 00:16:20,200 --> 00:16:22,367 Видимо да је узео Офф $ 0.10 за центи. 369 00:16:22,367 --> 00:16:23,450 И сада имамо два новчића. 370 00:16:23,450 --> 00:16:25,260 Тако је. 371 00:16:25,260 --> 00:16:31,555 >> Идемо преко пенија и видимо да ми је остало преко центи. 372 00:16:31,555 --> 00:16:32,680 Хмм, то је чудно. 373 00:16:32,680 --> 00:16:37,540 Овде у програму, ја сам требао да одузима моје паре. 374 00:16:37,540 --> 00:16:39,400 Можда ја једноставно није било раде то право линије. 375 00:16:39,400 --> 00:16:42,190 И нажалост, можете видети овде, јер знамо 376 00:16:42,190 --> 00:16:44,360 да смо степпинг преко линија 32 и 33, 377 00:16:44,360 --> 00:16:50,560 ту наш програм непрописно имао променљиве покренути. 378 00:16:50,560 --> 00:16:55,136 Дакле, можемо да погледамо и видимо, о, Ја одузимањем центи овде, 379 00:16:55,136 --> 00:16:57,010 али нисам стварно додајући да моје вредност новчића. 380 00:16:57,010 --> 00:16:57,860 Ја сам додао да центи. 381 00:16:57,860 --> 00:17:00,234 И не желим да додам да центи, желим да додам да кованица. 382 00:17:00,234 --> 00:17:05,420 Дакле, ако променимо то новца, имамо програм рада. 383 00:17:05,420 --> 00:17:06,730 Ја могу покренути цхецк50. 384 00:17:06,730 --> 00:17:11,063 Треба само да изађете из ГДБ права овде и затим поново покрените цхецк50. 385 00:17:11,063 --> 00:17:11,938 Само могу ово да урадим. 386 00:17:11,938 --> 00:17:14,822 387 00:17:14,822 --> 00:17:18,480 Морам да похлепни. 388 00:17:18,480 --> 00:17:19,940 0.41. 389 00:17:19,940 --> 00:17:22,819 И ево, то је штампање од правог одговора. 390 00:17:22,819 --> 00:17:26,569 >> Дакле, као ви можете да видите, ГДБ је стварно моћан алат 391 00:17:26,569 --> 00:17:29,940 када имамо толико код дешава и толико променљивих 392 00:17:29,940 --> 00:17:32,510 да је тешко за нас, као људски, да пратите. 393 00:17:32,510 --> 00:17:35,360 Рачунар, у ГДБ отклањање грешака, има способност 394 00:17:35,360 --> 00:17:37,020 да прате све. 395 00:17:37,020 --> 00:17:40,480 Знам, у висионаире, вероватно момци можда погодио неке грешке сегментације 396 00:17:40,480 --> 00:17:43,150 зато што су трчали изван граница свог поља. 397 00:17:43,150 --> 00:17:46,510 У примеру Цезара, који је управо оно што сам овде спроводи. 398 00:17:46,510 --> 00:17:50,060 >> Тако да сам заборавио да провери шта би се десило ако бих 399 00:17:50,060 --> 00:17:52,510 није имао два аргументе командне линије. 400 00:17:52,510 --> 00:17:53,880 Само нисам ставио у том контролом. 401 00:17:53,880 --> 00:17:57,380 И тако, ако трчим Дебуг-- сам поставио моја тачка прекида тамо десно. 402 00:17:57,380 --> 00:17:58,055 Ја водим Дебуг. 403 00:17:58,055 --> 00:18:15,880 404 00:18:15,880 --> 00:18:16,550 >> ОК. 405 00:18:16,550 --> 00:18:17,050 Да. 406 00:18:17,050 --> 00:18:20,350 Уствари, ГДБ је требало да ми је речено 407 00:18:20,350 --> 00:18:22,300 је сегментација грешка тамо. 408 00:18:22,300 --> 00:18:24,883 Ја не знам шта се дешава тамо, али кад сам га водио, 409 00:18:24,883 --> 00:18:25,590 то је радио. 410 00:18:25,590 --> 00:18:29,410 Када покренете линија кода путем и ГДБ може одједном престати на тебе, 411 00:18:29,410 --> 00:18:31,540 иди и види ста је црвено грешка. 412 00:18:31,540 --> 00:18:33,930 То ће вам рећи, хеј, хвала имао сегментације грешку, 413 00:18:33,930 --> 00:18:38,550 што значи да сте покушали да приступите простор у низу који није постојао. 414 00:18:38,550 --> 00:18:39,050 Да. 415 00:18:39,050 --> 00:18:43,280 >> Дакле, у следећем проблему сет ове недеље, момци 416 00:18:43,280 --> 00:18:45,600 вероватно ће имати много променљиве лебди. 417 00:18:45,600 --> 00:18:48,560 Нећеш бити сигурни шта сви они значе у одређеном тренутку. 418 00:18:48,560 --> 00:18:53,560 Тако ГДБ ће заиста помоћи у откривању вас шта сви они су изједначавање 419 00:18:53,560 --> 00:18:55,940 и бити у стању да види да визуелно. 420 00:18:55,940 --> 00:19:01,995 Да ли је неко збуњен како ништа од тога ради? 421 00:19:01,995 --> 00:19:02,495 Кул. 422 00:19:02,495 --> 00:19:10,121 423 00:19:10,121 --> 00:19:10,620 У реду. 424 00:19:10,620 --> 00:19:14,260 Дакле, након што смо да зарони у праву 425 00:19:14,260 --> 00:19:17,562 у су четири различита врсте сорти за ову недељу. 426 00:19:17,562 --> 00:19:19,520 Колико вас прво свега, пре него што почнемо, 427 00:19:19,520 --> 00:19:23,020 Прочитао сам цео спец за псет3? 428 00:19:23,020 --> 00:19:23,824 ОК. 429 00:19:23,824 --> 00:19:24,740 Ја сам поносан на вас. 430 00:19:24,740 --> 00:19:29,110 То је као половини класе, која је знатно више него прошли пут. 431 00:19:29,110 --> 00:19:33,950 >> Дакле, то је сјајно, јер кад говоримо о садржају 432 00:19:33,950 --> 00:19:36,170 у лецтуре-- или је, у сецтион-- Свиђа ми се 433 00:19:36,170 --> 00:19:38,210 да се односи много тога назад на оно што је псет 434 00:19:38,210 --> 00:19:40,210 и како желите да спровести то у псет. 435 00:19:40,210 --> 00:19:42,400 Дакле, ако дођете да прочитајте спец, то ће 436 00:19:42,400 --> 00:19:45,510 бити много лакше да разумете оно што ја говорим кад кажем, 437 00:19:45,510 --> 00:19:48,720 Ох хеј, ово може бити стварно добро место за спровођење ове врсте. 438 00:19:48,720 --> 00:19:52,870 Дакле, они од вас који су прочитали Спец знају да, као део вашег псет, 439 00:19:52,870 --> 00:19:54,900 ти ћеш морати да напише неку врсту врсту. 440 00:19:54,900 --> 00:19:58,670 Дакле, ово може бити од велике помоћи за многе од вас данас. 441 00:19:58,670 --> 00:20:01,760 >> Дакле, ми ћемо кренути са, у суштини, најједноставнији тип 442 00:20:01,760 --> 00:20:04,580 од врста, избор врста. 443 00:20:04,580 --> 00:20:06,800 Типичан алгоритам за како бих о томе 444 00:20:06,800 --> 00:20:10,460 је-- Дејвид прошла кроз ово све у предавање, тако да брзо прећи заједно 445 00:20:10,460 --> 00:20:13,900 овде-- је у суштини, ви има низ вредности. 446 00:20:13,900 --> 00:20:17,170 И онда наћи Најмања вредност мусиц 447 00:20:17,170 --> 00:20:20,200 а ви мењате ту вредност са први мусиц вредност. 448 00:20:20,200 --> 00:20:22,700 И онда само понављају са остатком ваше листе. 449 00:20:22,700 --> 00:20:25,740 >> А ево и визуелно објашњење како да раде. 450 00:20:25,740 --> 00:20:30,460 Тако на пример, ако смо за почетак са низом од пет елемената, индекс 451 00:20:30,460 --> 00:20:35,910 0 до 4, с 3, 5, 2, 6 и 4 вредности смештени у арраи-- тако сада, 452 00:20:35,910 --> 00:20:38,530 ми ћемо само да претпоставимо да су сви мусиц 453 00:20:38,530 --> 00:20:41,130 јер нисмо тестирали другачије. 454 00:20:41,130 --> 00:20:44,130 >> Како избор врста би Рад је да је прво би 455 00:20:44,130 --> 00:20:46,800 пролазе кроз целини од неразврстан низа. 456 00:20:46,800 --> 00:20:49,120 То би издвојити најмању вредност. 457 00:20:49,120 --> 00:20:51,750 У овом случају, 3, зар не Сада је најмањи. 458 00:20:51,750 --> 00:20:52,680 Постаје до 5. 459 00:20:52,680 --> 00:20:55,620 Не, 5 није већа тхан-- или је, није мање тхан-- 3. 460 00:20:55,620 --> 00:20:57,779 Дакле, минимална вредност је увек 3. 461 00:20:57,779 --> 00:20:58,695 И онда дођете до 2. 462 00:20:58,695 --> 00:21:00,990 Рачунар види, ох 2 је мање од 3. 463 00:21:00,990 --> 00:21:02,750 2 сада мора бити минимална вредност. 464 00:21:02,750 --> 00:21:06,630 И тако 2 свопови са тог првог вредности. 465 00:21:06,630 --> 00:21:10,702 >> Дакле, после једном пролазу, ми заиста видимо да су 2 и 3 се замењивати. 466 00:21:10,702 --> 00:21:13,910 И ми ћемо само да наставимо да радимо то опет са остатком низа. 467 00:21:13,910 --> 00:21:17,660 Дакле, ми ћемо само пролазе кроз последња четири индекси низа. 468 00:21:17,660 --> 00:21:20,670 Видећемо да је 3 следећа минимална вредност. 469 00:21:20,670 --> 00:21:23,240 Дакле, идемо да замени то са 4. 470 00:21:23,240 --> 00:21:26,900 И онда ћемо само да задржи пролази кроз све, на крају, ви 471 00:21:26,900 --> 00:21:33,730 дођете до сортираном низу у којој 2, 3, 4, 5, и 6 су сви сортирани. 472 00:21:33,730 --> 00:21:37,530 Да ли сви разумеју логику како избор врста ради? 473 00:21:37,530 --> 00:21:39,669 >> Само има неку врсту минималне вредност. 474 00:21:39,669 --> 00:21:41,210 Ти праћење шта је то. 475 00:21:41,210 --> 00:21:45,170 И кад год га наћи, ти замени са првим вредност во арраи-- 476 00:21:45,170 --> 00:21:48,740 или, није први валуе-- следећи вредност у низу. 477 00:21:48,740 --> 00:21:50,150 Кул. 478 00:21:50,150 --> 00:21:55,460 >> Дакле, као што вама врста Видела из кратак поглед, 479 00:21:55,460 --> 00:21:58,450 ћемо псеудокоду ово. 480 00:21:58,450 --> 00:22:02,510 Дакле, ако сте у леђа желите да формирају групу, сви за столом 481 00:22:02,510 --> 00:22:06,170 може формирати мало партнера, идем да вам дам као три минута 482 00:22:06,170 --> 00:22:08,190 само говорити кроз логика, на енглеском језику, 483 00:22:08,190 --> 00:22:14,161 како бисмо могли да спроведу Псеудокод да напише избор врсту. 484 00:22:14,161 --> 00:22:14,910 А ту је и бомбоне. 485 00:22:14,910 --> 00:22:16,118 Молимо вас да се попнем и да слаткише. 486 00:22:16,118 --> 00:22:19,520 Ако сте у леђима и желите Цанди, могу бацити бомбоне на тебе. 487 00:22:19,520 --> 00:22:22,850 Заправо, да ли ти- цоол. 488 00:22:22,850 --> 00:22:23,552 Ох, извините. 489 00:22:23,552 --> 00:22:26,751 490 00:22:26,751 --> 00:22:27,250 ОК. 491 00:22:27,250 --> 00:25:23,880 492 00:25:23,880 --> 00:25:27,140 >> Дакле, ако желимо да, као класа, писање Псеудокод 493 00:25:27,140 --> 00:25:30,466 колико би се могло приступити Овај проблем, само слободно. 494 00:25:30,466 --> 00:25:32,340 Само идем около и, како, питајте групе 495 00:25:32,340 --> 00:25:35,065 за следећу линију Шта би требало да радимо. 496 00:25:35,065 --> 00:25:37,840 Дакле, ако ви желите да покренете искључен, шта је прва ствар 497 00:25:37,840 --> 00:25:40,600 да урадите када покушавате да спроведе начин да реши овај програм 498 00:25:40,600 --> 00:25:43,480 да селективно сортирали листу? 499 00:25:43,480 --> 00:25:46,349 Хајде да претпоставимо имају низ, у реду? 500 00:25:46,349 --> 00:25:49,088 >> ПУБЛИКА: Ви желите да направите неки врста [неразумљиво] које сте 501 00:25:49,088 --> 00:25:50,420 пролази кроз читав свој низ. 502 00:25:50,420 --> 00:25:51,128 >> Анди Пенг: Тако је. 503 00:25:51,128 --> 00:25:54,100 Тако ћеш желети да поновити кроз сваки простор, зар не? 504 00:25:54,100 --> 00:26:05,490 Тако велики. 505 00:26:05,490 --> 00:26:08,600 Ако хоћете да ми дају поред лине-- да, у леђа. 506 00:26:08,600 --> 00:26:11,414 507 00:26:11,414 --> 00:26:13,290 >> ПУБЛИКА: Проверите их све за најмањи. 508 00:26:13,290 --> 00:26:14,248 >> Анди Пенг: Идемо. 509 00:26:14,248 --> 00:26:17,438 Дакле, желимо да прођу и проверите да видим шта је минимална вредност, зар не? 510 00:26:17,438 --> 00:26:22,110 511 00:26:22,110 --> 00:26:24,840 Ја ћу да скратим то "мин". 512 00:26:24,840 --> 00:26:27,658 Шта ви желите да урадите после сте пронашли минималну вредност? 513 00:26:27,658 --> 00:26:28,533 >> ПУБЛИКА: [неразумљиво] 514 00:26:28,533 --> 00:26:29,942 515 00:26:29,942 --> 00:26:33,150 Анди Пенг: Дакле, ви хтети да укључите га са првим тог низа, 516 00:26:33,150 --> 00:26:33,650 jel tako? 517 00:26:33,650 --> 00:26:45,120 518 00:26:45,120 --> 00:26:46,850 То је почетак, ја ћу да кажем. 519 00:26:46,850 --> 00:26:47,220 У реду. 520 00:26:47,220 --> 00:26:50,386 Дакле, сада када сте заменили први један, шта желите да урадите после тога? 521 00:26:50,386 --> 00:26:54,840 Дакле, сада знамо да је ова овде мора да је најмања вредност, зар не? 522 00:26:54,840 --> 00:26:58,310 Онда имате додатни одмор од низа који је мусиц. 523 00:26:58,310 --> 00:27:01,569 Дакле, шта желите да урадите овде, ако вас момци желе да ми дају следећу линију? 524 00:27:01,569 --> 00:27:04,610 ПУБЛИКА: Онда желите да поновити кроз остатак низа. 525 00:27:04,610 --> 00:27:05,276 Анди Пенг: Да. 526 00:27:05,276 --> 00:27:09,857 И тако шта итератинг кроз врста подразумева вероватно ћемо морати? 527 00:27:09,857 --> 00:27:10,440 Који тип од-- 528 00:27:10,440 --> 00:27:12,057 >> ПУБЛИКА: О, додатна променљива? 529 00:27:12,057 --> 00:27:13,890 Анди Пенг: Вероватно други за петљу, зар не? 530 00:27:13,890 --> 00:27:28,914 Дакле, вероватно ћемо хтети да прелазили тхроугх-- сјајно. 531 00:27:28,914 --> 00:27:31,830 А онда ћеш да се вратим и Вероватно проверите поново минимум, 532 00:27:31,830 --> 00:27:32,100 jel tako? 533 00:27:32,100 --> 00:27:34,975 И ти ћеш понављати ово, јер су петље тек тако 534 00:27:34,975 --> 00:27:36,010 да настави са радом, зар не? 535 00:27:36,010 --> 00:27:39,190 >> Дакле, као ви можете да видите, само општи Псеудокод 536 00:27:39,190 --> 00:27:41,480 како желимо овај програм да гледам. 537 00:27:41,480 --> 00:27:46,646 Ово Итерате овде, шта радимо обично треба да напише у нашем коду 538 00:27:46,646 --> 00:27:49,270 ако желимо да поновити путем Арраи, који тип структуре? 539 00:27:49,270 --> 00:27:51,030 Мислим да је Цхристабел већ раније рекао. 540 00:27:51,030 --> 00:27:51,500 >> ПУБЛИКА: А за петљу. 541 00:27:51,500 --> 00:27:52,160 >> Анди Пенг: А за петљу? 542 00:27:52,160 --> 00:27:52,770 Baš tako. 543 00:27:52,770 --> 00:27:56,060 Дакле, ово је вероватно Биће то за петљу. 544 00:27:56,060 --> 00:27:59,240 Шта је провера овде да значи? 545 00:27:59,240 --> 00:28:02,536 Обично, ако желите да проверите ако је нешто нешто елсе-- 546 00:28:02,536 --> 00:28:03,270 >> ПУБЛИКА: Ако. 547 00:28:03,270 --> 00:28:06,790 >> Анди Пенг: ако, зар не? 548 00:28:06,790 --> 00:28:10,790 А онда је размена овде, ми ћемо прећи касније, јер Давидов 549 00:28:10,790 --> 00:28:12,770 прошао је у предавању као добро. 550 00:28:12,770 --> 00:28:14,580 А онда друга Итерате имплиес-- 551 00:28:14,580 --> 00:28:15,120 >> ПУБЛИКА: Још једна фор петља. 552 00:28:15,120 --> 00:28:16,745 >> Анди Пенг: --анотхер за петљу, тачно. 553 00:28:16,745 --> 00:28:19,870 554 00:28:19,870 --> 00:28:22,000 Дакле, ако гледамо ово тачно, ми 555 00:28:22,000 --> 00:28:24,680 видим да смо вероватно Требаће угњеждени за петљу 556 00:28:24,680 --> 00:28:28,330 са условни исказ у ту и онда стварни део кода који је 557 00:28:28,330 --> 00:28:31,360 да мењате вредности. 558 00:28:31,360 --> 00:28:35,980 Зато сам само генерално написано Псеудокод код овде. 559 00:28:35,980 --> 00:28:38,910 И онда ми заправо догађа физички, као класа, 560 00:28:38,910 --> 00:28:40,700 покушати да ово данас спроводе. 561 00:28:40,700 --> 00:28:42,486 Вратимо се у овом ИДЕ. 562 00:28:42,486 --> 00:28:49,243 563 00:28:49,243 --> 00:28:50,230 >> Uh Oh. 564 00:28:50,230 --> 00:28:51,754 Зашто је то није-- то је то. 565 00:28:51,754 --> 00:28:52,253 ОК. 566 00:28:52,253 --> 00:28:55,834 567 00:28:55,834 --> 00:28:57,500 Жао нам је, дозволите ми да покушам да зумира мало више. 568 00:28:57,500 --> 00:28:59,310 Ево га. 569 00:28:59,310 --> 00:29:05,060 Све што радим овде је сам створио програм под називом "Избор / сорт.ц." 570 00:29:05,060 --> 00:29:10,860 Ја сам створио низ од девет вредности, 4, 8, 2, 1, 6, 9, 7, 5, 3. 571 00:29:10,860 --> 00:29:14,370 Тренутно, као што можете види, они су нередоследна. 572 00:29:14,370 --> 00:29:17,880 Н ће бити број који каже да износ од вредности 573 00:29:17,880 --> 00:29:18,920 имате у низу. 574 00:29:18,920 --> 00:29:20,670 У том случају, имамо девет вредности. 575 00:29:20,670 --> 00:29:23,760 И управо имам за петљу овде који исписује на неразврстан низ. 576 00:29:23,760 --> 00:29:28,370 >> И на крају, ја сам такође имам за петље да само исписује поново. 577 00:29:28,370 --> 00:29:32,070 Дакле, теоретски, ако овог програма исправно ради, на крају, 578 00:29:32,070 --> 00:29:35,670 требало би да видите штампани за петљу , у којој 1, 2, 3, 4, 5, 6, 7, 8, 579 00:29:35,670 --> 00:29:39,310 9 су све исправно у реду. 580 00:29:39,310 --> 00:29:43,410 >> Дакле, имамо нашу Псеудокод овде. 581 00:29:43,410 --> 00:29:46,090 Да ли неко жели да-- Ја сам само ићи тражити волунтеерс-- 582 00:29:46,090 --> 00:29:49,540 Реци ми тачно шта да куцате ако желимо да, прво, само поновити 583 00:29:49,540 --> 00:29:52,840 кроз почетку овог низа? 584 00:29:52,840 --> 00:29:55,204 Која је линија кода сам Вероватно ће требати овде? 585 00:29:55,204 --> 00:29:56,990 >> ПУБЛИКА: [неразумљиво] 586 00:29:56,990 --> 00:29:59,010 >> Анди Пенг: Да, осећам слободан да-- Жао нам је, 587 00:29:59,010 --> 00:30:02,318 не морају да стоје их-- осећај Слободно Раисе Иоур Воице мало. 588 00:30:02,318 --> 00:30:08,190 >> ПУБЛИКА: За инт и једнако 0-- 589 00:30:08,190 --> 00:30:10,690 >> Анди Пенг: Да, добро. 590 00:30:10,690 --> 00:30:15,220 >> ПУБЛИКА: Ја је мање од дужине низа. 591 00:30:15,220 --> 00:30:19,630 >> Анди Пенг: Зато водите смета овдје, јер смо ми 592 00:30:19,630 --> 00:30:23,060 немају функцију која нам говори дужина низа, 593 00:30:23,060 --> 00:30:25,790 Већ имамо вредност која чува то. 594 00:30:25,790 --> 00:30:27,920 Jel tako? 595 00:30:27,920 --> 00:30:31,010 Још једна ствар коју треба имати ин минд-- у низу 596 00:30:31,010 --> 00:30:33,940 од девет вредности, које су индекси? 597 00:30:33,940 --> 00:30:38,720 Рецимо овај низ је 0 до 3. 598 00:30:38,720 --> 00:30:41,500 Видиш да је последњи индекс је заправо 3. 599 00:30:41,500 --> 00:30:45,530 Није 4, иако постоји Четири вредности у низу. 600 00:30:45,530 --> 00:30:49,866 >> Дакле овде, морамо бити врло опрезни од чега наше услов за дужину 601 00:30:49,866 --> 00:30:50,490 Biće. 602 00:30:50,490 --> 00:30:51,948 >> ПУБЛИКА: Зар не би било н минус 1? 603 00:30:51,948 --> 00:30:54,440 Анди Пенг: Иде Н минус 1, тачно. 604 00:30:54,440 --> 00:30:57,379 Да ли то има смисла, зашто је н минус 1, сви? 605 00:30:57,379 --> 00:30:58,920 То је зато што низови су нула-индексиране. 606 00:30:58,920 --> 00:31:02,010 Они се крећу од 0 и покрените до н минус 1. 607 00:31:02,010 --> 00:31:03,210 Да, то је мало незгодно. 608 00:31:03,210 --> 00:31:03,730 ОК. 609 00:31:03,730 --> 00:31:05,929 И онда-- 610 00:31:05,929 --> 00:31:08,054 ПУБЛИКА: Иснт'1 да већ сређено ипак, 611 00:31:08,054 --> 00:31:11,400 за само не кажем "мања или једнака "и само рекао:" мање од? " 612 00:31:11,400 --> 00:31:13,108 >> Анди Пенг: То је Стварно добро питање. 613 00:31:13,108 --> 00:31:13,630 Дакле, да. 614 00:31:13,630 --> 00:31:17,410 Али, такође, начин на који смо спровођење провере право, 615 00:31:17,410 --> 00:31:19,120 морате да упоредите две вредности. 616 00:31:19,120 --> 00:31:21,009 Дакле, ви заправо желите да оставите "да" празна. 617 00:31:21,009 --> 00:31:23,050 Јер, ако упоредите ово, ти не идеш 618 00:31:23,050 --> 00:31:25,530 има све после тога за поређење, зар не? 619 00:31:25,530 --> 00:31:27,460 Да. 620 00:31:27,460 --> 00:31:29,297 Тако и ++. 621 00:31:29,297 --> 00:31:30,380 Додајмо наше заграде у. 622 00:31:30,380 --> 00:31:30,880 Упс. 623 00:31:30,880 --> 00:31:33,950 624 00:31:33,950 --> 00:31:34,710 Велики. 625 00:31:34,710 --> 00:31:39,117 Дакле, имамо почетак нашег спољњег петље. 626 00:31:39,117 --> 00:31:41,450 Тако да сада вероватно желите да створити променљиву за чување 627 00:31:41,450 --> 00:31:43,085 стаза од најмањих вредности, зар не? 628 00:31:43,085 --> 00:31:45,751 Да ли неко жели да ми дају линија кода који би то урадио? 629 00:31:45,751 --> 00:31:48,700 630 00:31:48,700 --> 00:31:53,570 Шта нам је потребно да идемо да желите да сачувате нешто? 631 00:31:53,570 --> 00:31:55,047 >> Jel tako. 632 00:31:55,047 --> 00:31:57,630 Можда боље име за то би бити-- "темп" потпуно воркс-- 633 00:31:57,630 --> 00:32:00,655 можда више пригодно назван би, ако желимо најмању валуе-- 634 00:32:00,655 --> 00:32:01,624 >> ПУБЛИКА: мин. 635 00:32:01,624 --> 00:32:02,790 Анди Пенг: мин, идемо. 636 00:32:02,790 --> 00:32:05,230 мин би било добро. 637 00:32:05,230 --> 00:32:08,340 И ево, шта радимо Желим да га иницијализирати да? 638 00:32:08,340 --> 00:32:09,620 Ово је мало незгодно. 639 00:32:09,620 --> 00:32:13,580 Јер, управо сада у почетком овог низа, 640 00:32:13,580 --> 00:32:15,730 нисте гледали било шта, зар не? 641 00:32:15,730 --> 00:32:19,200 Па шта, аутоматски, ако ми смо само он и једнако 0, 642 00:32:19,200 --> 00:32:22,302 шта желимо да се покрене наша прва вредност на минимум? 643 00:32:22,302 --> 00:32:22,802 ПУБЛИКА: Ја. 644 00:32:22,802 --> 00:32:24,790 Анди Пенг: Ја тачно. 645 00:32:24,790 --> 00:32:27,040 Цхристабел је, зашто желимо то инитиализе до и? 646 00:32:27,040 --> 00:32:28,510 >> ПУБЛИКА: Јер, па, почињемо са 0. 647 00:32:28,510 --> 00:32:31,660 Зато што немамо ништа да упореде да да, минимални ће завршити као 0. 648 00:32:31,660 --> 00:32:32,451 >> Анди Пенг: Управо тако. 649 00:32:32,451 --> 00:32:34,400 Дакле, она је потпуно у праву. 650 00:32:34,400 --> 00:32:36,780 Зато што немамо заправо погледао шта још, 651 00:32:36,780 --> 00:32:38,680 ми не знамо шта је наш минимум је вредност. 652 00:32:38,680 --> 00:32:41,960 Желимо да само иницијализирати да И, што је, тренутно, је овде. 653 00:32:41,960 --> 00:32:44,750 И као што смо и даље померите овај низ, 654 00:32:44,750 --> 00:32:48,122 видећемо да је, са сваким Додатни додавање, ја повећава. 655 00:32:48,122 --> 00:32:49,830 И тако у том тренутку, Ја ће вероватно 656 00:32:49,830 --> 00:32:52,329 да желе да буду минимални, јер ће бити било шта 657 00:32:52,329 --> 00:32:54,520 је почетак неразврстан низа. 658 00:32:54,520 --> 00:32:55,270 Кул. 659 00:32:55,270 --> 00:32:58,720 >> Тако да сада желите да додате фор петљу овде је то 660 00:32:58,720 --> 00:33:03,225 ће поновити кроз мусиц, односно остатак ове низа. 661 00:33:03,225 --> 00:33:05,808 Да ли неко жели да ми дају линија кода који би то урадио? 662 00:33:05,808 --> 00:33:08,870 663 00:33:08,870 --> 00:33:11,330 Хинт-- шта нам је потребно овде доле? 664 00:33:11,330 --> 00:33:17,320 665 00:33:17,320 --> 00:33:18,820 Шта ће се ићи у ово петљу? 666 00:33:18,820 --> 00:33:19,465 Да. 667 00:33:19,465 --> 00:33:21,590 ПУБЛИКА: Тако да би желео да имају другачији цео број, 668 00:33:21,590 --> 00:33:25,080 јер ми пролази кроз остатак од низа уместо И, па можда 669 00:33:25,080 --> 00:33:25,760 ј. 670 00:33:25,760 --> 00:33:27,301 >> Анди Пенг: Да, Ј звучи добро за мене. 671 00:33:27,301 --> 00:33:27,850 Једнак? 672 00:33:27,850 --> 00:33:33,930 >> ПУБЛИКА: Тако бих ја био, плус 1, јер сте са почетком у наредном вредности. 673 00:33:33,930 --> 00:33:40,395 А онда у енд-- Дакле, опет, ј мање од н минус 1, а затим ј ++. 674 00:33:40,395 --> 00:33:41,103 Анди Пенг: Одлично. 675 00:33:41,103 --> 00:33:48,510 676 00:33:48,510 --> 00:33:52,750 >> А онда овде, ми ћемо желети да проверите да ли нам је испуњен услов, 677 00:33:52,750 --> 00:33:53,250 jel tako? 678 00:33:53,250 --> 00:33:55,740 Зато што желите да промените минималну вредност 679 00:33:55,740 --> 00:33:58,700 ако је стварно мањи од оног ви га пореде, зар не? 680 00:33:58,700 --> 00:34:01,146 Дакле, шта ћемо да желим овде? 681 00:34:01,146 --> 00:34:04,160 682 00:34:04,160 --> 00:34:04,897 Проверите да види. 683 00:34:04,897 --> 00:34:06,730 Коју врсту изјава се вероватно дешава 684 00:34:06,730 --> 00:34:08,389 Ти желите да користите ако желите да проверите нешто? 685 00:34:08,389 --> 00:34:09,360 >> ПУБЛИКА Ан ако изјави. 686 00:34:09,360 --> 00:34:10,485 >> Анди Пенг Ан ако изјава. 687 00:34:10,485 --> 00:34:13,155 Дакле, ако-- и шта ће бити услов који желимо унутра 688 00:34:13,155 --> 00:34:13,988 нашег иф? 689 00:34:13,988 --> 00:34:18,255 690 00:34:18,255 --> 00:34:22,960 >> ПУБЛИКА: Ако је вредност ј је мања од вредности Ја 691 00:34:22,960 --> 00:34:24,600 >> Анди Пенг: Управо тако. 692 00:34:24,600 --> 00:34:27,480 Дакле, ако-- тако да низ се зове "низ." 693 00:34:27,480 --> 00:34:27,980 Велики. 694 00:34:27,980 --> 00:34:30,465 Дакле, ако арраи-- шта је то? 695 00:34:30,465 --> 00:34:31,090 Поновите. 696 00:34:31,090 --> 00:34:39,590 >> ПУБЛИКА: Ако низ-ј мање од низ-ја, онда ће променити мин. 697 00:34:39,590 --> 00:34:41,590 Дакле, минимална би било Ј. 698 00:34:41,590 --> 00:34:44,590 699 00:34:44,590 --> 00:34:47,249 >> Анди Пенг: Има ли то смисла? 700 00:34:47,249 --> 00:34:48,670 ОК. 701 00:34:48,670 --> 00:34:52,929 А сада овде, ми заправо Желим да спроведе свап, зар не? 702 00:34:52,929 --> 00:34:58,285 Тако се сећате, у предавању, Давид, када Он је покушавао да до-- оно што је заменити 703 00:34:58,285 --> 00:34:59,996 то-- сок од поморанџе и милк-- 704 00:34:59,996 --> 00:35:01,150 >> ПУБЛИКА: То је одвратно. 705 00:35:01,150 --> 00:35:02,816 >> Анди Пенг: Да, то је некако одвратно. 706 00:35:02,816 --> 00:35:05,310 Али то је био прилично добар концепт показује време. 707 00:35:05,310 --> 00:35:08,430 Дакле, мислим да ваше вредности овде. 708 00:35:08,430 --> 00:35:10,794 Имате низ од мин, низ и, 709 00:35:10,794 --> 00:35:12,460 или шта год покушавали смо да разменимо овде. 710 00:35:12,460 --> 00:35:15,310 И вероватно не могу да их сипати у једни друге у исто време, зар не? 711 00:35:15,310 --> 00:35:17,180 Дакле, шта ћемо да треба да створимо овде 712 00:35:17,180 --> 00:35:19,126 како би се правилно свап вредности? 713 00:35:19,126 --> 00:35:19,820 >> ПУБЛИКА: Привремени променљива. 714 00:35:19,820 --> 00:35:21,370 >> Анди Пенг: Привремена променљива. 715 00:35:21,370 --> 00:35:22,570 Па хајде да урадимо инт темп. 716 00:35:22,570 --> 00:35:25,681 Видите, то би бити бољи време да-- вау, шта је то? 717 00:35:25,681 --> 00:35:26,180 ОК. 718 00:35:26,180 --> 00:35:29,800 Дакле, ово би био бољи Време је да име променљиве "Темп". 719 00:35:29,800 --> 00:35:30,730 Па хајде да урадимо инт темп. 720 00:35:30,730 --> 00:35:32,563 Шта ћемо сет темп једнак довде? 721 00:35:32,563 --> 00:35:34,752 722 00:35:34,752 --> 00:35:35,335 ПУБЛИКА: мин 723 00:35:35,335 --> 00:35:38,508 724 00:35:38,508 --> 00:35:39,716 Анди Пенг: Мало је незгодно. 725 00:35:39,716 --> 00:35:43,110 726 00:35:43,110 --> 00:35:44,880 То заправо није битно на крају. 727 00:35:44,880 --> 00:35:47,690 Није битно шта би да изаберете да мењате у 728 00:35:47,690 --> 00:35:50,862 док правите сигуран да си праћење шта замене. 729 00:35:50,862 --> 00:35:52,250 >> ПУБЛИКА: Могло би да буде низ-ја. 730 00:35:52,250 --> 00:35:53,666 >> Анди Пенг: Да, хајде да урадимо арраи-и. 731 00:35:53,666 --> 00:35:55,950 732 00:35:55,950 --> 00:35:59,305 И онда шта је следећи ред кода желимо да овде? 733 00:35:59,305 --> 00:36:00,680 ПУБЛИКА арраи-ја једнако арраи-ј. 734 00:36:00,680 --> 00:36:07,154 735 00:36:07,154 --> 00:36:08,070 Анди Пенг: И на крају? 736 00:36:08,070 --> 00:36:12,070 ПУБЛИКА арраи-Ј једнак низ-ја. 737 00:36:12,070 --> 00:36:14,525 Публика: Или низ-ј једнаки Арраи-темп-- или, Темп. 738 00:36:14,525 --> 00:36:17,135 739 00:36:17,135 --> 00:36:19,430 >> Анди Пенг: У реду. 740 00:36:19,430 --> 00:36:21,510 Дакле, хајде да то и видим ако се иде на посао. 741 00:36:21,510 --> 00:36:37,520 742 00:36:37,520 --> 00:36:39,335 Где је то дешава? 743 00:36:39,335 --> 00:36:40,210 Ох, то је проблем. 744 00:36:40,210 --> 00:36:44,320 Видите, он лине 40 смо Покушавам да користите арраи-ј? 745 00:36:44,320 --> 00:36:47,022 Али одакле Ј постоје само у? 746 00:36:47,022 --> 00:36:48,402 >> ПУБЛИКА: У фор петље. 747 00:36:48,402 --> 00:36:49,110 Анди Пенг: Тако је. 748 00:36:49,110 --> 00:36:51,730 Дакле, шта ћемо морати да урадимо? 749 00:36:51,730 --> 00:36:53,170 >> ПУБЛИКА: то Дефине ван до-- 750 00:36:53,170 --> 00:36:57,777 751 00:36:57,777 --> 00:37:00,610 ПУБЛИКА: Да, претпостављам да имате користити другу ако изјава, зар не? 752 00:37:00,610 --> 00:37:05,230 То је као, ако најмање-- У реду, пусти ме да размислим. 753 00:37:05,230 --> 00:37:08,170 754 00:37:08,170 --> 00:37:09,990 >> Анди Пенг: Момци, пробајте да погледате Хајде да 755 00:37:09,990 --> 00:37:11,270 види, шта можемо да урадимо нешто овде? 756 00:37:11,270 --> 00:37:11,811 >> ПУБЛИКА: У реду. 757 00:37:11,811 --> 00:37:15,900 Дакле, ако је минимална није једнако ј-- па ако је минимална још и-- 758 00:37:15,900 --> 00:37:17,570 онда не би морали да мењате. 759 00:37:17,570 --> 00:37:22,450 760 00:37:22,450 --> 00:37:24,712 >> Анди Пенг: Да ли то сам равноправни? 761 00:37:24,712 --> 00:37:25,920 Шта желите да кажем? 762 00:37:25,920 --> 00:37:30,494 >> ПУБЛИКА: Или да, ако Минимална не једнак И, да. 763 00:37:30,494 --> 00:37:39,627 764 00:37:39,627 --> 00:37:40,210 Анди Пенг: У реду. 765 00:37:40,210 --> 00:37:42,040 Па то решава, врста, наши проблеми. 766 00:37:42,040 --> 00:37:47,265 Али то и даље не решава проблем шта се дешава ако ј-- од ј 767 00:37:47,265 --> 00:37:49,890 не постоји изван ње, што да ли желимо да радимо са њим? 768 00:37:49,890 --> 00:37:50,698 Објавите га напољу? 769 00:37:50,698 --> 00:37:59,410 770 00:37:59,410 --> 00:38:02,730 Хајде да пробамо ово ради. 771 00:38:02,730 --> 00:38:04,435 Uh Oh. 772 00:38:04,435 --> 00:38:06,200 Наша врста не ради. 773 00:38:06,200 --> 00:38:10,060 >> Као што можете видети, наше почетне Арраи имали те вредности. 774 00:38:10,060 --> 00:38:14,800 И после тога треба да има био у 1, 2, 3, 4, 5, 6, 7, 8, 9. 775 00:38:14,800 --> 00:38:15,530 Не ради. 776 00:38:15,530 --> 00:38:16,030 Ахх. 777 00:38:16,030 --> 00:38:17,184 Шта да радимо? 778 00:38:17,184 --> 00:38:17,850 ПУБЛИКА: Дебуг. 779 00:38:17,850 --> 00:38:21,787 780 00:38:21,787 --> 00:38:23,370 Анди Пенг: У реду, можемо покушати да. 781 00:38:23,370 --> 00:38:25,030 Можемо дебуг. 782 00:38:25,030 --> 00:38:26,042 Зоом оут мало. 783 00:38:26,042 --> 00:38:31,177 784 00:38:31,177 --> 00:38:33,656 Хајде да поставимо тачку прекида. 785 00:38:33,656 --> 00:38:37,280 Идемо као-- ОК. 786 00:38:37,280 --> 00:38:40,444 >> Зато што већ знамо да ове линије, 15 до 22, 787 00:38:40,444 --> 00:38:43,610 су воркинг-- јер све што радим је Само итератинг кроз и принтинг-- 788 00:38:43,610 --> 00:38:45,406 Ја могу ићи напријед и да прескочите. 789 00:38:45,406 --> 00:38:47,280 Почнимо на линији 25. 790 00:38:47,280 --> 00:38:48,712 Ооп, дозволите ми да се отарасим тога. 791 00:38:48,712 --> 00:38:51,598 792 00:38:51,598 --> 00:38:54,057 >> ПУБЛИКА: Дакле, тачка прекида је где је отклањање грешака почиње? 793 00:38:54,057 --> 00:38:54,890 Анди Пенг: или зауставља. 794 00:38:54,890 --> 00:38:55,670 ПУБЛИКА: или зауставља. 795 00:38:55,670 --> 00:38:55,930 Анди Пенг: Да. 796 00:38:55,930 --> 00:38:58,640 Можете подесити више бреакпоинт и то је само може да скочи са једне на другу. 797 00:38:58,640 --> 00:39:01,590 Али у овом случају не знамо где је грешка што се дешава. 798 00:39:01,590 --> 00:39:03,780 Дакле, ми само желимо да почети од врха на доле. 799 00:39:03,780 --> 00:39:05,020 Да. 800 00:39:05,020 --> 00:39:05,550 ОК. 801 00:39:05,550 --> 00:39:08,460 >> Дакле, ова линија овде, можемо корак у. 802 00:39:08,460 --> 00:39:11,499 Можете видети овде, имамо низ. 803 00:39:11,499 --> 00:39:13,290 То су вредности да су у низу. 804 00:39:13,290 --> 00:39:16,360 Да ли то видите, како индекс 0, то одговара валуе-- Ох, 805 00:39:16,360 --> 00:39:17,526 Ја ћу покушати да зумира. 806 00:39:17,526 --> 00:39:20,650 Извини, то је заиста тешко да видео-- на арраи индекс 0, 807 00:39:20,650 --> 00:39:24,090 имамо вредност од 4 и затим тако даље и тако даље. 808 00:39:24,090 --> 00:39:25,670 Ми имамо своје локалне променљиве. 809 00:39:25,670 --> 00:39:28,570 Сада сам је једнака 0, што желимо да буде. 810 00:39:28,570 --> 00:39:31,540 811 00:39:31,540 --> 00:39:33,690 >> И тако наставимо степпинг кроз. 812 00:39:33,690 --> 00:39:36,850 Наш минимални једнак 0, што ми такође желимо да буде. 813 00:39:36,850 --> 00:39:39,470 814 00:39:39,470 --> 00:39:45,560 И онда ући у нашу секунди за петља, ако низ-ј мање од низа-И, 815 00:39:45,560 --> 00:39:46,380 која није. 816 00:39:46,380 --> 00:39:48,130 Дакле, да ли сте видели како да прескочили то? 817 00:39:48,130 --> 00:39:52,430 >> ПУБЛИКА: Дакле, треба иф минимална, све то-- не би требало да 818 00:39:52,430 --> 00:39:55,424 бити унутра први за петљу? 819 00:39:55,424 --> 00:39:57,340 Анди Пенг: Не, јер ипак желите да тестирате. 820 00:39:57,340 --> 00:40:00,329 Ви желите да урадите поређење сваког време, чак и након што покренете кроз њу. 821 00:40:00,329 --> 00:40:02,620 Не само желим да то уради на првом пасс-тхроугх. 822 00:40:02,620 --> 00:40:05,240 Желиш да то уради са сваки додатни поново додавање. 823 00:40:05,240 --> 00:40:07,198 Дакле, желите да проверите ваше стање унутра. 824 00:40:07,198 --> 00:40:11,610 825 00:40:11,610 --> 00:40:13,746 Дакле, ми ћемо само да наставити да ради овуда. 826 00:40:13,746 --> 00:40:17,337 827 00:40:17,337 --> 00:40:18,420 Ја ћу вам дам наговештај. 828 00:40:18,420 --> 00:40:23,910 То има везе са чињеницом да када ви провере ваш условно, 829 00:40:23,910 --> 00:40:26,600 ниси проверу за исправну индексу. 830 00:40:26,600 --> 00:40:32,510 Дакле, сада сте за проверу низ индекс ј мања од низа 831 00:40:32,510 --> 00:40:33,970 индекс и. 832 00:40:33,970 --> 00:40:36,580 Али шта радиш у почетак фор петље? 833 00:40:36,580 --> 00:40:38,260 Зар не поставља ј једнак И? 834 00:40:38,260 --> 00:40:41,260 835 00:40:41,260 --> 00:40:45,415 >> Да, па можемо да излазак из дебуггер овде. 836 00:40:45,415 --> 00:40:47,040 Дакле, хајде да погледамо наш псеудокоду. 837 00:40:47,040 --> 00:40:50,070 838 00:40:50,070 --> 00:40:52,580 За-- ћемо крећу Ја износи 0. 839 00:40:52,580 --> 00:40:54,760 Ми ћемо ићи до н минус 1. 840 00:40:54,760 --> 00:40:58,040 Хајде да проверимо, да ли ми имамо то право? 841 00:40:58,040 --> 00:40:59,580 Да, то је у реду. 842 00:40:59,580 --> 00:41:02,080 >> Дакле унутра, ми смо да створи минимална вредност 843 00:41:02,080 --> 00:41:03,630 и подесите да једнак и. 844 00:41:03,630 --> 00:41:04,950 Да ли смо то урадили? 845 00:41:04,950 --> 00:41:06,270 Да, урадио. 846 00:41:06,270 --> 00:41:10,430 Сада у нашој унутрашњи за петљу, ми смо урадити ј једнака сам до н минус 1. 847 00:41:10,430 --> 00:41:11,950 Да ли смо то урадили? 848 00:41:11,950 --> 00:41:15,540 Заиста, то смо урадили. 849 00:41:15,540 --> 00:41:19,922 >> Па ипак, шта ми овде пореде? 850 00:41:19,922 --> 00:41:20,925 >> ПУБЛИКА: Ј плус 1. 851 00:41:20,925 --> 00:41:21,716 Анди Пенг: Управо тако. 852 00:41:21,716 --> 00:41:24,184 853 00:41:24,184 --> 00:41:27,350 А онда ћеш да желите да поставите Ваша минимална једнака ј плус 1, као. 854 00:41:27,350 --> 00:41:31,057 855 00:41:31,057 --> 00:41:32,640 Отишао сам кроз то јако брзо. 856 00:41:32,640 --> 00:41:36,190 Да ли ви разумете Зато је Ј плус 1? 857 00:41:36,190 --> 00:41:36,890 ОК. 858 00:41:36,890 --> 00:41:40,700 >> Дакле, по вашем низу, у ваша прва пролазе кроз, 859 00:41:40,700 --> 00:41:44,850 Ваш за петље, за инт И једнако 0, хајде да 860 00:41:44,850 --> 00:41:46,740 Претпостављам да још није променила. 861 00:41:46,740 --> 00:41:53,180 862 00:41:53,180 --> 00:41:56,760 Имамо низ, у потпуности, само четири унсортед елементи, зар не? 863 00:41:56,760 --> 00:42:00,760 Дакле, желимо да покрене сам једнак 0. 864 00:42:00,760 --> 00:42:03,650 И ја се иде само да пролазе кроз ову петљу. 865 00:42:03,650 --> 00:42:08,560 И тако у првом пролазу, идемо да покрене променљиву названу "МИН" 866 00:42:08,560 --> 00:42:11,245 да сам и ја једнако, јер немамо минималну вредност. 867 00:42:11,245 --> 00:42:12,870 Дакле, то је тренутно једнака 0, као добро. 868 00:42:12,870 --> 00:42:16,182 869 00:42:16,182 --> 00:42:17,640 А онда ћемо да прођем. 870 00:42:17,640 --> 00:42:19,270 И ми желимо да опет поновити. 871 00:42:19,270 --> 00:42:22,900 Сада када смо пронашли оно што наш минимум је, желимо да поновити путем 872 00:42:22,900 --> 00:42:25,190 поново да видим да ли је у односу, зар не? 873 00:42:25,190 --> 00:42:40,440 Тако ј овде, иде на једнаку И који је 0. 874 00:42:40,440 --> 00:42:46,320 А онда, ако низ Ј плус ја, који је онај који је поред готово, као мање 875 00:42:46,320 --> 00:42:49,270 него што ваш тренутни минимум вредност, желите да мењате. 876 00:42:49,270 --> 00:42:56,850 >> Дакле, хајде да кажем да смо има, као, 2, 5, 1, 8. 877 00:42:56,850 --> 00:43:01,610 Сада, ја је једнак 0 и ј је једнак 0. 878 00:43:01,610 --> 00:43:05,210 И то је наша минимална вредност. 879 00:43:05,210 --> 00:43:09,950 Ако арраи-Ј плус Ја тако да ако један То је након оног што гледамо 880 00:43:09,950 --> 00:43:13,450 је већи од оног пре њега, то ће постати минимум. 881 00:43:13,450 --> 00:43:18,120 >> Дакле овде видимо да 5 није мање од тога. 882 00:43:18,120 --> 00:43:19,730 Дакле, то ће бити не 5. 883 00:43:19,730 --> 00:43:23,580 Видимо да је мање од 1 2, зар не? 884 00:43:23,580 --> 00:43:32,970 Дакле, сада знамо да је наш минимум је ће бити вредност индекса на 0, 1, 2. 885 00:43:32,970 --> 00:43:34,030 Да? 886 00:43:34,030 --> 00:43:39,170 И онда кад дођеш овде, можете заменити исправним вредностима. 887 00:43:39,170 --> 00:43:42,610 >> Дакле, када су момци само имају ј пре, ниси гледао у једном 888 00:43:42,610 --> 00:43:43,260 након тога. 889 00:43:43,260 --> 00:43:44,520 Ви сте гледали исте вредности, која 890 00:43:44,520 --> 00:43:46,290 Због тога једноставно не ради ништа. 891 00:43:46,290 --> 00:43:49,721 Да ли то има смисла за све, Зато нам је потребна да плус 1 тамо? 892 00:43:49,721 --> 00:43:50,220 ОК. 893 00:43:50,220 --> 00:43:53,345 Сада ћемо само пролазе кроз то да Сигурно је остатак код је тачна. 894 00:43:53,345 --> 00:44:04,424 895 00:44:04,424 --> 00:44:05,340 Зашто се то дешава? 896 00:44:05,340 --> 00:44:14,780 897 00:44:14,780 --> 00:44:16,364 Ах, то је минимална овде. 898 00:44:16,364 --> 00:44:17,780 Ми смо у односу на погрешну вредност. 899 00:44:17,780 --> 00:44:24,944 900 00:44:24,944 --> 00:44:25,906 О, не. 901 00:44:25,906 --> 00:44:30,720 902 00:44:30,720 --> 00:44:33,482 >> Ох, да, овде смо били замјене погрешне вредности као добро. 903 00:44:33,482 --> 00:44:34,940 Зато што смо гледали и и ј. 904 00:44:34,940 --> 00:44:36,440 То су они за које смо проверавали. 905 00:44:36,440 --> 00:44:39,160 Ми заправо желе да мењате минимална, тренутна минимална, 906 00:44:39,160 --> 00:44:40,550 са свим што она ван је. 907 00:44:40,550 --> 00:44:59,510 908 00:44:59,510 --> 00:45:05,402 И као што ви можете видети доле Овде имамо сортирану низ. 909 00:45:05,402 --> 00:45:07,110 Само су имали везе са чињеница да када 910 00:45:07,110 --> 00:45:09,350 смо Провера Вредности су нас пореде, 911 00:45:09,350 --> 00:45:11,226 нисмо гледали правим вредностима. 912 00:45:11,226 --> 00:45:13,850 Тражили смо на истом једном овде, не заправо замене. 913 00:45:13,850 --> 00:45:17,135 Морате да погледате један поред до њега и онда можете заменити. 914 00:45:17,135 --> 00:45:19,260 Дакле, то је оно што је било некако мучи наш код раније. 915 00:45:19,260 --> 00:45:22,460 И шта сам урадио овде је све Дебагер могао да уради за вас 916 00:45:22,460 --> 00:45:23,810 Управо сам то урадио на плоча, јер је лакше 917 00:45:23,810 --> 00:45:26,320 да видим уместо да да бисте увећали на дебагером. 918 00:45:26,320 --> 00:45:29,391 Да ли то има смисла свима? 919 00:45:29,391 --> 00:45:29,890 Кул. 920 00:45:29,890 --> 00:45:34,800 921 00:45:34,800 --> 00:45:35,410 >> У реду. 922 00:45:35,410 --> 00:45:41,070 Можемо прећи на говори о асимптотско нотација, која 923 00:45:41,070 --> 00:45:44,580 је само фенси начин да се каже Рунтимес свих ових врста. 924 00:45:44,580 --> 00:45:47,650 Тако да знам Давида, у предавању, дотакао рунтимес. 925 00:45:47,650 --> 00:45:52,124 И он је кроз читав формули како да израчунају рунтимес. 926 00:45:52,124 --> 00:45:53,040 Без бриге о томе. 927 00:45:53,040 --> 00:45:54,660 Ако сте заиста занима како то ради, 928 00:45:54,660 --> 00:45:55,810 слободно да разговара са мном након делу. 929 00:45:55,810 --> 00:45:57,560 Можемо да ходају кроз формуле заједно. 930 00:45:57,560 --> 00:46:00,689 Али сви ви морате да стварно Знам само да је н квадрат преко 2 931 00:46:00,689 --> 00:46:01,980 је иста ствар као н на квадрат. 932 00:46:01,980 --> 00:46:04,710 Зато што у највећем броју, експонент, расте највише. 933 00:46:04,710 --> 00:46:06,590 И тако за наше потребе, све нам је стало 934 00:46:06,590 --> 00:46:09,470 је да гигант број који расте. 935 00:46:09,470 --> 00:46:13,340 >> Дакле, шта је најбољи случај Рунтиме од селекције врсте? 936 00:46:13,340 --> 00:46:15,830 Ако ћеш имати да поновити путем листе 937 00:46:15,830 --> 00:46:18,712 и онда прелазили преко остатак тог списка, 938 00:46:18,712 --> 00:46:20,420 колико пута су вероватно ће се, 939 00:46:20,420 --> 00:46:24,612 у најгорем цасе-- у најбољем случају, је-- пролазе кроз? 940 00:46:24,612 --> 00:46:27,070 Можда је боље питање да питам, шта је најгори случај 941 00:46:27,070 --> 00:46:28,153 Рунтиме од селекције врсте. 942 00:46:28,153 --> 00:46:29,366 ПУБЛИКА н на квадрат. 943 00:46:29,366 --> 00:46:30,740 Анди Пенг: То је н квадрат, зар не. 944 00:46:30,740 --> 00:46:36,986 Дакле, једноставан начин да мислим о овоме је као, сваки пут имате два угнеждена за петље, 945 00:46:36,986 --> 00:46:38,110 то ће бити Н квадрат. 946 00:46:38,110 --> 00:46:40,386 Зато што не само да су ти пролази кроз још једном, 947 00:46:40,386 --> 00:46:42,260 морате да се вратите около и пролазе кроз њега 948 00:46:42,260 --> 00:46:44,980 опет унутра за сваку вредност. 949 00:46:44,980 --> 00:46:48,640 Дакле, у том случају, водиш н а н на квадрат, који је- извините, 950 00:46:48,640 --> 00:46:50,505 н пута н што је једнако Н квадрат. 951 00:46:50,505 --> 00:46:53,230 952 00:46:53,230 --> 00:46:56,360 >> И врста је такође мало јединствен у смислу 953 00:46:56,360 --> 00:46:59,774 да није битно да ли ови Вредности су већ у реду. 954 00:46:59,774 --> 00:47:01,440 То је и даље тећи кроз ионако. 955 00:47:01,440 --> 00:47:03,872 Рецимо да је ово 1, 2, 3, 4. 956 00:47:03,872 --> 00:47:07,080 Без обзира да ли или није било у поредак, ипак би побегао кроз 957 00:47:07,080 --> 00:47:08,620 и још увек проверава минималну вредност. 958 00:47:08,620 --> 00:47:10,100 То би учинили исти број чекова 959 00:47:10,100 --> 00:47:12,780 сваки пут, чак и ако није заправо ништа дирати. 960 00:47:12,780 --> 00:47:16,940 >> Дакле, у том случају, најбоље и најгоре Рунтимес су заправо еквивалент. 961 00:47:16,940 --> 00:47:19,160 Тако је очекивани рунтиме од селекције врсте, 962 00:47:19,160 --> 00:47:23,790 које смо одређивања симболом оф тета, тета, у овом случају, 963 00:47:23,790 --> 00:47:24,790 ће такође бити н квадрат. 964 00:47:24,790 --> 00:47:26,480 Сва три од њих ће се н на квадрат. 965 00:47:26,480 --> 00:47:29,653 Да ли је свима јасно зашто извршни је н квадрат? 966 00:47:29,653 --> 00:47:33,360 967 00:47:33,360 --> 00:47:33,980 >> У реду. 968 00:47:33,980 --> 00:47:39,120 Дакле, само ћу брзо покретање кроз осталих врста. 969 00:47:39,120 --> 00:47:41,137 Алгоритам за балон сорт-- запамтите, 970 00:47:41,137 --> 00:47:43,220 ово је био први Дејвид отишао у предавању. 971 00:47:43,220 --> 00:47:46,000 У суштини, ви корак кроз цео списак 972 00:47:46,000 --> 00:47:48,950 а ти си само свап-- Упореди две у исто време. 973 00:47:48,950 --> 00:47:51,350 А ако неко је већи, него ти их само замијенити. 974 00:47:51,350 --> 00:47:53,590 Дакле, ако су већи, требало би да замените. 975 00:47:53,590 --> 00:47:56,180 Имам званични овде. 976 00:47:56,180 --> 00:47:59,100 >> Дакле, хајде да кажете да сте имали 8, 6, 4, 2. 977 00:47:59,100 --> 00:48:00,571 Ти би упоредити 8 и 6. 978 00:48:00,571 --> 00:48:01,570 Ти би треба да их замене. 979 00:48:01,570 --> 00:48:02,610 Ти би упоредити 8 и 4. 980 00:48:02,610 --> 00:48:03,609 Ти би треба да их замене. 981 00:48:03,609 --> 00:48:07,000 Ако морате да замените је 8 и је 2, промените их као добро. 982 00:48:07,000 --> 00:48:10,760 Дакле, у том смислу, можете видети, одиграва током дугог временског периода, 983 00:48:10,760 --> 00:48:13,730 како вредности врста балона на крајеви, због чега га зовемо 984 00:48:13,730 --> 00:48:15,320 балон врста. 985 00:48:15,320 --> 00:48:19,950 >> Само би кроз поново наш други пролаз, а наш трећи додавање, 986 00:48:19,950 --> 00:48:21,150 и наш четврти додавање. 987 00:48:21,150 --> 00:48:25,820 У суштини, мехур врста само ради док не правити више свопови. 988 00:48:25,820 --> 00:48:31,109 Дакле, у том смислу, ово је само општи Псеудокод за то. 989 00:48:31,109 --> 00:48:32,650 Без бриге, то ће све бити онлине. 990 00:48:32,650 --> 00:48:34,990 Не морамо да заправо ићи преко тога. 991 00:48:34,990 --> 00:48:38,134 >> Само инитиализе контра варијабла која почиње у 0. 992 00:48:38,134 --> 00:48:39,800 И ми смо прелазили преко целог низа. 993 00:48:39,800 --> 00:48:43,420 А ако неко вредност је- ако је ово вредност већа од те вриједности, 994 00:48:43,420 --> 00:48:44,610 ћеш да их замене. 995 00:48:44,610 --> 00:48:46,860 И онда ти си само да настави. 996 00:48:46,860 --> 00:48:47,970 И ти ћеш да рачунају. 997 00:48:47,970 --> 00:48:50,845 И само ћеш да наставиш да радиш ово док је бројач већа 998 00:48:50,845 --> 00:48:53,345 од 0, што значи да сваки пут морате да мењате, 999 00:48:53,345 --> 00:48:55,220 знате ли желиш да идеш назад и проверите поново. 1000 00:48:55,220 --> 00:48:59,510 Ви желите да задржите проверу док не знате да не морају више да мењате. 1001 00:48:59,510 --> 00:49:05,570 >> Дакле, шта су најбоље и најгоре Случај Рунтимес за буббле сорт? 1002 00:49:05,570 --> 00:49:09,300 И хинт-- ово је заправо другачији од одабира врсте у смислу 1003 00:49:09,300 --> 00:49:11,810 да су ова два одговора нису исти. 1004 00:49:11,810 --> 00:49:14,709 Размислите о томе шта ће се десити у случај ако је већ поредани. 1005 00:49:14,709 --> 00:49:16,500 И размислите о томе шта ће се десити ако је 1006 00:49:16,500 --> 00:49:18,372 У случају у којим није сортиране. 1007 00:49:18,372 --> 00:49:20,580 И можете некако покренути кроз зашто је то дешава. 1008 00:49:20,580 --> 00:49:22,954 Даћу ти момци, као, 30 секунди да размислим о томе. 1009 00:49:22,954 --> 00:49:52,330 1010 00:49:52,330 --> 00:49:53,540 >> ОК. 1011 00:49:53,540 --> 00:49:57,462 Да ли неко има нагађати шта у најгорем случају Рунтиме од балон врсте је? 1012 00:49:57,462 --> 00:49:57,962 Да. 1013 00:49:57,962 --> 00:50:07,810 >> ПУБЛИКА: Да ли би било, као што су, н пута Н минус 1 или тако нешто? 1014 00:50:07,810 --> 00:50:10,650 Као сваки пут када ради, то је само, као, једна замена мање 1015 00:50:10,650 --> 00:50:10,960 да шта год то било. 1016 00:50:10,960 --> 00:50:12,668 >> Анди Пенг: Да, тако Потпуно си у праву. 1017 00:50:12,668 --> 00:50:15,940 И ово је случај у којем ваш одговор је заправо сложенија 1018 00:50:15,940 --> 00:50:17,240 од оне треба да дају. 1019 00:50:17,240 --> 00:50:19,772 Тако да ће рун-- сам ће избрисати све ово овде. 1020 00:50:19,772 --> 00:50:20,480 Јесу ли сви добро? 1021 00:50:20,480 --> 00:50:21,869 Могу ли обрисати ово? 1022 00:50:21,869 --> 00:50:22,368 ОК. 1023 00:50:22,368 --> 00:50:27,904 1024 00:50:27,904 --> 00:50:30,320 Ти ћеш проћи кроз н пута први пут, зар не? 1025 00:50:30,320 --> 00:50:33,200 И они ће трајати до Н минус 1 други пут, зар не? 1026 00:50:33,200 --> 00:50:37,130 А онда ћеш задржати иде н моја 2, и тако даље. 1027 00:50:37,130 --> 00:50:40,210 Дејвид је то урадио на предавању, где ако сте додали све оне вредности, 1028 00:50:40,210 --> 00:50:48,080 добијате нешто што је као-- Да-- преко 2, који у суштини само смањује 1029 00:50:48,080 --> 00:50:49,784 до н на квадрат. 1030 00:50:49,784 --> 00:50:51,700 Ти ћеш добити чудно фракција унутра. 1031 00:50:51,700 --> 00:50:53,892 И тако, само знам да Н квадрат увек 1032 00:50:53,892 --> 00:50:55,350 има предност у односу на фракције. 1033 00:50:55,350 --> 00:50:58,450 И тако у овом случају, најгори Рунтиме би се н на квадрат. 1034 00:50:58,450 --> 00:51:00,210 Ако је у опадајућем поредак, мислим, ти 1035 00:51:00,210 --> 00:51:02,530 морати да свап сваки пут. 1036 00:51:02,530 --> 00:51:05,170 >> Шта би било, потенцијално, у најбољем случају рунтиме? 1037 00:51:05,170 --> 00:51:08,580 Рецимо, ако је већ била листа како, шта би рунтиме бити? 1038 00:51:08,580 --> 00:51:09,565 >> ПУБЛИКА н. 1039 00:51:09,565 --> 00:51:10,690 Анди Пенг: То је н тачно. 1040 00:51:10,690 --> 00:51:11,600 И зашто је н? 1041 00:51:11,600 --> 00:51:13,850 ПУБЛИКА: Зато што само морам да проверим сваки пут. 1042 00:51:13,850 --> 00:51:14,770 Анди Пенг: Управо тако. 1043 00:51:14,770 --> 00:51:17,150 Дакле, у најбољем могућем рунтиме, ако ова листа је већ 1044 00:51:17,150 --> 00:51:20,270 сортед-- рецимо 1, 2, 3, 4-- ви би само пролазе, ти би проверили, 1045 00:51:20,270 --> 00:51:21,720 видели бисте ох, сви они испливати. 1046 00:51:21,720 --> 00:51:22,636 Нисам имао да мењате. 1047 00:51:22,636 --> 00:51:23,370 Завршио сам. 1048 00:51:23,370 --> 00:51:26,500 Дакле, у том случају, то је само н или број корака само 1049 00:51:26,500 --> 00:51:29,870 је морао да провери у првом списку. 1050 00:51:29,870 --> 00:51:33,990 >> И после, сада хит уметање врста, где 1051 00:51:33,990 --> 00:51:39,260 алгоритам је у суштини да поделе је у сортира и обичан део. 1052 00:51:39,260 --> 00:51:42,810 А онда један по један, су Унсортед вредности су 1053 00:51:42,810 --> 00:51:46,880 убаци у одговарајуће позиције у почетку листе. 1054 00:51:46,880 --> 00:51:52,120 >> Тако, на пример, имамо списак 3, 5, 2, 6, 4 опет. 1055 00:51:52,120 --> 00:51:54,750 Знамо да је тренутно то мусиц јер смо управо 1056 00:51:54,750 --> 00:51:57,030 почео гледам. 1057 00:51:57,030 --> 00:52:00,610 Ми погледамо и знамо да је Прва вредност се разврстава, зар не? 1058 00:52:00,610 --> 00:52:04,190 Ако сте у потрази само низ величина једног, ви знате да је то решено. 1059 00:52:04,190 --> 00:52:08,230 >> Онда знамо да је Остала четворица су мусиц. 1060 00:52:08,230 --> 00:52:10,980 Идемо кроз и видимо ту вредност. 1061 00:52:10,980 --> 00:52:11,730 Хајде да се вратимо. 1062 00:52:11,730 --> 00:52:13,130 Видиш ону вредност 5? 1063 00:52:13,130 --> 00:52:14,110 Узимамо погледам. 1064 00:52:14,110 --> 00:52:15,204 Ми смо га упоредимо са 3. 1065 00:52:15,204 --> 00:52:17,870 Знамо да је већи од 3, тако да знамо да је то решено. 1066 00:52:17,870 --> 00:52:22,940 Дакле, сада знамо да се прва два су поредани а последња три нису. 1067 00:52:22,940 --> 00:52:24,270 >> Ми погледамо 2. 1068 00:52:24,270 --> 00:52:25,720 Први смо да проверимо са 5. 1069 00:52:25,720 --> 00:52:26,700 Да ли је то мање од 5? 1070 00:52:26,700 --> 00:52:27,240 То није. 1071 00:52:27,240 --> 00:52:29,510 Дакле, морамо да гледа. 1072 00:52:29,510 --> 00:52:30,940 Онда проверите 2 офф 3. 1073 00:52:30,940 --> 00:52:31,850 Да ли је то мање од? 1074 00:52:31,850 --> 00:52:32,350 Ne. 1075 00:52:32,350 --> 00:52:35,430 Дакле, знате на 2 мора да се убаци у предњем и 3 и 5 1076 00:52:35,430 --> 00:52:38,200 оба морају бити истиснути. 1077 00:52:38,200 --> 00:52:42,190 Да ли ово опет са 6 и 4. 1078 00:52:42,190 --> 00:52:48,962 И управо смо стално проверава у суштини, где смо само да проверим, проверите, проверите. 1079 00:52:48,962 --> 00:52:51,170 И док је у праву положај, смо некако само 1080 00:52:51,170 --> 00:52:54,890 убаците га у исправан положај, који је место где име је дошао. 1081 00:52:54,890 --> 00:52:59,830 >> Дакле, то је само алгоритам, Псеудокод по себи, некако, 1082 00:52:59,830 --> 00:53:04,990 како бисмо спровести уметање врста. 1083 00:53:04,990 --> 00:53:05,954 Псеудокод је овде. 1084 00:53:05,954 --> 00:53:06,620 Све је на мрежи. 1085 00:53:06,620 --> 00:53:10,720 Без бриге, ако сте ви момци Покушавам да копирате ово. 1086 00:53:10,720 --> 00:53:14,500 Дакле, још једном, исто оно куестион-- би било најбоље и најгоре рунтимес 1087 00:53:14,500 --> 00:53:16,120 за убацивање врсту? 1088 00:53:16,120 --> 00:53:17,750 То је врло слично на последње питање. 1089 00:53:17,750 --> 00:53:20,479 Даћу ти момци, као, 30 секунди да мислим о томе као добро. 1090 00:53:20,479 --> 00:53:47,150 1091 00:53:47,150 --> 00:53:50,071 >> У реду Да ли неко жели да дај ми најгору рунтиме? 1092 00:53:50,071 --> 00:53:50,570 Да. 1093 00:53:50,570 --> 00:53:51,490 >> ПУБЛИКА н на квадрат. 1094 00:53:51,490 --> 00:53:52,573 >> Анди Пенг: То је н квадрат. 1095 00:53:52,573 --> 00:53:53,730 А зашто је то Н квадрат? 1096 00:53:53,730 --> 00:53:57,562 >> ПУБЛИКА: Јер у обрнутим редоследом, имате 1097 00:53:57,562 --> 00:54:02,619 проћи кроз н пута н који је- 1098 00:54:02,619 --> 00:54:03,660 Анди Пенг: Да, управо тако. 1099 00:54:03,660 --> 00:54:06,610 Дакле, иста ствар као у балон врсте. 1100 00:54:06,610 --> 00:54:08,720 Ако је ово листа у опадајућем редоследу, ти си 1101 00:54:08,720 --> 00:54:11,240 морати да проверим прво једном. 1102 00:54:11,240 --> 00:54:13,470 И онда са сваким додатна вредност, ти си 1103 00:54:13,470 --> 00:54:16,390 ће морати да проверим против свака појединачна вредност, зар не? 1104 00:54:16,390 --> 00:54:20,290 И тако све заједно, ти ћеш направити ан н пасс пута другу н прође, која 1105 00:54:20,290 --> 00:54:21,750 је н квадрат. 1106 00:54:21,750 --> 00:54:22,860 Шта најбољем случају? 1107 00:54:22,860 --> 00:54:24,360 Да. 1108 00:54:24,360 --> 00:54:28,840 >> ПУБЛИКА: н минус 1, јер Први је већ на квадрат. 1109 00:54:28,840 --> 00:54:30,270 >> Анди Пенг: Па, у непосредној близини. 1110 00:54:30,270 --> 00:54:31,850 Одговор је заправо бр. 1111 00:54:31,850 --> 00:54:37,189 Јер, док прва је поредани, не могу да га стварно-- 1112 00:54:37,189 --> 00:54:38,980 смо среће, у тај пример, да 2 1113 00:54:38,980 --> 00:54:40,930 Десило се да је најмањи број. 1114 00:54:40,930 --> 00:54:43,680 Али то неће увек бити случај. 1115 00:54:43,680 --> 00:54:48,040 Ако се 2 већ сортирана на почетку али изгледаш и ту је 1 овде, 1116 00:54:48,040 --> 00:54:49,144 од 1 ће то бумп. 1117 00:54:49,144 --> 00:54:51,060 И то ће се завршити до које налетео ионако. 1118 00:54:51,060 --> 00:54:56,250 >> Дакле, у најбољем случају, то је заправо само ће бити бр. 1119 00:54:56,250 --> 00:54:59,090 Уколико имате 1, 2, 3, 4, 5, 6, 7, 8, ти си 1120 00:54:59,090 --> 00:55:00,940 ће трајати до Једном је цела листа 1121 00:55:00,940 --> 00:55:03,430 да проверите да ли је све у реду. 1122 00:55:03,430 --> 00:55:07,390 Да ли је свима јасно о вођењу пута селекције, као? 1123 00:55:07,390 --> 00:55:09,960 Знам да ћу кроз ово врло брзо. 1124 00:55:09,960 --> 00:55:13,330 Али, само знам да ако знате општи појмови, требало би да буде добар. 1125 00:55:13,330 --> 00:55:16,070 ОК. 1126 00:55:16,070 --> 00:55:19,790 Дакле, ја ћу вам дати момци можда, као, минут да разговарам са својим комшијама 1127 00:55:19,790 --> 00:55:21,890 на шта су само неки од главних разлика 1128 00:55:21,890 --> 00:55:23,540 између ових типова сорти. 1129 00:55:23,540 --> 00:56:24,571 1130 00:56:24,571 --> 00:56:25,570 Идемо преко тога ускоро. 1131 00:56:25,570 --> 00:56:26,444 ПУБЛИКА: Ох, у реду. 1132 00:56:26,444 --> 00:56:27,320 Анди Пенг: Да. 1133 00:56:27,320 --> 00:56:28,380 ОК. 1134 00:56:28,380 --> 00:56:33,420 Супер, хајде да се састанемо као класа. 1135 00:56:33,420 --> 00:56:34,330 ОК. 1136 00:56:34,330 --> 00:56:37,579 Дакле, то је нека врста отворено питање у смислу 1137 00:56:37,579 --> 00:56:39,120 да има пуно одговора на њих. 1138 00:56:39,120 --> 00:56:40,746 И ми ћемо ићи преко неке од њих кратко. 1139 00:56:40,746 --> 00:56:43,411 Само сам хтео да ти момци размишљам о томе шта разликовати 1140 00:56:43,411 --> 00:56:44,530 све три врсте сорти. 1141 00:56:44,530 --> 00:56:47,440 И чуо сам, такође, велики куестион-- шта стапања врста уради? 1142 00:56:47,440 --> 00:56:50,110 Велики питање, јер је то шта ћемо покрива следеће. 1143 00:56:50,110 --> 00:56:52,850 >> Дакле, спајање врста је једна врста која функционише 1144 00:56:52,850 --> 00:56:56,100 веома различито од других врста. 1145 00:56:56,100 --> 00:56:58,180 Као момци могу видим-- нисам Дејвид уради то демо 1146 00:56:58,180 --> 00:57:01,130 где је имао сву цоол звуци како спојити виде 1147 00:57:01,130 --> 00:57:04,010 врста ран, као, бескрајно брже него друге две врсте? 1148 00:57:04,010 --> 00:57:04,510 ОК. 1149 00:57:04,510 --> 00:57:07,580 Дакле, то је зато што стапања Сорт спроводи да поделе 1150 00:57:07,580 --> 00:57:11,020 па владај концепт који смо говорио о много у предавању. 1151 00:57:11,020 --> 00:57:14,550 У том смислу, да смо желели да радимо паметније, не теже, када поделите 1152 00:57:14,550 --> 00:57:18,120 и освоји проблеме, и разбити их доле, а затим их заједно, 1153 00:57:18,120 --> 00:57:19,930 добре ствари увек дешавају. 1154 00:57:19,930 --> 00:57:21,960 >> Дакле, начин на који спојити Сорт суштини ради 1155 00:57:21,960 --> 00:57:24,660 је да дели мусиц низ на пола. 1156 00:57:24,660 --> 00:57:26,500 И онда има две половине низова. 1157 00:57:26,500 --> 00:57:28,220 И то само сортира те две половине. 1158 00:57:28,220 --> 00:57:31,750 Само држи подели на пола, у пола, на пола док се све не поредани 1159 00:57:31,750 --> 00:57:33,680 и онда рекурсивно ставља све заједно. 1160 00:57:33,680 --> 00:57:36,550 >> Дакле, то је стварно апстрактно. 1161 00:57:36,550 --> 00:57:38,750 Дакле, ово је само мало псеудокоду. 1162 00:57:38,750 --> 00:57:41,040 Да ли то смисла у начин на који то ради? 1163 00:57:41,040 --> 00:57:43,870 Дакле, хајде да кажем ли имате низ од н елемената, зар не? 1164 00:57:43,870 --> 00:57:45,450 Ако је н мање од 2, можете се вратити. 1165 00:57:45,450 --> 00:57:49,040 Зато што знамо да ако постоји Само једна ствар, она мора бити сортирани. 1166 00:57:49,040 --> 00:57:52,600 Иначе, сортирање левој половини, и онда сортирање десној половини, 1167 00:57:52,600 --> 00:57:54,140 и онда спојити. 1168 00:57:54,140 --> 00:57:56,979 >> Дакле, иако то изгледа стварно лако, у стварности, мислећи о томе је 1169 00:57:56,979 --> 00:58:00,270 врста тешко. Јер си као, Па, то је некако ради на себи. 1170 00:58:00,270 --> 00:58:00,769 Jel tako? 1171 00:58:00,769 --> 00:58:02,430 То је ради на себи. 1172 00:58:02,430 --> 00:58:05,479 Дакле, у том смислу, Дејвид додирнуо по рекурзије у класи. 1173 00:58:05,479 --> 00:58:07,270 И то је концепт ћемо разговарати о више. 1174 00:58:07,270 --> 00:58:11,430 То је да ово, ове две линије овде, у ствари је само програм 1175 00:58:11,430 --> 00:58:13,860 то говори да се ради са различитим улаз. 1176 00:58:13,860 --> 00:58:17,230 Дакле, уместо да се ради са укупност н елемената, 1177 00:58:17,230 --> 00:58:20,530 можете га сломити доле у Лева половина и десна половина 1178 00:58:20,530 --> 00:58:22,680 а затим га поново покрените. 1179 00:58:22,680 --> 00:58:26,050 >> А онда ћемо гледати визуелно, јер сам визуелни учим. 1180 00:58:26,050 --> 00:58:27,270 Ради боље за мене. 1181 00:58:27,270 --> 00:58:29,890 Тако ћемо погледати визуелни пример овде. 1182 00:58:29,890 --> 00:58:36,237 >> Рецимо да имамо низ, шест елементи, 3, 5, 2, 6, 4, 1, нису сортиране. 1183 00:58:36,237 --> 00:58:37,820 Добро, има пуно на овој страници. 1184 00:58:37,820 --> 00:58:43,179 Дакле, ако ви можете да погледамо фирст степ хере, 3, 5, 2, 6, 4, 1, 1185 00:58:43,179 --> 00:58:44,220 можете га поделите на пола. 1186 00:58:44,220 --> 00:58:45,976 Имате 3, 5, 2, 6, 4, 1. 1187 00:58:45,976 --> 00:58:48,850 Знате да су вам арен'т-- не знам да ли сортиране или не, 1188 00:58:48,850 --> 00:58:52,517 тако да стално разбијање их, на пола, на пола, на пола, све док на крају, 1189 00:58:52,517 --> 00:58:53,600 имате само једног елемента. 1190 00:58:53,600 --> 00:58:56,790 И један елемент је увек поредани, зар не? 1191 00:58:56,790 --> 00:59:01,560 >> Знамо да 3, 5, 2, 4, 6, 1, саме по себи, су поредани. 1192 00:59:01,560 --> 00:59:05,870 И сада можемо да их поново заједно. 1193 00:59:05,870 --> 00:59:07,510 Дакле, знамо 3, 5. 1194 00:59:07,510 --> 00:59:08,510 Ми смо ставили оне заједно. 1195 00:59:08,510 --> 00:59:09,617 Знамо да смо решили. 1196 00:59:09,617 --> 00:59:10,450 Тхе 2 је још тамо. 1197 00:59:10,450 --> 00:59:11,830 Можемо ставити 4 и 6 заједно. 1198 00:59:11,830 --> 00:59:13,996 Знамо да је то решено, па смо ставили заједно. 1199 00:59:13,996 --> 00:59:14,940 А 1 је тамо. 1200 00:59:14,940 --> 00:59:18,720 >> И онда само погледате ове две половине управо овде. 1201 00:59:18,720 --> 00:59:21,300 Имате 3, 5, 2, 2, 3, 5. 1202 00:59:21,300 --> 00:59:23,465 Можете само да упореди почетком свега. 1203 00:59:23,465 --> 00:59:26,340 Јер, знате да је то поредани и знате да је то решено. 1204 00:59:26,340 --> 00:59:29,360 Па онда ни не треба да упореди 5, само упоредите 3. 1205 00:59:29,360 --> 00:59:32,070 А 2 је мање од 3, тако знате 2 мора да иде на крају. 1206 00:59:32,070 --> 00:59:33,120 >> Иста ствар тамо. 1207 00:59:33,120 --> 00:59:34,740 'Тхе 1 мора да иде овде. 1208 00:59:34,740 --> 00:59:37,330 И онда када одете да ставите те две вредности заједно, 1209 00:59:37,330 --> 00:59:39,950 ви знате да је то сортира и знате да сортира. 1210 00:59:39,950 --> 00:59:43,240 Тако онда 1 и 2, 1 је мање од 2. 1211 00:59:43,240 --> 00:59:45,570 То вам говори да је 1 би требало да иде на крају овог 1212 00:59:45,570 --> 00:59:47,480 чак и без гледајући 3 или 5. 1213 00:59:47,480 --> 00:59:50,100 А онда је 4, можеш само цхецк, иде овде. 1214 00:59:50,100 --> 00:59:51,480 Не морате да погледате 5. 1215 00:59:51,480 --> 00:59:52,570 Иста ствар са 6. 1216 00:59:52,570 --> 00:59:55,860 Ви знате да је то само 6-- не треба да буде погледао. 1217 00:59:55,860 --> 00:59:57,870 >> И тако на тај начин, ви сте само се штеди 1218 00:59:57,870 --> 00:59:59,526 много корака када сте у односу. 1219 00:59:59,526 --> 01:00:02,150 Не морате да упореди сваки Елемент против других елемената. 1220 01:00:02,150 --> 01:00:05,230 Само упоредите против оних да треба да га упореди против. 1221 01:00:05,230 --> 01:00:06,870 Дакле, то је нека врста апстрактног појма. 1222 01:00:06,870 --> 01:00:10,540 Без бриге ако није доста те нападам још у праву. 1223 01:00:10,540 --> 01:00:14,740 Али, генерално, ово је како спајања врста ради. 1224 01:00:14,740 --> 01:00:17,750 Питања, брза питања, Пре него што кренем даље? 1225 01:00:17,750 --> 01:00:18,550 Да. 1226 01:00:18,550 --> 01:00:22,230 >> ПУБЛИКА: Дакле, рекли сте да узмете од 1, а затим 4, и 6 1227 01:00:22,230 --> 01:00:23,860 и ставио их у. 1228 01:00:23,860 --> 01:00:26,800 Тако су тхосе-- не не ти гледаш у њих 1229 01:00:26,800 --> 01:00:28,544 као посебни елементи, а не као целини? 1230 01:00:28,544 --> 01:00:29,210 Анди Пенг: Да. 1231 01:00:29,210 --> 01:00:32,020 Дакле, шта се дешава је да у основи 1232 01:00:32,020 --> 01:00:33,650 стварају потпуно нову низ. 1233 01:00:33,650 --> 01:00:36,690 Дакле, ви знате да, ево, ја имам два низови величине 3, зар не? 1234 01:00:36,690 --> 01:00:39,600 Дакле, ви знате да је мој сортиран низ мора да има шест елемената. 1235 01:00:39,600 --> 01:00:42,270 Дакле, само створити нова количина меморије. 1236 01:00:42,270 --> 01:00:44,270 Значи ти си нека врста као расипнички меморије, 1237 01:00:44,270 --> 01:00:46,186 али то није битно зато што је тако мали. 1238 01:00:46,186 --> 01:00:48,590 Тако да погледате 1 а ви погледате 2. 1239 01:00:48,590 --> 01:00:50,770 И знате да је 1 мање од 2. 1240 01:00:50,770 --> 01:00:53,840 Дакле, ви знате да треба да иде у 1 почетак свих оних. 1241 01:00:53,840 --> 01:00:55,850 >> Не треба ни да погледајте 3. и групи 5. 1242 01:00:55,850 --> 01:00:57,400 Па знате 1 иде тамо. 1243 01:00:57,400 --> 01:00:59,300 Онда основи одсећи за 1. 1244 01:00:59,300 --> 01:01:00,370 То је, као, мртва за нас. 1245 01:01:00,370 --> 01:01:03,690 Онда имамо само 2, 3, 5, а затим 4 и 6. 1246 01:01:03,690 --> 01:01:06,270 И онда знате да вас упореди 4 и 2, 1247 01:01:06,270 --> 01:01:07,560 ох, 2 треба да иде тамо. 1248 01:01:07,560 --> 01:01:09,685 Дакле, плоп на 2 Довн, ти га одсећи. 1249 01:01:09,685 --> 01:01:12,060 Дакле, онда само треба да 3 а 5 у 4 и 6. 1250 01:01:12,060 --> 01:01:14,650 А ви само наставите сецкање га док их у низу. 1251 01:01:14,650 --> 01:01:17,110 >> ПУБЛИКА: Дакле, ви сте само увек упоређивањем [неразумљиво]? 1252 01:01:17,110 --> 01:01:17,710 >> Анди Пенг: Управо тако. 1253 01:01:17,710 --> 01:01:19,590 Дакле, у том смислу, ти си само у односу, у суштини, 1254 01:01:19,590 --> 01:01:21,240 један број у односу на други број. 1255 01:01:21,240 --> 01:01:22,990 И зато знате да је то решено, те 1256 01:01:22,990 --> 01:01:24,350 не морам да гледам кроз све бројеве. 1257 01:01:24,350 --> 01:01:25,870 Потребно је само да погледате први. 1258 01:01:25,870 --> 01:01:27,582 И онда само да бућ их, јер знаш 1259 01:01:27,582 --> 01:01:29,640 они припадају тамо где треба да припадају. 1260 01:01:29,640 --> 01:01:31,030 Да. 1261 01:01:31,030 --> 01:01:32,920 Добро питање. 1262 01:01:32,920 --> 01:01:35,290 >> И онда ако ико од вас су помало амбициозан, 1263 01:01:35,290 --> 01:01:38,660 слободно да погледате ову кода. 1264 01:01:38,660 --> 01:01:40,680 Ово је заправо физичка реализација 1265 01:01:40,680 --> 01:01:42,150 како бисмо писати стапања врсту. 1266 01:01:42,150 --> 01:01:44,070 И можете да видите, то је врло кратко. 1267 01:01:44,070 --> 01:01:46,310 Али су идеје иза то су прилично сложени. 1268 01:01:46,310 --> 01:01:50,865 Дакле, ако се осећате као цртање ово у свој домаћи задатак вечерас, слободно. 1269 01:01:50,865 --> 01:01:54,050 1270 01:01:54,050 --> 01:01:54,740 >> ОК. 1271 01:01:54,740 --> 01:01:58,070 Тако Давид и отишао ово предавање. 1272 01:01:58,070 --> 01:02:00,660 Који су најбољи случај Рунтимес, најгори случај Рунтимес, 1273 01:02:00,660 --> 01:02:05,680 и очекивани Рунтимес од стапања врсте? 1274 01:02:05,680 --> 01:02:07,260 Пар секунди да размислим. 1275 01:02:07,260 --> 01:02:11,198 Ово је прилично тешко, али некако интуитиван, ако мислите о томе. 1276 01:02:11,198 --> 01:02:20,090 1277 01:02:20,090 --> 01:02:23,054 У реду. 1278 01:02:23,054 --> 01:02:25,269 >> ПУБЛИКА: Да ли је најгори случај н лог н? 1279 01:02:25,269 --> 01:02:26,060 Анди Пенг: Управо тако. 1280 01:02:26,060 --> 01:02:29,380 А зашто је то н лог н. 1281 01:02:29,380 --> 01:02:32,230 >> ПУБЛИКА: Зар није због тога постаје знатно брже, 1282 01:02:32,230 --> 01:02:35,390 па то је као функцију која уместо да једноставно буде н 1283 01:02:35,390 --> 01:02:37,529 квадрат или тако нешто? 1284 01:02:37,529 --> 01:02:38,320 Анди Пенг: Управо тако. 1285 01:02:38,320 --> 01:02:40,750 Тако је разлог зашто је Рунтиме о томе је н Дневник 1286 01:02:40,750 --> 01:02:44,310 н јер-- шта си ти ради у свим овим корацима? 1287 01:02:44,310 --> 01:02:46,190 Само си га сецкање на пола, зар не? 1288 01:02:46,190 --> 01:02:48,750 И тако, када радимо лог, све што је ради 1289 01:02:48,750 --> 01:02:53,150 дели проблем на пола, на пола, на пола, у више половине. 1290 01:02:53,150 --> 01:02:56,430 И у том смислу, врсте могу за елиминисање линеарног модела 1291 01:02:56,430 --> 01:02:57,510 да смо користили. 1292 01:02:57,510 --> 01:03:00,254 Јер када котлет ствари у половини, то је дневник. 1293 01:03:00,254 --> 01:03:02,420 То је само математичка начин да га заступа. 1294 01:03:02,420 --> 01:03:06,310 >> И коначно, на крају, ти си само да се последњи пас кроз 1295 01:03:06,310 --> 01:03:07,930 ставити их све у реду, зар не? 1296 01:03:07,930 --> 01:03:10,330 И тако, ако је само да проверите једну ствар, то је бр. 1297 01:03:10,330 --> 01:03:13,420 И тако ти некако множењем двоје заједно. 1298 01:03:13,420 --> 01:03:17,660 Дакле, то је као да сте то коначна проверите Н овде са лог од н 1299 01:03:17,660 --> 01:03:18,390 овде. 1300 01:03:18,390 --> 01:03:21,060 А ако помножите да, то је н лог н. 1301 01:03:21,060 --> 01:03:26,100 >> И тако у најбољем случају и најгори случај и очекује се све н лог н. 1302 01:03:26,100 --> 01:03:27,943 Такође је као друга врста. 1303 01:03:27,943 --> 01:03:30,090 То је као избор врсте у смислу да 1304 01:03:30,090 --> 01:03:32,131 Није битно шта је ваш Списак је, само иде 1305 01:03:32,131 --> 01:03:34,801 да раде исту ствар сваки пут. 1306 01:03:34,801 --> 01:03:35,300 ОК. 1307 01:03:35,300 --> 01:03:39,950 Дакле, као ви можете видети, иако Врсте које смо отишли ​​тхроугх-- н 1308 01:03:39,950 --> 01:03:41,660 квадрат, то није врло ефикасан. 1309 01:03:41,660 --> 01:03:47,060 Па чак и овај број дневника н Не најефикаснији. 1310 01:03:47,060 --> 01:03:49,720 Ако сте радознали, Постоји врста механизми 1311 01:03:49,720 --> 01:03:54,310 које су тако ефикасна да су Скоро у суштини стан у рунтиме. 1312 01:03:54,310 --> 01:03:55,420 >> Имаш неки лог Н-ове. 1313 01:03:55,420 --> 01:03:58,190 Имаш неки лог лог н 'с. 1314 01:03:58,190 --> 01:04:00,330 Ми не дотичу њих у овој класи сада. 1315 01:04:00,330 --> 01:04:02,663 Али ако ви момци су радознали, слободно гоогле, шта је 1316 01:04:02,663 --> 01:04:04,392 Механизми Најефикаснији сортирање. 1317 01:04:04,392 --> 01:04:06,350 Не знам, постоје неки заиста фунни оне, 1318 01:04:06,350 --> 01:04:09,860 као-- је једна заиста фунни оне које људи чине. 1319 01:04:09,860 --> 01:04:12,210 И питате се како су икад размишљала о томе. 1320 01:04:12,210 --> 01:04:15,730 Дакле, гоогле, ако имате неке резервне време, на, шта су неке чудне начине 1321 01:04:15,730 --> 01:04:17,730 да људи, као и ефикасни ваис-- људи 1322 01:04:17,730 --> 01:04:20,371 били у стању да спроведе врсте. 1323 01:04:20,371 --> 01:04:20,870 ОК. 1324 01:04:20,870 --> 01:04:22,880 И овде је само згодно мало графикон. 1325 01:04:22,880 --> 01:04:26,850 Знам све о теби, пре тог квиза 0, ће бити у вашој соби, вероватно покушавајући 1326 01:04:26,850 --> 01:04:27,960 да запамти то. 1327 01:04:27,960 --> 01:04:30,940 Дакле, то је лепо тамо за вас. 1328 01:04:30,940 --> 01:04:37,120 Само не заборавите логику да маде-- Зато те бројке су се јавља. 1329 01:04:37,120 --> 01:04:39,870 Ако сте увек изгубљен, само да Сигурно знате шта су врсте су. 1330 01:04:39,870 --> 01:04:40,820 И можете покренути кроз им ин иоур минд 1331 01:04:40,820 --> 01:04:42,903 да схватим зашто они одговори су ти одговори. 1332 01:04:42,903 --> 01:04:46,250 1333 01:04:46,250 --> 01:04:47,600 >> У реду. 1334 01:04:47,600 --> 01:04:49,680 Дакле, идемо да се креће на крају, у трагању. 1335 01:04:49,680 --> 01:04:51,638 Јер као оне од вас који су прочитали псет, 1336 01:04:51,638 --> 01:04:55,175 претраживање је такође део Проблем ове недеље поставља. 1337 01:04:55,175 --> 01:04:57,300 Ти ћеш бити затражено да спроведе две врсте претраживања. 1338 01:04:57,300 --> 01:05:00,070 Један је линеарна за претрагу и један је бинарна претрага. 1339 01:05:00,070 --> 01:05:01,760 >> Дакле, линеарна претрага је прилично лако. 1340 01:05:01,760 --> 01:05:04,070 Само желите да претражите елемент од листе да видим да ли га добити. 1341 01:05:04,070 --> 01:05:05,444 Само треба да поновити путем. 1342 01:05:05,444 --> 01:05:08,170 А ако она износи нешто, можете само да га врати, зар не? 1343 01:05:08,170 --> 01:05:10,890 Али онај који смо највише занима говори о 1344 01:05:10,890 --> 01:05:14,550 је бинарна претрага, право, које је завади па владај механизам који 1345 01:05:14,550 --> 01:05:18,190 Дејвид је демонстрирала у предавању. 1346 01:05:18,190 --> 01:05:20,810 >> Запамтите телефонског именика пример да стално подиже, 1347 01:05:20,810 --> 01:05:23,960 онај који је врста борио мало на овој протеклој години, 1348 01:05:23,960 --> 01:05:27,530 где ћете поделити проблем на пола, на пола, на пола, опет и опет, 1349 01:05:27,530 --> 01:05:30,730 док не пронађете оно што тражите? 1350 01:05:30,730 --> 01:05:33,727 И имаш рунтиме то као добро. 1351 01:05:33,727 --> 01:05:35,810 И можете да видите, то је знатно ефикаснији 1352 01:05:35,810 --> 01:05:39,080 него било које друге врсте претраживања. 1353 01:05:39,080 --> 01:05:41,880 >> Дакле, начин на који бисмо отићи о имплементацију бинарни претрагу 1354 01:05:41,880 --> 01:05:46,510 је, ако смо имали низ, индек 0 до 6, седам елемената, 1355 01:05:46,510 --> 01:05:49,790 можемо погледати у средини, ригхт-- Жао ми је, ако наше питање фирст-- 1356 01:05:49,790 --> 01:05:53,840 ако желимо да поставим питање, да ли Низ садрже елемент 7, 1357 01:05:53,840 --> 01:05:56,840 Очигледно, као људи, и имају тако мали низ, то је лако за нас 1358 01:05:56,840 --> 01:05:58,210 пристати. 1359 01:05:58,210 --> 01:06:05,750 Али начин на који да се спроведе бинарни претрага би било да погледате у средини. 1360 01:06:05,750 --> 01:06:08,020 >> Знамо да је индекс 3 је средњи, јер смо ми 1361 01:06:08,020 --> 01:06:09,270 Знам да има седам елемената. 1362 01:06:09,270 --> 01:06:10,670 Шта 7 подељено са 2? 1363 01:06:10,670 --> 01:06:12,850 Можете одсећи да Ектра 1. 1364 01:06:12,850 --> 01:06:14,850 Имате 3 у средини. 1365 01:06:14,850 --> 01:06:17,590 Тако је низ од 3 једнака 7? 1366 01:06:17,590 --> 01:06:18,900 То није, зар не? 1367 01:06:18,900 --> 01:06:21,050 Али можемо да урадимо неколико чекова. 1368 01:06:21,050 --> 01:06:25,380 Да ли је низ од 3 мање од 7 или је низ од 3 већи од 7? 1369 01:06:25,380 --> 01:06:27,240 >> И ми знамо да је то мање од 7. 1370 01:06:27,240 --> 01:06:30,259 Дакле, знамо да, ох, мора не буде у левој половини. 1371 01:06:30,259 --> 01:06:32,300 Знамо да то мора бити у десној половини, зар не? 1372 01:06:32,300 --> 01:06:34,662 Дакле, можемо да одсече пола низ. 1373 01:06:34,662 --> 01:06:36,370 Ми чак не морају да више гледати. 1374 01:06:36,370 --> 01:06:38,711 Зато што знамо да половина нашег мали проблем 1375 01:06:38,711 --> 01:06:41,210 знамо да је одговор у десна половина нашег проблема. 1376 01:06:41,210 --> 01:06:42,580 Дакле, да погледамо то сада. 1377 01:06:42,580 --> 01:06:44,860 >> Дакле, сада гледамо средњи онога што је остало. 1378 01:06:44,860 --> 01:06:46,880 То индекса 5. 1379 01:06:46,880 --> 01:06:50,200 Ми опет исто чек и видимо да је то мањи. 1380 01:06:50,200 --> 01:06:52,050 Дакле, гледамо лево од тога. 1381 01:06:52,050 --> 01:06:53,430 И онда видимо тај чек. 1382 01:06:53,430 --> 01:06:57,600 Да ли је низ вредност на Индекс 4 једнак 7? 1383 01:06:57,600 --> 01:06:58,260 To je. 1384 01:06:58,260 --> 01:07:03,580 Тако да могу да се врате тачно, јер смо пронашли вредност у нашој листи. 1385 01:07:03,580 --> 01:07:06,738 Да ли је начин на који сам прошао то смисла свима? 1386 01:07:06,738 --> 01:07:08,760 ОК. 1387 01:07:08,760 --> 01:07:11,670 Даћу ти момци можда, као, три, четири минута да схватим 1388 01:07:11,670 --> 01:07:13,270 како псеудокоду ово. 1389 01:07:13,270 --> 01:07:18,070 >> Замислите сам вас питао написати Функција се зове претрага () који се вратио 1390 01:07:18,070 --> 01:07:20,640 вредност, Логичка вредност, то истина или фалсе-- слично, 1391 01:07:20,640 --> 01:07:22,970 истина ако пронашао вредност, фалсе ако ниси. 1392 01:07:22,970 --> 01:07:25,230 И онда си усвојен у вредности ви 1393 01:07:25,230 --> 01:07:28,410 су у потрази за у вредности које је арраи-- ох, дефинитивно ставио 1394 01:07:28,410 --> 01:07:29,410 да је на погрешном месту. 1395 01:07:29,410 --> 01:07:29,580 ОК. 1396 01:07:29,580 --> 01:07:31,829 У сваком случају, то би требало имати био десно од вредности. 1397 01:07:31,829 --> 01:07:36,280 А онда инт н је број елемената у том низу. 1398 01:07:36,280 --> 01:07:39,430 Како би идете о покушају да псеудокоду тај проблем у? 1399 01:07:39,430 --> 01:07:41,630 Даћу ти момци попут три минута да то уради. 1400 01:07:41,630 --> 01:08:00,137 1401 01:08:00,137 --> 01:08:02,595 Не, мислим да има само-- Да, постоји један прави овде. 1402 01:08:02,595 --> 01:08:03,261 ПУБЛИКА: Могу ли? 1403 01:08:03,261 --> 01:08:04,388 Анди Пенг: Да, имам те. 1404 01:08:04,388 --> 01:08:09,410 1405 01:08:09,410 --> 01:08:11,050 Да ли је то радни? 1406 01:08:11,050 --> 01:08:12,290 OK kul. 1407 01:08:12,290 --> 01:10:43,590 1408 01:10:43,590 --> 01:10:44,720 >> ОК. 1409 01:10:44,720 --> 01:10:47,630 У реду момци, ми смо да га обузда. 1410 01:10:47,630 --> 01:10:49,730 ОК. 1411 01:10:49,730 --> 01:10:54,020 Дакле, претпоставимо да имамо ово дивно мало низ са н вредности у њему. 1412 01:10:54,020 --> 01:10:55,170 Нисам нацртати линије. 1413 01:10:55,170 --> 01:10:58,649 Али, како да идемо о Покушавам да пишем ово? 1414 01:10:58,649 --> 01:11:00,440 Да ли неко жели да дај ми прву линију? 1415 01:11:00,440 --> 01:11:02,814 Ако желите да ми дају Прва линија овог псеудокоду. 1416 01:11:02,814 --> 01:11:06,563 1417 01:11:06,563 --> 01:11:08,430 >> ПУБЛИКА: [неразумљиво] 1418 01:11:08,430 --> 01:11:10,138 ПУБЛИКА: Ти би желите да прелазили тхроугх-- 1419 01:11:10,138 --> 01:11:11,094 ПУБЛИКА: Само још један за петљу? 1420 01:11:11,094 --> 01:11:11,760 ПУБЛИКА: --Фор. 1421 01:11:11,760 --> 01:11:15,880 1422 01:11:15,880 --> 01:11:17,780 >> Анди Пенг: Дакле, ова је мало незгодно. 1423 01:11:17,780 --> 01:11:23,130 Мислите о-- желите да настави са радом ове петље 1424 01:11:23,130 --> 01:11:27,950 изнова и изнова до када? 1425 01:11:27,950 --> 01:11:30,819 >> ПУБЛИКА: До [неразумљиво] вредност једнака том вредношћу. 1426 01:11:30,819 --> 01:11:31,610 Анди Пенг: Управо тако. 1427 01:11:31,610 --> 01:11:33,900 Тако да заиста могу само врите-- цак моземо да поједностави више. 1428 01:11:33,900 --> 01:11:35,630 Ми само можемо направити вхиле петље, зар не? 1429 01:11:35,630 --> 01:11:39,380 Дакле, можете само да имате лооп-- знамо да је то време. 1430 01:11:39,380 --> 01:11:42,850 Али за сада, идем то саи "лооп" - кроз шта? 1431 01:11:42,850 --> 01:11:46,640 Петља док-- шта је наш крај стање? 1432 01:11:46,640 --> 01:11:47,510 Мислим да сам чуо. 1433 01:11:47,510 --> 01:11:48,530 Чуо сам да га је неко рекао. 1434 01:11:48,530 --> 01:11:51,255 >> Публика: Вредности једнака средину. 1435 01:11:51,255 --> 01:11:52,255 Анди Пенг: Понови. 1436 01:11:52,255 --> 01:11:54,470 ПУБЛИКА: Или, док се вредност сте у потрази 1437 01:11:54,470 --> 01:11:58,470 јер једнак је средња вредност. 1438 01:11:58,470 --> 01:12:00,280 >> Анди Пенг: Шта ако није тамо? 1439 01:12:00,280 --> 01:12:03,113 Шта ако је вредност коју тражите за заправо није у овом низу? 1440 01:12:03,113 --> 01:12:05,890 ПУБЛИКА: Враћате 1. 1441 01:12:05,890 --> 01:12:08,850 >> Анди Пенг: Али шта желимо да петља док ако имамо стање? 1442 01:12:08,850 --> 01:12:09,350 Да. 1443 01:12:09,350 --> 01:12:11,239 >> ПУБЛИКА: Док постоји само једна вредност? 1444 01:12:11,239 --> 01:12:13,530 Анди Пенг: Иоу цан петља док-- тако да знате да сте 1445 01:12:13,530 --> 01:12:15,714 ће имати максималну вредност, зар не? 1446 01:12:15,714 --> 01:12:18,130 И знаш да ћеш да има мин вредност, зар не? 1447 01:12:18,130 --> 01:12:20,379 Јер, такође, да је нешто Заборавио сам да кажем пре, 1448 01:12:20,379 --> 01:12:22,640 то нешто што је критички о бинарном сеарцх 1449 01:12:22,640 --> 01:12:24,182 је да је ваш низ већ поредани. 1450 01:12:24,182 --> 01:12:26,973 Зато што не постоји начин да се то ово ако су само случајне вредности. 1451 01:12:26,973 --> 01:12:29,190 Не знам да ли је неко већи од другог, зар не? 1452 01:12:29,190 --> 01:12:32,720 >> Дакле, ви знате да је ваш мак и Ваши минута овде, зар не? 1453 01:12:32,720 --> 01:12:35,590 Ако ћеш да се подешавање Ваш максимално у вашим минута и мид-- 1454 01:12:35,590 --> 01:12:38,470 хајде да претпоставимо ваше Средином вредност је у праву овде- 1455 01:12:38,470 --> 01:12:43,910 ћеш основи петља док ти минимум 1456 01:12:43,910 --> 01:12:47,510 отприлике исто као твој мак, десно или Ако ваш макс није исто као твој мин. 1457 01:12:47,510 --> 01:12:48,040 Jel tako? 1458 01:12:48,040 --> 01:12:51,340 Јер када се то деси, ви знате да ви сте коначно погодио исту вредност. 1459 01:12:51,340 --> 01:12:59,135 Дакле, желите да петље до вашег мин мања или једнака да-- Д, 1460 01:12:59,135 --> 01:13:01,510 не мање од или једнако, други начин ароунд-- мак је. 1461 01:13:01,510 --> 01:13:15,110 1462 01:13:15,110 --> 01:13:16,160 >> Да ли то има смисла? 1463 01:13:16,160 --> 01:13:18,810 Узео сам неколико покушаја да се то право. 1464 01:13:18,810 --> 01:13:21,869 Али петље до вашег мак вредности је у суштини готово мање 1465 01:13:21,869 --> 01:13:23,410 од или једнака иоур минимум, зар не? 1466 01:13:23,410 --> 01:13:25,201 То је када знаш да сте обједињених. 1467 01:13:25,201 --> 01:13:29,290 ПУБЛИКА: Када би ваш максимум вредност бити мања од минималне? 1468 01:13:29,290 --> 01:13:31,040 Анди Пенг: Ако наставите прилагођавање људи, што 1469 01:13:31,040 --> 01:13:32,380 је оно што се дешава да се ради у ово. 1470 01:13:32,380 --> 01:13:33,460 Да ли то има смисла? 1471 01:13:33,460 --> 01:13:35,750 Минимум и максимум само целих бројева које смо вероватно 1472 01:13:35,750 --> 01:13:39,260 хтети да створе да би колосек где тражимо. 1473 01:13:39,260 --> 01:13:41,790 Пошто је низ постоји без обзира на оно што радимо. 1474 01:13:41,790 --> 01:13:45,030 Као, нисмо заправо физички одсецањем низу, зар не? 1475 01:13:45,030 --> 01:13:47,261 Ми само прилагођавање где гледамо. 1476 01:13:47,261 --> 01:13:48,136 Да ли то има смисла? 1477 01:13:48,136 --> 01:13:48,472 >> ПУБЛИКА: Да. 1478 01:13:48,472 --> 01:13:49,110 >> Анди Пенг: У реду. 1479 01:13:49,110 --> 01:13:57,090 Дакле, ако је то услов за нашу петље, шта желимо унутар ове петље? 1480 01:13:57,090 --> 01:13:58,700 Шта ћемо да жели да уради? 1481 01:13:58,700 --> 01:14:02,390 Тако сада, имамо А Мак и мин, зар не, 1482 01:14:02,390 --> 01:14:04,962 Вероватно је направљена овде негде. 1483 01:14:04,962 --> 01:14:07,170 Ми ћемо вероватно желите да пронађе средину, зар не? 1484 01:14:07,170 --> 01:14:08,450 Како ћемо бити у могућности да пронађе средину? 1485 01:14:08,450 --> 01:14:09,491 Шта је матхематицал-- 1486 01:14:09,491 --> 01:14:11,079 ПУБЛИКА: Мак Плус мин подељене 2. 1487 01:14:11,079 --> 01:14:11,870 Анди Пенг: Управо тако. 1488 01:14:11,870 --> 01:14:20,300 1489 01:14:20,300 --> 01:14:21,620 Да ли то има смисла? 1490 01:14:21,620 --> 01:14:25,780 А ви момци видим зашто није само Користи, зашто смо ово урадили 1491 01:14:25,780 --> 01:14:27,850 уместо да ради само н подељено са 2? 1492 01:14:27,850 --> 01:14:30,310 То је зато што је н вредност који ће остати исти. 1493 01:14:30,310 --> 01:14:30,979 Jel tako? 1494 01:14:30,979 --> 01:14:34,020 Али, као што смо прилагодили наше минимум и максималне вредности, они ће се променити. 1495 01:14:34,020 --> 01:14:36,040 И као резултат, нашег средњег ће да се промени. 1496 01:14:36,040 --> 01:14:37,873 Зато желимо да радим ово овде. 1497 01:14:37,873 --> 01:14:38,510 ОК. 1498 01:14:38,510 --> 01:14:41,600 >> А онда, сада када смо нашли оур-- да. 1499 01:14:41,600 --> 01:14:44,270 >> ПУБЛИКА: Само брза куестион-- када кажете мин и мак, 1500 01:14:44,270 --> 01:14:46,410 смо под претпоставком да то је већ поредани? 1501 01:14:46,410 --> 01:14:48,400 >> Анди Пенг: Да, то је заправо предуслов за бинарни претрагу, 1502 01:14:48,400 --> 01:14:49,816 да морате да знате да је средјено. 1503 01:14:49,816 --> 01:14:53,660 Зато врста, да пишете своје Проблем сет пре вашег бинарног претрагу. 1504 01:14:53,660 --> 01:14:55,910 ОК. 1505 01:14:55,910 --> 01:14:58,876 Дакле, сада знамо где нам је средиште је, шта желите да урадите овде? 1506 01:14:58,876 --> 01:15:01,789 1507 01:15:01,789 --> 01:15:04,319 >> ПУБЛИКА: Желимо да упоредите то другом. 1508 01:15:04,319 --> 01:15:05,110 Анди Пенг: Управо тако. 1509 01:15:05,110 --> 01:15:12,280 Значи идеш за поређење Средином на вредност, зар не? 1510 01:15:12,280 --> 01:15:14,900 1511 01:15:14,900 --> 01:15:18,670 А шта то реци нам када упоредимо? 1512 01:15:18,670 --> 01:15:22,226 Шта желимо да после тога? 1513 01:15:22,226 --> 01:15:25,389 >> ПУБЛИКА: Ако је вредност већа од средине, желимо да одустане. 1514 01:15:25,389 --> 01:15:26,180 Анди Пенг: Управо тако. 1515 01:15:26,180 --> 01:15:33,940 Дакле, ако је вредност већа него средином смо 1516 01:15:33,940 --> 01:15:36,550 хтети да промените ово минимална и макес, зар не? 1517 01:15:36,550 --> 01:15:38,980 Шта желимо да променимо? 1518 01:15:38,980 --> 01:15:42,145 Дакле, ако знамо да је вредност негде овде, шта радите смо да променимо? 1519 01:15:42,145 --> 01:15:44,758 Желимо да променимо наше минимално да буде средином, зар не? 1520 01:15:44,758 --> 01:15:49,420 1521 01:15:49,420 --> 01:15:54,292 А онда друго, ако је у овоме пола, шта желимо да променимо? 1522 01:15:54,292 --> 01:15:55,306 >> ПУБЛИКА: Ваш максимум. 1523 01:15:55,306 --> 01:15:55,972 Анди Пенг: Да. 1524 01:15:55,972 --> 01:16:02,597 1525 01:16:02,597 --> 01:16:04,680 И онда сте тек тако да задржи петље, зар не? 1526 01:16:04,680 --> 01:16:08,920 Јер сада, после једне итерације кроз, имаш мак овде. 1527 01:16:08,920 --> 01:16:10,760 А онда можете поново израчунати на мид. 1528 01:16:10,760 --> 01:16:11,990 А онда можете упоредити. 1529 01:16:11,990 --> 01:16:14,766 А ти ћеш да наставиш све док минута и макес 1530 01:16:14,766 --> 01:16:15,890 су у суштини обједињених. 1531 01:16:15,890 --> 01:16:17,890 И то је када знате да ви сте погодио крај. 1532 01:16:17,890 --> 01:16:20,280 И било да сте га нашли или нисте у том тренутку. 1533 01:16:20,280 --> 01:16:23,170 >> Да ли то смисла свима? 1534 01:16:23,170 --> 01:16:26,020 1535 01:16:26,020 --> 01:16:26,770 ОК. 1536 01:16:26,770 --> 01:16:27,900 Ово је веома важно, јер ћеш имати 1537 01:16:27,900 --> 01:16:29,760 написати ово у код вечерас. 1538 01:16:29,760 --> 01:16:32,660 Али ви имате прилично добар осећај шта треба да радите, 1539 01:16:32,660 --> 01:16:34,051 што је добро. 1540 01:16:34,051 --> 01:16:34,550 ОК. 1541 01:16:34,550 --> 01:16:38,840 Дакле, имамо око седам минута напустио секцију. 1542 01:16:38,840 --> 01:16:43,170 Тако ћемо да разговарамо о ово псет да ћемо радити. 1543 01:16:43,170 --> 01:16:46,410 Дакле, псет је подељен на два дела. 1544 01:16:46,410 --> 01:16:50,230 Прво полувреме укључује спровођење откриће 1545 01:16:50,230 --> 01:16:54,210 у којима пишете линеарни претраге, бинарни претрага и алгоритам за сортирање. 1546 01:16:54,210 --> 01:16:56,690 >> Дакле, ово је први Време у псет где 1547 01:16:56,690 --> 01:17:00,050 ми ћемо бити дајући вам момци што се зове дистрибуција код, који је код 1548 01:17:00,050 --> 01:17:02,740 да смо унапред написан, али само стао неке делове 1549 01:17:02,740 --> 01:17:04,635 да завршите писање. 1550 01:17:04,635 --> 01:17:07,510 Дакле, ви момци, када погледате ово број, можда се заиста уплашио. 1551 01:17:07,510 --> 01:17:08,630 Ако си само волео, Ахх, Не знам шта да ради, 1552 01:17:08,630 --> 01:17:11,670 Не знам, као, то изгледа толико компликовано, ах, опусти се. 1553 01:17:11,670 --> 01:17:12,170 У реду је. 1554 01:17:12,170 --> 01:17:12,930 Прочитајте спец. 1555 01:17:12,930 --> 01:17:16,920 Спец ће вам тачно објасне Оно што сви ови програми раде. 1556 01:17:16,920 --> 01:17:20,560 >> На пример, генерате.ц је програм да ће доћи са својим псет. 1557 01:17:20,560 --> 01:17:24,060 Не стварно да га додирнете, али треба да разумете шта ради. 1558 01:17:24,060 --> 01:17:28,550 И генерате.ц, све што ради је или генерисање случајних бројева 1559 01:17:28,550 --> 01:17:32,400 или можете му дати семе, попут Предвидјено број који је потребно, 1560 01:17:32,400 --> 01:17:34,140 и то ствара више бројева. 1561 01:17:34,140 --> 01:17:37,170 Дакле, постоји специфичан начин имплементирати у којој генерате.ц 1562 01:17:37,170 --> 01:17:42,760 можете само направити гомилу бројева за вас да тестирате своје друге методе на. 1563 01:17:42,760 --> 01:17:45,900 >> Дакле, ако сте желели да за Пример, тестирате своје откриће, 1564 01:17:45,900 --> 01:17:48,970 да желите да покренете генерате.ц, генерисати гомилу бројева, 1565 01:17:48,970 --> 01:17:50,880 а затим покрените своју функцију помагача. 1566 01:17:50,880 --> 01:17:53,930 Ваш помагачи функција је где си ти заправо физички писања кода. 1567 01:17:53,930 --> 01:17:59,330 И мислим помагача као библиотека фајл пишеш да налаз зове. 1568 01:17:59,330 --> 01:18:02,950 И тако у хелперс.ц, ви ћете урадите претраживање и сортирање. 1569 01:18:02,950 --> 01:18:06,500 >> А онда ћеш у суштини само их све заједно. 1570 01:18:06,500 --> 01:18:10,350 Спец ће вам рећи како да ставити на командној линији. 1571 01:18:10,350 --> 01:18:14,880 А ти ћеш моћи да испита да ли или Није твоја врста и тражење раде. 1572 01:18:14,880 --> 01:18:15,870 Кул. 1573 01:18:15,870 --> 01:18:18,720 Да ли је неко већ почела и наишао на проблеме или питања 1574 01:18:18,720 --> 01:18:20,520 имају сада са овим? 1575 01:18:20,520 --> 01:18:21,020 ОК. 1576 01:18:21,020 --> 01:18:21,476 >> ПУБЛИКА: Чекај. 1577 01:18:21,476 --> 01:18:21,932 Имам питање. 1578 01:18:21,932 --> 01:18:22,844 >> Анди Пенг: Да. 1579 01:18:22,844 --> 01:18:28,390 >> ПУБЛИКА: Па сам почео да радим линеарна тражи у хелперс.ц 1580 01:18:28,390 --> 01:18:29,670 а то није стварно ради. 1581 01:18:29,670 --> 01:18:34,590 Али касније сам сазнао смо морам да обришете и раде бинарни претрагу. 1582 01:18:34,590 --> 01:18:36,991 Дакле, да ли је битно ако то не ради? 1583 01:18:36,991 --> 01:18:39,700 1584 01:18:39,700 --> 01:18:41,510 >> Анди Пенг: Кратак одговор је не. 1585 01:18:41,510 --> 01:18:42,642 Али пошто смо ми нисам-- 1586 01:18:42,642 --> 01:18:44,350 ПУБЛИКА: Али нико није у ствари провере. 1587 01:18:44,350 --> 01:18:46,058 Анди Пенг: Никада ниси да видим то. 1588 01:18:46,058 --> 01:18:49,590 Али вероватно желите да Сигуран претрагу ради. 1589 01:18:49,590 --> 01:18:51,700 Јер, ако је ваш линеарни претрага не ради, 1590 01:18:51,700 --> 01:18:54,410 онда су шансе ваш бинарни Претрага се не иде на посао као добро. 1591 01:18:54,410 --> 01:18:56,646 Зато што имају сличне логика у оба од њих. 1592 01:18:56,646 --> 01:18:58,020 И не, није битно. 1593 01:18:58,020 --> 01:19:01,300 Дакле, једини ћете окренути у су као и бинарно претраживање. 1594 01:19:01,300 --> 01:19:02,490 Да. 1595 01:19:02,490 --> 01:19:06,610 >> Такође, много деце били покушавају да саставе хелперс.ц. 1596 01:19:06,610 --> 01:19:09,550 Ниси заправо дозвољено да то уради, јер хелперс.ц 1597 01:19:09,550 --> 01:19:11,200 нема главну функцију. 1598 01:19:11,200 --> 01:19:13,550 И тако да само треба бе заправо састављање 1599 01:19:13,550 --> 01:19:18,670 генеришу и наћи, јер финд позиве хелперс.ц и функције у њему. 1600 01:19:18,670 --> 01:19:20,790 Тако да чини отклањање грешака бол у задњици. 1601 01:19:20,790 --> 01:19:22,422 Али то је оно што морамо да урадимо. 1602 01:19:22,422 --> 01:19:23,880 ПУБЛИКА: Само да све, зар не? 1603 01:19:23,880 --> 01:19:27,290 Анди Пенг: Можете само направити све као, да. 1604 01:19:27,290 --> 01:19:28,060 ОК. 1605 01:19:28,060 --> 01:19:32,570 Дакле, то је у смислу шта псет тражи да сви радимо. 1606 01:19:32,570 --> 01:19:35,160 Ако имате било каквих питања, Слободно питајте ме после делу. 1607 01:19:35,160 --> 01:19:37,580 Ја ћу бити овде, као, 20 минута. 1608 01:19:37,580 --> 01:19:40,500 >> И да, псет је стварно није тако лоше. 1609 01:19:40,500 --> 01:19:41,680 Ви би требало да буде у реду. 1610 01:19:41,680 --> 01:19:43,250 Ово, само пратите упутства. 1611 01:19:43,250 --> 01:19:47,840 Врста имају осећај, логично, шта треба да се дешава, а ви ћете бити у реду. 1612 01:19:47,840 --> 01:19:48,690 Немојте бити превише уплашен. 1613 01:19:48,690 --> 01:19:50,220 Има много кода већ написано. 1614 01:19:50,220 --> 01:19:53,011 Немојте бити превише уплашен ако не разумем шта све то значи. 1615 01:19:53,011 --> 01:19:54,749 Ако је много, то је потпуно у реду. 1616 01:19:54,749 --> 01:19:55,790 И доћи до радног времена. 1617 01:19:55,790 --> 01:19:57,520 Помоћи ћемо вам да погледате. 1618 01:19:57,520 --> 01:20:00,810 >> ПУБЛИКА: Са екстра функције, да тражимо оне горе? 1619 01:20:00,810 --> 01:20:03,417 >> Анди Пенг: Да, то су у коду. 1620 01:20:03,417 --> 01:20:05,750 У игри 15, пола од то је већ написано за вас. 1621 01:20:05,750 --> 01:20:09,310 Дакле, те функције су већ у коду. 1622 01:20:09,310 --> 01:20:12,020 Да. 1623 01:20:12,020 --> 01:20:12,520 У реду. 1624 01:20:12,520 --> 01:20:14,000 Па, све најбоље. 1625 01:20:14,000 --> 01:20:15,180 То је одвратно дан. 1626 01:20:15,180 --> 01:20:19,370 Дакле, надамо се ви немојте бити превише лоше да останем унутра и кодирање. 1627 01:20:19,370 --> 01:20:22,133