[Powered by Google Translate] [Одељак 3 - Пријатнији]
[Роб Бовден - Универзитет Харвард]
>> [Ово је ЦС50. - ЦС50.ТВ]
>> Дакле, прво питање је чудно срочена.
ГДБ вам омогућава да "дебуг" програм, али, конкретно, шта то да радиш?
Ја ћу одговорити на то један, а ја не знам шта се тачно очекује,
па ја претпостављам да је то нешто дуж линије од њега омогућава вам корак по корак
шетња кроз програм, интеракцију са њом, промена варијабле, урадите све ове ствари -
у основи потпуно контролише извршење програма
и испитајте сваку дату део извршења програма.
Дакле, те функције омогућавају да дебуг ствари.
Ок.
Зашто бинарна претрага захтева да се сортирају низ?
Ко жели да одговорим на то?
[Ученик] Зато што не ради ако се то не сортира. >> Да. [Смех]
Ако се то не сортира, онда је немогуће да га поделите на пола
и знам да све са леве стране је мање и све десно
је већа од средње вредности.
Зато је потребно да се сортирају.
Ок.
Зашто је мехур врста у О од н квадрата?
Да ли неко прво желе да дају врло брзо на високом нивоу преглед онога мехур врста је?
[Ученик] Ти основи прође кроз сваки елемент а ви проверите првих неколико елемената.
Ако су они ван где сте их мењате, онда проверите следећих неколико елемената и тако даље.
Када стигнете до краја, онда знате да је највећи елемент налази на крају,
тако да игноришу да један онда наставите даље путем,
и сваки пут морате да проверите један мање елемент док не направите никакве измене. >> Да.
То се зове мехур некако јер ако окренете низ на својој страни, тако да је горе и доле, вертикално,
онда велике вредности ће потонути на дно, а мале вредности ће испливати на врх.
Тако је и добио име.
И да, само проћи.
Стално иде кроз низ, замене већу вредност
да се највеће вредности до дна.
>> Зашто је О н квадрат?
Прво, да ли неко жели да каже зашто је то О н квадрат?
[Ученик] Јер за сваку стазе иде н пута.
Можете бити сигурни да сте узели највеће елемент доле скроз,
онда морате да поновите то за онолико елемената. >> Да.
Зато имајте на уму шта велики О значи и шта значи велике Омега.
Велики О је као горња граница колико споро заправо може да се покрене.
Дакле, рекавши да је О од н квадрата, није О н иначе би било у стању да покрене
у линеарном времену, али то је О од н куб
јер је омеђена О н куб.
Ако је омеђена О од н квадрат, онда је такође ограничен н куб.
Тако да је н квадрат, а у апсолутном најгорем случају то не може да уради боље од н квадрата,
због чега је о н квадрат.
Дакле, да видимо мало математике како излази да је н квадрат,
ако имамо пет ствари у нашој листи, први пут колико свопови бисмо потенцијално треба да
да би добили ово? Хајде да заправо само -
Колико свопови ћемо морати да у првој вожњи Жвакаћа врсте кроз низ?
[Ученик] н - 1. >> Да.
>> Ако постоји 5 елемената, ми ћемо морати да се н - 1.
Затим на другој колико свопови ћемо морати да направи?
[Ученик] н - 2. >> Да.
И трећи ће бити н - 3, а затим за удобност ћу написати последњу двојицу
као и онда ћемо морати да направи 2 свопови и 1 своп.
Претпостављам да је последњи може или не може заправо морати да се деси.
Да ли је то свап? Не знам.
Дакле, ово су укупни износи свопова или барем поређења морате да направите.
Чак и ако не мењате, ви и даље треба да се упореде вредности.
Дакле, постоје н - 1 поређења у првој вожњи кроз низ.
Ако распоред ове ствари, хајде да ствари чине га шест ствари толико ствари стек горе лепо,
и онда ћу до 3, 2, 1.
Дакле, само преуређења ове суме, желимо да видимо колико поређења правимо
у читавом алгоритму.
Дакле, ако би ове момке овде доле,
онда смо још увек само сумирањем међутим много поређења били тамо.
Али, ако саберемо ове и саберемо ове и саберемо њих,
то је још увек исти проблем. Ми само збир те одређене групе.
>> Дакле, сада смо сабирањем 3 н а. То није само 3 н а.
Увек ће бити н / 2 н а.
Дакле, овде се деси да имамо 6.
Ако смо имали 10 ствари, онда можемо да радимо ово груписање на 5 различитих парова ствари
и завршити са н + н + н + н + н.
Дакле, увек ћете добити н / 2 н-их, па то ћемо га Ситница до н квадрат / 2.
И тако, иако је фактор пола, која се дешава да дођу у
због чињенице да кроз сваку итерацију над низом упоредимо 1 мањи
тако да је то како смо добили преко 2, али се још увек н квадрат.
Ми не бринемо о сталном фактор пола.
Дакле, много великих ствари О овако ослања само на врсте раде овакве математике,
раде аритметичке суме и геометријске серије ствари,
али већина њих у овом курсу су прилично јасни.
Ок.
Зашто је убацивање врста омега од н? Шта омега значи?
[Два студента говоре одједном - неразумљив] >> Да.
Омега можете мислити као о доње границе.
>> Стога, без обзира колико је ефикасан ваш врста уметања алгоритам је,
без обзира на списку који је усвојен у, она увек мора да се упореди најмање н ствари
или мора да прелазили преко н ствари.
Зашто је то тако?
[Ученик] Јер, ако је листа сортирана већ, па кроз прва итерација
само могу да гарантују да ће први елемент је најмање,
а друга итерација можете само гарантовати су прве две
јер ви не знате да је остатак листе је сортиран. >> Да.
Ако прође у потпуно сортираног списка, у најмању руку треба да иду преко све елементе
да се види да ништа не треба да се крећете.
Дакле, пролазећи преко листу и рекао ох, ово је вец сортиран,
то је немогуће да зна да сортира све док не провери сваки елемент
да се види да су у сортираном редоследу.
Дакле, доња граница за уметање врсте је Омега н.
Шта најгори случај покренут време стапања врсте,
најгорем случају биће опет велики О?
Дакле, у најгорем сценарију, како обједињавање некако покренем?
[Ученик] Н лог н. >> Да.
Најбрже опште сортирање алгоритми су н лог н. Ви не можете урадити боље.
>> Постоје посебни случајеви, и ако имамо времена данас - али ћемо вероватно вон'т -
смо могли видети један који ради боље од н лог н.
Али, у општем случају, не можете да урадите боље од н лог н.
И обједињавање некако деси да буде једна треба да знате за овај курс који је н лог н.
И тако смо заправо ћете спроводити данас.
И коначно, у не више од три реченице, како се избор сортирања посао?
Да ли неко жели да одговори, а ја ћу бројати ваше реченице
јер ако идете преко 3 -
Да ли се ико сећа какав избор?
Избор врста је обично прилично лако запамтити само од имена.
Ви само прелазили преко низа, пронађете оно највећа вредност или најмањи -
год да би сте сортирање унутра
Дакле, хајде да кажемо да смо за сортирање од најмањег до највећег.
Ви прелазили преко низа, у потрази за било минимум елемент,
изаберите га, а онда само га замени оно што је на првом месту.
А онда на другој прећи преко низа, траже минимум елемент поново,
изаберите га, а затим замените га са оним што је на другој позицији.
Дакле, ми само брање и избор минималне вредности
и уметање их у предњем низа све док се сортирају.
Питања о томе?
>> То неминовно појављују у облику морате да попуните када подношења псет.
Они су у основи одговори на њих.
Ок, сада кодирање проблеме.
Већ сам послао преко поште - Да ли је неко не добијете ту поруку? Ок.
Већ сам послао преко е-поште простор који ћемо да се користи,
а ако кликнете на моје име - па мислим да ћу бити на дну
због уназад р - али ако кликнете на моје име видећете 2 ревизије.
Ревизија 1 ће бити већ копирали и налепили код на просторима
за претрагу ствари ћеш морати да спроведе.
А Ревизија 2 ће бити нека ствар коју можемо имплементирати након тога.
Дакле, можете да кликнете на мом ревизији 1 и раде од тамо.
А сада желимо да спроведе претрагу бинарни.
>> Да ли неко жели да само дају Псеудокод високом нивоу објашњење
од чега ћемо морати да урадимо за претрагу? Да.
[Ученик] Ти само узети средину низа и видети да ли је оно што тражите
је мање од тога, или више од тога.
И ако је мање, идете до половине која је мање,
а ако је више, идите на полувремену који је више и ви да поновите док не добијете само једну ствар.
[Боуден] Да.
Приметимо да је наш бројеви низ већ сортиран,
па то значи да можемо искористити да и ми прво да провери,
ок, ја тражим број 50.
Тако да могу да идем у средини.
Средњи је тешко дефинисати када је паран број ствари,
али рецимо да увек ћемо скратити на средини.
Дакле, овде имамо 8 ствари, тако да је средњи ће бити 16.
Ја тражим 50, па 50 је већа од 16 година.
Тако сада у суштини могу третирати као своју палету ових елемената.
Ја могу да бацим све од 16 преко.
Сада ми је само низ ова 4 елемента, а ја понављам.
Па онда и ја желим да поново пронађе средину, што ће бити 42.
42 је мање од 50 година, тако да могу да бацим та два елемента.
Ово је мој преостали низ.
Идем да поново пронађе средину.
Претпостављам да је 50 лош пример, јер сам увек био бацање ствари на левој страни,
али по истом мером, ако тражим нешто
и то је мање него елемента сам тренутно гледам,
онда ћу да бацим све на десно.
Зато сада морамо да спроведу то.
Обратите пажњу да треба да прође у величини.
Такође можемо не треба да теже код величине.
Дакле, ако се ослободимо тога # дефине -
Ок.
Како могу лепо да схватим шта је величина низа бројева тренутно?
>> Колико су елементи у низу бројева?
[Студената] Бројеви, заграде, дужина.?
[Бовден] То не постоји у Ц.
Потребна дужина..
Низови немају својства, тако да не постоји дужина власништво низова
да ће само вам дати колико год се деси да буде.
[Ученик] Види колико меморије има и поделите колико - >> Да.
Дакле, како можемо видети колико меморије има? >> [Ученик] сизеоф. >> Да, сизеоф.
Сизеоф је оператор који ће вратити величину низа бројева.
И то ће бити, међутим многи целих постоје пута величине цео број
пошто је то колико меморије је заправо узима се.
Дакле, ако желим број ствари у низу,
онда ћу желети да поделите по величини цео број.
Ок. Тако да ми дозвољава да прође у величини овде.
Зашто морам да прође у величини уопште?
Зашто не могу да урадим сам овде инт сизе = сизеоф (пласт) / сизеоф (инт)?
Зашто се то не ради?
[Ученик] То није глобална променљива.
[Бовден] Пласт постоји и ми пролази у бројевима, као пласту сена,
и ово је врста наговештавање онога што долази. Да.
[Ученик] Пласт је само референца на њега, тако да ће се вратити колико је велик тај референца.
Да.
Сумњам у предавању које сте видели гомилу још стварно, зар не?
Управо смо разговарали о томе.
Дакле, стек је место где све ваше променљивих ће бити сачувана.
>> Свака меморија која се додељује за локалне променљиве се иде у стек,
и свака функција добија свој простор на стек, свој стек оквир је оно што се зове.
Дакле, главни има стека оквир, а унутар ње ће постојати овај бројева низ,
и да ће то бити од величине сизеоф (бројеви).
То ће имати величину бројева подељен по величини елемената,
али да су сви живи унутар оквира стека ГЛАВНИ а.
Када зовемо претрага, добија свој стека оквир,
сопствени простор за складиштење свих својих локалних променљивих.
Али ови аргументи - тако пласт није копија овог целог низа.
Ми не прође у читавом низу као копије у претрази.
То доноси референцу на том низу.
Дакле, тражи да приступите ове бројеве кроз ову референцу.
Још увек приступ ствари које живе унутар Главног је стек оквира,
али у суштини, када дођемо до показивача, који би ускоро требало да буде,
то је оно што су показивачи.
Показивачи су само референце на ствари, а можете да користите показиваче за приступ ствари
који су у другим стварима "стека оквире.
Дакле, иако је локална бројеви на главни, ми смо још увек можете приступити преко овог показивача.
Али, пошто је само показивач и то је само референца,
сизеоф (пласт) само враћа величину самог референце.
То не врати на величину ствари то је окренут ка.
То не врати стварну величину бројева.
И тако се то неће радити јер желимо да.
>> Питања о томе?
Показивачи ће нестати у знатно више гори детаља у недељама које долазе.
И то је разлог зашто много ствари које можете да видите, већина претраживача ствари или сортирање ствари,
они готово сви ће морати да узме стварну величину низа,
јер у Ц, ми немамо појма шта је величина низа се.
Потребно је да ручно прође унутра
И не можете ручно прође у читавом низу, јер ти само пролази у референци
и то не може да добије величину од референце.
Ок.
Дакле, сада желимо да спроведе оно што је објашњено раније.
Можете да радите на њему минут,
а ви не морате да бринете о добијању све савршено 100% ради.
Само пишем уп Псеудокод пола о томе како мислите да би требало да раде.
Ок.
Нема потребе да се у потпуности са овим уради још.
Али, да ли ико осећа пријатно са оним што имају сада,
као нешто што можемо да радимо са заједно?
Да ли неко жели волонтирати? Или сам насумично ће покупити.
То не мора да буде у праву по свим мерилима, али нешто можемо изменити у радно стање.
[Ученик] Наравно. >> Реду.
Дакле, можете да сачувате ревизију кликом на малу икону Саве.
Ти си Рамиа, зар не? >> [Ученик] Да. >> [Боуден] Ок.
Тако да сада могу да виде ваш ревизију и свако може повући ревизију.
А овде имамо - Ок.
Тако Рамиа отишао са Рекурзив решење, што је свакако важи решење.
Постоје два начина на које можете да урадите овај проблем.
Можете да га урадим итеративно, или рекурзивно.
Већина проблема наиђете који може да се уради рекурзивно се такође може итеративно уради.
Дакле, овде смо га урадили рекурзивно.
>> Да ли неко жели да дефинише шта то значи да се функција рекурзивно?
[Ученик] Када имате функцију себе зову
и онда се зову док се излази са тачно и истинито. >> Да.
Рекурзивни функција је само функција која се зове.
Постоје три велике ствари које морају да рекурзивни функција имају.
Први је очигледно, она се зове.
Други је основни случај.
Дакле, у неком тренутку функција треба да престане која себе назива,
и то је оно што је за основни случај.
Дакле, овде знамо да би требало да престане, треба одустати у нашој потрази
када почетак једнако крај - и ми ћемо прећи шта то значи.
Али, коначно, последња ствар која је важна за рекурзивних функција:
функције мора некако приближи случај базу.
Као, ако ниси стварно ажурирање ништа када правите другу рекурзивно позив,
Ако буквално само позивањем функције поново са истим аргументима
и без глобалне променљиве су се променили или ништа,
никада нећете стићи случај базе, у ком случају то је лоше.
То ће бити бесконачна рекурзије и стек прекорачење.
Али овде видимо да ажурирање се дешава, јер смо започели ажурирање + крај / 2,
вршимо ажурирање овде крај аргумент, ми овде ажурирање почетну тезу.
Дакле, у свим рекурзивних позива смо ажурирање нешто. Ок.
Да ли желите да нам прође кроз ваше решење? >> Наравно.
Ја користим СеарцхХелп, тако да сваки пут направим ову функцију позив
Имам почетак где тражим у низу и крај
где ја гледам на низ.
>> На сваком кораку где се каже да је средњи елемент, који је почетак крај + / 2,
је да је једнак ономе што тражите?
А ако јесте, онда смо га пронашли, а ја претпостављам да добија прошао горе нивое рекурзије.
А ако то није истина, онда проверите да ли је средња вредност низа је превелика,
у ком случају гледамо на левој половини низа тако што ћете од почетка до средњег индекса.
И иначе радимо завршни половину.
[Боуден] Ок.
Звучи одлично.
Ок, па пар ствари, и заправо, ово је веома високог нивоа ствар
да никада неће морати да знају за овај курс, али то је истина.
Рекурзивних функција, увек чути да су они лош договор
јер ако рекурзивно звати превише пута, добићете стека прекорачење
јер, као што сам раније рекао, свака функција добија свој стек оквир.
Дакле, сваки позив Рекурзив функције добија свој стек оквир.
Дакле, ако направите 1.000 рекурзивног позива, добићете 1.000 стек оквире,
и брзо да доведе до потребе превише стек оквире и ствари једноставно пукне.
Зато рекурзивне функције су генерално лоши.
Али постоји леп подскуп рекурзивних функција зове реп-рекурзивно функције,
и ово се дешава да буде пример једног где ако компајлер уочава ово
и то би, ја мислим - у кланг ако прође то тхе-О2 заставе
онда ће приметити да је ово реп рекурзивна и да ствари добро.
>> То ће поново исти оквир стека изнова и изнова за сваки рекурзивног позива.
И тако, јер ви користите исту стека оквир, не морате да бринете о томе
икада стек преливања, а у исто време, као што сте раније рекли,
где се некада вратите тачно, онда то мора да се врати до свих ових рамова стека
и 10. позив СеарцхХелп мора да се врати у 9., мора да се врати до 8..
Тако да не треба да се догоди када су функције реп рекурзивно.
И тако оно што је ова функција репа рекурзивна је обавештење да је за било коју позивом на сеарцхХелп
Рекурзив позив да се то што је оно што се враћа.
Дакле, у првом позиву СеарцхХелп, одмах смо се врате лажна,
одмах врати истина, или ћемо направити рекурзивно позив СеарцхХелп
где оно што ми враћа оно што тај позив се враћа.
И нисмо могли да урадите ако смо урадили нешто слично инт к = СеарцхХелп, повратка к * 2,
само неки случајни промена.
>> Дакле, сада ово рекурзивног позива, ова инт к = СеарцхХелп рекурзивни позив,
више није реп рекурзивна јер заправо не мора да се врати
повратак на претходни оквир стек, тако да је претходни позив на функцију
затим могу да ураде нешто са повратном вредношћу.
Дакле, ово није реп рекурзивна, али оно што смо имали пре него што је лепо реп рекурзивна. Да.
[Ученик] не би требало други основни случај да се провери прво
јер може бити ситуација када када га прође аргумент
сте старт = крај, али они су игла вредност.
Питање је можемо ли покренути у случају када је крај игла вредност
или старт = крај, на одговарајући начин, старт = крај
а ви нисте у ствари цхецкед још ту посебну вредност,
почните + крај / 2 је само ће бити иста вредност.
Али већ смо се вратили лажна и заправо никада не проверава вредност.
Дакле, у најмању руку, у првом позиву, ако је величина 0, онда желимо да се врати фалсе.
Али, ако је величина 1, онда старт неће једнаку краја,
и ми ћемо барем провери један елемент.
Али мислим да си у праву у томе можемо завршити у случају када почну + крај / 2,
Почетак завршава се као почетак краја + / 2,
али ми заправо никада проверили тај елемент.
>> Дакле, ако смо прво проверите је средња вредност елеменат тражимо,
онда можемо одмах да врати истина.
Остало ако су једнаки, онда нема смисла даље
јер ми ћемо само да ажурирате у случају где смо на једном елементу низа.
Ако је један елемент није она коју тражите,
онда је све у реду. Да.
[Ученик] Ствар је у томе, јер је заправо величине већи од броја елемената у низу,
већ постоји офсет - >> Тако ће величина -
[Ученик] Рецимо, ако је низ био величине 0, онда СеарцхХелп ће заправо проверили пласту сена од 0
на први позив.
Потез је величине 0, тако да је 0 - >> Да.
Има још једна ствар - то може бити добро. Размислимо.
Дакле, ако се низ има 10 елемената и једна у средини ћемо да проверите је индекс 5,
тако да смо проверу 5, и рецимо да је вредност мања.
Дакле, ми смо све даље од бацања 5 па надаље.
Дакле старт + крај / 2 ће бити наш нови крај,
па да, то је увек остати изван краја низа.
Ако је случај ако је паран или непаран, онда бисмо проверили, рецимо, 4,
али смо још увек далеко бацање -
Тако да, на крају ће увек бити изнад стварног краја низа.
Тако елемената смо се фокусирају на, на крају ће увек бити онај после тога.
И тако, ако не почетак икада равноправно крај, ми смо у низ величине 0.
>> Друга ствар коју сам мислио је да смо се ажурирање почетак да почнете + крај / 2,
тако да је ово случај да имам проблема са, одакле почети + крај / 2
је елеменат смо провере.
Рецимо, имали смо 10-елемент низ. Год.
Дакле старт + крај / 2 ће бити нешто попут овог,
а ако то није вредност, кажу желимо да ажурирате.
Вредност је већа, па смо желели да погледамо овај половини низа.
Па како смо ажурирање почетак, ми смо ажурирање почетак за сада бити тај елемент.
Али ово може даље радити, или у најмању руку, то можете учинити старт + крај / 2 + 1.
[Ученик] Не треба да се почне + крај [нечујан] >> Да.
Већ смо проверили овај елемент, а знам да то није онај тражимо.
Дакле, не треба да ажурирате почети да се овај елемент.
Ми само можемо га прескочите и ажурирају почети да се овај елемент.
А има ли икада случај, рецимо, да је то било на крају,
па онда почне да се ово почне + крај / 2 ће бити овако,
Старт + крај - Да, мислим да може завршити у бесконачном рекурзије.
Рецимо да је то само низ величине 2 или низ величине 1. Мислим да ће ово функционисати.
Дакле тренутно почетак је тај елемент и крај је 1 ван њега.
Дакле, елемент који ћемо проверити је то један,
и онда када смо ажурирали почетак, ми смо ажурирање почетак да је 0 + 1/2,
који ће нас завршити врати са почетка био тај елемент.
>> Тако смо проверу исти елемент изнова и изнова.
Дакле, ово је случај где је сваки рекурзивни позив мора стварно ажурира нешто.
Зато морамо да урадимо старт + ЕНД / 2 + 1, иначе постоји случај
где ми нисмо заправо ажурирање почетак.
Сви видите?
Ок.
Да ли неко има питања о овом решењу, или било више коментара?
Ок. Да ли неко има решење итеративни да сви можемо погледати?
Да ли смо сви то рекурзивно?
Или, такође Претпостављам да ли је њено отворено, онда ћете можда морати превазићи своју претходну.
Да ли то аутоматски спасити? Нисам сигуран.
Да ли неко има итеративни?
Можемо ходати кроз њу заједно, ако не.
Идеја ће бити исти.
Итеративни решење.
Ми ћемо желети да урадите у основи исту идеју
где желимо да пратите нови крај низа и нови почетак у низу
и то изнова и изнова.
А ако је оно што смо праћење као о почетку и крају све секу,
онда нисмо га пронађе и ми можемо вратити лажна.
Па како то да урадим? Свако имате предлоге или код за мене вуку горе?
[Ученик] До петљу док. >> Да.
Ви ћете желети да урадите петљу.
>> Да ли сте имали код сам могао повући се, или шта сте хтели да предложе?
[Ученик] ја тако мислим. >> Реду. То чини ствари лакшим. Шта је ваше име?
[Ученик] Лукас.
Ревизија 1. Ок.
Низак је оно што смо назвали почети раније.
До није баш оно што се зове крај пре.
Заправо, крај је сада у оквиру низа. То је елеменат треба размотрити.
Тако ниска је 0, горе је величина низа - 1,
и сада смо петље, а ми проверавамо -
Мислим да могу да ходам кроз њега.
Шта је ваше мишљење кроз ово? Шетња нас преко кода.
[Ученик] Наравно. Поглед на пласту сена вредности у средини и упоредите га са иглом.
Дакле, ако је већа од игле, онда желите да - ох, у ствари, то би требало да буде уназад.
Ти ћеш желети да баци праву половину, па да, то би требало да буде тако.
[Бовден] Дакле, ово би требало да буде мање? Да ли је то оно што сте рекли? >> [Ученик] Да.
[Боуден] Ок. Мање.
Дакле, ако је оно што тражимо је мањи од онога што желимо,
онда да, желимо да баци на леву половину,
што значи да смо ажурирање све што размишљате
померањем ниске са десне стране низа.
Ово изгледа добро.
Мислим да има исти проблем који смо рекли на претходну,
где ако ниска је 0 и горе је 1, онда ниско + горе / 2 ће се подесити да поново буде иста ствар.
>> А чак и ако то није случај, још увек је ефикаснији у најмању руку
само да баци елемент смо само гледали на којем знамо да је погрешно.
Тако ниска + горе / 2 + 1 - >> [ученик] То би требало да буде другачије.
[Бовден] Или ово би требало да буде - 1 и други би требало да буде + 1.
[Ученик] И ту би требало да буде дупло знак једнакости. >> [Боуден] Да.
[Ученик] Да.
Ок.
И коначно, сада када имамо овај + 1 - 1 ствар,
је то - то не би било - то је увек могуће ниско завршити са вредношћу већом од горе?
Мислим да једини начин да се деси - Да ли је могуће? >> [Ученик] ја не знам.
Али, ако се добије одсецају и затим добија минус да је 1, а онда - >> Да.
[Ученик] То би евентуално добили забрљао.
Мислим да би требало да буде добар само зато
за то да заврши нижи би морали да буду једнаки, мислим.
Али, ако су они једнаки, онда не би урадио док петљу да се почне са
а ми бисмо се вратили вредност. Тако да мислим да смо добро сада.
Приметимо да иако је овај проблем више не рекурзивни,
иста идеја примене где можемо видети како то тако лако себи даје
да рекурзивна решења из чињенице да смо само ми ажурирања индекса изнова и изнова,
ми правимо проблем мањи и мањи, ми смо се фокусирају на подскупу низа.
[Ученик] Ако низак је 0 и горе је 1, што би и било 0 + 1/2, који ће ићи на 0,
а онда ће бити + 1, један би био - 1.
[Ученик] Где смо проверу равноправност?
Као да средњи је заправо игла?
Нећемо сада да ради? Ох!
Ако то је -
Да. Ми не можемо урадити тест овде, јер рецимо прву средину -
[Ученик] То заправо личи не бацају граница.
Дакле, ако сте бацити везане, морате да проверите прво или шта год.
Ах. Да. >> [Ученик] Да.
Дакле, сада смо бацили ону тренутно погледао,
што значи да сада треба да имају
иф (пласту сена [(низак + горе) / 2] == игла), онда можемо вратити истина.
А да ли сам ставио друго или само ако то значи буквално исту ствар
јер би то вратило истина.
Зато ћу још ставити ако, али то није битно.
>> Дакле, ако је ово друго, друго ово, и то је уобичајена ствар да урадим
где чак и ако је случај где је све добро овде,
као мала никада не може бити већи од горе, то није вредно образложење о томе да ли је то истина.
Тако да се може рећи као и низак, док је мања или једнака
или док ниска износи мање од
па ако су икада једнаки или ниска деси да прође горе,
онда можемо да се пробије из ове петље.
Питања, проблеми, коментари?
Ок. Ово изгледа добро.
Сада желимо да урадимо врсту.
Ако идемо на мојој другој ревизији, видимо ове исте бројеве,
али сада више нису у сортираном редоследу.
И ми желимо да се спроведе врсту Коришћењем било ког алгоритма за Ø н лог н.
Дакле, који алгоритам мислиш да би требало да спроведе? >> [Ученик] Обједињавање врста.
[Боуден] Да. Обједињавање врста је О (н лог н), тако да је оно што ћемо да радимо.
И проблем ће бити прилично слични,
где је лако себи даје за рекурзивна решење.
Ми такође можемо доћи до итеративни решење ако желимо,
али рекурзије ће бити лакше овде и треба да радимо рекурзија.
Претпостављам да ћемо проћи кроз стапања врсте прво,
иако већ постоји леп видео он стапања врсте. [Смех]
Тако обједињавање врсте постоје - Ја сам троши толико овог рада.
Ох, има само један.
Тако спојити.
О, 1, 3, 5.
Ок.
Обједињавање траје два одвојена низове.
Појединачно те две низови су и сортирају.
Дакле, ово низ, 1, 3, 5, сортирају. Овај низ, 0, 2, 4, сортирају.
Сада шта стапања треба да урадите је комбиновати их у једну низу која је сама сортирају.
Дакле, желимо низ величине 6, да се иде да се ове елементе унутар њега
у сортираном редоследу.
>> И тако можемо искористити чињеницу да су ове две поређано низови
да се то уради у линеарном времену,
линеарно време значи ако је низ је величина к и то је величина и
онда укупна алгоритам треба да буде О (к + и). Ок.
Тако предлози.
[Ученик] Можемо почети са леве стране?
Тако ћете ставити 0 надоле, а затим 1 и онда овде сте на 2.
Дакле, то је нешто као да имате картицу која се креће на десно. >> [Боуден] Да.
За обе ове матрице ако се само фокусирати на левој елемента.
Пошто су оба низови су поредани, ми знамо да су ови елементи 2
су најмањи елементи у оба низа.
То значи да мора да 1 од тих 2 елемената бити најмањи елемент у нашој обједињеном низу.
Тако се дешава да само најмањи је онај на десној овом тренутку.
Дакле, узимамо 0, убаците га на лево, јер 0 је мања од 1,
па узме 0, убаците га у нашу прву позицију, а онда ћемо ажурирати ове
да се сада фокусирамо на првом елементу.
И сада понављамо.
Дакле, сада смо упоредили 2 и 1. 1 је мањи, па ћемо убацити 1.
Ми ажурирати овај показивач да укаже на овог момка.
Сада смо то поново, па 2. Ово ће ажурирати, упоредите ове 2, 3.
Ово исправке, онда 4 и 5.
Дакле, то је обједињавање.
>> То би требало да буде прилично очигледно да је линеарно време, јер смо управо иду преко сваког елемента једном.
И то је највећи корак ка имплементацији стапање нека то ради.
А то није тако тешко.
Неколико ствари које треба да брине је рецимо смо спајањем 1, 2, 3, 4, 5, 6.
У овом случају ми смо завршили у сценарију где се то неко ће да буде мањи,
онда смо ажурирали овај показивач, ово ће бити мањи, ажурирате ово,
ово је мањи, а сада морате да призна
када сте стварно понестане елемената да се упореди са.
Пошто смо већ користили ову целу низ,
све у овом низу је сада само убаци овде.
Дакле, ако смо икада налетите на месту где је један од наших низова потпуно интегрисан већ,
онда узми све елементе другог низа и убаците их у крају низа.
Дакле, можемо само да убаците 4, 5, 6. Ок.
То је једна ствар да пазите.
Имплементација требало би да буде корак 1.
Обједињавање сортирали онда на основу тога, то је 2 корака, 2 глупе кораке.
Хајде само да овај низ.
Дакле обједињавање врсте, корак 1 је рекурзивно пробије низ на половине.
Дакле, овај низ дели на половине.
Ми сада имамо 4, 15, 16, 50 и 8, 23, 42, 108.
И сада ми то урадити поново и делимо их у половине.
Ја ћу то да урадим на овој страни.
Дакле 4, 15 и 16, 50.
Ми би урадио исту ствар овде.
И сада смо га поделити на пола поново.
И ми имамо 4, 15, 16, 50.
Дакле, то је наш случај база.
Када низови су величине 1, онда престати са расцепом у половине.
>> Шта сада да радимо са овим?
Ми завршити ово ће разбити у 8, 23, 42, и 108.
Дакле, сада смо у овом тренутку, сада корак два стапања врсте је само спајање парова на листи.
Дакле, желимо да споји ове. Ми само позовите спојити.
Знамо стапање ће вратити их у сортираном редоследу.
4, 15.
Сада желимо да се споје ове, као и да ће се вратити листу са онима у сортираном редоследу,
16, 50.
Ми обједињавања оних - Ја не могу да пишем - 8, 23 и 42, 108.
Тако смо једном обједињене парова.
Сада смо само спојити опет.
Приметићете да сваки од ових листа је сортирана у себи,
и онда можемо да споји ове листе да бисте добили списак величине 4 који је сортиран
и споји ове две листе да се листа величине 4 који се сортирају.
И на крају, можемо спојити те две листе величине 4 да бисте добили једну листу величине 8 да се сортирају.
Тако да се види да је ово општи н лог н, ми смо већ видели да Стапање је линеарно,
па кад се бавимо овим спајањем, па као укупну цену стапања
за ове две листе је само 2 јер -
Или добро, то је О н, али н овде је само ова 2 елемента, тако да је 2.
А ово 2 ће бити 2 и то 2 ће бити 2 и то 2 ће бити 2,
па преко свих стапању које морамо да урадимо, ми смо на крају радили н.
Као 2 + 2 + 2 + 2 је 8, који је н
тако трошкова спајања у овом сету је Н.
А онда је иста ствар овде.
Ми ћемо спојити ове 2, онда оне 2, а појединачно ово стапање ће бити четири операције,
ово стапање ће бити четири операције, али опет, између свих њих,
завршимо спајање н укупна ствари, па овај корак траје н.
И тако сваки ниво има н елемената које су стопљене.
>> А колико нивоа има?
На сваком нивоу, наш низ расте по величини 2.
Овде су наши низови су величине 1, овде су величине 2, овде су величине 4,
и коначно, они су величине 8.
Дакле, пошто је удвостручење, постоје ће бити укупно лог н од тих нивоа.
Тако је и са лог н нивоа, сваки појединац ниво узимајући н укупног пословања,
добијамо н лог н алгоритам.
Питања?
Да људи већ остварила напредак у томе како да остваре ово?
Да ли је неко већ у држави у којој сам се повући своју шифру?
Ја могу дати минут.
Ово ће бити дуже.
Топло препоручујем понављају -
Не морате да урадите рекурзија за обједињавање
јер да рекурзија за стапања, ти ћеш морати да прође гомилу различитих величина.
Можете, али је досадан.
Али рекурзије за сортирање саму је прилично лако.
Ви буквално само позовите врсте на левој половини, некако на десној половини. Ок.
Свако има нешто да могу повући устао?
Или ћу дати мало.
Ок.
Свако има нешто што може да ради са?
Или ћемо само радити са овим и затим развијте одатле.
>> Свако има више од тога да могу попети?
[Ученик] Да. Можете да подигне моје. >> Реду.
Да!
[Ученик] Било је доста услова. >> О, пуцај. Цан иоу -
[Ученик] Морам да га сачувате. >> Да.
Тако смо урадили урадити засебно обједињавања.
Ох, али то није тако лоше.
Ок.
Тако некако сам је само зове мергеСортХелп.
Објасните нам шта мергеСортХелп ради.
[Ученик] МергеСортХелп прилично кошта два главна корака,
а то је да сортирате сваки половину низа, а затим да обједините оба.
[Бовден] Ок, дај ми секунд.
Мислим да је то - >> [ученик] Морам да -
Да. Ја сам нешто недостаје.
У стапања, схватам да морам да креирате нови низ
јер нисам могао да урадим на свом месту. >> Да. Ти не можеш. Исправите.
[Ученик] Тако сам направити нови низ.
Заборавио сам на крају стапање поново променити.
Ок. Потребан нам је нови низ.
У стапања врсте, то је скоро увек тачно.
Део трошкова бољег алгоритма време мудар
је скоро увек потребе да користе мало више меморије.
Па ево, без обзира на то колико ти обједињавања сортирање,
што неизбежно морате да користите неке додатне меморије.
Он или она створила нови низ.
И онда кажете на крају ми само треба да копирате нови низ у оригиналном низу.
[Ученик] ја тако мислим, да.
Ја не знам да ли ради у смислу бројање позивањем или било где другде -
Да, то ће радити. >> [Ученик] Ок.
Да ли сте покушајте да покренете ово? >> [Ученик] Не, не још. >> Реду.
Покушајте да покренете га, а онда ћу причати о томе секунду.
[Ученик] морам да имам све прототипове функција и све, зар не?
Функцијски прототипови. Ох, мислиш као - Да.
Сортирање зове мергеСортХелп.
>> Тако да би некако да позове мергеСортХелп, мергеСортХелп мора или су дефинисани
пре врсти или ћемо само треба прототип. Само копирајте и налепите то.
Слично томе, мергеСортХелп зове се споје,
али стапања још није дефинисан, тако да можемо само да нека знају мергеСортХелп
да то је оно споји ће изгледати, и то је то.
Тако мергеСортХелп.
Имамо проблем овде где немамо базу случај.
МергеСортХелп је рекурзивна, тако да је свака рекурзивна функција
ће требати некакав основном случају да знате када да престану рекурзивно се зове.
Шта је наш случај база ће бити овде? Да.
[Ученик] Ако је величина 1? >> [Боуден] Да.
Дакле, као што смо видели тамо, стали смо цепање низове
када смо ушли у низовима величине 1, што неминовно себе разврстаних.
Дакле, ако величина једнака 1, знамо низ већ сортиран,
па можемо само да се врате.
>> Приметимо да је празнина, тако да ми не врати ништа посебно, само смо се вратили.
Ок. Дакле, то је наш основни случај.
Претпостављам да наш случај база такође може бити ако се деси да се спајањем низ величине 0,
вероватно желите да зауставите у неком тренутку,
тако да ми само можемо рећи величину мање од 2 или мање од или једнак 1.
тако да ће ово радити за било низа сада.
Ок.
Дакле, то је наш основни случај.
Сада хоћеш да нас провести кроз стапања?
Шта сви ови случајеви значе?
Овде смо само радимо исту идеју, -
[Ученик] Морам да се пролази величину са свим мергеСортХелп позиве.
Додао сам величину као додатни примарни и нема, као величине / 2.
[Бовден] О, величина / 2, величина / 2. >> [Ученик] Да, и такође у функцији, као и горе.
[Бовден] Овде? >> [Ученик] Само величине. >> [Боуден] О. Величина, величина? >> [Ученик] Да.
[Боуден] Ок.
Пусти ме да размислим за секунду.
Да ли смо покренули у питању?
Ми смо увек третира као 0 левицу. >> [Ученик] Но
То је погрешна. Извините. То би требало да буде почетак. Да.
[Боуден] Ок. Свиђа ми се то боље.
И крај. Ок.
Дакле, сада хоћеш да нас провести кроз стапања? >> [Ученик] Ок.
Ја само ходам кроз овај нови низ које сам створио.
Њена величина је величина дела низа који желимо да се сортирају
и покушава да пронађе елемент који би требало да стави у новом низа корака.
Тако да се то уради, прво сам проверу да ли лева половина низа наставља да има било више елемената,
а ако се то не деси, онда одеш доле на то друго стање, што само говори
ок, то мора да буде у добром низу, а ми ћемо ставити у садашњем индекса невАрраи.
>> А онда иначе, ја сам проверу да ли са десне стране низа је такође завршен,
у ком случају само сам ставио у лево.
То не може заправо бити неопходно. Нисам сигуран.
Али у сваком случају, друга двојица провера који је од два су мања у лево или десно.
И такође у сваком случају, ја сам чувар увецава год повећавати.
[Боуден] Ок.
То изгледа добро.
Да ли неко има коментар или недоумице или питања?
Дакле, четири случаја које имамо да би ствари у само бити - или изгледа пет -
али морамо узети у обзир да ли је лева низ је понестало ствари које треба да се споје,
да ли право низ је понестало ствари које треба да се споје -
Ја мислим на ништа.
Дакле, да ли лево низ је понестало ствари или права низ истекло ствари.
То су два случаја.
Ми такође треба тривијалан случај да ли је лева ствар је мање него праву ствар.
Онда смо желели да изаберете леви ствар.
То су случајеви.
Дакле, ово је био у праву, тако да је то то.
Низ лево. То је 1, 2, 3. Ок. Тако да, то су четири ствари које можда желели да урадимо.
И нећемо ићи преко итеративни решење.
Ја не бих препоручио -
Обједињавање врста је пример функције која је истовремено није реп рекурзивно,
није лако да то реп рекурзивно,
али то није лако да то итеративан.
То је веома лако.
Ова имплементација стапања врсте,
обједињавање, без обзира на то шта радите, идете да изгради обједињавања.
>> Тако некако споји изграђена на врху стапања рекурзивно је само ове три линије.
Итеративно, то је више досадан и теже да мисле о томе.
Али приметите да то није реп рекурзивна јер мергеСортХелп - када она сама зове -
она ипак мора да уради нешто по овом рекурзивних позива повратак.
Дакле, ово стек оквир мора наставити да постоји и након позива овога.
И онда када зовете ово, стек оквир мора наставити да постоји
јер чак и после тог позива, и даље морамо да се споје.
И то је нетривијална да овај реп рекурзивно.
Питања?
У реду.
Дакле, да се вратимо на сортирали - ох, има две ствари које желим да покажем. Ок.
Враћајући се врсте, урадићемо то брзо.
Или претрага. Сортирање? Сортирање. Да.
Враћајући се на почетке врсте.
Желимо да створимо алгоритам који сортира низа користећи било који алгоритам
у О од н.
Па како је то могуће? Да ли неко има било какву -
Ја наговестио раније на -
Ако ћемо ускоро да се побољша од н лог н до Ø н,
су се побољшали смо нашу алгоритам времена мудри,
што значи шта ћемо морати да уради да би се за то?
[Ученик] Спаце. >> Да. Ми ћемо користити више простора.
А није ни мало више простора, то је експоненцијално више простора.
Тако да мислим да је ова врста алгоритма је псеудо нешто, псеудо полином -
Псеудо - Ја не могу да се сетим. Псеудо нешто.
Али то је зато што ми је потребно да користите толико простора
да је то оствариво, али није реално.
>> И како смо то постигли?
Можемо постићи ако ми гарантујемо да неки посебан елемент у низу
је испод одређене величине.
Па рецимо само да величина је 200,
сваки елемент у низу је испод величине 200.
И то је заправо веома реалан.
Можете веома лако имати низ који знате све у њој
ће бити мањи од неког броја.
Као, ако имате неки апсолутно огроман вектор или нешто
али знате да ће све бити између 0 и 5,
онда ће то бити знатно брже да се то уради.
А повезана на било који од елемената је 5,
тако да је ово граница, то је колико меморије ћеш да користите.
Тако везан је 200.
У теорији увек постоји граница, јер цео може бити само до 4 милијарде евра,
али то је нереално, јер онда бисмо се коришћење простора
по налогу 4 милијарде. Тако да је то нереално.
Али, овде ћемо рећи наша граница је 200.
Трик да раде у О од н је правимо још низ назива тачака величине ОБАВЕЗАНИ.
Дакле стварно, ово је пречица за - Ја стварно не знам да ли кланг ради.
Али у ГЦЦ на најмању руку - Ја сам под претпоставком кланг то ради превише -
ово ће само покрене читав низ буде 0с.
Дакле, ако ја не желим да то урадим, онда сам могао да урадим одвојено фор (инт и = 0;
и <повезано; и + +) и тачке [и] = 0;
Дакле, сада је све иницијализован на 0.
Ја прелазили преко мог низу,
и шта ја радим је ја бројање сваки - Идемо доле.
Имамо 4, 15, 16, 50, 8, 23, 42, 108.
Оно што ја бројање је број појављивања сваке од тих елемената.
Хајде да ствари додају још пар овде са неким понављања.
Дакле, вредност имамо овде, вредност која ће бити низ [и].
Дакле вал могао бити 4 или 8 или било шта друго.
И сада сам бројање колико те вредности сам видела,
па тачкама [вал] + +;
Након тога је урађено, броји ће изгледати овако 0001.
Урадимо тачака [вал] - ОБАВЕЗАНИ + 1.
>> Сада је то само да објасни чињеницу да смо, почевши од 0.
Дакле, ако је 200 ће бити наш највећи број,
онда 0 до 200 је 201 ствари.
Дакле тачкама, то ће изгледати као 00001, јер имамо један 4.
Онда ћемо имати 0001, где ћемо имати 1 у 8. индекс рачунати.
Ми ћемо имати 2 у 23. индекса рачунати.
Ми ћемо имати 2 у 42. индекса рачунати.
Дакле, можемо да користимо бројање.
Дакле нум_оф_итем = рачуна [и].
И тако, ако нум_оф_итем је 2, што значи да желимо да убаците 2 од које сам број
у нашу сортира низ.
Зато морамо да пратите колико смо у низу.
Дакле, индекс = 0.
Арраи - Ја ћу да напишем.
Тачке -
арраи [индек + +] = и;
Да ли је то оно што желим? Мислим да је то оно што ја желим.
Да, ово изгледа добро. Ок.
Дакле, не сви разумеју шта је сврха мог низа тачкама је?
То је бројање појављивања сваке од ових бројева.
Онда сам итератинг која броји преко низ,
и тој позицији у низу тачкама
је број и то би требало да се појави у мом сортираном низу.
Зато тачке 4 ће бити 1
и тачке 8 ће бити 1, тачке 23 ће бити 2.
Дакле, то је колико њих желим да убаците у свој сортираном низу.
Онда сам то да урадим.
Ја сам убацивања нум_оф_итем је у мојој сортираном низу.
>> Питања?
И тако опет, ово је линеарно време, јер смо управо због тога итератинг једном,
али је такође линеарна у шта овај број се дешава да се,
и тако у великој мери зависи од тога шта је ваш везана је.
Са граница од 200, то није тако лоше.
Ако је ваш граница ће бити 10.000, онда је то мало горе,
али ако ваша граница ће бити 4 милијарде евра, што је потпуно нереално
и овај низ ће морати да буде величине 4 милијарде, што је нереално.
Дакле, то је то. Питања?
[Нечујан ученик одговор] >> реду.
Схватио сам једну другу ствар, када смо ишли до краја.
Мислим да је проблем био у Луцас-а и вероватно сваки човек смо видели.
Потпуно сам заборавио.
Једино што сам желео да коментарише је да када имате посла са стварима као што индекса,
ти стварно никад видети када пишете за петље,
али технички, кад год имате посла са овим индексима,
треба прилично увек баве неозначених целих бројева.
Разлог за ово је када имате посла са потписаним целих бројева,
тако да ако имате 2 потписане бројеве и да их саберете
и они завршити превелика, онда можете завршити са негативним бројем.
Дакле, то је оно што цео прекорачење.
>> Ако додам 2 милијарде и 1 милијарду, ја завршити са негативним 1 милијарде.
Тако целих рад на рачунарима.
Дакле, проблем са коришћењем -
То је у реду, осим ако се деси да буде ниска 2 милијарде и до деси да буде 1 милијарде долара,
онда ће то бити негативна 1 милијарду и онда ћемо да поделимо да је 2
и завршити са негативним 500 милиона.
Дакле, ово је само проблем ако се деси да се тражи кроз низ
милијарде ствари.
Али ако мала + горе дешава прелива, онда је то проблем.
Чим смо их непотписана, онда 2 милијарде плус 1 милијарду је 3 милијарде.
3 милијарде подељено са 2 је 1,5 милијарди евра.
Дакле, чим су непотписане, све је савршено.
И то је такође проблем када пишете ваш за петље,
и заправо, то је вероватно то ради аутоматски.
То је заправо ће само викати на тебе.
Дакле, ако је тај број је сувише велика да би у само цео број, али да стане у непотписаном цео број,
она ће викати на тебе, тако да је то зато што заиста никада покренути у питању.
Можете видети да је индекс никада неће бити негативан,
па када сте итератинг преко низа,
можете скоро увек кажем унсигнед инт, али заиста не треба.
Ствари иду на посао прилично исто тако добро.
Ок. [Шапуће] Колико је сати?
Последња ствар коју сам желео да покажем - и ја ћу урадити то заиста брзо.
Знате како смо дефинисали смо # # како бисмо може дефинисати као МАКС 5 или тако нешто?
Хајде да не МАКС. # Дефине ОБАВЕЗАНИ као 200. То је оно што смо урадили раније.
То дефинише константу, који је само иде да се копирали и налепили
где год да се деси да напише ОБАВЕЗАНИ.
>> Дакле, ми заправо можемо урадити више са # дефинише.
Ми # може дефинисати функције.
Они нису стварно функционише, али ћемо их зовемо функције.
Пример би био нешто попут МАКС (к, и) је дефинисана као (к <и и: к). Ок.
Тако да би требало да се навикнете на синтакси тернарном оператера,
али је к мање од и? Повратак и, ретурн к.
Дакле, можете видети можете направити ову посебну функцију,
и функција може бити као воид МАКС траје 2 аргументе, вратите.
Ово је један од најуобичајенијих видим урадио овако. Зовемо их макрои.
То је макро.
Ово је само синтакса за то.
Можете да напишете макро да раде шта год желите.
Ви често видети макрое за отклањање грешака принтфс и остало.
Дакле, типа инт, постоје посебни константе у Ц као наглашавају ЛИНЕ подвучем
2 подвлачи ЛИНЕ подвучем
и ту је ја мислим 2 наглашава ФУНЦ. То би могло да буде. Нешто слично.
Те ствари ће бити замењен са именом функције
или број линије која се налазите.
Често пишете отклањање грешака принтфс да овде сам тада могао само пишем
ДЕБУГ и она ће штампати број линије и функције које сам се деси да буде у
да је наишао на ту изјаву отклањање грешака.
А такође можете да одштампате и друге ствари.
Дакле, једна ствар коју треба да пазиш је ако се деси да # дефине ДОУБЛЕ_МАКС
као нешто налик 2 * и и 2 * к.
Дакле, за било ког разлога, да се деси да то много.
Тако да је то макро.
То је заправо сломљен.
Ја бих то назвао радећи нешто ДОУБЛЕ_МАКС (3, 6).
Дакле, шта треба да се врати?
[Ученик] 12.
Да, 12 треба да се врати, а 12 се вратио.
3 добија заменио за к, 6 бива замењен за и, а ми смо се вратили 2 * 6, што је 12.
И шта сад ово? Шта треба да се врати?
[Ученик] 14. >> Идеално 14.
Питање је да како Дисперзија дефинише рад, сећам се да је буквално цопи анд пасте
од прилично много све, па шта ће то бити протумачено као
је 3 мање од 1 плус 6, 2 пута 1 плус 6, 2 пута 3.
>> Дакле, за тог разлога што скоро увек заврши све што је у загради.
Свака променљива сте скоро увек заврши у заградама.
Постоје случајеви где не морају да, као што знам да не морам да радим да овде
јер је мање него што је прилично увек само одлазак на посао,
иако то можда неће ни бити истина.
Ако постоји нешто смешно као ДОУБЛЕ_МАКС (1 == 2),
онда ће да се замени са 3 мање од 1 једнак једнак 2,
па онда ће то урадити 3 мањи од 1, то једнако 2,
што није оно што ми желимо.
Дакле, у циљу спречавања било каквих оператера примат проблема,
Увек замотајте у загради.
Ок. И то је то, 5:30.
Ако имате било каквих питања у вези са псет, обавестите нас.
Требало би да буде забавно, а хакер издање, такође је много реалније
него хакерске издање прошле године, па се надамо да многи од вас га пробају.
Прошле године је била веома велика.
>> [ЦС50.ТВ]