1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [Дел 3] [Помалку Комфорни] 2 00:00:03,000 --> 00:00:05,000 >> [Нејт Hardison] [Универзитетот Харвард] 3 00:00:05,000 --> 00:00:08,000 >> [Ова е CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:10,000 >> Добро, ајде да започнете. 5 00:00:10,000 --> 00:00:13,000 Добредојдовте на недела 4 од CS50. 6 00:00:13,000 --> 00:00:19,000 Ако вие момци се отвори веб пребарувач и ќе отвори pset 3, 7 00:00:19,000 --> 00:00:23,000 Трка со CS50, ние ќе тргнат 8 00:00:23,000 --> 00:00:26,000 преку делот на прашања таму. 9 00:00:26,000 --> 00:00:32,000 Исто како и минатата недела, ќе се работат во CS50 простори, 10 00:00:32,000 --> 00:00:35,000 ако вие исто така ќе повлече дека до, како и, 11 00:00:35,000 --> 00:00:43,000 и ако се оди напред и да ја посетите овој линк дека имам се тука на врвот. 12 00:00:43,000 --> 00:00:45,000 Тоа е време за да започнете. 13 00:00:45,000 --> 00:00:51,000 Имаме нашата мала hi програмата тука. Ништо луд. 14 00:00:51,000 --> 00:00:55,000 Една од првите работи што сакам да направам со вас момци денес е поминат неколку решенија 15 00:00:55,000 --> 00:00:58,000 да Проблем Постави 1, вид на пример решенија, 16 00:00:58,000 --> 00:01:03,000 само така може да се добие чувство за она што видови на кодот персонал е пишување, 17 00:01:03,000 --> 00:01:07,000 какви код другите ученици се пишува, 18 00:01:07,000 --> 00:01:10,000 и имаш да погледнам во него, бидејќи знам дека е чудно 19 00:01:10,000 --> 00:01:14,000 кога ќе ја поднесете решение за проблемот во собата и се коментари 20 00:01:14,000 --> 00:01:18,000 на своја верзија, но понекогаш тоа е корисно да видите како другите луѓе тоа го правеше, 21 00:01:18,000 --> 00:01:22,000 особено оние кои се убаво гледа. 22 00:01:22,000 --> 00:01:27,000 За најголем дел, јас бев многу импресиониран со решенија кои вие момци произведени. 23 00:01:27,000 --> 00:01:31,000 Јас се уште не се почнати во потрага на вашиот проблем Постави 2s, но ако тие се нешто како првиот, 24 00:01:31,000 --> 00:01:34,000 тоа не значи ништо, но добри нешта. 25 00:01:34,000 --> 00:01:40,000 >> Ако погледнете во мојот ревизии, да почнеме сите патот надолу во Ревизија 1, 26 00:01:40,000 --> 00:01:47,000 и ние ќе земеме еден брз поглед на решение Марио. 27 00:01:47,000 --> 00:01:54,000 Ако се повлече овој горе, овие програми кои ние ќе ги презентираат се точни. 28 00:01:54,000 --> 00:01:56,000 Немаше точноста проблеми со овие проблеми, туку 29 00:01:56,000 --> 00:01:59,000 сакаме да зборуваме малку за различните дизајн прашања 30 00:01:59,000 --> 00:02:03,000 кои биле користени тука. 31 00:02:03,000 --> 00:02:08,000 Една од работите што беше интересно за решение 32 00:02:08,000 --> 00:02:11,000 е тоа што користи овој нов конструкт наречен фунта дефинира, 33 00:02:11,000 --> 00:02:15,000 понекогаш исто така познат како хаш се дефинира. 34 00:02:15,000 --> 00:02:18,000 Дозволете ми да зумирате на тоа овде. 35 00:02:18,000 --> 00:02:24,000 А # define ти овозможува да даде имињата на овие броеви во вашата програма. 36 00:02:24,000 --> 00:02:28,000 Во овој случај, максималната висина на пирамидата во Марио 37 00:02:28,000 --> 00:02:34,000 беше 23 и наместо ставање 23 во мојот код- 38 00:02:34,000 --> 00:02:37,000 ние ќе се однесуваат на тоа како тешко кодирање 23 - 39 00:02:37,000 --> 00:02:43,000 наместо тоа дава името MAX_HEIGHT до тој број, 40 00:02:43,000 --> 00:02:48,000 така што тука долу во моето не-додека јамка 41 00:02:48,000 --> 00:02:51,000 вие всушност може да се однесува MAX_HEIGHT 42 00:02:51,000 --> 00:02:55,000 наместо на ставање на бројот 23 внатре 43 00:02:55,000 --> 00:02:57,000 [Студентски] Која е предноста на тоа го прават? 44 00:02:57,000 --> 00:02:59,000 Тоа е големо прашање. 45 00:02:59,000 --> 00:03:03,000 Една од нив е читливост. 46 00:03:03,000 --> 00:03:08,000 Предноста на користење на овој # define е читливост. 47 00:03:08,000 --> 00:03:11,000 Кога читам овој код, можам да видам што се случува. 48 00:03:11,000 --> 00:03:15,000 >> Јас може да се види во оваа состојба тука дека ние сме тестирање 49 00:03:15,000 --> 00:03:19,000 за висината е <0, што би можеле да се дефинира и 50 00:03:19,000 --> 00:03:22,000 да биде минимална висина или мин висина. 51 00:03:22,000 --> 00:03:25,000 Од друга предност е тоа што јас тогаш може да го прочитате остатокот на ред за да ја видите 52 00:03:25,000 --> 00:03:30,000 дека ние сме, исто така, проверка за да бидете сигурни дека висината не е поголема од висината Макс, 53 00:03:30,000 --> 00:03:35,000 затоа ние ќе продолжиме додека висината е поголема од висината макс. 54 00:03:35,000 --> 00:03:40,000 Од друга предност е-ако јас одзумирате малку тука- 55 00:03:40,000 --> 00:03:49,000 ако јас ја извршите оваа програма и јас се кандидира, да речеме, со 23 токму сега, 56 00:03:49,000 --> 00:03:52,000 тоа ќе се печати сите 23 реда само така. 57 00:03:52,000 --> 00:03:54,000 Но велат дека сакав да се промени висината Макс, 58 00:03:54,000 --> 00:03:57,000 и сега сакам да го ограничи максималната висина на пирамидите 59 00:03:57,000 --> 00:04:06,000 да биде само велат човек, тоа беше фанки. 60 00:04:06,000 --> 00:04:14,000 # Include , # define MAX_HEIGHT, 61 00:04:14,000 --> 00:04:18,000 и да речеме сакавме да го поставите тоа еднаква на 10. 62 00:04:18,000 --> 00:04:22,000 Сега во овој момент, сите морав да ја направам е да го промени тоа во оваа локација. 63 00:04:22,000 --> 00:04:27,000 Можам да прекомпајлирате код, и сега ако јас се обидувам и напишете во 12, 64 00:04:27,000 --> 00:04:30,000 ќе ме натера повторно. 65 00:04:30,000 --> 00:04:33,000 Во овој случај, ние сме само користење MAX_HEIGHT еднаш. 66 00:04:33,000 --> 00:04:37,000 Тоа не е толку голема за кавга да оди во 67 00:04:37,000 --> 00:04:40,000 и промени во додека јамка ако треба да се. 68 00:04:40,000 --> 00:04:44,000 Но, во програми каде сте референцирање исто магичната бројка 69 00:04:44,000 --> 00:04:47,000 одново и одново, ова # define механизам е навистина корисна 70 00:04:47,000 --> 00:04:52,000 затоа што само ја промените едно време на врвот на датотеката-тоа е типично каде што ќе ги стави- 71 00:04:52,000 --> 00:04:57,000 и промената percolates низ остатокот на датотеката. 72 00:04:57,000 --> 00:05:02,000 >> Други работи што сакав да се напомене во оваа задача, кој мислев изгледаше навистина убаво, 73 00:05:02,000 --> 00:05:05,000 еден беше именувањето на променливи. 74 00:05:05,000 --> 00:05:14,000 Гледаш дека тука имаме цел број променливи се нарекува ред и т.н. висина. 75 00:05:14,000 --> 00:05:20,000 Простори, хашови, тоа им помага да го кодот малку повеќе може да се чита, 76 00:05:20,000 --> 00:05:25,000 прави малку повеќе разбирливо она што всушност се случува. 77 00:05:25,000 --> 00:05:31,000 Ова е во контраст со користење на, да речеме, случаен букви 78 00:05:31,000 --> 00:05:35,000 или само gobbledygook заедно. 79 00:05:35,000 --> 00:05:39,000 Во последната работа што ќе укаже дека во за петелки, 80 00:05:39,000 --> 00:05:45,000 често овие iterator променливи, овие бројачи кои ги користите во вашите за петелки, 81 00:05:45,000 --> 00:05:51,000 тоа е стандард и конвенционалните да ги започнете со било кој јас и тогаш ј а потоа k 82 00:05:51,000 --> 00:05:54,000 и се случува од таму, ако ви требаат повеќе променливи, 83 00:05:54,000 --> 00:05:56,000 и ова е само конвенцијата. 84 00:05:56,000 --> 00:05:58,000 Постојат многу конвенции. 85 00:05:58,000 --> 00:06:00,000 Тоа зависи од програмскиот јазик сте го користите. 86 00:06:00,000 --> 00:06:04,000 Но во C, ние обично на проектот со i. 87 00:06:04,000 --> 00:06:08,000 Тоа не дава никаква смисла да се користи, да речеме, или б 88 00:06:08,000 --> 00:06:13,000 во зависност од ситуацијата. 89 00:06:13,000 --> 00:06:15,000 Тоа е тоа за оваа. 90 00:06:15,000 --> 00:06:25,000 Ако сега се повлече верзии 2, ќе видите уште една Марио, 91 00:06:25,000 --> 00:06:29,000 и овој е сличен на другите она што го видоа, 92 00:06:29,000 --> 00:06:32,000 но тоа не нешто вид на кул. 93 00:06:32,000 --> 00:06:38,000 Ако ги погледнеме во овој дел, токму тука во внатрешниот за телефонска линија, 94 00:06:38,000 --> 00:06:44,000 тие се користат некои луди гледа синтакса тука правото во оваа линија. 95 00:06:44,000 --> 00:06:47,000 Ова се нарекува троичен оператор. 96 00:06:47,000 --> 00:06:53,000 Тоа е ако друг изјава кондензирана во една линија. 97 00:06:53,000 --> 00:06:57,000 Состојбата е овој дел во загради. 98 00:06:57,000 --> 00:07:05,000 Тоа е еквивалентно на велејќи дека ако ѕ <висина - I - 1. 99 00:07:05,000 --> 00:07:10,000 И тогаш што содржината на таа доколку блок ќе биде се во просторот 100 00:07:10,000 --> 00:07:16,000 и тогаш содржината на она што друго би било се тоа #. 101 00:07:16,000 --> 00:07:20,000 Тоа е суштина доделување на простор за оваа променлива. 102 00:07:20,000 --> 00:07:24,000 Тоа е ставање на просторот во содржината на блок променлива, 103 00:07:24,000 --> 00:07:29,000 ако овој услов е исполнет, а ако услов не е исполнет, 104 00:07:29,000 --> 00:07:32,000 тогаш блок променлива добива овој #. 105 00:07:32,000 --> 00:07:37,000 И тогаш, се разбира, наместо за градење на цела низа 106 00:07:37,000 --> 00:07:43,000 и печатење што на крајот на ова решение тоа отпечатоци од еден карактер во исто време. 107 00:07:43,000 --> 00:07:48,000 Прилично кул. 108 00:07:48,000 --> 00:07:53,000 >> Уште неколку работи да се погледне. Ние ќе се движи кон алчен. 109 00:07:53,000 --> 00:07:58,000 Сега ако гледаме алчен, овој прв решение 110 00:07:58,000 --> 00:08:00,000 ги користи овие # дефинира доста. 111 00:08:00,000 --> 00:08:06,000 Имаме една константа дефинирани за секоја од различни броеви во оваа програма. 112 00:08:06,000 --> 00:08:12,000 Имаме еден за центи за долар, еден за четвртина, dimes, nickels и пени, 113 00:08:12,000 --> 00:08:15,000 и сега ако ние движете се надолу и прочитате кодот, 114 00:08:15,000 --> 00:08:22,000 можеме да видиме стандард не-додека јамка печатење се надвор. 115 00:08:22,000 --> 00:08:25,000 Вид на суштината на овој проблем е свесен дека 116 00:08:25,000 --> 00:08:29,000 што ви е потребно да се конвертира плови да го прочитате во од корисникот да целобројна 117 00:08:29,000 --> 00:08:32,000 точно да го направите математика, и ова е поради тоа 118 00:08:32,000 --> 00:08:36,000 со броеви со подвижна запирка, како ние разговаравме за во предавање накратко, 119 00:08:36,000 --> 00:08:41,000 тоа не е можно точно да претставуваат секоја вредност на бројот линија 120 00:08:41,000 --> 00:08:47,000 бидејќи постојат бесконечно многу вредности помеѓу 3 и, да речеме, 3,1 дури. 121 00:08:47,000 --> 00:08:54,000 Можете да имаат 3,01 и 3,001 и 3,0001, и можете да продолжувам да одам. 122 00:08:54,000 --> 00:09:00,000 Излегува кога си работат со пари, често сакаат да го претвори 123 00:09:00,000 --> 00:09:05,000 во цел број формат, така што вие не сте губи пени и тој вид на работи. 124 00:09:05,000 --> 00:09:09,000 Тоа го прават и заокружување беше клучот. 125 00:09:09,000 --> 00:09:14,000 Ова решение се користи совршено јасна, голема алгоритам, 126 00:09:14,000 --> 00:09:17,000 кој decremented бројот на центи останатите, прв по квартали, 127 00:09:17,000 --> 00:09:19,000 потоа од страна dimes, а потоа од страна nickels, а потоа од страна на пени, 128 00:09:19,000 --> 00:09:24,000 и додавање на бројот на монетите секој пат. 129 00:09:24,000 --> 00:09:31,000 >> Друго решение што ќе видиме, како што одзумирате и да одат во Ревизија 4, 130 00:09:31,000 --> 00:09:40,000 имаше многу слични почетокот, но наместо него ги користеле div и МО 131 00:09:40,000 --> 00:09:44,000 право овде да се пресмета бројот на центи. 132 00:09:44,000 --> 00:09:50,000 Ова, бројот на кругови е еднаков на бројот на центи поделено со 25, 133 00:09:50,000 --> 00:09:53,000 а причина овој работи е затоа што го правиме број поделба, 134 00:09:53,000 --> 00:09:58,000 па тоа е отфрлајќи било остатокот. 135 00:09:58,000 --> 00:10:02,000 [Студентски] Дали имаме да коментира за пребарување? 136 00:10:02,000 --> 00:10:05,000 Тоа навистина зависи. 137 00:10:05,000 --> 00:10:08,000 [Студентски] Вие сте коментирајќи повеќе од кодот овде. 138 00:10:08,000 --> 00:10:16,000 Да, и така постојат еден куп на различни филозофии за ова. 139 00:10:16,000 --> 00:10:21,000 Мојата лична филозофија е дека вашиот код е навистина вистина, 140 00:10:21,000 --> 00:10:24,000 како вашиот код е она што всушност извршување на компјутерот, 141 00:10:24,000 --> 00:10:29,000 и така вашиот код треба да биде што може да се чита како е можно да не имаат потреба толку многу коментари. 142 00:10:29,000 --> 00:10:33,000 Тоа, рече, кога ќе се прават работи кои се вид на слабо математички 143 00:10:33,000 --> 00:10:38,000 или algorithmically, тоа е добро да коментираат оние, така што ќе може да 144 00:10:38,000 --> 00:10:43,000 додадете дополнителна димензија, екстра слој кој е читање вашиот код. 145 00:10:43,000 --> 00:10:49,000 Во овие решенија, често се коментира повеќе во голема мера само затоа што 146 00:10:49,000 --> 00:10:52,000 сакаме да бидеме во можност да ги дистрибуира и да имаат луѓето ги собереш 147 00:10:52,000 --> 00:10:56,000 и ги прочитате прилично лесно. 148 00:10:56,000 --> 00:11:05,000 Но, дефинитивно, јас ќе се согласат дека ова е тежок. 149 00:11:05,000 --> 00:11:07,000 [Студентски] Но, кога се двоумите, одете потешки? 150 00:11:07,000 --> 00:11:10,000 Кога се двоумите, одете потешки. 151 00:11:10,000 --> 00:11:17,000 Некои луѓе понекогаш ќе каже враќање 0 или нешто слично. 152 00:11:17,000 --> 00:11:20,000 Мислам дека тоа е смешно коментар. 153 00:11:20,000 --> 00:11:22,000 Јасно дека е она што се случува. 154 00:11:22,000 --> 00:11:25,000 Не ми треба англиски да ми каже тоа. 155 00:11:25,000 --> 00:11:28,000 Понекогаш луѓето ќе напише нешто како "kthxbai!" 156 00:11:28,000 --> 00:11:32,000 Тоа е вид на слатки, но исто така, не- 157 00:11:32,000 --> 00:11:35,000 тоа не е правење разлика меѓу коментирајќи поени или не. 158 00:11:35,000 --> 00:11:41,000 Оние видови на коментари се само ха, ха. 159 00:11:41,000 --> 00:11:43,000 Кул. 160 00:11:43,000 --> 00:11:48,000 >> Во овој момент, ајде да почнеме да работиме на проблемот Намести 3 дел на прашања. 161 00:11:48,000 --> 00:11:52,000 Ако вие момци се повлече оваа повторно, 162 00:11:52,000 --> 00:11:55,000 како и со минатата недела, ние нема да се види на шорцеви во оваа секција. 163 00:11:55,000 --> 00:12:00,000 Ние ќе ви момци го направите тоа на свој време и да разговараат за прашања. 164 00:12:00,000 --> 00:12:05,000 Но, сега во овој дел ние ќе потрошите малку повеќе време 165 00:12:05,000 --> 00:12:11,000 зборуваме за помалку од кодирање основите 166 00:12:11,000 --> 00:12:15,000 како што правевме минатата недела, и наместо тоа, ние ќе се фокусираат повеќе на 167 00:12:15,000 --> 00:12:22,000 малку повеќе на теорија, така зборува за бинарни пребарување, а потоа сортирање. 168 00:12:22,000 --> 00:12:27,000 Од оние од вас кои биле следниве заедно со предавање, 169 00:12:27,000 --> 00:12:30,000 некој може да ми даде реприза на она што разликата е 170 00:12:30,000 --> 00:12:35,000 помеѓу бинарни пребарување и линеарно пребарување? 171 00:12:35,000 --> 00:12:37,000 Што се случува? Секако. 172 00:12:37,000 --> 00:12:42,000 Линеарно пребарување пребарувања низ секој елемент во Подредена листа 173 00:12:42,000 --> 00:12:45,000 еден по еден по еден по еден по еден, 174 00:12:45,000 --> 00:12:50,000 и бинарни пребарување дели листа во 2 групи, 175 00:12:50,000 --> 00:12:57,000 проверува дали клучеви вредност која сте во потрага по е поголема или помала од средината вредност 176 00:12:57,000 --> 00:13:00,000 дека сте само најде, и ако тоа е помалку отколку, тоа оди со пониски листа 177 00:13:00,000 --> 00:13:03,000 а потоа се дели дека повторно, дали истата функција 178 00:13:03,000 --> 00:13:07,000 сите патот надолу се додека не најде средина да биде еднаква со вредноста себе. 179 00:13:07,000 --> 00:13:10,000 Право. 180 00:13:10,000 --> 00:13:12,000 >> Зошто ни е гајле? 181 00:13:12,000 --> 00:13:20,000 Зошто зборуваме за бинарни пребарување наспроти линеарно пребарување? 182 00:13:20,000 --> 00:13:22,000 Да. 183 00:13:22,000 --> 00:13:24,000 Бинарни е многу побрзо, па ако се удвои големината на проблемот 184 00:13:24,000 --> 00:13:27,000 тоа трае уште еден чекор наместо двојно повеќе. 185 00:13:27,000 --> 00:13:29,000 Точно. 186 00:13:29,000 --> 00:13:31,000 Тоа е голем одговор. 187 00:13:31,000 --> 00:13:36,000 Линеарно пребарување е многу проверка еден елемент во еден момент, 188 00:13:36,000 --> 00:13:39,000 и како што видовме во првиот ден на предавање 189 00:13:39,000 --> 00:13:42,000 кога Давид отиде преку неговиот именик пример 190 00:13:42,000 --> 00:13:45,000 и искинале од една страна на телефонот книга во време 191 00:13:45,000 --> 00:13:47,000 и се чуваат тоа го прават одново и одново и одново, 192 00:13:47,000 --> 00:13:51,000 тоа ќе го земе навистина долго време да се најде некој во книгата на телефонот, 193 00:13:51,000 --> 00:13:55,000 освен, се разбира, тој е во потрага за некој уште на самиот почеток од азбуката. 194 00:13:55,000 --> 00:14:00,000 Со бинарна пребарување, можете да одат многу побрзо, 195 00:14:00,000 --> 00:14:05,000 и тоа не е само два пати толку брзо или 3 пати толку брзо или 4 пати побрзо. 196 00:14:05,000 --> 00:14:13,000 Но, проблемот добива помала и помала и помала многу побрзо. 197 00:14:13,000 --> 00:14:17,000 За да го илустрираме ова, ние ќе почнам да зборувам за она што се случува 198 00:14:17,000 --> 00:14:21,000 кога ние пишуваме бинарни пребарување. 199 00:14:21,000 --> 00:14:27,000 Проблемот на дофат на раката е дека ако имам низа на броеви, 200 00:14:27,000 --> 00:14:40,000 да речеме, 1, 2, 3, 5, 7, 23, 45, 78, 12.323, 201 00:14:40,000 --> 00:14:47,000 а потоа 9 со еден тон на 0-ти по неа, 202 00:14:47,000 --> 00:14:52,000 сакаме да бидеме во можност да дознаам навистина брзо она што е во 203 00:14:52,000 --> 00:14:57,000 оваа низа на броеви. 204 00:14:57,000 --> 00:15:00,000 Знам дека ова изгледа малку глупо и малку измислена, 205 00:15:00,000 --> 00:15:02,000 бидејќи сега тоа е. 206 00:15:02,000 --> 00:15:05,000 Имаме низа што не имаат многу различни елементи во него, 207 00:15:05,000 --> 00:15:08,000 и ако го побарам од вас да дознаам дали или не 208 00:15:08,000 --> 00:15:11,000 23 е во низа, можете да го направите прилично брзо 209 00:15:11,000 --> 00:15:16,000 само со обѕрне на ова и ми кажуваше да или не. 210 00:15:16,000 --> 00:15:20,000 На аналогни да се разгледа е да се замисли ако ова беа, да речеме, 211 00:15:20,000 --> 00:15:27,000 табела Excel со 10.000 редови, 20.000 редови. 212 00:15:27,000 --> 00:15:31,000 Се разбира, можете да го направите команда F или контрола F и гледам нешто. 213 00:15:31,000 --> 00:15:33,000 Исто така можете да го користите филтри и потрагата работи, 214 00:15:33,000 --> 00:15:37,000 но ако сте имале да се погледне преку таа датотека линија по линија по линија, 215 00:15:37,000 --> 00:15:40,000 тоа ќе ви потрае подолго време да го најдете. 216 00:15:40,000 --> 00:15:42,000 Тоа е вид на како во телефонот книга пример, премногу, каде што 217 00:15:42,000 --> 00:15:44,000 никој не гледа преку телефон книга една страница во исто време. 218 00:15:44,000 --> 00:15:47,000 Вообичаено, тие ми ја отвори до средината, 219 00:15:47,000 --> 00:15:50,000 или во случај на многу телефон книги и речници каде 220 00:15:50,000 --> 00:15:54,000 вие всушност го приспособени на првата буква, 221 00:15:54,000 --> 00:16:01,000 ќе флип тоа првата буква и да се отвори и да почне да оди преку таму. 222 00:16:01,000 --> 00:16:03,000 >> Ме потсетува на вашето име повторно. >> Сем. 223 00:16:03,000 --> 00:16:05,000 Сем. 224 00:16:05,000 --> 00:16:11,000 Како Сем рече дека линеарно пребарување процес ќе биде навистина бавно, 225 00:16:11,000 --> 00:16:15,000 и наместо со бинарна пребарување, начинот на кој тоа работи е дека 226 00:16:15,000 --> 00:16:21,000 секој пат кога ќе одиме преку повторување на нашата потрага алгоритам, 227 00:16:21,000 --> 00:16:27,000 ние ќе се подели на листата на половина, во суштина, 228 00:16:27,000 --> 00:16:33,000 во две помали листи. 229 00:16:33,000 --> 00:16:39,000 И потоа на следниот повторување на циклусот, ние ќе ја делат повторно 230 00:16:39,000 --> 00:16:44,000 во други помали листи. 231 00:16:44,000 --> 00:16:48,000 Како што можете да видите, проблемот постојано стануваат помали и помали 232 00:16:48,000 --> 00:16:55,000 бидејќи ние ги отфрлајќи половина од листата секој пат. 233 00:16:55,000 --> 00:16:59,000 Како го прави ова отфрлање работа? 234 00:16:59,000 --> 00:17:05,000 Само како потсетување, она што се случува да направам, ако бевме компјутер 235 00:17:05,000 --> 00:17:11,000 и бевме, да речеме, во потрага за бројот 5 во оваа листа 236 00:17:11,000 --> 00:17:15,000 е дека ќе изберете број во средината. 237 00:17:15,000 --> 00:17:26,000 Во средината на оваа листа, бидејќи таму се 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 броеви, 238 00:17:26,000 --> 00:17:32,000 ние би изберете број или на 4-та позиција или на 5 позиција, 239 00:17:32,000 --> 00:17:38,000 и ние би ја нарекол дека средината на нашата листа. 240 00:17:38,000 --> 00:17:42,000 Трансферот број во средината. 241 00:17:42,000 --> 00:17:51,000 Потоа, само како Сем рече, ние ќе тест за да видите дали тој број е еднаков 242 00:17:51,000 --> 00:17:59,000 на бројот што сакате да го добиете или нашите саканиот број. 243 00:17:59,000 --> 00:18:06,000 Ако е еднаква, тогаш ние сме го најде. Ние победиме. 244 00:18:06,000 --> 00:18:12,000 Ако не е еднаква, тогаш постојат неколку случаи. 245 00:18:12,000 --> 00:18:15,000 Двата случаи се или бројот треба да биде поголем од бројот ние барате, 246 00:18:15,000 --> 00:18:19,000 или тоа е помалку од. 247 00:18:19,000 --> 00:18:25,000 Ако е поголема, се движиме кон десно. 248 00:18:25,000 --> 00:18:33,000 И ако тоа е помалку, се движиме кон лево. 249 00:18:33,000 --> 00:18:41,000 А потоа се повторува целиот процес повторно 250 00:18:41,000 --> 00:18:48,000 на или десната половина или на левата половина од листата. 251 00:18:48,000 --> 00:18:51,000 >> Првиот проблем во делот денес е да дознаам 252 00:18:51,000 --> 00:18:55,000 како ние всушност може да почне да се изразат оваа во C код. 253 00:18:55,000 --> 00:18:58,000 Имаме pseudocode тука. 254 00:18:58,000 --> 00:19:04,000 Што ќе почнете да го правите е јас ќе се повлече сосема нов простор, 255 00:19:04,000 --> 00:19:09,000 спаси оваа ревизија, така што имаме овие белешки за подоцна, 256 00:19:09,000 --> 00:19:20,000 ние ќе ги избришете сето тоа, а потоа да копирате и залепите од проблемот сет 257 00:19:20,000 --> 00:19:26,000 оваа информација во нашите простори, и се надевам дека тоа не се скрши. 258 00:19:26,000 --> 00:19:28,000 Совршена. 259 00:19:28,000 --> 00:19:33,000 Ако вие момци сите го направат тоа, копирајте го и ставете го овој код во вашиот нов простор, 260 00:19:33,000 --> 00:19:43,000 во празно еден. 261 00:19:43,000 --> 00:19:47,000 Да се ​​обидеме Даниел. Ако компајлирајте и извршете оваа програма, тоа функционира? 262 00:19:47,000 --> 00:19:49,000 Бр >> Што е тоа зборуваш? 263 00:19:49,000 --> 00:19:53,000 Таа вели дека контрола достигне крајот на не-празнина функција. 264 00:19:53,000 --> 00:19:55,000 Да, па дозволете ми да се обиде трчање. 265 00:19:55,000 --> 00:19:59,000 Дали вие момци се види ова и пред тоа? Дали знаете што тоа значи? 266 00:19:59,000 --> 00:20:01,000 Океј, ајде да го сецира ова малку. 267 00:20:01,000 --> 00:20:10,000 Тоа е велејќи дека во враќам документот on-line 9, колона 1 имаме грешка, исто како што рече ти, 268 00:20:10,000 --> 00:20:16,000 и вели дека тоа е произлегуваат од грешка предупредување и враќање тип предупредување. 269 00:20:16,000 --> 00:20:18,000 Тоа изгледа како нешто се случува со враќањето тип, што го прави смисла. 270 00:20:18,000 --> 00:20:21,000 Имаме не-празнина функција, што значи дека имаме функција 271 00:20:21,000 --> 00:20:24,000 тоа не се врати неважечки. 272 00:20:24,000 --> 00:20:27,000 А празнина функција е оној кој изгледа вака: 273 00:20:27,000 --> 00:20:35,000 празнина foo (), и тоа е неважечки, бидејќи враќањето тип е празнина, 274 00:20:35,000 --> 00:20:38,000 што значи дека ако имавме нешто тука 275 00:20:38,000 --> 00:20:45,000 како враќање 1, ние ќе добијам компајлерот грешка за ова. 276 00:20:45,000 --> 00:20:49,000 Сепак, ние имаме не-празнина функција. 277 00:20:49,000 --> 00:20:51,000 Нашата не-празнина функција во овој случај е нашата функција за пребарување 278 00:20:51,000 --> 00:20:56,000 бидејќи има враќање тип на bool. 279 00:20:56,000 --> 00:20:59,000 Кога тоа е велејќи дека контролата достигне крајот на не-празнина функција, 280 00:20:59,000 --> 00:21:02,000 тоа е затоа пребарување нема враќање изјава. 281 00:21:02,000 --> 00:21:04,000 Тоа не е враќање ништо од тип bool. 282 00:21:04,000 --> 00:21:09,000 >> Ние може да се поправи тоа, и она што ви момци мислите 283 00:21:09,000 --> 00:21:13,000 пребарување треба да се врати по дифолт? 284 00:21:13,000 --> 00:21:16,000 Што треба да биде стандардно повратната вредност на пребарување? 285 00:21:16,000 --> 00:21:19,000 Бидејќи тоа е она што може да се стави на крајот. 286 00:21:19,000 --> 00:21:21,000 Шарлот, не имате било какви-? 287 00:21:21,000 --> 00:21:23,000 Вистински или лажни? >> Вистински или лажни. 288 00:21:23,000 --> 00:21:26,000 Кој? 289 00:21:26,000 --> 00:21:28,000 Лажни. Не знам. 290 00:21:28,000 --> 00:21:30,000 Лажни? Ајде да ја обидат. 291 00:21:30,000 --> 00:21:32,000 Зошто и вие би рекол враќање лажни? Тоа е одлично интуиција. 292 00:21:32,000 --> 00:21:35,000 [Шарлот] Не знам. 293 00:21:35,000 --> 00:21:39,000 Ние ќе се врати лажни во овој случај, бидејќи тоа ќе биде нашата стандардна 294 00:21:39,000 --> 00:21:44,000 ако поради некоја причина на листата е празна или на игла 295 00:21:44,000 --> 00:21:46,000 дека ние сме во потрага по не постои. 296 00:21:46,000 --> 00:21:50,000 Потоа на самиот крај, ако не се врати точно во почетокот на оваа функција, 297 00:21:50,000 --> 00:21:55,000 ние секогаш знаеме дека оваа функција ќе каже бе, тоа не е во низа. 298 00:21:55,000 --> 00:21:58,000 Тоа не е во haystack. 299 00:21:58,000 --> 00:22:03,000 Сега ако ние ги собере и да ја стартувате-нека ме спаси ова, па можеме да го повлече. 300 00:22:03,000 --> 00:22:08,000 Сега ако ние компајлирајте и извршете нашата програма, таа го гради. 301 00:22:08,000 --> 00:22:12,000 Ние се нашата мала линија. 302 00:22:12,000 --> 00:22:20,000 Ако јас хит 4-Ш-ох. 303 00:22:20,000 --> 00:22:25,000 Тоа не печати од ништо. Тоа изгледа како и сè заврши добро. 304 00:22:25,000 --> 00:22:35,000 Мораме да се пополни оваа внатре 305 00:22:35,000 --> 00:22:39,000 Ние разговаравме за алгоритам во pseudocode малку пред. 306 00:22:39,000 --> 00:22:44,000 Дозволете ми да видам, освен тоа, 307 00:22:44,000 --> 00:22:49,000 и јас ќе се повлече дека алгоритам се врати повторно. 308 00:22:49,000 --> 00:22:51,000 Да го погоди овој човек. Не бе. 309 00:22:51,000 --> 00:22:58,000 Ете го. 310 00:22:58,000 --> 00:23:03,000 Како го правиме тоа? 311 00:23:03,000 --> 00:23:11,000 Што ќе биде добра стратегија за поаѓање овој код? 312 00:23:11,000 --> 00:23:16,000 Мора да изберете број во средината. 313 00:23:16,000 --> 00:23:23,000 Како да ја изберете број во средината на низа? 314 00:23:23,000 --> 00:23:25,000 Секоја сугестија? 315 00:23:25,000 --> 00:23:27,000 [Студентски] strlen поделено со 2. 316 00:23:27,000 --> 00:23:32,000 Strlen поделено со 2. Тоа е одлично. 317 00:23:32,000 --> 00:23:35,000 Strlen дела со посебни видови на низи. 318 00:23:35,000 --> 00:23:38,000 Какви видови на низи? 319 00:23:38,000 --> 00:23:44,000 Стринг низи, карактер низи. 320 00:23:44,000 --> 00:23:48,000 Тоа е истиот вид на концепт што сакаме да се применуваат, 321 00:23:48,000 --> 00:23:52,000 но не можеме да го користите strlen бидејќи ние немаме низа од карактери. 322 00:23:52,000 --> 00:23:55,000 Имаме низа на ints. 323 00:23:55,000 --> 00:23:58,000 Но, она што не strlen се за нас? 324 00:23:58,000 --> 00:24:01,000 Дали знаете што се добива за нас? 325 00:24:01,000 --> 00:24:03,000 [Студентски] strlen нас добива должина. 326 00:24:03,000 --> 00:24:05,000 Точно, тоа ни добива должина. 327 00:24:05,000 --> 00:24:09,000 Strlen добива должината на низата за нас. 328 00:24:09,000 --> 00:24:14,000 >> Како да ја добиете дека во нашата бинарни пребарување програмата? 329 00:24:14,000 --> 00:24:18,000 Како ќе добиете на должината на низата? 330 00:24:18,000 --> 00:24:20,000 [Студентски] strlen? 331 00:24:20,000 --> 00:24:25,000 Можете да добиете на должината на правилно форматиран C стринг низа со strlen. 332 00:24:25,000 --> 00:24:31,000 Проблемот, сепак, е дека ние немаме стринг низа. 333 00:24:31,000 --> 00:24:36,000 Ако ги погледнеме назад во овој код, имаме овој број низа. 334 00:24:36,000 --> 00:24:38,000 Како да знаеме колку долго е тоа? 335 00:24:38,000 --> 00:24:44,000 [Студентски] Дали постои еквивалент една за крајната точка, како int l или нешто? 336 00:24:44,000 --> 00:24:49,000 Излегува таму всушност не е, и тоа на начин, ова е 337 00:24:49,000 --> 00:24:52,000 една од оние работи тоа е само добро да се знае за C, 338 00:24:52,000 --> 00:24:57,000 дека не постои начин да се добие на должината на низата 339 00:24:57,000 --> 00:24:59,000 ако сите ви го давам е низа. 340 00:24:59,000 --> 00:25:02,000 Причината работи со жици, причината strlen дела, 341 00:25:02,000 --> 00:25:06,000 е затоа што ако стрингот е правилно форматиран, 342 00:25:06,000 --> 00:25:12,000 тоа ќе го имаат тоа специјален \ 0 карактер на самиот крај. 343 00:25:12,000 --> 00:25:16,000 >> Исто така можете да си замислите, ако имате неправилно форматирана низа 344 00:25:16,000 --> 00:25:20,000 и нема \ 0 лик таму, тогаш целата работа не функционира. 345 00:25:20,000 --> 00:25:22,000 [Студентски] можете да го додадете \ 0? 346 00:25:22,000 --> 00:25:24,000 Ние може во овој случај. 347 00:25:24,000 --> 00:25:29,000 Ние би можеле да додадете некој вид на \ 0 348 00:25:29,000 --> 00:25:33,000 или некој вид на означување карактер, а потоа ја користат таа. 349 00:25:33,000 --> 00:25:36,000 Но, тоа не е сосема оди на работа 350 00:25:36,000 --> 00:25:40,000 бидејќи \ 0 е за знак тип, 351 00:25:40,000 --> 00:25:43,000 и тука имаме ints. 352 00:25:43,000 --> 00:25:46,000 Од друга работа е ако ние требаше да користите специјална вредност 353 00:25:46,000 --> 00:25:49,000 како -1 да се означи крајот на низата 354 00:25:49,000 --> 00:25:54,000 тогаш ние никогаш не може да се складира -1 во нашата целобројни низи. 355 00:25:54,000 --> 00:25:56,000 Ние би се заглавени. 356 00:25:56,000 --> 00:26:00,000 Излегува дека единствениот начин да се добие должина 357 00:26:00,000 --> 00:26:03,000 на низа во C е всушност да се сеќава на него 358 00:26:03,000 --> 00:26:08,000 кога ќе го постави, а потоа го помине околу со низа 359 00:26:08,000 --> 00:26:14,000 така што секогаш кога имам функција која ќе направи некоја работа 360 00:26:14,000 --> 00:26:18,000 на низа од цели броеви или пловки или двојки или што имаш, 361 00:26:18,000 --> 00:26:22,000 Јас исто така ќе треба да се даде на функција должина на низата е, 362 00:26:22,000 --> 00:26:26,000 и тоа е токму она што ние го направивме тука на функцијата за пребарување. 363 00:26:26,000 --> 00:26:30,000 Ако се погледне, она што ние го направивме кога ќе помине во нашата низа тука, 364 00:26:30,000 --> 00:26:36,000 ние исто така помине во должина, големината. 365 00:26:36,000 --> 00:26:41,000 Тоа едноставно се случува, дека ние се нарекува оваа променлива овде, 366 00:26:41,000 --> 00:26:43,000 овој параметар или аргумент. 367 00:26:43,000 --> 00:26:46,000 Ова се нарекува аргумент листа функција или параметар листа, 368 00:26:46,000 --> 00:26:51,000 и овие се викаат исто така аргументи или параметри. 369 00:26:51,000 --> 00:26:53,000 Луѓето користат различни термини во различни времиња. 370 00:26:53,000 --> 00:26:55,000 Јас понекогаш ги замените себе. 371 00:26:55,000 --> 00:27:00,000 Тоа само така се случува, дека оваа променлива тука е именуван слично 372 00:27:00,000 --> 00:27:03,000 на овој # define се тука. 373 00:27:03,000 --> 00:27:06,000 Но тие не се иста работа. 374 00:27:06,000 --> 00:27:11,000 Капитализација не е важно. 375 00:27:11,000 --> 00:27:14,000 >> Ако се погледне што се случува тука, изјавуваме 376 00:27:14,000 --> 00:27:18,000 нашите int низа, кој го нарече броеви. 377 00:27:18,000 --> 00:27:23,000 Ние го даде нашиот големина, што соодветствува на нашите # define на врвот. 378 00:27:23,000 --> 00:27:27,000 Тоа ќе биде 8. 379 00:27:27,000 --> 00:27:35,000 И тогаш кога ние тогаш јавете се во нашата функцијата за пребарување долу, 380 00:27:35,000 --> 00:27:40,000 ние преминуваме на бројот што сакате да пребарувате, кој го предизвика, 381 00:27:40,000 --> 00:27:43,000 добиле од корисникот. 382 00:27:43,000 --> 00:27:46,000 Ние помине во низа, овој број, 383 00:27:46,000 --> 00:27:51,000 а потоа ние, исто така, мора да поминат во големината на низата, 384 00:27:51,000 --> 00:27:57,000 и тогаш вредноста на големина 8 добива чуваат 385 00:27:57,000 --> 00:28:01,000 или предадена на овој целобројна променлива наречена големина. 386 00:28:01,000 --> 00:28:08,000 Имаме големина на низата. 387 00:28:08,000 --> 00:28:11,000 Сега ако ние се вратиме на она што се зборува за порано, 388 00:28:11,000 --> 00:28:14,000 Мислам Missy донесе до точка дека она што ни е потребно да направите е да се добие должината на низата 389 00:28:14,000 --> 00:28:20,000 и подели со 2, и дека ќе ни даде средина. 390 00:28:20,000 --> 00:28:22,000 Ајде да видиме. 391 00:28:22,000 --> 00:28:25,000 Може ли да има некој напише ова и зачувајте ја во вселената? 392 00:28:25,000 --> 00:28:27,000 Како за Лејла? 393 00:28:27,000 --> 00:28:31,000 Можам да си пишувам ова во? 394 00:28:31,000 --> 00:28:35,000 Напиши на првата линија, каде што се должината на низата и да добијат средина 395 00:28:35,000 --> 00:28:41,000 и таа продавница во нова променлива. 396 00:28:41,000 --> 00:28:44,000 Јас ќе ви даде неколку секунди. Дали сте подготвени? 397 00:28:44,000 --> 00:28:46,000 [Студентски нечујни] 398 00:28:46,000 --> 00:28:50,000 Секако, би можеле да ви се пресмета средина 399 00:28:50,000 --> 00:28:55,000 на стогот низа во внатрешноста на функцијата за пребарување 400 00:28:55,000 --> 00:29:03,000 користење на должината на стогот низа, што е големината променлива? 401 00:29:03,000 --> 00:29:08,000 Ништо слабо тука. 402 00:29:08,000 --> 00:29:12,000 [Лејла] Само големина / 2 и само- 403 00:29:12,000 --> 00:29:17,000 И го спаси, и кликнете на копчето Зачувај се тука на врвот, 404 00:29:17,000 --> 00:29:19,000 и ние ќе го повлече нагоре. 405 00:29:19,000 --> 00:29:22,000 Совршена. 406 00:29:22,000 --> 00:29:28,000 Таму ќе одиме. Страшни. 407 00:29:28,000 --> 00:29:30,000 >> Како што е, ова ќе ги собере? 408 00:29:30,000 --> 00:29:32,000 [Лејла] Не, тоа треба да биде повисок. 409 00:29:32,000 --> 00:29:34,000 [Нејт] Да, па што ние треба да направам? 410 00:29:34,000 --> 00:29:36,000 [Лејла] Како int средина или нешто. 411 00:29:36,000 --> 00:29:41,000 Страшни. Да, ајде да го направат тоа, int средина = големина. 412 00:29:41,000 --> 00:29:44,000 Ова ќе ги собере? 413 00:29:44,000 --> 00:29:47,000 Да избришете овој коментар и да го надвор од патот. 414 00:29:47,000 --> 00:29:50,000 Она што не ќе ги собере околу ова? 415 00:29:50,000 --> 00:29:52,000 Ние не правиме ништо со број, 416 00:29:52,000 --> 00:29:55,000 па ние треба да го испечатите или нешто слично. 417 00:29:55,000 --> 00:29:58,000 Да, точно. 418 00:29:58,000 --> 00:30:00,000 Ќе добиете неискористени променлива. 419 00:30:00,000 --> 00:30:02,000 Што друго не се случува да работат за ова? 420 00:30:02,000 --> 00:30:06,000 Мислам дека рече нешто, Сем. Semicolons. 421 00:30:06,000 --> 00:30:08,000 Да, јас сум недостасува оние semicolons. 422 00:30:08,000 --> 00:30:14,000 Тоа се случува да биде постојана работа во текот на мандатот. 423 00:30:14,000 --> 00:30:17,000 Конечниот нешто што ќе направите е јас ќе се стави некои бел простор на двете страни 424 00:30:17,000 --> 00:30:23,000 на овој оператор тука, бидејќи тоа е типично како што го направи тоа 425 00:30:23,000 --> 00:30:26,000 според нашиот стил водич. 426 00:30:26,000 --> 00:30:29,000 Имаме средина на нашата низа. 427 00:30:29,000 --> 00:30:32,000 Сега ако ние сеќавам назад кон нашите алгоритам, 428 00:30:32,000 --> 00:30:37,000 она што беше вториот чекор што моравме да се направи еднаш имаме средина? 429 00:30:37,000 --> 00:30:42,000 [Студентски] Ако е поголема [недоловим]. 430 00:30:42,000 --> 00:30:48,000 Да, па ние треба да направите некој вид на споредба, и она што сме ние во споредба тука? 431 00:30:48,000 --> 00:30:53,000 Ти рече ако е поголема од. Што е тоа во оваа реченица се однесуваат на? 432 00:30:53,000 --> 00:30:57,000 Бројот што доаѓа до, ако тоа е поголема од средината, а потоа оди до низа? 433 00:30:57,000 --> 00:31:05,000 Точно, па бројот што доаѓа до кога ние- 434 00:31:05,000 --> 00:31:10,000 На игла, па ние сме во споредба со игла, 435 00:31:10,000 --> 00:31:12,000 и она што сме ние во споредба против игла? 436 00:31:12,000 --> 00:31:15,000 Бидејќи иглата е она што го барате. 437 00:31:15,000 --> 00:31:18,000 Ние сме тоа споредување да се дојде до средина. 438 00:31:18,000 --> 00:31:21,000 >> Но, дали има смисла да се провери да се види 439 00:31:21,000 --> 00:31:27,000 ако игла = средина? 440 00:31:27,000 --> 00:31:32,000 Дали тоа има смисла? 441 00:31:32,000 --> 00:31:35,000 Дали некој се согласувате? 442 00:31:35,000 --> 00:31:40,000 Ајде да пробвам, ако (игла == средина). 443 00:31:40,000 --> 00:31:42,000 [Студентски] Дали printf ќе го најде. 444 00:31:42,000 --> 00:31:51,000 [Нејт] printf ("Ние го пронајде \ n!"); 445 00:31:51,000 --> 00:31:56,000 Инаку-I'm ќе почнете да правите нешто различно тука. 446 00:31:56,000 --> 00:32:00,000 Одам да се започне со загради околу, ако изјавите цело време 447 00:32:00,000 --> 00:32:05,000 само затоа што ако ние додадете повеќе работи, тогаш 448 00:32:05,000 --> 00:32:07,000 ние не се добие компајлери. 449 00:32:07,000 --> 00:32:09,000 Да, Сем. Имаш точка. 450 00:32:09,000 --> 00:32:12,000 Проблемот е во тоа средина претставува позиција во низа, 451 00:32:12,000 --> 00:32:15,000 но може да се добие тоа да претставуваат вредност во таа позиција на низата. 452 00:32:15,000 --> 00:32:17,000 Тоа е голема точка. 453 00:32:17,000 --> 00:32:19,000 Дали сите слушаат она Сем рече? 454 00:32:19,000 --> 00:32:22,000 Тој рече дека средина како што е 455 00:32:22,000 --> 00:32:28,000 претставува само позиција во низа, но тоа не е вистински елемент во низа. 456 00:32:28,000 --> 00:32:30,000 Ако мислите дека за кодот како што е напишана токму сега, 457 00:32:30,000 --> 00:32:35,000 ако гледаме во оваа низа долу тука, кој има 8 елементи во него, 458 00:32:35,000 --> 00:32:39,000 она што е вредноста на средината ќе биде во оваа функција? 459 00:32:39,000 --> 00:32:41,000 [Студентски] 4. 460 00:32:41,000 --> 00:32:45,000 [Нејт] 4. 461 00:32:45,000 --> 00:32:51,000 Ако ги погледнеме за број 4 - 462 00:32:51,000 --> 00:32:54,000 а ние само може да работи овој код и стави малку тажно лице во тука 463 00:32:54,000 --> 00:32:58,000 затоа што ние не најде за-ако трчаме овој код 464 00:32:58,000 --> 00:33:04,000 како што е во моментов, подигнете, зграда, дозволете ми да дојдете долу, 465 00:33:04,000 --> 00:33:09,000 и ако гледаме за бројот 4, 466 00:33:09,000 --> 00:33:18,000 ние го најде, но ние не го добивате ова да printf да. 467 00:33:18,000 --> 00:33:23,000 Една од причините е тоа што ние не се врати точно, 468 00:33:23,000 --> 00:33:26,000 но ние навистина се најде бројот 4? 469 00:33:26,000 --> 00:33:28,000 И Сем вели бр. 470 00:33:28,000 --> 00:33:31,000 Што ќе најдеме? 471 00:33:31,000 --> 00:33:35,000 Ние навистина се најде средина, кој ако гледаме во низа тука долу, 472 00:33:35,000 --> 00:33:38,000 тоа нема да биде елемент на индекс 4 дека ние сме во потрага на, 473 00:33:38,000 --> 00:33:42,000 кој е 23. 474 00:33:42,000 --> 00:33:46,000 >> Како ние всушност тој елемент на средината 475 00:33:46,000 --> 00:33:48,000 а не само на средината себе? 476 00:33:48,000 --> 00:33:52,000 [Студентски] Ние ќе влезе знак или нешто? 477 00:33:52,000 --> 00:33:55,000 Што би кои го прават тоа, само од љубопитност? 478 00:33:55,000 --> 00:33:57,000 Можеш да кажеш нешто повеќе? 479 00:33:57,000 --> 00:34:02,000 Мора да се трансформира позиција во бројот, 480 00:34:02,000 --> 00:34:05,000 па имаш да се направи некаква врска-Мислам дека тоа е знак, но тоа не може да биде. 481 00:34:05,000 --> 00:34:07,000 Да, тоа е добра точка. 482 00:34:07,000 --> 00:34:12,000 Ние сме биле прави многу на овој конвертирање позиции во карактери, овие ликови, 483 00:34:12,000 --> 00:34:14,000 во првите два проблем комплети. 484 00:34:14,000 --> 00:34:18,000 Излегува дека тука, ова е речиси слична на 485 00:34:18,000 --> 00:34:24,000 пристап до ith карактер во стрингот, ако тоа има смисла. 486 00:34:24,000 --> 00:34:30,000 Еве ние сакаме да пристапите до средината елемент. 487 00:34:30,000 --> 00:34:34,000 Како го правиме тоа? 488 00:34:34,000 --> 00:34:39,000 Кевин, дали имате било какви предлози како да го направите тоа? 489 00:34:39,000 --> 00:34:44,000 Можете да го направите стогот, отворен заградата, средината, затворена заграда. 490 00:34:44,000 --> 00:34:46,000 Можете да напишете дека за нас? 491 00:34:46,000 --> 00:34:51,000 Зачувај го тука, а ние ќе се повлече дека до. 492 00:34:51,000 --> 00:34:56,000 Ние сме во потрага на оваа линија 9, 493 00:34:56,000 --> 00:34:59,000 и ние сме свесен дека ние не сакаме да се споредат игла до средина, 494 00:34:59,000 --> 00:35:03,000 но наместо тоа, ние сакаме да се споредат игла 495 00:35:03,000 --> 00:35:07,000 на елементот на позицијата средина во рамките на нашите стогот низа. 496 00:35:07,000 --> 00:35:10,000 Кул. 497 00:35:10,000 --> 00:35:12,000 Таму ќе одиме. 498 00:35:12,000 --> 00:35:15,000 Да, тоа изгледа прилично добро, ако (игла == стогот [средина]). 499 00:35:15,000 --> 00:35:18,000 Ние ја најдов. 500 00:35:18,000 --> 00:35:22,000 Сега ако ние се кандидира на кодот we'll врати малку- 501 00:35:22,000 --> 00:35:26,000 Се компајлира, работи, и сега ако гледаме за 4, 502 00:35:26,000 --> 00:35:30,000 ние не го најдете, бидејќи сега ние сме всушност добивање на број 23. 503 00:35:30,000 --> 00:35:33,000 Ние сме добивање на вредност 23, и тоа е она што ние во споредба со нашите игла. 504 00:35:33,000 --> 00:35:35,000 Но, тоа е добро. Тоа е чекор во вистинската насока. 505 00:35:35,000 --> 00:35:37,000 >> Тоа е она што ние се обидуваме да се направи. 506 00:35:37,000 --> 00:35:40,000 Ние не се обидуваме да се споредат игла против позиции во низа 507 00:35:40,000 --> 00:35:44,000 туку против вистинските елементи во низа. 508 00:35:44,000 --> 00:35:49,000 Ако ги погледнеме назад сега на следниот чекор во нашата алгоритам, 509 00:35:49,000 --> 00:35:51,000 она што е следниот чекор? 510 00:35:51,000 --> 00:35:57,000 Лејла веќе го спомна тоа кратко. 511 00:35:57,000 --> 00:36:00,000 [Студентски] Проверете за да видат дали тоа е поголема или помала од и потоа да одлучи на кој начин да се движат. 512 00:36:00,000 --> 00:36:03,000 [Нејт] Да, па како ние би го сториле тоа? 513 00:36:03,000 --> 00:36:07,000 Може да се стави во некои-I'll спаси оваа ревизија, 514 00:36:07,000 --> 00:36:13,000 а потоа, ако се стави во некои линии кои ќе го направат тоа. 515 00:36:13,000 --> 00:36:15,000 Да, Шарлот. >> Имам едно прашање. 516 00:36:15,000 --> 00:36:19,000 Треба да не би било средина - 1 бидејќи првото нешто е 517 00:36:19,000 --> 00:36:26,000 тоа е 0 индексирани, па ако стави 4, тоа не е всушност ликот што го барате? 518 00:36:26,000 --> 00:36:30,000 Да, и друг проблем со тоа е- 519 00:36:30,000 --> 00:36:35,000 тоа е голем улов, бидејќи она што се случува да се заокружи случува можеби 520 00:36:35,000 --> 00:36:42,000 ако продолжат и ние никогаш не се прилагоди на почетокот? 521 00:36:42,000 --> 00:36:46,000 Претпоставувам дека она што ние би можеле да завршат прави се обидува да пристапите 522 00:36:46,000 --> 00:36:49,000 елементот на 8 позиција на низата, 523 00:36:49,000 --> 00:36:53,000 кој во овој случај не постои. 524 00:36:53,000 --> 00:36:56,000 Ние ќе сакате да направите некои вид на сметководството за фактот 525 00:36:56,000 --> 00:36:59,000 дека ние имаме некои нула индексирање. 526 00:36:59,000 --> 00:37:05,000 [Шарлот] Извини, мислев средина - 1 во квадратни загради. 527 00:37:05,000 --> 00:37:08,000 Ние можеме да го направи тоа. 528 00:37:08,000 --> 00:37:10,000 Ние ќе се врати на ова прашање во само малку. 529 00:37:10,000 --> 00:37:13,000 Откако ќе почнат да се дојде до вистински looping, 530 00:37:13,000 --> 00:37:16,000 тоа е кога ние навистина ќе видите оваа доаѓаат во игра. 531 00:37:16,000 --> 00:37:21,000 За тоа време, ние може да го направите ова, но ти си сосема во право. 532 00:37:21,000 --> 00:37:28,000 Тоа нула Кешот ќе имаат ефект дека ние треба да сметка за. 533 00:37:28,000 --> 00:37:30,000 Ајде да видиме. 534 00:37:30,000 --> 00:37:34,000 >> Како е поголема од и помалку од-? 535 00:37:34,000 --> 00:37:36,000 [Студентски] Јас добиете како да го направите поголема од и помалку од дел. 536 00:37:36,000 --> 00:37:41,000 Јас само не беше сигурен што да се печати ако најде дека тоа е помалку од стогот средина или поголема од. 537 00:37:41,000 --> 00:37:43,000 Тука можам да ги зачувам она I've- 538 00:37:43,000 --> 00:37:47,000 [Нејт] Да, ако те спаси она што имаш, и ние ќе го повлече нагоре. 539 00:37:47,000 --> 00:37:49,000 Таму ќе одиме. 540 00:37:49,000 --> 00:37:51,000 [Студентски] И јас се стави прашалници за она што не знаев. 541 00:37:51,000 --> 00:37:54,000 [Нејт] Тоа изгледа одлично. 542 00:37:54,000 --> 00:37:58,000 Тука имаме прашалници, бидејќи ние се уште не знаеме 543 00:37:58,000 --> 00:38:06,000 она што ние ќе треба да доста направи уште. 544 00:38:06,000 --> 00:38:12,000 Она што ние би сакале да се направи-Упс, ние го добивме некои загради сите фанки врз нас. 545 00:38:12,000 --> 00:38:15,000 Ние ќе ги поправи овие загради. 546 00:38:15,000 --> 00:38:19,000 Таму ќе одиме. 547 00:38:19,000 --> 00:38:22,000 И уште па што сакаме да го направиме, според нашите алгоритам, 548 00:38:22,000 --> 00:38:27,000 ако не се најде игла? 549 00:38:27,000 --> 00:38:32,000 Велат во случај дека иглата е помалку од она што ние барате. Кевин. 550 00:38:32,000 --> 00:38:34,000 Само погледнете во левата половина. 551 00:38:34,000 --> 00:38:40,000 Право, па ќе стави коментар овде во која се вели "се погледне во левата половина." 552 00:38:40,000 --> 00:38:46,000 И ако иглата е поголема од стогот на средината, она што сакаме да направам? 553 00:38:46,000 --> 00:38:48,000 [Студентски] Потоа ќе се погледне на десната половина. 554 00:38:48,000 --> 00:38:53,000 Погледни го десната половина ", погледнете во десната половина." 555 00:38:53,000 --> 00:38:58,000 Не е премногу излитена. 556 00:38:58,000 --> 00:39:05,000 Океј, па во овој момент, работите се гледа прилично добар. 557 00:39:05,000 --> 00:39:13,000 Проблемот со кодот како што е напишано е она? 558 00:39:13,000 --> 00:39:15,000 [Студентски] Вие немате крајни точки за половини. 559 00:39:15,000 --> 00:39:18,000 Право, ние немаме крајни точки за половини. 560 00:39:18,000 --> 00:39:20,000 Ние, исто така, се случува само да одат преку овој еднаш. 561 00:39:20,000 --> 00:39:23,000 Ние сме само ќе се погледне една средина. 562 00:39:23,000 --> 00:39:27,000 Или елемент е таму, или тоа не е. 563 00:39:27,000 --> 00:39:34,000 Со цел да се заврши ова, ние ќе треба да се направи некој вид на повторување. 564 00:39:34,000 --> 00:39:39,000 Ние треба да ги повторува се додека сметаме дека 565 00:39:39,000 --> 00:39:43,000 или елемент е таму, бидејќи ние сме сведени и конечно го најде, 566 00:39:43,000 --> 00:39:46,000 или тоа не е таму, бидејќи ние погледна низ сите нешта 567 00:39:46,000 --> 00:39:52,000 во соодветните половини на низата и сфатив дека ништо не е таму. 568 00:39:52,000 --> 00:39:56,000 >> Секогаш кога ние го добивме ова повторување случува, што ќе се дојде да се користи? 569 00:39:56,000 --> 00:39:58,000 [Студентски] А јамка. 570 00:39:58,000 --> 00:40:00,000 Некој вид на јамка. Да. 571 00:40:00,000 --> 00:40:03,000 [Студентски] Може ли да се направи не-додека јамка и да го имаат сторат тоа, а потоа додека 572 00:40:03,000 --> 00:40:10,000 иглата не не е еднакво на-I'm сигурни каде ќе одам со тоа. 573 00:40:10,000 --> 00:40:18,000 Но, нешто како го стори тоа се додека тоа не се еднакви на вредноста што корисникот влез. 574 00:40:18,000 --> 00:40:21,000 Да, па ајде да видиме, како тоа може да се напише? 575 00:40:21,000 --> 00:40:23,000 Ти рече ајде да го користат на не-додека јамка. 576 00:40:23,000 --> 00:40:26,000 Каде да почне? 577 00:40:26,000 --> 00:40:33,000 [Студентски] Веднаш по големина / 2. 578 00:40:33,000 --> 00:40:42,000 [Нејт] Океј, а што се ќе правиме? 579 00:40:42,000 --> 00:40:44,000 Ние ќе пополните додека подоцна. 580 00:40:44,000 --> 00:40:46,000 Што ќе правиме? 581 00:40:46,000 --> 00:40:49,000 [Студентски] Не сакаме да направиме сите нешта што ја имаме во ако дел? 582 00:40:49,000 --> 00:40:52,000 [Нејт] Дали сите овие работи, одлично. 583 00:40:52,000 --> 00:40:55,000 Копирај ја и залепи. 584 00:40:55,000 --> 00:40:59,000 О, човеку. 585 00:40:59,000 --> 00:41:03,000 Ајде да видиме дали тоа функционира, ако можеме да табот овој свет. 586 00:41:03,000 --> 00:41:08,000 Убава. 587 00:41:08,000 --> 00:41:16,000 Океј, и ние го спаси ова, па вие момци го имаат. 588 00:41:16,000 --> 00:41:21,000 Добро, и ние ќе се обидеме да го направите ова време- 589 00:41:21,000 --> 00:41:25,000 она што беше додека состојбата сте биле по? 590 00:41:25,000 --> 00:41:31,000 [Студентски] Додека иглата не еднакви, па како извичник. 591 00:41:31,000 --> 00:41:37,000 Но не сум сигурен точно што е уште. 592 00:41:37,000 --> 00:41:39,000 [Нејт] Да, ова е еден начин да го направи тоа. 593 00:41:39,000 --> 00:41:41,000 Сем, имаш ли коментар? 594 00:41:41,000 --> 00:41:43,000 [Сем] сетив кога гледав на видео клипови, 595 00:41:43,000 --> 00:41:48,000 Зедов слика од екранот од еден од-како кога ние го сторивме на pseudocode за тоа, 596 00:41:48,000 --> 00:41:52,000 имаше некаква врска меѓу максимум и мин. 597 00:41:52,000 --> 00:41:58,000 Мислам дека тоа беше нешто како ако макс е секогаш помалку од мин. 598 00:41:58,000 --> 00:42:00,000 Добив тоа. 599 00:42:00,000 --> 00:42:04,000 [Сем] Или како ако макс не е помалку од мин или нешто слично, 600 00:42:04,000 --> 00:42:06,000 бидејќи тоа би значело дека сте бараа сè. 601 00:42:06,000 --> 00:42:13,000 >> Да, па што звучи сето тоа максимум и мин се однесуваат на? 602 00:42:13,000 --> 00:42:16,000 [Сем] Вредности дека-броеви дека се ќе се смени 603 00:42:16,000 --> 00:42:18,000 во однос каде што ќе стави средина. 604 00:42:18,000 --> 00:42:20,000 Точно. 605 00:42:20,000 --> 00:42:24,000 [Сем] Во тој момент, тоа нема да [недоловим] пресмета максимум и мин. 606 00:42:24,000 --> 00:42:29,000 Средина е оваа максимум и мин идеја. 607 00:42:29,000 --> 00:42:35,000 Дали тоа има смисла да се луѓе? 608 00:42:35,000 --> 00:42:39,000 Ако бевме да почнат да бараат во тоа како ние ќе го направите ова повторување, 609 00:42:39,000 --> 00:42:43,000 ти си сосема во право дека сакате да користите некој вид на не-додека јамка. 610 00:42:43,000 --> 00:42:49,000 Но, претпоставувам дека доколку се присетиме што се случува на местото на оваа низа 611 00:42:49,000 --> 00:42:53,000 и она што е навистина се случува-I'm ќе пишувам овде- 612 00:42:53,000 --> 00:42:58,000 на самиот прв повторување на бинарни пребарување, имаме- 613 00:42:58,000 --> 00:43:05,000 Одам да се користи б и д да го означи почетокот. 614 00:43:05,000 --> 00:43:10,000 А потоа на крајот на низата. 615 00:43:10,000 --> 00:43:14,000 Ние знаеме дека на почетокот е на 4 право овде, 616 00:43:14,000 --> 00:43:18,000 и знаеме дека на крајот е на 108. 617 00:43:18,000 --> 00:43:23,000 Велат ние сме во потрага по број 15. 618 00:43:23,000 --> 00:43:27,000 Прв пат ќе го направите ова, како што видовме претходно, 619 00:43:27,000 --> 00:43:30,000 средина е или ќе биде 16 или 23 620 00:43:30,000 --> 00:43:34,000 во зависност од тоа како ние се пресмета работи надвор. 621 00:43:34,000 --> 00:43:37,000 Од рамномерно поделба во средината ќе ни даде овој простор 622 00:43:37,000 --> 00:43:42,000 помеѓу 16 и 23, не може рамномерно да го подели 623 00:43:42,000 --> 00:43:47,000 или ја делат и да добијат во вистинска средина. 624 00:43:47,000 --> 00:43:49,000 Ние ќе се погледне во 16. 625 00:43:49,000 --> 00:43:55,000 Ќе се реализира "Еј, 16> 15 што го барате." 626 00:43:55,000 --> 00:43:59,000 Да потоа да се погледне на левата половина од низата 627 00:43:59,000 --> 00:44:03,000 она што ние ќе завршуваат прави е отфрлајќи 628 00:44:03,000 --> 00:44:07,000 целата оваа горниот дел 629 00:44:07,000 --> 00:44:16,000 и рече: "Добро, сега нашата крајна точка ќе биде тука." 630 00:44:16,000 --> 00:44:22,000 Следниот повторување на нашата телефонска линија, ние сме сега се гледа во оваа низа, 631 00:44:22,000 --> 00:44:25,000 ефикасно ја исфрли овој дел, бидејќи сега 632 00:44:25,000 --> 00:44:30,000 ако ние сме преземање на средина да биде разликата помеѓу почеток и крај, 633 00:44:30,000 --> 00:44:34,000 ќе најдеме нашата средина да биде 8, 634 00:44:34,000 --> 00:44:40,000 кои потоа може да го тестира 8 да се види каде тоа е во однос на бројот што го барате, 635 00:44:40,000 --> 00:44:44,000 15, најде дека 15 е поголема, 636 00:44:44,000 --> 00:44:49,000 така што мораме да се движи на десно дел од листата, 637 00:44:49,000 --> 00:44:51,000 што знаеме, бидејќи ние сме луѓе, а ние може да се види. 638 00:44:51,000 --> 00:44:54,000 Ние знаеме дека право дел ќе биде таму каде што ја најде, 639 00:44:54,000 --> 00:45:01,000 но компјутерот не знае дека, така што ќе направите е ние ќе всушност 640 00:45:01,000 --> 00:45:04,000 се тоа оди нагоре, а сега на почетокот и на крајот 641 00:45:04,000 --> 00:45:11,000 се на истото место, па средина станува само број во списокот во тој момент, 642 00:45:11,000 --> 00:45:16,000 што е 15, а ние сме го најде. 643 00:45:16,000 --> 00:45:21,000 Дали тоа фрли малку повеќе светло врз каде што целата оваа максимум и мин нотација се случува, 644 00:45:21,000 --> 00:45:24,000 следење на крајни точки на низата со цел да дознаам 645 00:45:24,000 --> 00:45:35,000 како да се намали работи надолу? 646 00:45:35,000 --> 00:45:42,000 >> Што ќе се случи ако ова не беа рамноправни до 15 часот? 647 00:45:42,000 --> 00:45:52,000 Што ако бевме во потрага за 15 и, наместо тоа, овој број исто така беа 16? 648 00:45:52,000 --> 00:45:54,000 Ние би рекол: "О, тоа е поголем. 649 00:45:54,000 --> 00:45:57,000 Сакаме да се вратиме на лево. " 650 00:45:57,000 --> 00:46:01,000 И ние ќе се движи нашата e на правото, 651 00:46:01,000 --> 00:46:06,000 на која точка имаме крајната точка што ќе биде спротивставени. 652 00:46:06,000 --> 00:46:09,000 Тоа не би било во можност да пребарувате за повеќе елементи 653 00:46:09,000 --> 00:46:13,000 бидејќи сега имаме крајната точка и нашата почетна точка, 654 00:46:13,000 --> 00:46:16,000 нашите максимум и нашата мин, сега се превртува. 655 00:46:16,000 --> 00:46:23,000 Ние пребарувате низ целата низа. Ние не можат да најдат ништо. 656 00:46:23,000 --> 00:46:27,000 Тоа е точката во која ние би сакале да се каже, "Добро, ние ќе го запре овој алгоритам. 657 00:46:27,000 --> 00:46:34,000 Ние не најде ништо. Ние знаеме дека не е тука. " 658 00:46:34,000 --> 00:46:36,000 Како е тоа? 659 00:46:36,000 --> 00:46:40,000 [Студентски] Како точно се на компјутерот се префрлиш на крајот? 660 00:46:40,000 --> 00:46:45,000 Како не на крајот заврши пред почетокот? 661 00:46:45,000 --> 00:46:48,000 На крајот завршува пред почетокот 662 00:46:48,000 --> 00:46:54,000 бидејќи на математика што ние ќе треба да се направи секој пат кога ќе го направите ова. 663 00:46:54,000 --> 00:47:00,000 Начинот на кој ние трампа е ако гледаш прв пат правиме оваа swap 664 00:47:00,000 --> 00:47:03,000 каде што имаме почетокот на 4 и на крајот 665 00:47:03,000 --> 00:47:13,000 сите патот надолу во 108 и нашата средина, да речеме, на 16 - 666 00:47:13,000 --> 00:47:20,000 Одам да го ресетирате оваа назад кон 15-ако ние сме во потрага по 15, 667 00:47:20,000 --> 00:47:25,000 знаевме дека она што го правевме кога проверив 16 и виде дека е поголема 668 00:47:25,000 --> 00:47:28,000 и сакаше да ја отфрли целата правото дел на листата, 669 00:47:28,000 --> 00:47:36,000 видовме дека она што сакав да го направам е се помести ова е токму тука. 670 00:47:36,000 --> 00:47:44,000 Ефикасно, e доби пресели во еден пред средина. 671 00:47:44,000 --> 00:47:48,000 Исто така, кога го направивме ова повторување на алгоритмот 672 00:47:48,000 --> 00:47:51,000 и средишна точка беше во 8, 673 00:47:51,000 --> 00:47:55,000 ние откривме дека 8 <15 па сакаме да се преселат на б 674 00:47:55,000 --> 00:48:00,000 еден минатото средина. 675 00:48:00,000 --> 00:48:07,000 Сега, на почетокот и на крајот се и двете заедно во ова 15. 676 00:48:07,000 --> 00:48:10,000 >> Ако би се случува да се погледне за некои други, а не 15, 677 00:48:10,000 --> 00:48:14,000 или ако тоа имала 15 наместо е 16, 678 00:48:14,000 --> 00:48:20,000 ние ќе се најде дека е ние сакаме да се преселат еден пред средина. 679 00:48:20,000 --> 00:48:33,000 Сега е ќе биде таму flipped помалку од б. 680 00:48:33,000 --> 00:48:39,000 Ајде да одиме преку тоа како ние всушност заврши кодирање овој алгоритам. 681 00:48:39,000 --> 00:48:44,000 Знаеме дека сакате да ја имаат оваа средина пресметка. 682 00:48:44,000 --> 00:48:48,000 Ние знаеме исто така, дека ние сакаме да ги пратите на почетокот и на крајот на низата 683 00:48:48,000 --> 00:48:51,000 на нашите сегашни низа за да можеме да дознаам 684 00:48:51,000 --> 00:48:56,000 каде што оваа левата половина на листата е и каде десната половина на листата е. 685 00:48:56,000 --> 00:49:03,000 Тоа го правиме со било започне и ќе заврши, 686 00:49:03,000 --> 00:49:07,000 или можеме да ги наречеме мин и макс. 687 00:49:07,000 --> 00:49:10,000 Ќе се користи започне и ќе заврши тоа време. 688 00:49:10,000 --> 00:49:15,000 Кога ќе започнете, ако се погледне назад во нашиот пример овде долу, 689 00:49:15,000 --> 00:49:20,000 нашите почетокот беше поставен на самиот почеток на низата, како природна. 690 00:49:20,000 --> 00:49:25,000 Што индекс беше ова? Она што нашите треба да започне да се? 691 00:49:25,000 --> 00:49:27,000 Даниел. 692 00:49:27,000 --> 00:49:30,000 [Даниел] haystack [0]. 693 00:49:30,000 --> 00:49:37,000 [Нејт] Да, па ние би можеле да го поставите еднаква на стогот [0]. 694 00:49:37,000 --> 00:49:40,000 Проблемот, сепак, е дека ова ни дава не на позицијата на првиот елемент. 695 00:49:40,000 --> 00:49:45,000 Тоа ни дава индексот на првиот елемент или вистинската вредност на таа првата позиција. 696 00:49:45,000 --> 00:49:47,000 [Студентски] Тоа ќе се претворат во 0,20? 697 00:49:47,000 --> 00:49:52,000 [Нејт] Што тоа ќе го направите е-Па, тоа не ќе да било конвертирање на. 698 00:49:52,000 --> 00:49:56,000 Што тоа ќе го стори тоа ќе се сместат 4 во започнете, 699 00:49:56,000 --> 00:49:59,000 и тогаш тоа ќе биде тешко да се прават споредби против почне 700 00:49:59,000 --> 00:50:03,000 бидејќи Бегин ќе одржи вредноста на 4, 701 00:50:03,000 --> 00:50:06,000 кое е почеток на нашата низа, 702 00:50:06,000 --> 00:50:08,000 но ние сакаме да ги пратите на индекси во низа 703 00:50:08,000 --> 00:50:11,000 што е спротивно на вредностите. 704 00:50:11,000 --> 00:50:17,000 Ние всушност ќе се користи 0, како што. 705 00:50:17,000 --> 00:50:20,000 За крај на низата-Шарлот донесе оваа по малку порано. 706 00:50:20,000 --> 00:50:23,000 Ова е местото каде што ќе се земат предвид нула индексирање. 707 00:50:23,000 --> 00:50:25,000 >> Шарлот, што е крај на низата? 708 00:50:25,000 --> 00:50:28,000 Што е индексот на крајот? 709 00:50:28,000 --> 00:50:30,000 [Шарлот] Големина - 1. 710 00:50:30,000 --> 00:50:32,000 Да, и која големина треба да се користи? 711 00:50:32,000 --> 00:50:35,000 Ние треба да го користи капитал големина или мали големина? 712 00:50:35,000 --> 00:50:37,000 Капитал големина. 713 00:50:37,000 --> 00:50:42,000 Во овој случај, можеме да го користите главниот град големина. 714 00:50:42,000 --> 00:50:45,000 Ако сакаме оваа функција да биде пренослив 715 00:50:45,000 --> 00:50:48,000 и да го користите оваа функција во други програми, 716 00:50:48,000 --> 00:50:50,000 ние всушност може да го користите мали големина. 717 00:50:50,000 --> 00:50:52,000 Тоа е во ред. 718 00:50:52,000 --> 00:51:01,000 Но Шарлот е сосема во право дека сакаме да имаме големина - 1. 719 00:51:01,000 --> 00:51:03,000 Во овој момент- 720 00:51:03,000 --> 00:51:05,000 [Студентски] Како е тоа што можете да го користите големи големина? 721 00:51:05,000 --> 00:51:07,000 Како е тоа што ние може да се користи големи букви големина? 722 00:51:07,000 --> 00:51:13,000 Излегува дека овие # дефинира се, навистина, 723 00:51:13,000 --> 00:51:19,000 под хауба, текст како пронаоѓање и заменување, ако тоа го прави смисла. 724 00:51:19,000 --> 00:51:24,000 Кога ќе компајлирате вашиот код, препроцесирачка фаза 725 00:51:24,000 --> 00:51:27,000 на компајлерот оди преку датотека, 726 00:51:27,000 --> 00:51:31,000 и тоа изгледа за секаде онаму каде што сте го напишале капитал големина, 727 00:51:31,000 --> 00:51:39,000 и го заменува тој текст буквално со 8, исто како што. 728 00:51:39,000 --> 00:51:42,000 Во таа смисла, ова е многу различно од една променлива. 729 00:51:42,000 --> 00:51:45,000 Тоа не преземат која било од простор во меморијата. 730 00:51:45,000 --> 00:51:52,000 Тоа е едноставен текст замена трик. 731 00:51:52,000 --> 00:51:57,000 Во овој случај, ние ќе треба да користите големина. 732 00:51:57,000 --> 00:52:01,000 Од тука можеме да сакате да направите некои вид на повторување, 733 00:52:01,000 --> 00:52:03,000 и ние сме на вистинскиот пат со нашите не-додека јамка. 734 00:52:03,000 --> 00:52:08,000 Ние сакаме да се направи нешто додека состојбата не држи повеќе, 735 00:52:08,000 --> 00:52:12,000 и како што видовме претходно, видовме дека тој услов 736 00:52:12,000 --> 00:52:19,000 беше навистина дека не сакаме на крајот 737 00:52:19,000 --> 00:52:24,000 да биде помал од почнете. 738 00:52:24,000 --> 00:52:26,000 >> Ова е нашиот запирање состојба. 739 00:52:26,000 --> 00:52:35,000 Ако тоа се случи, ние сакаме да се запре и декларираат како "Еј, ние не пронашле ништо." 740 00:52:35,000 --> 00:52:43,000 Да го изразат ова, ние сакаме да се користи некој вид на јамка. 741 00:52:43,000 --> 00:52:49,000 Во овој случај, тоа ќе биде не-додека јамка, а за телефонска линија, додека јамка? 742 00:52:49,000 --> 00:52:51,000 Ние имаме не-додека јамка тука. 743 00:52:51,000 --> 00:52:53,000 Дали вие момци како што пристап? 744 00:52:53,000 --> 00:52:59,000 Дали мислите дека треба да се обидеме поинаков пристап? 745 00:52:59,000 --> 00:53:01,000 Кевин, секој мисли? 746 00:53:01,000 --> 00:53:06,000 Ние би можеле да имаат време јамка, затоа што знаеме максимална 747 00:53:06,000 --> 00:53:11,000 ќе биде поголема од мин во почетокот относнотова. 748 00:53:11,000 --> 00:53:14,000 Да, па нема иницијализација што треба да се случи. 749 00:53:14,000 --> 00:53:17,000 Оние не-додека петелки се големи кога треба да се иницијализира нешто 750 00:53:17,000 --> 00:53:21,000 пред потоа тестирање, а тука 751 00:53:21,000 --> 00:53:26,000 знаеме дека ние нема да се задржи реиницијализирање двете започне и ќе заврши 752 00:53:26,000 --> 00:53:28,000 секој круг на јамка. 753 00:53:28,000 --> 00:53:32,000 Ние знаеме дека ние сакаме да ги иницијализира, тогаш проверете нашата состојба. 754 00:53:32,000 --> 00:53:38,000 Во овој случај, јас всушност ќе одиме со едноставен додека јамка. 755 00:53:38,000 --> 00:53:44,000 Излегува дека не се прави додека петелки се користи прилично ретко. 756 00:53:44,000 --> 00:53:49,000 А многу места дури и не ги учат се додека петелки. 757 00:53:49,000 --> 00:53:53,000 Тие се добри за ракување со корисник влез, па видовме многу од нив досега. 758 00:53:53,000 --> 00:53:59,000 Но нормално и додека петелки се многу почести. 759 00:53:59,000 --> 00:54:03,000 Излегува дека оваа состојба како што е напишана 760 00:54:03,000 --> 00:54:09,000 ќе не навистина ни направи многу добро, и зошто е тоа така? 761 00:54:09,000 --> 00:54:11,000 Жал ми е, јас не знам вашето име. 762 00:54:11,000 --> 00:54:13,000 Јас сум Џери. >> Извини? 763 00:54:13,000 --> 00:54:15,000 Тоа е Б-О-R-У-I. 764 00:54:15,000 --> 00:54:18,000 О, во ред. 765 00:54:18,000 --> 00:54:23,000 Јас не те гледам на мојата листа. 766 00:54:23,000 --> 00:54:26,000 Ох, тоа е затоа што, ох, тоа има смисла. 767 00:54:26,000 --> 00:54:31,000 Дали имате идеја зошто ова додека јамка не би можеле да работат како што треба, 768 00:54:31,000 --> 00:54:38,000 како што е напишано со состојба? 769 00:54:38,000 --> 00:54:43,000 [Џери] Сакаш да кажеш како сакате сите работи откако во-? 770 00:54:43,000 --> 00:54:46,000 Да, па тоа е еден. 771 00:54:46,000 --> 00:54:49,000 Ние можеби ќе мора да се стави сите овие работи во додека јамка, што е сосема точно. 772 00:54:49,000 --> 00:54:55,000 Од друга работа што е малку повеќе проблематични, сепак, е дека оваа состојба не функционира. 773 00:54:55,000 --> 00:54:57,000 [Студентски] Вие треба да го флип. 774 00:54:57,000 --> 00:55:04,000 Право, па овој услов не некогаш ќе биде вистина првично начинот на кој ние разговаравме за тоа. 775 00:55:04,000 --> 00:55:08,000 Ние сакаме да се направи нешто до крајот <започне, 776 00:55:08,000 --> 00:55:13,000 но ние сакаме да направиме нешто додека 777 00:55:13,000 --> 00:55:21,000 започне ≤ крај. 778 00:55:21,000 --> 00:55:24,000 >> Тука е дека пресврт на логиката таму. 779 00:55:24,000 --> 00:55:27,000 Јас сум виновен за правење на овие грешки цело време. 780 00:55:27,000 --> 00:55:31,000 [Студентски] Зошто тоа мора да биде помала или еднаква на? 781 00:55:31,000 --> 00:55:33,000 Бидејќи се сеќаваш случај дека ние мора да 782 00:55:33,000 --> 00:55:36,000 каде што имаше само еден елемент, и бевме долу, 783 00:55:36,000 --> 00:55:43,000 и ние се гледа во само 15 во нашата низа? 784 00:55:43,000 --> 00:55:47,000 И нашиот почеток и нашиот крај беа исти елемент. 785 00:55:47,000 --> 00:55:50,000 Ние сакаме да бидете сигурни дека ние се справи со тој случај. 786 00:55:50,000 --> 00:55:54,000 Ако ние не директно помалку од, 787 00:55:54,000 --> 00:55:58,000 ние само ќе бидат во можност да се фаќате за 2-елемент низа. 788 00:55:58,000 --> 00:56:06,000 Откако стигнавме до тој последен елемент, ако тоа беа нашите елемент, ние никогаш нема да го најдете. 789 00:56:06,000 --> 00:56:10,000 Сега тука, можеме да направиме токму како што велеа. 790 00:56:10,000 --> 00:56:15,000 Можеме да почнеме plopping работи во право во средината на нашата додека јамка. 791 00:56:15,000 --> 00:56:20,000 Ние можеме одеднаш во нашата средина. 792 00:56:20,000 --> 00:56:24,000 Ние можеме да ги преземе сите на овие ако извештаи, 793 00:56:24,000 --> 00:56:30,000 повлечете ги од ова не-време јамка, 794 00:56:30,000 --> 00:56:34,000 одеднаш нив, 795 00:56:34,000 --> 00:56:39,000 чисти работите малку, 796 00:56:39,000 --> 00:56:48,000 и јас ќе одам напред и да ја зачувате оваа ревизија. 797 00:56:48,000 --> 00:56:53,000 И во овој момент, ние сме добивање прилично блиску. 798 00:56:53,000 --> 00:56:55,000 Сем. 799 00:56:55,000 --> 00:56:58,000 Мислам дека, исто така, треба да имаат int средина = големина - 1/2. 800 00:56:58,000 --> 00:57:01,000 Добив тоа, големината - 1/2. 801 00:57:01,000 --> 00:57:05,000 Дали има нешто друго што треба да се промени за таа линија? 802 00:57:05,000 --> 00:57:10,000 Тоа беше добар улов. 803 00:57:10,000 --> 00:57:14,000 >> Што големина направам? Дали сме постојано менување на големина? 804 00:57:14,000 --> 00:57:17,000 Со цел да се задржи на линија како ова, ние мора да се промени големината. 805 00:57:17,000 --> 00:57:21,000 Ние треба да ја смените големината секој пат кога ние одиме околу за телефонска линија. 806 00:57:21,000 --> 00:57:25,000 Но, се сеќавам кога ние се случува преку нашиот пример само малку порано, 807 00:57:25,000 --> 00:57:30,000 и имавме на почетокот на 4 808 00:57:30,000 --> 00:57:33,000 и на крајот на целиот пат во текот на 108? 809 00:57:33,000 --> 00:57:35,000 Како ја пресмета средната точка? 810 00:57:35,000 --> 00:57:38,000 Бевме користење на големина? 811 00:57:38,000 --> 00:57:40,000 Или бевме користење започне и ќе заврши наместо неа? 812 00:57:40,000 --> 00:57:42,000 Тоа е разликата помеѓу крајот и почетокот. 813 00:57:42,000 --> 00:57:50,000 Точно, и како точно треба да се напише тоа, Шарлот? 814 00:57:50,000 --> 00:57:52,000 Само заврши - започнете. 815 00:57:52,000 --> 00:57:55,000 Вие не ќе треба да се направи - 1 816 00:57:55,000 --> 00:57:58,000 бидејќи - 1 е вклучена во крајот и да започне веќе. 817 00:57:58,000 --> 00:58:00,000 [Нејт] Велики, ти си сосема во право. 818 00:58:00,000 --> 00:58:03,000 Ние не треба да направите - 1 затоа што - 1 е вклучен 819 00:58:03,000 --> 00:58:08,000 и изнесува кога ќе се иницијализира на крајот променлива. 820 00:58:08,000 --> 00:58:11,000 >> Дали има нешто друго што треба да направите синтаксички да ја имаат оваа линија има смисла? 821 00:58:11,000 --> 00:58:13,000 [Студентски] Плус започне. >> Плус започнете? 822 00:58:13,000 --> 00:58:15,000 [Студентски] На крајот. 823 00:58:15,000 --> 00:58:20,000 Бидејќи тоа е само пресметува половина од должината. 824 00:58:20,000 --> 00:58:26,000 Ви треба за да додадете започне. 825 00:58:26,000 --> 00:58:31,000 [Нејт] Што тоа ќе се пресмета за нас? 826 00:58:31,000 --> 00:58:35,000 Ако мислиме за крајот на овој прв повторување на јамка, 827 00:58:35,000 --> 00:58:40,000 крајот ќе биде во позиција индекс 7. 828 00:58:40,000 --> 00:58:43,000 Започнете е во позиција 0. 829 00:58:43,000 --> 00:58:47,000 Запомнете, ние сме во потрага за или 830 00:58:47,000 --> 00:58:52,000 положба 3 или позиција 4. 831 00:58:52,000 --> 00:58:56,000 Ако ги погледнеме во оваа математика, само за да се направи тоа малку повеќе материјални, 832 00:58:56,000 --> 00:59:02,000 стави некои броеви тука, имаме 7, 0, 833 00:59:02,000 --> 00:59:10,000 па 7-0, а потоа / 2 834 00:59:10,000 --> 00:59:19,000 е 3 во број поделба, тоа е. 835 00:59:19,000 --> 00:59:26,000 Потоа не ни треба да потоа додадете назад нашите започнете? 836 00:59:26,000 --> 00:59:28,000 Ние не го направи во овој случај. 837 00:59:28,000 --> 00:59:31,000 На првата итерација, тоа ќе биде во ред, бидејќи се започне е 0. 838 00:59:31,000 --> 00:59:36,000 Но, како што напредок, тоа го правиме навистина сите треба само 839 00:59:36,000 --> 00:59:42,000 крајот - почнат / 2. 840 00:59:42,000 --> 00:59:46,000 Има една друга трик тука, а тоа е имено еден од приоритет. 841 00:59:46,000 --> 00:59:49,000 [Студентски] Дали ни е потребна голема заграда? 842 00:59:49,000 --> 00:59:53,000 [Нејт] Точно, а тоа е затоа што ако ние не се стави овие загради, 843 00:59:53,000 --> 00:59:58,000 тогаш оваа линија ќе се толкува наместо 844 00:59:58,000 --> 01:00:09,000 како (на крајот) - (почнат / 2), која дефинитивно не сакам. 845 01:00:09,000 --> 01:00:11,000 Внимавај за оние предност правила. 846 01:00:11,000 --> 01:00:15,000 [Студентски] Зошто не е крај + започнете? 847 01:00:15,000 --> 01:00:17,000 Зошто не е крај + започнете? 848 01:00:17,000 --> 01:00:19,000 [Студентски] Зошто не е тоа тоа? 849 01:00:19,000 --> 01:00:24,000 Зошто тоа ќе биде +? 850 01:00:24,000 --> 01:00:26,000 Мислам дека си во право. 851 01:00:26,000 --> 01:00:28,000 [Студентски] Поради тоа што е просек? 852 01:00:28,000 --> 01:00:31,000 [Нејт] Крајот + почне, ти си сосема во право. 853 01:00:31,000 --> 01:00:34,000 Леле, јас целосно goofed. Во право си. 854 01:00:34,000 --> 01:00:39,000 Ако бевме прави минус, ние би сакале да додадете започне назад внатре 855 01:00:39,000 --> 01:00:43,000 Во овој случај, ти си многу во право дека ние сакаме да се земе просекот од две, 856 01:00:43,000 --> 01:00:45,000 па ние сакаме да ги додадете, за разлика од нив одземе. 857 01:00:45,000 --> 01:00:49,000 [Студентски] Исто така, ќе работи ако не завршуваат - почнат / 2 + започне. 858 01:00:49,000 --> 01:00:55,000 Тоа би, ако правиме-јас верувам дека е така. 859 01:00:55,000 --> 01:01:00,000 >> На пример, ако бевме во потрага по почне, 860 01:01:00,000 --> 01:01:04,000 и ние го префрли овде 861 01:01:04,000 --> 01:01:08,000 до 15. 862 01:01:08,000 --> 01:01:12,000 Сега почнуваат е во положба 2. 863 01:01:12,000 --> 01:01:15,000 Крајот е на позиција 7. 864 01:01:15,000 --> 01:01:21,000 Ако ги одземе, да добиеме 5. 865 01:01:21,000 --> 01:01:24,000 Поделете дека со 2, добиваме 2. 866 01:01:24,000 --> 01:01:27,000 И потоа додадете 2 назад во, 867 01:01:27,000 --> 01:01:30,000 и дека ни добива на 4-то место, 868 01:01:30,000 --> 01:01:33,000 кој е во право тука, што е на средина. 869 01:01:33,000 --> 01:01:36,000 [Студентски] Дали треба да се грижи за завиткување? 870 01:01:36,000 --> 01:01:39,000 Во која смисла ние треба да се грижи за завиткување? 871 01:01:39,000 --> 01:01:43,000 Ако збирот или разликата помеѓу 872 01:01:43,000 --> 01:01:45,000 зависност од тоа како го правиме тоа не е парен број. 873 01:01:45,000 --> 01:01:49,000 А потоа на компјутерот добива збунет дали кога е 2,5; 874 01:01:49,000 --> 01:01:52,000 ви се движи кон лево или кон десно за да се утврди што е на средина? 875 01:01:52,000 --> 01:01:54,000 Добив тоа. 876 01:01:54,000 --> 01:01:56,000 Излегува дека со целобројни поделба, 877 01:01:56,000 --> 01:01:59,000 ние никогаш не се добијат овие броеви со подвижна запирка. 878 01:01:59,000 --> 01:02:01,000 Ние никогаш не го добиете децимални. 879 01:02:01,000 --> 01:02:04,000 Тоа е целосно отфрлена. 880 01:02:04,000 --> 01:02:08,000 Ако имате компјутер се делат две int променливи, 881 01:02:08,000 --> 01:02:11,000 а еден е 7, а другиот е 2, 882 01:02:11,000 --> 01:02:13,000 нема да добие 3,5, како резултат. 883 01:02:13,000 --> 01:02:16,000 Тоа ќе добијат 3. 884 01:02:16,000 --> 01:02:19,000 Остатокот ќе бидат отфрлени, па тоа е ефикасно заокружување- 885 01:02:19,000 --> 01:02:24,000 не е круг, туку кат, ако вие момци се запознаени со тоа во математика, 886 01:02:24,000 --> 01:02:27,000 каде што целосно ја отфрли децимала, 887 01:02:27,000 --> 01:02:31,000 и така си во суштина тоа truncating спушти до најблискиот 888 01:02:31,000 --> 01:02:33,000 целата позиција, до најблискиот цел број. 889 01:02:33,000 --> 01:02:38,000 [Студентски] Но, тогаш тоа е проблематично, бидејќи ако имате низа од 7 елементи 890 01:02:38,000 --> 01:02:43,000 тогаш тоа автоматски ја зема 3 елемент од средината, наместо на 4. 891 01:02:43,000 --> 01:02:46,000 Како да се справиме со тоа? 892 01:02:46,000 --> 01:02:49,000 Тоа е проблематично, бидејќи ако ние имавме низа од 7, 893 01:02:49,000 --> 01:02:54,000 тоа ќе го избере 3 наместо на 4. 894 01:02:54,000 --> 01:02:56,000 Може да се објасни малку повеќе? 895 01:02:56,000 --> 01:02:59,000 [Студентски] Бидејќи ако имате 7 елементи потоа на 4 елементи 896 01:02:59,000 --> 01:03:04,000 ќе биде средишна точка, нели? 897 01:03:04,000 --> 01:03:07,000 Запомни твојот коментар за да се биде нула индексирани, иако. 898 01:03:07,000 --> 01:03:10,000 [Студентски] Да, па во положба 3. Тоа ќе биде на средина. 899 01:03:10,000 --> 01:03:12,000 Да. 900 01:03:12,000 --> 01:03:16,000 О, во ред. Гледам што мислиш. 901 01:03:16,000 --> 01:03:19,000 Тоа е вид на чудно, како што се користи за целата оваа идеја за 902 01:03:19,000 --> 01:03:22,000 да се ослободиме од децимали. 903 01:03:22,000 --> 01:03:26,000 Тоа е голема точка. 904 01:03:26,000 --> 01:03:30,000 Ајде да ја завршиме ова. 905 01:03:30,000 --> 01:03:32,000 Ние пресметува нашата средина. 906 01:03:32,000 --> 01:03:37,000 >> Ние сме тестирање за да видиме дали нашите игла е еднаква на средната вредност. 907 01:03:37,000 --> 01:03:41,000 Ние сме печатење дека ние го најде, но, навистина, она што сакаме да се направи во оваа ситуација? 908 01:03:41,000 --> 01:03:46,000 Ние го најде, затоа сакаме да ги споделите со повикувачот знаат дека ние ја најдов. 909 01:03:46,000 --> 01:03:49,000 Имаме функција која е рационален внесе функција. 910 01:03:49,000 --> 01:03:54,000 Начинот на кој ние се сигнал за повикувачот на нашата функција која ние сме подготвени да одат 911 01:03:54,000 --> 01:03:58,000 е ние велиме, "Еј, тоа е точно." 912 01:03:58,000 --> 01:04:00,000 Како ќе го направите тоа, Кевин? 913 01:04:00,000 --> 01:04:02,000 Ти си одобруваат вашата глава. >> [Кевин] Додај враќање вистина. 914 01:04:02,000 --> 01:04:06,000 [Нејт] Точно, враќање вистина. 915 01:04:06,000 --> 01:04:12,000 Сега, ако тоа не е еднаква, како ние ќе се погледне на левата половина? 916 01:04:12,000 --> 01:04:16,000 Сите идеи? 917 01:04:16,000 --> 01:04:18,000 Стела, сите идеи? 918 01:04:18,000 --> 01:04:21,000 Вие треба да поставите нова позиција за крај. 919 01:04:21,000 --> 01:04:23,000 Да. 920 01:04:23,000 --> 01:04:29,000 Значи ние треба да направите положба на средина - на крајот. 921 01:04:29,000 --> 01:04:33,000 Велики. 922 01:04:33,000 --> 01:04:36,000 Ние треба да се постави нова позиција за на крајот 923 01:04:36,000 --> 01:04:38,000 да се погледне на левата половина. 924 01:04:38,000 --> 01:04:41,000 Ова е она што ние разговаравме за пред каде што 925 01:04:41,000 --> 01:04:44,000 Јас продолжувам да одам назад во овој пример. 926 01:04:44,000 --> 01:04:50,000 Имам започне овде, и тогаш сум на крајот на целиот пат овде. 927 01:04:50,000 --> 01:04:53,000 >> Повторно, ако ние сме во потрага за 15, а нашите средина е на 16, 928 01:04:53,000 --> 01:04:56,000 и сфаќаме, "Упс, 16 е поголема. 929 01:04:56,000 --> 01:04:59,000 Ние сакаме да се преселат на левата половина. " 930 01:04:59,000 --> 01:05:02,000 Ние тогаш ќе се движи на крајот на 15, 931 01:05:02,000 --> 01:05:06,000 и тоа го правиме со преземање на еден далеку од средина 932 01:05:06,000 --> 01:05:09,000 и поставување дека нашата нова цел. 933 01:05:09,000 --> 01:05:12,000 Исто така, ако сакаме да се погледне на десната половина, колку ние би го сториле тоа? 934 01:05:12,000 --> 01:05:14,000 Дали имате идеја? 935 01:05:14,000 --> 01:05:22,000 [Студентски] Вие само го поставите почнат да Средина + 1. 936 01:05:22,000 --> 01:05:24,000 [Нејт] Велики. 937 01:05:24,000 --> 01:05:29,000 И сега и во случај дека ние не најде ништо, 938 01:05:29,000 --> 01:05:32,000 дали тоа се згрижени за нас? 939 01:05:32,000 --> 01:05:36,000 Даниел, дали тоа се згрижени за нас? 940 01:05:36,000 --> 01:05:38,000 [Даниел] бр 941 01:05:38,000 --> 01:05:40,000 [Нејт] Ако го направите преку целата низа и ние не најде ништо, 942 01:05:40,000 --> 01:05:42,000 каде што ќе бидат згрижени, или ние треба да се грижи за неа? 943 01:05:42,000 --> 01:05:44,000 [Даниел] На време состојба. 944 01:05:44,000 --> 01:05:48,000 [Нејт] Да, а состојба, точно. 945 01:05:48,000 --> 01:05:51,000 Тоа ќе се грижи за минува низ целата низа, ако ние не најде ништо. 946 01:05:51,000 --> 01:05:53,000 Овој додека јамка ќе заврши. 947 01:05:53,000 --> 01:05:56,000 Ние никогаш нема да се соочуваат со овој услов, 948 01:05:56,000 --> 01:06:03,000 и ние може да се врати лажни. 949 01:06:03,000 --> 01:06:10,000 Ние, исто така може да го оставите ова ако тука се допаѓа ова 950 01:06:10,000 --> 01:06:14,000 затоа што ако ова ако изјава е точно, 951 01:06:14,000 --> 01:06:16,000 и нашата функција ќе се врати, 952 01:06:16,000 --> 01:06:21,000 и така ние ќе суштина ја прекинете оваа функција во овој момент 953 01:06:21,000 --> 01:06:24,000 кога ќе се вратиме точно. 954 01:06:24,000 --> 01:06:28,000 Но, она што се случува со оваа структура овде? 955 01:06:28,000 --> 01:06:34,000 Ова ќе работи во целост, или има некои логички мааната таму? 956 01:06:34,000 --> 01:06:37,000 >> Има некои логички пропустот во таму, со начинот на кој се поставени. 957 01:06:37,000 --> 01:06:40,000 Што тоа би можело да биде? 958 01:06:40,000 --> 01:06:43,000 [Студентски] Зошто ви е потребна - и + 1s? 959 01:06:43,000 --> 01:06:47,000 Што ги поставува нашата низа за да биде нашиот нов левата половина и десната половина. 960 01:06:47,000 --> 01:06:51,000 [Студентски] Но, зошто да не може да го направи тоа без - 1s и + 1s? 961 01:06:51,000 --> 01:06:53,000 [Нејт] Можеме да го постави еднаква на средина? 962 01:06:53,000 --> 01:07:04,000 Што може да биде проблематична за тоа? 963 01:07:04,000 --> 01:07:08,000 [Студентски] Претпоставувам дека тоа е неефикасен, бидејќи сте проверка на вредност, која веќе се проверени. 964 01:07:08,000 --> 01:07:11,000 [Нејт] Точно, така Сем е сосема во право. 965 01:07:11,000 --> 01:07:15,000 Ако ја поставите на крајот и да започне еднаква средина 966 01:07:15,000 --> 01:07:18,000 наместо - 1 и + 1 reflectively, 967 01:07:18,000 --> 01:07:22,000 во одреден момент во иднина ќе заврши проверка средина повторно. 968 01:07:22,000 --> 01:07:26,000 [Студентски] почнав pset, а потоа морав нешто слично 969 01:07:26,000 --> 01:07:30,000 каде го заборавив + 1, и заглавил во бесконечна јамка. 970 01:07:30,000 --> 01:07:34,000 Право, затоа што во одреден момент никогаш не се случува да се започне и да заврши 971 01:07:34,000 --> 01:07:39,000 за да всушност се преклопуваат. 972 01:07:39,000 --> 01:07:41,000 Кул. 973 01:07:41,000 --> 01:07:44,000 Има уште една логичка мааната, а тоа е дека ова дефинитивно треба да биде 974 01:07:44,000 --> 01:07:48,000 на друго место ако. 975 01:07:48,000 --> 01:07:55,000 Зошто тоа може да биде? 976 01:07:55,000 --> 01:07:59,000 >> Причината е, ако тоа не е друго ако-видовте тоа, Кевин? 977 01:07:59,000 --> 01:08:02,000 [Кевин] Да, затоа што ти си промена на крајната точка. 978 01:08:02,000 --> 01:08:05,000 [Нејт] Токму така. 979 01:08:05,000 --> 01:08:07,000 Ние сме промена на крајната точка, 980 01:08:07,000 --> 01:08:12,000 и ако тоа е напишано вака-we'll направи простори меѓу- 981 01:08:12,000 --> 01:08:14,000 тоа ќе го провери овој случај. 982 01:08:14,000 --> 01:08:18,000 Овој случај, ако тоа успее, ќе ја прекине надвор од функција. 983 01:08:18,000 --> 01:08:21,000 Тогаш тоа ќе го провериме следниот случај, 984 01:08:21,000 --> 01:08:24,000 и ако тоа успее, ќе се приспособат на крајната точка, 985 01:08:24,000 --> 01:08:28,000 и тогаш тоа ќе продолжи и да го провери овој случај. 986 01:08:28,000 --> 01:08:31,000 Но, во овој момент, ние не сакаме да продолжи проверка. 987 01:08:31,000 --> 01:08:35,000 За среќа, не сме го ресетирате средина тука, 988 01:08:35,000 --> 01:08:39,000 и знаеме дека овој случај нема да успее. 989 01:08:39,000 --> 01:08:44,000 Но, ние дефинитивно сакате да се стави на друго ако таму 990 01:08:44,000 --> 01:08:48,000 иако тоа можеби во овој случај 991 01:08:48,000 --> 01:08:52,000 бидејќи ние не сме за адаптација на средина, би дека се направи разлика? 992 01:08:52,000 --> 01:08:54,000 Не, затоа што овие случаи се исклучуваат. 993 01:08:54,000 --> 01:08:58,000 Повторно, мојата лоша. 994 01:08:58,000 --> 01:09:01,000 Ние не, мислам, треба оваа друго ако. 995 01:09:01,000 --> 01:09:05,000 Ние може да го даде, се обиде и да ја стартувате и да видиме што се случува. 996 01:09:05,000 --> 01:09:08,000 Зграда, се јави грешка. 997 01:09:08,000 --> 01:09:12,000 Тоа е веројатно затоа заминав овие б и д е тука. 998 01:09:12,000 --> 01:09:14,000 Дали имате било какви повеќе од оние на врвот? 999 01:09:14,000 --> 01:09:16,000 Тоа не изгледа како неа. 1000 01:09:16,000 --> 01:09:20,000 Ние одзумирате, изградба, 1001 01:09:20,000 --> 01:09:24,000 таму оди, па сега ако барате 15, 1002 01:09:24,000 --> 01:09:28,000 Да. 1003 01:09:28,000 --> 01:09:30,000 Дозволете ми да зумирате внатре 1004 01:09:30,000 --> 01:09:33,000 15, да. Ние можеме да се кандидира повторно. 1005 01:09:33,000 --> 01:09:36,000 Качувањето на изворниот код, градење, трчање. 1006 01:09:36,000 --> 01:09:41,000 Ние може да пребарувате за нешто како 13, 1007 01:09:41,000 --> 01:09:45,000 и ние не добиваме ништо печатење, така што не е утврди дека за нас. 1008 01:09:45,000 --> 01:09:51,000 Тоа е одлично, бидејќи тоа не е во нашата листа. 1009 01:09:51,000 --> 01:09:53,000 >> Ние сме сега надвор од времето. 1010 01:09:53,000 --> 01:09:55,000 Тоа ќе биде тоа за оваа недела. 1011 01:09:55,000 --> 01:10:00,000 Ви благодариме за приклучувањето и се гледаме подоцна. 1012 01:10:00,000 --> 01:10:02,000 >> [CS50.TV]