[Music kucheza] PROFESA: zote haki. Hii ni CS50 na hii ni Mwishoni mwa wiki tatu. Hivyo sisi ni hapa leo, si katika Sanders Ukumbi, badala katika Weidner maktaba. Ndani ya ambayo ni studio inayojulikana kama Hauser Studio, au tuseme Studio H, au atakuwa sisi say-- kama wewe walifurahia kwamba utani, ni kweli kutoka classmate, Marko, online, ambaye alipendekeza kama kiasi kupitia Twitter. Sasa nini baridi kuhusu kuwa hapa katika studio ni kwamba mimi nina kuzungukwa na kijani hizi kuta, screen ya kijani au chromakey, hivyo kusema, ambayo ina maana kwamba CS50 Timu ya uzalishaji, unbeknownst kwangu sasa hivi, inaweza kuwa kuweka mimi zaidi mahali popote duniani, kwa bora au mbaya. Sasa kile uongo mbele, tatizo kuweka mbili ni katika mikono yako kwa wiki hii, lakini kwa tatizo kuweka tatu hii kuja wiki, utakuwa changamoto kwa kinachojulikana mchezo wa 15, umri wa chama neema kwamba unaweza kukumbuka kupokea kama mtoto ambayo ina rundo zima ya idadi ya kwamba unaweza slide juu, chini, kushoto na kulia, na kuna pengo moja ndani ya puzzle, ambamo wewe kweli anaweza slide vipande wale puzzle. Hatimaye kupokea hii puzzle katika baadhi ya nusu random ili, na lengo ni aina yake, juu hadi chini, kushoto na kulia, kutoka kwa mmoja njia yote hadi kupitia 15. Kwa bahati mbaya, utekelezaji itabidi upande ni kwenda kuwa programu msingi, si kimwili. Wewe ni kweli kwenda na kuandika kificho na ambayo mwanafunzi au mtumiaji anaweza kucheza mchezo wa 15. Na kwa kweli, katika hacker toleo la mchezo wa 15, wewe utakuwa na changamoto ya kutekeleza, si tu kucheza ya hii umri wa shule mchezo, lakini badala ya kutatua yake, utekelezaji wa mungu mode, hivyo kusema, kwamba kweli kutatua puzzle kwa binadamu, kwa kuwapatia ladha, baada ya ladha, baada ya ladha. Hivyo zaidi juu ya kwamba wiki ijayo. Lakini hiyo ni nini uongo mbele. Kwa sasa kukumbuka kuwa mapema wiki hii tulikuwa na cliffhanger hii, kama wewe, ambapo bora tunafanya kuchagua busara alikuwa amefungwa juu ya kubwa o ya n squared. Kwa maneno mengine, Bubble aina, uteuzi aina, kuingizwa aina, wote, wakati tofauti katika utekelezaji wake, ulisababisha n squared mbio wakati katika hali mbaya sana. Na sisi ujumla kudhani kuwa mbaya sana kesi kwa ajili ya kuchagua ni moja kwamba pembejeo yako ni kabisa nyuma. Na hakika, ilichukua hatua chache kabisa kutekeleza kila moja ya algorithms hizo. Sasa mwishoni sana ya darasa wanakumbuka, sisi ikilinganishwa Bubble aina dhidi ya uteuzi aina dhidi ya mtu mwingine kwamba sisi kuitwa kuunganisha aina kwa wakati mmoja, na mimi kupendekeza kwamba ni kuchukua faida ya somo kutoka wiki sifuri, kugawanya na kushinda. Na kwa namna fulani kufanikisha baadhi ya aina ya logarithmic mbio wakati hatimaye, badala ya kitu hiyo ni rena quadratic. Na si logarithmic kabisa, ni kidogo zaidi ya hapo. Lakini kama unakumbuka kutoka darasani, ilikuwa kubwa, kwa kasi zaidi. Hebu tuangalie ambapo sisi kushoto mbali. Bubble aina dhidi ya uteuzi aina dhidi ya kuunganisha aina. Sasa wao ni wote kukimbia, katika nadharia, kwa wakati mmoja. CPU ni mbio kwa kasi hiyo hiyo. Lakini unaweza kuhisi jinsi boring huu ni haraka sana kwenda kuwa, na tu jinsi ya kufunga, wakati sisi kuingiza kidogo ya wiki sifuri ya algorithms, Tunaweza kasi ya mambo up. Hivyo aina alama inaonekana ajabu. Jinsi gani tunakuwa na usawa, ili kutatua idadi kwa haraka zaidi. Naam hebu fikiria nyuma kwa kingo kwamba sisi alikuwa nyuma katika wiki sifuri, ile ya kwa ajili ya kutafuta mtu katika kitabu cha simu, na kukumbuka kuwa pseudocode kwamba sisi mapendekezo, kupitia ambayo tunaweza kupata mtu kama Mike Smith, inaonekana kitu kidogo kama hii. Sasa tuangalie hasa katika mstari wa 7 na 8, na 10 na 11, ambayo kushawishi kwamba kitanzi, ambapo tuliendelea kurejea mstari 3 tena, na tena, na tena. Lakini zinageuka kuwa tunaweza kuona algorithm hii, hapa katika pseudocode, kidogo zaidi holistically. Kwa kweli, ni nini mimi nina kuangalia katika hapa kwenye screen, ni algorithm kwa ajili ya kutafuta Mike Smith miongoni mwa baadhi ya seti ya kurasa. Na hakika, tunaweza kurahisisha hii algorithm katika wale mistari ya 7 na 8, na 10 na 11 ya kusema tu hii, ambayo nimekuwa iliyotolewa hapa katika njano. Kwa maneno mengine, kama Mike Smith ni mapema katika kitabu, hatuna haja ya kutaja hatua kwa hatua sasa jinsi ya kwenda kumpata. Hatuna bayana kurudi mstari wa 3, kwa nini sio sisi tu badala yake, kusema, kwa ujumla zaidi, kutafuta Mike katika kushoto nusu ya kitabu. Kinyume chake, kama Mike ni kweli baadaye katika kitabu, kwa nini sio sisi tu kunukuu la unquote kwa Mike katika nusu haki ya kitabu. Kwa maneno mengine, kwa nini sio sisi tu aina ya punt kwa wenyewe na kusema, kutafuta Mike katika hii subset ya kitabu, na kuondoka kwa zilizopo wetu algorithm kutuambia jinsi ya kutafuta Mike katika kuwa nusu ya kushoto ya kitabu. Kwa maneno mengine, yetu algorithm kazi kama ni kitabu cha simu ya unene hii, bila hii unene, au unene yoyote ile. Hivyo tunaweza recursively kufafanua algorithm hii. Kwa maneno mengine, juu ya screen hapa, ni algorithm kwa ajili ya kutafuta Mike Smith miongoni mwa kurasa za kitabu cha simu. Hivyo katika mstari 7 na 10, hebu tu kusema hasa kwamba. Na mimi kutumia muda huu sasa iliyopita, na kwa kweli, kujirudia ni buzzword kwa sasa, na ni mchakato huu ya kufanya kitu mzunguko na kwa namna fulani kutumia kanuni kwamba tayari kuwa, na kuiita tena, na tena, na tena. Sasa ni kwenda kuwa muhimu kwamba sisi kwa namna fulani chini nje, na kufanya hivyo kubwa kwa muda mrefu. Vinginevyo tunakwenda na kwa hakika usio kitanzi. Lakini hebu angalia kama tunaweza kukopa wazo hili ya kujirudia, kufanya kitu tena na tena na tena, kutatua kuchagua tatizo kupitia kuunganisha aina, kwa ufanisi zaidi wote. Hivyo mimi kukupa kuunganisha aina. Hebu tuangalie. Hivyo hapa ni pseudocode, kwa ambayo tunaweza kutekeleza kuchagua, kutumia algorithm hii inaitwa kuunganisha aina. Na ni tu kabisa hii. On mchango wa mambo n, kwa maneno mengine, kama wewe ni kutokana na N mambo na idadi na barua au chochote pembejeo ni, kama wewe ni kupewa vipengele n, ikiwa n ni chini ya 2, kurudi tu. Sawa? Kwa sababu kama n ni chini ya 2, kwamba maana yake ni kwamba orodha yangu ya vipengele ni aidha ya kawaida 0 au 1, na katika wawili wa kesi hizo yasiyo na maana, orodha tayari Iliyopangwa. Kama hakuna orodha, ni vyema. Na kama kuna orodha ya urefu 1, ni wazi yamepangwa. Hivyo algorithm anahitaji tu kweli kufanya kitu kuvutia, kama tuna mbili au zaidi mambo tuliyopewa. Hivyo hebu tuangalie uchawi wakati huo. Mwingine aina nusu ya kushoto ya mambo, kisha kutatua nusu ya haki ya vipengele, kisha kuunganisha halves Iliyopangwa. Na nini aina ya akili bending hapa, ni kwamba mimi si kweli kuonekana kwa nimewaambia chochote bado tu, sawa? Wote nilivyosema ni, kutokana na orodha ya n vipengele, aina nusu kushoto, kisha nusu wa kulia, kisha kuunganisha nusu yamepangwa, lakini yuko wapi halisi mchuzi siri? Ni algorithm wapi? Vizuri zinageuka kuwa wale mistari miwili kwanza, aina kushoto nusu ya vipengele, na aina haki nusu ya vipengele, ni wito kujirudia, hivyo kusema. Baada ya yote, wakati huu wakati katika muda, kufanya nina algorithm ambayo kwa aina rundo zima la mambo? Ndiyo. Ni haki hapa. Ni haki hapa kwenye screen, na hivyo siwezi kutumia seti moja ya hatua kutatua nusu kushoto, kama naweza nusu ya haki. Na hakika, tena, na tena. Hivyo namna fulani au nyingine, na tutaweza karibuni Kuona hii, uchawi wa aina kuunganisha ni iliyoingia katika kwamba mwisho sana line, kuunganisha halves Iliyopangwa. Na kwamba inaonekana haki Intuitive. Wewe kuchukua nusu mbili, na wewe, kwa kiasi fulani, kuunganisha yao kwa pamoja, na tutaweza kuona hii uthabiti katika wakati huu. Lakini hii ni algorithm kamili. Na hebu angalia nini hasa. Vizuri tuseme kwamba sisi ni kupewa hizo hizo mambo nane hapa kwenye screen, moja kupitia nane, lakini wao ni ili inaonekana random. Na lengo katika mkono ni kutatua mambo haya. Vizuri jinsi gani naweza kwenda juu kufanya hivyo kwa kutumia, tena, kuunganisha aina, kwa mujibu wa pseudocode hii? Na tena, ingrain hii katika akili yako, kwa muda tu. Kesi ya kwanza ni pretty yasiyo na maana, ikiwa ni chini ya 2, kurudi tu, hakuna kazi kufanyika. Hivyo kweli kuna tatu tu hatua za kweli kukumbuka. Tena, na tena, mimi nina atataka kuwa kutatua nusu kushoto, aina nusu haki, na kisha mara moja wao nusu mbili ni vyema, Nataka kuunganisha yao pamoja ndani ya moja sorted orodha. Hivyo kuendelea kuwa katika akili. Hivyo hapa ni orodha ya awali. Hebu kutibu hii kama safu, kama sisi kuanza kwa katika wiki mbili, ambayo ni contiguous block ya kumbukumbu. Katika kesi hiyo, zenye nane idadi, nyuma kwa nyuma kwa nyuma. Na hebu sasa kuomba kuunganisha aina. Hivyo mimi kwanza unataka kutatua nusu ya kushoto ya orodha hii, na hebu hiyo, kuzingatia 4, 8, 6, na 2. Sasa ni jinsi gani mimi kwenda kuhusu kuchagua orodha ya ukubwa 4? Vizuri mimi na sasa kufikiria kuchagua kushoto ya nusu kushoto. Tena, hebu rewind kwa muda tu. Kama pseudocode ni hii, na mimi nina kutolewa mambo nane, 8 ni dhahiri zaidi kuliko au sawa na 2. Hivyo, pamoja na kesi ya kwanza haina kuomba. Hivyo kutatua mambo nane, mimi kwanza aina nusu ya kushoto ya mambo, kisha mimi aina nusu haki, basi mimi kuunganisha mbili halves Iliyopangwa, kila mmoja ukubwa 4. SAWA. Lakini kama wameweza tu aliniambia, aina kushoto nusu, ambayo sasa ni ya ukubwa 4, jinsi gani mimi kutatua kushoto nusu? Vizuri kama nina pembejeo ya mambo manne, Mimi kwanza kutatua kushoto mbili, kisha haki miwili, na kisha mimi kuunganisha yao kwa pamoja. Hivyo tena, inakuwa kidogo ya akili bending mchezo hapa, kwa sababu wewe, aina ya, na kukumbuka ambapo wewe ni katika hadithi, lakini mwisho wa siku, kutokana na idadi yoyote ya mambo, wewe kwanza unataka kutatua nusu ya kushoto, kisha nusu wa kulia, kisha kuunganisha yao kwa pamoja. Hebu kuanza kwa kufanya hasa kwamba. Hapa ni mchango wa mambo nane. Sasa sisi ni kuangalia nusu ya kushoto hapa. Je, mimi aina mambo manne? Naam, mimi kwanza kutatua kushoto nusu. Sasa ni jinsi gani mimi kutatua kushoto nusu? Naam nimekuwa kupewa vitu viwili. Basi hebu kutatua mambo haya mawili. 2 ni kubwa zaidi kuliko au sawa na 2, bila shaka. Hivyo kwamba kesi ya kwanza haina kuomba. Hivyo mimi sasa una aina kushoto nusu ya mambo haya mawili. Nusu ya kushoto, bila shaka, ni 4 tu. Hivyo ni jinsi gani mimi aina orodha ya kipengele moja? Naam sasa, kwamba kesi maalum msingi juu juu, hivyo kusema, inatumika. 1 ni chini ya 2, na yangu orodha ni kweli ya kawaida ya 1. Hivyo mimi tu kurudi. Mimi si kufanya kitu chochote. Na hakika, kuangalia nini nimekuwa kufanyika, 4 tayari Iliyopangwa. Kama tayari nina sehemu ya mafanikio hapa. Sasa kwa kuwa inaonekana aina ya kijinga kudai, lakini ni kweli. 4 ni orodha ya kawaida ya 1. Ni tayari Iliyopangwa. Hiyo ni nusu kushoto. Sasa mimi kutatua nusu ya haki. Pembejeo yangu ni moja ya kipengele, 8 vile vile, tayari Iliyopangwa. Kijinga, pia, lakini tena, kanuni hii ya msingi ni kwenda kuruhusu sisi sasa kujenga juu ya hii kwa mafanikio. 4 yamepangwa, 8 ni vyema, sasa nini ilikuwa ni hatua kwamba mwisho? Hivyo tatu na ya mwisho ya hatua, yoyote wakati wewe ni kuchagua orodha, kukumbuka, ilikuwa kuunganisha sehemu mbili, kushoto na kulia. Basi hebu kufanya hasa kwamba. Nusu au kushoto kwangu, bila shaka, 4. Nusu wangu wa kulia ni 8. Basi hebu kufanya hivyo. Kwanza mimi nina kwenda kutenga baadhi ya kumbukumbu za ziada, kwamba nita kuwakilisha hapa, kama tu safu ya sekondari, hiyo ni kubwa ya kutosha fit hii. Lakini unaweza kufikiria kupanua kuwa Mstatili urefu wote, kama tunahitaji zaidi baadaye. Je, mimi kuchukua 4 na 8, na kuunganisha wale orodha mbili ya ukubwa 1 pamoja? Hapa pia, pretty rahisi. 4 anakuja kwanza, kisha huja 8. Kwa sababu kama nataka kutatua nusu ya kushoto, kisha nusu wa kulia, na kisha kuunganisha wale nusu mbili pamoja, ili Iliyopangwa, 4 anakuja kwanza, kisha huja 8. Hivyo sisi wanaonekana kuwa kufanya maendeleo, hata ingawa sijafanya kazi yoyote halisi. Lakini kumbuka ambapo sisi ni katika hadithi. Sisi awali alichukua mambo nane. Sisi yamepangwa kushoto nusu, ambayo ni 4. Kisha sisi yamepangwa nusu ya kushoto ya kushoto nusu ambayo ilikuwa ni 2. Na hapa sisi kwenda. Sisi ni kosa kwa hatua hiyo. Hivyo kama tumekuwa yamepangwa kushoto nusu ya 2, sasa sisi una aina nusu haki ya 2. Hivyo nusu haki ya 2 ni maadili haya mawili hapa, 6 na 2. Basi hebu sasa kuchukua mchango wa ukubwa 2, na aina nusu kushoto, na kisha haki nusu, na kisha kuunganisha yao kwa pamoja. Vizuri jinsi gani mimi aina orodha ya ukubwa 1, zenye tu namba 6? Mimi tayari amefanya. Hiyo orodha ya ukubwa 1 ni Iliyopangwa. Je, mimi aina nyingine orodha ya ukubwa 1, kinachojulikana nusu ya haki. Vizuri, pia, tayari Iliyopangwa. Namba 2 ni peke yake. Hivyo sasa nina nusu mbili, kushoto na kulia, nahitaji kuunganisha yao kwa pamoja. Napenda kutoa mwenyewe baadhi ya nafasi ya ziada. Na kuweka 2 katika huko, kisha 6 katika huko, na hivyo kuchagua orodha hiyo, kushoto na kulia, na kuunganisha pamoja, hatimaye. Kwa hiyo mimi nina katika sura kidogo bora. Mimi si kufanyika, kwa sababu wazi 4, 8, 2, 6 ni si kuagiza mwisho kwamba nataka. Lakini sasa nina orodha mbili ya ukubwa 2, kwamba wana wawili, kwa mtiririko huo, wamekuwa yamepangwa. Hivyo sasa kama wewe rewind katika akili yako jicho, wapi kwamba kuondoka sisi? Mimi kuanza na mambo nane, basi mimi whittled ni chini ya nusu ya kushoto ya 4, kisha nusu ya kushoto ya 2, na kisha nusu haki ya 2, Mimi kumaliza, kwa hiyo, kuchagua kushoto nusu ya 2, na nusu haki ya 2, hivyo nini tatu na ya mwisho ya hatua hapa? Nina kuunganisha pamoja orodha mbili ya ukubwa 2. Basi hebu kwenda mbele. Na juu ya screen hapa, kutoa mimi baadhi ya kumbukumbu za ziada, ingawa kitaalam, taarifa kwamba nimekuwa got rundo zima la tupu nafasi ya juu juu huko. Kama Nataka kuwa hasa nafasi ufanisi busara, Mimi nilikuwa tu kuanza kusonga vipengele na kurudi, juu na chini. Lakini tu kwa uwazi Visual, Mimi nina kwenda kuiweka chini chini, kuweka mambo nzuri na safi. Hivyo mimi nimepata orodha mbili ya ukubwa 2. Orodha ya kwanza ina 4 na 8. Orodha pili ina 2 na 6. Hebu kuunganisha wale pamoja ili Iliyopangwa. 2, bila shaka, suala la kwanza, kisha 4, kisha 6, basi 8. Na sasa sisi wanaonekana kuwa kupata mahali fulani ya kuvutia. Sasa nimekuwa yamepangwa nusu ya orodha, na kwa bahati, ni hata namba zote, lakini hiyo ni kweli, bahati mbaya tu. Na mimi sasa kuwa yamepangwa kushoto nusu, ili ni 2, 4, 6, na 8. Hakuna kitu nje ya utaratibu. Kwamba anahisi kama maendeleo. Sasa anahisi kama nimepata wamekuwa wakizungumza milele sasa, hivyo kile inabakia kuonekana kama hii algorithm ni kweli, ufanisi zaidi. Lakini tunakwenda kupitia super methodically. Kompyuta, bila shaka, bila kufanya hivyo kama hicho. Hivyo ambapo ni sisi? Sisi ilianza na mambo nane. Mimi yamepangwa nusu ya kushoto ya 4. Mimi wanaonekana kuwa kosa na kwamba. Hivyo sasa hatua inayofuata ni aina nusu haki ya 4. Na sehemu hii tunaweza kwenda kupitia zaidi kidogo haraka, ingawa uko kuwakaribisha kwa rewind au pause, tu kufikiri kwa njia hiyo katika kasi yako mwenyewe, lakini kile tuna sasa ni fursa ya kufanya halisi algorithm huo juu ya nne idadi tofauti. Basi hebu kwenda mbele, na kuzingatia haki nusu, ambayo sisi ni hapa. Nusu ya kushoto ya kwamba haki nusu, na sasa kushoto nusu ya kushoto nusu ya nusu kwamba haki, na jinsi gani mimi aina orodha ya ukubwa 1 zenye tu namba 1? Ni tayari kufanyika. Je, mimi kufanya hivyo kwa orodha ya kawaida ya 1 zenye 7 tu? Ni tayari kufanyika. Hatua ya tatu kwa nusu hii basi ni kuunganisha mambo hayo mawili ndani ya orodha mpya ya ukubwa 2, 1 na 7. Hawaonekani umefanya yote Inashangaza kwamba kazi kubwa. Hebu kuona nini kinatokea ijayo. I just yamepangwa nusu ya kushoto ya nusu haki ya pembejeo yangu ya awali. Sasa hebu kutatua haki nusu, ambayo ina 5 na 3. Hebu tuangalie tena kushoto nusu, yamepangwa, nusu haki, yamepangwa, na kuunganisha hizo mbili pamoja, ndani ya baadhi ya nafasi ya ziada, 3 anakuja kwanza, kisha huja 5. Na hivyo sasa, tuna yamepangwa kushoto nusu ya nusu haki tatizo ya awali, na nusu haki ya nusu haki tatizo awali. Nini tatu na ya mwisho Hatua? Vizuri kuunganisha wale nusu mbili pamoja. Hivyo basi mimi kupata mwenyewe baadhi nafasi ya ziada, lakini, tena, mimi inaweza kuwa kwa kutumia kwamba vipuri nafasi juu juu. Lakini tunakwenda kuweka ni rahisi kuibua. Napenda kuunganisha katika sasa 1, na kisha 3, na kisha 5, na kisha 7. Hivyo kuondoka kwangu sasa kwa nusu haki ya tatizo ya awali hiyo kikamilifu yamepangwa. Kwa hiyo kile bado? Najisikia kama mimi kuendelea kusema mambo sawa tena, na tena, lakini hiyo ni kutafakari ya ukweli kwamba sisi ni kutumia recursion. Mchakato wa kutumia algorithm tena, na tena, juu ya subsets ndogo ya awali tatizo. Hivyo mimi sasa kuwa kushoto yamepangwa nusu ya tatizo ya awali. Nina haki yamepangwa nusu tatizo awali. Nini tatu na ya mwisho ya hatua? Oh, ni kuunganisha. Basi hebu kufanya hivyo. Hebu kutenga baadhi ya ziada kumbukumbu, lakini mungu wangu, sisi inaweza kuiweka mahali popote sasa. Tuna nafasi sana inapatikana kwetu, lakini tutaweza kushika ni rahisi. Badala ya kurejea na Basi nenda na kumbukumbu yetu ya awali, hebu tu kufanya hivyo kuibua chini hapa chini, kumaliza up kuunganisha nusu kushoto na nusu wa kulia. Hivyo kwa kuunganisha, je, mimi haja ya kufanya? Nataka kuchukua mambo kwa utaratibu. Hivyo kuangalia nusu ya kushoto, Mimi naona idadi ya kwanza ni 2. Mimi kuangalia nusu ya haki, Mimi naona idadi ya kwanza ni 1, hivyo ni wazi ambayo idadi mimi nataka kuvunja nje, na kuweka kwanza katika orodha yangu ya mwisho? Bila shaka, 1. Sasa nataka kuuliza kwamba swali moja. On nusu ya kushoto, nimekuwa bado got namba 2. On nusu wa kulia, Mimi nimepata namba 3. Ambayo moja je Nataka kuchagua? Bila shaka, idadi 2 sasa taarifa wagombea 4 upande wa kushoto, 3 juu ya haki. Hebu, bila shaka, kuchagua 3. Sasa wagombea ni juu ya 4 kushoto, 5 juu ya haki. Sisi, bila shaka, kuchagua 4. 6 upande wa kushoto, 5 juu ya haki. Sisi, bila shaka, kuchagua 5. 6 upande wa kushoto, 7 juu ya haki. Sisi kuchagua 6, na kisha sisi kuchagua 7, na kisha sisi kuchagua 8. Voila. Hivyo idadi kubwa ya maneno baadaye, sisi kuwa yamepangwa hii orodha ya mambo nane ndani ya orodha ya kwanza hadi la nane, hiyo ni kuongezeka pamoja na kila hatua, lakini wakati kiasi gani alifanya ni kutupeleka kufanya hivyo. Naam nimekuwa makusudi aliweka mambo ya nje pictorially hapa, ili tuweze aina ya kuona au kufahamu mgawanyiko katika mshindi hiyo imekuwa yanatokea. Hakika kama wewe kuangalia nyuma katika wake, Nimekuwa kushoto yote ya mistari haya dotted katika wamiliki mahali, unaweza, aina ya, kuona, ili reverse, kama wewe aina ya kuangalia nyuma katika historia sasa orodha yangu ya awali Ni, bila shaka, ya kawaida 8. Na kisha hapo awali, nilikuwa kushughulika na orodha mbili ya ukubwa 4, na kisha orodha vinne vya ukubwa 2, na kisha orodha nane ya kawaida ya 1. Kwa hiyo kile anafanya hivyo, aina ya, kuwakumbusha? Naam, kwa hakika, yoyote ya algorithms tumekuwa inaonekana katika hivi sasa ambapo sisi kugawanya, na kugawanya, na kugawanya, kuendelea kuwa na mambo tena, na tena, matokeo katika wazo hili kwa ujumla. Na hivyo kuna kitu logarithmic kinachoendelea hapa. Na si kabisa logi ya n, lakini kuna sehemu logarithmic kwa kile ambacho tumefanya tu. Sasa hebu fikiria jinsi kwamba kweli ni. Hivyo kuingia ya n, tena alikuwa kubwa mbio wakati, wakati sisi alifanya kitu kama tafuta binary, kama sisi sasa simu yake, kugawanya na kushinda mkakati kupitia ambayo sisi kupatikana Mike Smith. Sasa kitaalam. Hiyo ni gogo msingi 2 ya n, hata ingawa katika madarasa zaidi math, 10 ni kawaida msingi kwamba wewe kudhani. Lakini wanasayansi wa kompyuta karibu kila mara kufikiri na kuzungumza katika suala la msingi 2, hivyo sisi ujumla tu kusema gogo la n, badala ya gogo msingi 2 ya n, lakini wao ni hasa moja na sawa katika dunia ya kompyuta sayansi, na kama kando, kuna sababu mara kwa mara tofauti kati ya wawili, hivyo ni moot anyway, kwa sababu rasmi zaidi. Lakini kwa sasa, nini sisi huduma kuhusu ni mfano huu. Basi hebu kuthibitisha kwa mfano, lakini wakati angalau kutumia mfano wa idadi upande kama sanity hundi, kama wewe. Hivyo awali fomula ilikuwa gogo msingi 2 ya n, lakini kile ni n katika kesi hii. Mimi nilikuwa idadi n awali, au 8 ya idadi ya awali hasa. Sasa imekuwa ni kidogo muda, lakini mimi nina pretty kuhakikisha kwamba gogo msingi 2 ya thamani ya 8 ni 3, na kwa kweli, nini ni nzuri juu ya hilo ni kuwa 3 ni hasa idadi ya nyakati uweze kugawanya orodha ya urefu 8 tena, na tena, na tena, mpaka wewe ni wa kushoto na orodha ya tu ukubwa 1. Sawa? 8 inakwenda 4, huenda kwa 2, inakwenda 1, na kwamba kutafakari ya hasa kwamba picha tulikuwa muda tu iliyopita. Hivyo sanity kidogo kuangalia kama ambapo logarithm ni kweli kushiriki. Hivyo sasa, kile kingine ni kushiriki hapa? n. Hivyo taarifa kwamba kila wakati mimi kupasuliwa orodha, angalau katika kubadili utaratibu katika historia hapa, nilikuwa bado kufanya mambo n. Kwamba hatua kuunganisha required kwamba Mimi kugusa kila mmoja idadi, ili slide ndani eneo lake sahihi. Hivyo hata kama urefu wa hii mchoro ni wa kawaida logi n ya n au 3, hasa, kwa maneno mengine, Nilifanya tarafa tatu hapa. Kiasi gani kazi mimi kufanya hakuwa usawa pamoja mchoro huu kila wakati? Naam, mimi hatua n ya kazi, kwa sababu kama mimi wameweza got mambo manne na mambo manne, na mimi haja ya kuunganisha yao kwa pamoja. Mimi haja ya kwenda kwa hizi nne na hizi nne, hatimaye kwa kuunganisha yao nyuma katika mambo nane. Kama kinyume chake Mimi nimepata vidole nane zaidi ya hapa, ambayo mimi hawana, na nane fingers-- sorry-- Kama nimepata got vidole vinne zaidi ya hapa, ambayo mimi kufanya, vidole vinne zaidi ya hapa, ambayo mimi kufanya, basi hiyo ni sawa mfano kama kabla, kama mimi kufanya na vidole nane ingawa katika jumla, ambayo siwezi, aina ya, kufanya. Siwezi hasa kufanya hapa, kisha naweza hakika kuunganisha wote wa orodha hizi ya kawaida ya 1 pamoja. Lakini mimi hakika na kuangalia katika kila kipengele hasa mara moja. Hivyo urefu wa mchakato huu ni gogo n, upana wa mchakato huu, ili kuzungumza, ni n, hivyo nini tunaonekana kuwa na, hatimaye, ni wakati mbio za ukubwa n mara logi n. Kwa maneno mengine, sisi kugawanywa orodha, gogo n nyakati, lakini kila wakati sisi alifanya hivyo, tulikuwa na kugusa kila moja ya mambo ili kuunganisha yao wote kwa pamoja, ambayo ilikuwa n hatua, hivyo tuna n mara logi n, au kama kompyuta mwanasayansi kusema, asymptotically, ambayo itakuwa ni neno kubwa kuelezea juu amefungwa kwa wakati kukimbia, sisi ni mbio katika o kubwa ya gogo n mara, hivyo kusema. Sasa hii ni muhimu, kwa sababu kukumbuka nini nyakati mbio walikuwa na Bubble aina, na uteuzi aina, na kuingizwa aina, na wengine hata chache ambazo zipo, n squared ilikuwa ambapo tulikuwa kwa. Na unaweza, aina ya, kuona hii hapa. Kama n squared ni wazi n mara n, lakini hapa tuna n mara logi n, na sisi tayari kujua kutoka wiki sifuri, kwamba n gogo, logarithmic, ni bora kuliko kitu linear. Baada ya yote, kukumbuka picha na nyekundu na njano na mistari ya kijani ambayo tulianzisha, kijani logarithmic line ilikuwa chini sana. Na kwa hiyo, bora zaidi na kwa kasi kuliko moja kwa moja mistari ya njano na nyekundu, n mara logi n ni, kwa kweli, bora ya mara n n, au n squared. Kwa hiyo sisi tunaonekana kuwa na kutambuliwa algorithm kuunganisha aina hiyo inaendesha katika kiasi wakati kasi, na kwa kweli, hiyo ndiyo sababu, mapema wiki hii, wakati tumeona kwamba mashindano kati ya Bubble aina, uteuzi aina, na kuunganisha aina, kuunganisha aina kweli, kweli alishinda. Na hakika, sisi hawakuwa hata kusubiri kwa Bubble aina na uteuzi aina kumaliza. Sasa hebu kuchukua wengine kupitisha moja wakati huu, kutokana na kidogo zaidi mtazamo rasmi, tu katika kesi, hii resonates bora kuliko ile ngazi mjadala juu. Hivyo hapa ni algorithm tena. Hebu tujiulize, nini wakati mbio ni ya hii algorithms hatua mbalimbali? Hebu kuigawanya katika kwanza kesi na kesi ya pili. Kama na kingine Katika kesi IF, Kama n ni chini ya 2, kurudi tu. Anahisi kama wakati mara kwa mara. Ni, aina ya, kama hatua mbili, Kama n ni chini ya 2, kisha kurudi. Lakini kama sisi alisema Jumatatu, wakati mara kwa mara, au kubwa o ya 1, inaweza kuwa hatua mbili, tatu hatua, hata hatua 1,000. Kitu muhimu ni kwamba ni idadi ya mara kwa mara ya hatua. Hivyo njano yalionyesha pseudocode hapa anaendesha katika, tutaweza simu yake, wakati mara kwa mara. Hivyo zaidi rasmi, na tunakwenda to-- hii itakuwa ni kwa kiasi gani sisi kurasimisha haki hii now-- T ya n, wakati mbio za tatizo kwamba inachukua n somethings kama pembejeo, sawa kubwa o ya moja, Kama n ni chini ya 2. Hivyo ni masharti juu ya jambo hilo. Hivyo kuwa wazi, IF n ni chini ya 2, tuna orodha fupi sana, kisha mbio wakati, T ya n, ambapo n ni 1 au 0, katika kesi hii maalum sana, ni tu kwenda kuwa wakati mara kwa mara. Ni kwenda kuchukua moja hatua, hatua mbili, chochote. Ni fasta idadi ya hatua. Hivyo sehemu Juicy lazima hakika kuwa katika kesi nyingine katika pseudocode. Kingine kesi. Aina ya kushoto nusu ya vipengele, aina haki nusu ya vipengele, kuunganisha halves Iliyopangwa. Muda gani kila moja ya hatua hizo kuchukua? Naam, kama mbio muda wa kutatua mambo n ni, hebu simu yake sana yaliyotokea, T ya n, kisha kuchagua kushoto nusu ya mambo ni, aina ya, kama kusema, T ya n kugawanywa na 2, na vile vile kuchagua nusu haki wa mambo ni, aina ya, kama kusema, T ya n kugawanywa 2, na kisha kuunganisha nusu yamepangwa. Naam kama mimi nimepata baadhi idadi ya vipengele hapa, kama wanne, na baadhi ya idadi wa mambo hapa, kama wanne, na nina kuunganisha kila moja ya haya nne katika, na kila moja ya haya nne katika, moja baada ya nyingine, ili hatimaye nina mambo nane. Ni anahisi kama hiyo ni kubwa o ya hatua n? Kama mimi nimepata n vidole na kila mmoja wao ana kuwa zimeunganishwa katika nafasi, hiyo ni kama hatua nyingine n. Hivyo kweli formulaically, tunaweza kueleza hayo, angalau scarily kidogo kwa mara ya kwanza mtazamo, lakini ni kitu kwamba Ukamataji hasa mantiki hiyo. Wakati mbio, T ya n, IF n ni mkubwa kuliko au sawa na 2. Katika kesi hiyo, kesi kingine, ni T ya n kugawanywa na 2, pamoja na T ya N kugawanywa na 2, pamoja na kubwa o ya n, baadhi linear Idadi ya hatua, labda hasa n, labda mara 2 n, lakini ni takribani, utaratibu wa n. Hivyo kwamba, pia, ndivyo tunaweza kueleza hii formulaically. Sasa bila kujua hii isipokuwa umefanya kumbukumbu katika akili yako, au kuangalia ni juu katika nyuma ya vitabu vya kiada, kwamba anaweza kuwa kidogo kudanganya karatasi mwishoni, lakini hii ni, kwa kweli, kwenda kutupa kubwa o ya n logi n, kwa sababu kujirudia kwamba wewe ni kuona hapa kwenye screen, kama kweli alifanya hivyo nje, na idadi ya usio wa mifano, au alifanya hivyo formulaically, ungekuwa kuona kwamba hii, kwa sababu utaratibu huu yenyewe ni kujirudia, na t ya n juu ya jambo fulani juu ya haki, na t ya n juu ya upande wa kushoto, hii inaweza kweli kuwa walionyesha, hatimaye, kama kubwa kwenda ya n logi n. Kama si wanaamini, hiyo ni faini kwa sasa, tu kuchukua imani, kwamba hiyo ni, kwa kweli, nini kwamba kujirudia inaongoza kwa, lakini hii ni kidogo tu zaidi ya mbinu za hisabati kwa kuangalia wakati mbio za kuunganisha aina kulingana na pseudocode wake peke yake. Sasa hebu kuchukua kidogo ya pumzi kutokana na yote hayo, na tuangalie fulani aliyekuwa seneta, ambaye ili kuangalia ukoo kidogo, ambao alikaa chini na Eric Google Schmidt, baadhi ya wakati uliopita, kwa ajili ya mahojiano juu ya hatua, mbele ya kundi zima ya watu, kuzungumza hatimaye kuhusu mada, kwamba ni pretty sasa ukoo. Hebu tuangalie. ERIC SCHMIDT: Sasa Seneta, uko hapa katika Google, na mimi kama kufikiria urais kama mahojiano ya kazi. Sasa ni vigumu kupata kazi kama rais. RAIS OBAMA: Haki. ERIC SCHMIDT: Na wewe ni kwenda kufanya [inaudible] sasa. Ni pia vigumu kupata kazi katika Google. RAIS OBAMA: Haki. ERIC SCHMIDT: Tuna maswali, na tunaomba wagombea wetu maswali, na hii ni moja ya kutoka Larry Schwimmer. RAIS OBAMA: Sawa. ERIC SCHMIDT: nini? Guys kufikiri mimi nina kidding? Ni haki hapa. Ni njia bora zaidi ya kile aina milioni 32 kidogo integers? RAIS OBAMA: Well-- ERIC SCHMIDT: Wakati mwingine, labda mimi nina pole, maybe-- RAIS OBAMA: Hapana, hapana, hapana, hapana, hapana, mimi think-- ERIC SCHMIDT: Hiyo si it-- RAIS OBAMA: Mimi kufikiri, nadhani Bubble aina itakuwa njia sahihi ya kwenda. ERIC SCHMIDT: Haya. Ambaye alimwambia hivi? SAWA. Mimi si sayansi ya kompyuta on-- RAIS OBAMA: Tumekuwa got wapelelezi wetu huko. PROFESA: zote haki. Hebu kuondoka nyuma yetu sasa dunia ya kinadharia ya algorithms katika uchambuzi asymptotic yake, na kurudi baadhi ya mada kutoka wiki sifuri na moja, na kuanza kuondoa baadhi ya magurudumu mafunzo, kama wewe. Hivyo kwamba kwa kweli kuelewa hatimaye kutoka ardhini hadi, nini kinachoendelea chini ya Hood, wakati kuandika, kukusanya, na kutekeleza mipango. Kumbuka hasa, kwamba hii ilikuwa ni kwanza C mpango sisi inaonekana katika, kisheria, rahisi mpango ya kila aina, kiasi kuzungumza, eti, ni Prints, Hello World. Na kukumbuka kuwa nilisema mchakato kwamba chanzo kanuni hupitia ni hasa hili. Wewe kuchukua chanzo kanuni yako, kupita hivyo kwa njia ya compiler, kama Clang, na nje anakuja kitu kificho kwamba ili kuangalia kama hii, zeros na ndio kwamba CPU kompyuta, kati usindikaji kitengo au ubongo, hatimaye anaelewa. Ni zinageuka kuwa hiyo ni kidogo ya kurahisisha, kuwa tuko sasa katika nafasi ya tease mbali kuelewa nini kweli imekuwa kinachoendelea chini ya Hood kila wakati wewe kukimbia Clang, au zaidi kwa ujumla, kila wakati wewe kufanya mpango, kutumia Tengeneza na CF 50 IDE. Hasa, mambo kama hii ni ya kwanza yanayotokana, wakati wa kwanza kukusanya mpango wako. Kwa maneno mengine, wakati kuchukua chanzo kanuni yako na kukusanya ni, nini kwanza kuwa outputted na Clang ni kitu inayojulikana kama mkutano kificho. Na kwa kweli, inaonekana hasa kama hii. Mimi mbio amri katika mstari amri mapema. Clang dash mji mkuu wa hello.c, na hii kuundwa faili kwa ajili yangu aitwaye hello.s, ndani ya ambayo yalikuwa hasa yaliyomo hizi, na zaidi kidogo juu na kidogo zaidi chini, lakini nimekuwa kuweka juiciest habari hapa kwenye screen. Na kama ukiangalia kwa karibu, utaona angalau chache ukoo maneno. Tuna kuu juu. Tuna printf chini katikati. Na sisi pia kuwa hujambo dunia backslash n katika quotes chini chini. Na kila kitu kingine katika hapa ni maelekezo ya chini sana kiwango cha kwamba CPU kompyuta anaelewa. Maelekezo CPU kwamba hoja kumbukumbu kote, kwamba masharti mzigo kutokana na kumbukumbu, na hatimaye, magazeti mambo kwenye screen. Sasa nini kinatokea ingawa baada ya huu kificho mkutano ni kuzalisha? Hatimaye, kufanya, kwa kweli, bado kuzalisha kitu kificho. Lakini hatua ambazo zina kweli wamekuwa kinachoendelea chini ya Hood kuangalia kidogo zaidi kama hii. Chanzo kanuni inakuwa mkutano kificho, ambayo kisha inakuwa kitu kificho, na maneno operative hapa ni kwamba, wakati kukusanya chanzo kanuni yako, nje anakuja mkutano kificho, na kisha wakati wewe kukusanyika mkutano kanuni yako, nje anakuja kitu kificho. Sasa Clang ni super kisasa, kama mengi ya compilers, na ni gani hatua zote hizi pamoja, na ni gani si lazima pato yoyote kati mafaili kwamba unaweza hata kuona. Ni tu inaandaa mambo, ambayo ni neno la jumla kwamba inaelezea mchakato mzima huu. Lakini kama kweli unataka kuwa fulani, kuna mengi zaidi kinachoendelea huko pia. Lakini hebu fikiri sasa kwamba hata kuwa super rahisi mpango, hello.c, aitwaye kazi. Ni wito printf. Lakini sikuweza kuandika printf, kwa hakika, kuja na c, hivyo kusema. Ni kazi wanakumbuka kwamba ni alitangaza katika kiwango io.h, ambayo ni header faili, ambayo ni mada tutaweza kweli mbizi katika kina zaidi kabla ya muda mrefu. Lakini mpira wa kichwa faili ni kawaida akifuatana na kanuni faili, chanzo kanuni faili, hivyo kiasi kama kuna kiwango io.h. Wakati fulani uliopita, mtu, au someones, pia aliandika faili inayoitwa kiwango io.c, katika ambayo ufafanuzi halisi, au utekelezaji wa printf, na mashada ya kazi nyingine, ni kweli imeandikwa. Hivyo kutokana na kwamba, kama tunaona kuwa hapa upande wa kushoto, hello.c, kwamba wakati ulioandaliwa, inatupa hello.s, hata kama Clang haina bother kuokoa katika sehemu tunaweza kuona hilo, na kwamba mkutano kificho anapata wamekusanyika katika hello.o, ambayo ni, kwa kweli, jina chaguo-msingi kutokana na wakati wowote kukusanya chanzo kanuni katika kitu kificho, lakini si kabisa tayari nitafanya hivyo bado, kwa sababu hatua nyingine ina kutokea, na ina imekuwa ikitokea kwa michache iliyopita wiki, labda unbeknownst wewe. Hasa mahali fulani katika CS50 IDE, na hii, pia, itakuwa kidogo ya kurahisisha kwa muda, kuna, au ilikuwa juu ya muda, faili inayoitwa kiwango io.c, kwamba mtu ulioandaliwa katika io.s kiwango au sawa, kwamba mtu kisha wamekusanyika ndani ya kiwango cha io.o, au ni zamu nje katika faili tofauti kidogo muundo ambayo yanaweza kuwa tofauti faili ugani kabisa, lakini katika nadharia na conceptually, hasa hatua hizo alikuwa kutokea kwa namna fulani. Ambayo ni kusema, kwamba sasa wakati mimi nina kuandika mpango, hello.c, kwamba tu anasema, hujambo dunia, na mimi nina kutumia kanuni ya mtu mwingine kama printf, ambayo mara kwa mara nyingine juu ya muda, katika faili inayoitwa kiwango io.c, kisha kwa namna fulani mimi kuwa na kuchukua yangu kitu kificho, zeros yangu na ndio, na mtu huyo kitu kanuni, au zeros na ndio, na kwa namna fulani kiungo wao pamoja katika faili moja la mwisho, aitwaye hello, kwamba ina wote wa zeros na wale wa kutoka kazi yangu kuu, na wote wa zeros na ndio kwa printf. Na hakika, kwamba mchakato wa mwisho ni kuitwa, kuunganisha kitu kificho yako. Pato la ambayo ni faili la kutekelezwa. Hivyo katika haki, katika Mwisho wa siku, chochote imebadilika tangu wiki moja, wakati sisi kwanza ilianza kuandaa mipango. Kwa hakika, yote haya yamekuwa kinachotokea chini ya Hood, lakini sasa tuko katika nafasi ambapo tunaweza kweli tease mbali hatua hizi mbalimbali. Na hakika, mwishoni mwa wa siku, bado tuko kushoto na zeros na ndio, ambayo ni kweli segue kubwa sasa kwa uwezo mwingine wa C, kwamba tumekuwa si alikuwa na kujiinua na uwezo mkubwa hadi sasa, unaojulikana kama bitwise waendeshaji. Kwa maneno mengine, hivi sasa, wakati wowote tumekuwa kushughulikiwa na data katika C au vigezo katika C, tulikuwa na mambo kama chars na ikifungwa na ins na anatamani na mara mbili na kama, lakini wote wa wale ni vipande angalau nane. Tumekuwa kamwe bado na uwezo wa kuendesha bits mtu binafsi, hata kama mtu binafsi kidogo, sisi kujua, wanaweza kuwakilisha 0 na 1. Sasa ni zamu kuwa katika C, wewe wanaweza kupata vipande ya mtu binafsi, kama unajua syntax, na ambayo kwa kupata kwao. Hivyo hebu tuangalie katika bitwise waendeshaji. Hivyo pichani hapa ni ishara chache kuwa tumekuwa, aina ya, aina ya, kuona mbele. Mimi naona ampersand, wima bar, na baadhi ya watu wengine pia, na kukumbuka kuwa ampersand ampersand ni kitu tumeona kabla. Mantiki NA operator, ambapo una wawili kati yao pamoja, au mantiki AU operator, ambapo na baa mbili wima. Bitwise waendeshaji, ambayo tutaweza ona kazi juu ya bits mmoja mmoja, tu kutumia ampersand moja, moja wima bar, ishara kareti huja ijayo, kidogo tilde, na kisha kushoto mabano kushoto mabano, au haki mabano mabano haki. Kila moja ya haya kuwa na maana tofauti. Kwa kweli, hebu tuangalie. Hebu kwenda wa zamani shule leo, na matumizi screen kugusa kutoka yesteryear, inayojulikana kama bodi nyeupe. Na bodi hii nyeupe ni kwenda kuruhusu sisi kueleza baadhi ya alama haki rahisi, au tuseme baadhi ya kanuni haki rahisi, kwamba tunaweza kisha hatimaye kujiinua, ili kupata mtu binafsi bits ndani ya C mpango. Kwa maneno mengine, hebu kufanya hivyo. Hebu majadiliano kwanza kwa muda juu ampersand, ambayo ni bitwise NA operator. Kwa maneno mengine, hii ni alama ambayo inaruhusu yangu kuwa mkono wa kushoto kutofautiana kawaida, na mkono wa kulia kutofautiana, au thamani ya mtu binafsi, kwamba kama sisi NA nao pamoja, anitiaye matokeo ya mwisho. Basi je, I mean? Kama katika mpango, una kutofautiana kwamba maduka moja ya maadili haya, au hebu kushika ni rahisi, na tu kuandika zeros na ndio mmoja mmoja, hapa ni jinsi ampersand operator kazi. 0 ampersand 0 kinaenda sawa 0. Sasa kwa nini ni kwamba? Ni sawa na Maneno Boolean, kwamba tumekuwa kujadiliwa hivi sasa. Kama unafikiri baada ya yote, ni 0 uongo, 0 ni uongo, uongo na uongo ni, kama tumekuwa kujadiliwa kifikra, pia uongo. Ili tuweze kupata 0 hapa pia. Kama wewe kuchukua 0 ampersand 1, vizuri kwamba, pia, ni kwenda kuwa 0, kwa sababu kwa hili mkono wa kushoto kujieleza kuwa ni kweli au 1, ingekuwa haja ya kuwa ni kweli na kweli. Lakini hapa tuna uongo na kweli, au 0 na 1. Sasa tena, kama tuna 1 ampersand 0, kwamba, pia, ni kwenda kuwa 0, na kama tuna 1 ampersand 1, hatimaye tuna 1 kidogo. Hivyo kwa maneno mengine, sisi siyo kufanya kitu cha kuvutia na alama hii bado tu, operator hii ampersand. Ni bitwise NA operator. Lakini haya ni viungo kupitia ambayo tunaweza kufanya mambo ya kuvutia, kama tutaweza hivi karibuni kuona. Sasa hebu tuangalie moja tu wima bar juu hapa juu ya haki. Kama mimi na 0 kidogo na mimi AU ni pamoja na, bitwise AU operator, mwingine 0 kidogo, ambayo inaenda nipe 0. Kama mimi kuchukua 0 kidogo na AU ni pamoja na 1 kidogo, kisha mimi nina kwenda kupata 1. Na kwa kweli, tu kwa uwazi, napenda kwenda nyuma, ili baa yangu wima si makosa kwa 1 ya. Napenda kuandika upya yote ya 1 wangu ni kidogo zaidi wazi, ili tuweze ijayo kuona, kama mimi 1 AU 0, kwamba kinaendelea kuwa 1, na kama nina 1 AU 1 kwamba, pia, ni kwenda kuwa 1. Hivyo unaweza kuona mantiki kwamba AU alama kutenda tofauti sana. Hii inanipa 0 AU 0 anitiaye 0, lakini kila mchanganyiko mengine anitiaye 1. Hivyo muda mrefu kama nina moja katika 1 fomula, matokeo ni kwenda kuwa 1. Kwa upande mwingine pamoja na NA operator, ampersand, tu kama nina mawili 1 katika equation, Je, mimi kwa kweli kupata 1 nje. Sasa kuna wengine wachache waendeshaji pia. Mmoja wao ni mdogo zaidi kushiriki. Hivyo basi mimi kwenda mbele na kufuta hii bure juu ya baadhi ya nafasi. Na hebu tuangalie ishara kareti, kwa muda tu. Hii ni kawaida tabia unaweza aina kwenye keyboard kufanya yako Shift na kisha moja ya idadi atop Marekani yako keyboard. Hivyo hii ni ya kipekee AU operator, kipekee AU. Hivyo sisi tu kuona operator AU. Hii ni ya kipekee AU operator. Nini kweli tofauti? Naam hebu tu kuangalia fomula, na kutumia hii kama viungo hatimaye. 0 XOR 0. Mimi nina kwenda kusema ni daima 0. Hiyo ni ufafanuzi wa XOR. 0 XOR 1 ni kwenda kuwa 1. 1 XOR 0 ni kwenda kuwa 1, na 1 XOR 1 ni kwenda kuwa? Kosa? Au haki? Sijui. 0. Sasa ni nini kinaendelea hapa? Vizuri kufikiria kuhusu jina la operator huu. Exclusive AU, hivyo kama jina, aina ya, unaonyesha, jibu ni kwenda tu kuwa 1 kama pembejeo ni ya kipekee, peke mbalimbali. Hivyo hapa ni pembejeo huo, hivyo pato ni 0. Hapa ni pembejeo huo, hivyo pato ni 0. Hapa ni matokeo ni tofauti, wao ni ya kipekee, na hivyo pato ni 1. Hivyo ni sawa na NA, ni sawa sana, au tuseme ni sawa na AU, lakini tu kwa njia ya kipekee. Hii moja ni tena 1, kwa sababu tuna mbili 1 ya, na si kwa ajili tu, tu mmoja wao. Sawa. Je kuhusu watu wengine? Naam tilde, wakati huo huo, ni kweli nzuri na rahisi, nashiriki. Na hii ni unary operator, ambayo ina maana ni kutumika kwa pembejeo moja tu, operand moja, hivyo kusema. Si kwa kushoto na kulia. Kwa maneno mengine, kama wewe kuchukua tilde ya 0, jibu itakuwa kinyume. Na kama wewe kuchukua tilde ya 1, jibu kutakuwa na kinyume. Hivyo operator tilde ni njia ya kukataa kidogo, au flipping kidogo kutoka 0-1, au 1-0. Na kwamba zinatuacha hatimaye na waendeshaji wa mwisho mbili tu, kinachojulikana kushoto kuhama, na kinachojulikana haki ya kuhama operator. Hebu tuangalie jinsi wale kazi. Kushoto kuhama operator, imeandikwa na mabano mbili pembe kama hicho, kazi kama ifuatavyo. Kama pembejeo yangu, au operand wangu, kwa upande wa kushoto mabadiliko operator ni rahisi kabisa 1. Na mimi kisha kuwaambia kompyuta kwa kushoto kuhama kwamba 1, wanasema maeneo saba, Matokeo yake ni kana kwamba mimi kuchukua kwamba 1, na hoja hiyo maeneo saba zaidi kwa kushoto, na kwa default, tunakwenda kudhani kwamba nafasi na haki ni kwenda kuwa padded na zeros. Kwa maneno mengine, 1 wa kushoto kuhama 7 ni kwenda kunipa kwamba 1, ikifuatiwa na 1, 2, 3, 4, 5, 6, 7 zeros. Hivyo katika njia, utapata kuchukua idadi ndogo kama 1, na kwa uwazi kufanya hivyo mengi sana, kubwa sana kwa njia hii, lakini sisi ni kweli kwenda kuona mbinu zaidi wajanja kwa kuwa badala yake, pia, Sawa. Hiyo ni kwa wiki tatu. Tutaona wewe wakati ujao. Hii ilikuwa ni CS50. [Music kucheza] SPIKA 1: Alikuwa katika vitafunio bar kula moto fudge sundae. Alikuwa ni yote juu ya uso wake. Yeye amevaa kwamba chocolate kama ndevu SPIKA 2: unafanya nini? SPIKA 3: Hmmm? Nini? SPIKA 2: Je, tu mara mbili kuzamisha? Wewe mara mbili dipped Chip. SPIKA 3: Samahani. SPIKA 2: Wewe limelowekwa Chip, wewe alichukua kuumwa, na wewe limelowekwa tena. SPIKA 3: SPIKA 2: Kwa hivyo hiyo ni kama kuweka kinywa nzima haki yako katika kuzamisha. Wakati mwingine kuchukua Chip, tu kuitia mara moja, na mwisho ni. SPIKA 3: Unajua nini, Dan? Wewe kuzamisha njia hiyo unataka kuzamisha. Mimi itabidi kuzamisha njia hiyo nataka kuzamisha.