[MUSIC PLAYING] ANDI PENG: hissəsinin həftə 3 xoş gəlmisiniz. Bütün gələn üçün təşəkkür edirik, uşaqlar, Bu əvvəllər start zaman gün. Biz bir gözəl az var intim qrup bu gün. Belə ki, inşallah almaq lazımdır rəngi, bəlkə də, erkən, bir az erkən gün. Belə ki, tez, yalnız bir gündəmində bu gün elanlar. Biz başlamaq əvvəl, biz istəyirik yalnız getmək gedir bəzi qısa maddi-texniki məsələlər, pset suallar, debrief ki, kimi şeylər. Və sonra biz doğru dalış lazımdır. Biz gdb adlı ayıklama istifadə edəcəyik bizim kodu, debunking başlamaq David gün mühazirə izah etdi. Biz növ dörd növ artıq getmək lazımdır. Biz olduqca tez onların üzərində getmək lazımdır Onlar olduqca sıx istəyirik ildən. Amma bilirik ki, bütün slaydlar və mənbə kodu online həmişə var. Belə ki, sizin okuma da, çekinmeyin geri getmək və nəzər. Biz keçmək lazımdır asimptotik notation olan bir xülya yoldur deyərək "runtimes," biz böyük O, harada ki, David mühazirə izah etdi. Və biz də Omega, olan aşağı bağlı iş deyil. Və biz bir az daha çox danışmaq lazımdır dərin necə o işləri ilə əlaqədar. Və nəhayət, biz ikili axtarış artıq getmək lazımdır Çünki artıq siz bir çox Sizin psets nəzər yəqin ki, bilirik ki, ki, pset bir məsələdir. Belə ki, bütün xoşbəxt olacaq bu gün əhatə edir. Və nəhayət, başı bölmə rəy, Mən, həqiqətən, Təxminən 15 dəqiqə sol Sonunda yalnız artıq getmək pset3 məntiqi, hər hansı bir sualınız, bəlkə doğru bir az Siz, biz proqramlaşdırma başlamaq əvvəl. Belə ki, vasitəsilə almaq üçün cəhd edək olduqca tez material. Və sonra biz bəzi vaxt sərf edə bilər pset üçün çox suallar alaraq. OLDU. Tez, belə ki, yalnız bir neçə Biz əvvəl elanlar gün başlayın. Əvvəlcə edilməsi xoş gəlmisiniz Sizin psets iki vasitəsilə. Mən your-- Bəli, edək nəzər etdi ki, bir alqış almaq. Əslində, mən, həqiqətən heyran. Mən sizə uşaqlar üçün ilk pset pilləli Keçən həftə və uşaqlar inanılmaz idi. Style nöqtəsində idi bir neçə şərh ilə yanaşı. Siz həmişə istəyirik etmək kodu şərh. Lakin psets nöqtəsində idi. Və onu saxlamaq. Və bu sinif şagirdi üçün yaxşı Sizlərin qoyulması ki, görəcəksiniz sizin stil qədər səy Sizin kodu və dizayn görmək üçün, biz istərdik ki,. Beləliklə, mən minnətdarlığımı boyunca keçən alıram TAŞ istirahət üçün. Lakin orada bir bir neçə debrief suallar Mən ki, artıq getmək istəyirəm həm mənim həyat edəcək və digər bir çox Taş "bir az daha asan yaşayır. Birincisi, mən fark etdik bu Ötən Siz neçə week-- on check50 çalışan edilmişdir Siz əvvəl code təqdim? OLDU. Belə ki, hər kəs check50 bunu etmək lazımdır, həqiqətən biz bir secret-- çünki Bizim düzgünlüyünə hissəsi kimi check50 run kodu test üçün scripts. Sizin kodu uğursuz əgər Belə ki, check50, bütün ehtimalı, yəqin ki, olacaq həm də çek uğursuz. Bəzən uşaqlar doğru cavab var. Kimi, görməmiş, bəzi sağ nömrələri var, Yalnız bəzi əlavə məhsulları çap. Və əlavə stuff həqiqətən çek etmədikdə, kompüter deyil, çünki həqiqətən axtarır nə bilirik. Və belə ki, yalnız vasitəsilə davam edəcək çıxış deyil ki, görəcəksiniz Biz cavab gözləyirik nə uyğun ola bilər, və bu səhv qeyd etmək. Mən baş bilirik ki, Sizin hallarda bəzi bu həftə. Mən geri və əl getdi hər kəsin kodu regraded. Baxmayaraq ki, gələcəkdə, , əmin olun edin Siz yayınlıyorsanız ki, Sizin kodunu 50 oldu. Bu TY üçün bir ağrı növü var, çünki regrade əl geri getmək və üçün hər üçün hər bir pset bir az buraxılmış instansiya. Beləliklə, mən heç bir xal off almadı. Mən bəlkə off etdi edirəm bir və ya dizayn iki. Baxmayaraq ki, gələcəkdə, əgər Siz check50 uğursuz edirik bal alınacaq düzgünlüyünə off. Bundan başqa, psets var günorta saatlarında cümə görə. Mən yeddi dəqiqə var edirəm biz sizə gec güzəşt dövrü. Harvard vaxt Per, onlar üçün icazə edirik yeddi dəqiqə gec, hər şey ola bilər. Belə ki, burada Yale alacağıq eləcə də riayət etməlidir. Amma olduqca çox, 12:07 at, Sizin pset deyilsə, kimi gec qeyd olacaq. Isə Və qeyd olunur kimi gec TA-- mən hələ psets grading olacaq. Belə ki, hələ bir sinif görünür görəcəksiniz. Lakin, bilirik ki, semestr sonunda, bütün gec psets yalnız olacaq avtomatik kompüter zeroed. Biz iki səbəbə görə bunu. One, bəzən biz almaq Dekan bəhanələrlə kimi, bağışlanmaq, sonra mən hələ bilmirəm. Belə ki, biz grading əmin etmək istəyirəm yalnız halda hər şey kimi, mən bir Dekan bəhanə itkin. İkincisi, saxlamaq mind, siz hələ bilərsiniz bir pset düşmək ki, tam həcmi xal var. Və belə ki, biz sinif kimi Sizin psets yalnız sizin dairəsi əmin ki, var və siz onları çalışırıq. Gec belə olsa da, hələ də lazımdır çərçivəsində xal üçün kredit almaq, mən hesab edirəm. Hekayəsidir Belə ki, mənəvi etmək Sizin psets on-vaxt var. Onlar vaxtında olmadıqda, Bu böyük deyil ki, bilirik. Bəli, mən hərəkət əvvəl, hər kəs yoxdur pset Əlaqə bağlı hər hansı bir sualınız? Bəli. Auditoriya: Əgər biz demək mi psets biri düşmək olar? ANDI PENG: Bəli. Belə ki, doqquz psets ümumi var dövr ərzində. Və daxilində varsa points belə əhatə dairəsi, yalnız olduqca çox, siz cəhd problem, siz vaxt qoyurlar Siz var ki, göstərir nümayiş Siz spec oxumaq etdik. Olduqca çox əhatə dairəsi var. Və yerinə əgər çərçivəsində bal, biz aşağı açılır tam əhatə xaricində bir. Belə ki, sizin üstünlüyü var tam və hər pset cəhd edin. Hətta upload-- heç əgər Onlara bütün yüklemek çalışır. Və sonra biz ümid edə bilərsiniz siz bu bal bəzi geri verir. Cool. Hər hansı digər suallar? Great. İkincisi, ofis bir neçə hours-- ofis saat haqqında tez qeydlər. Belə ki, ilk, erkən həftə gəlir. Heç bir at heç deyil bazar ertəsi ofis saat. Christabel gəldi ofis saat dünən gecə. Bəli, Christabel. Və biz ofisində nə var idi Dünən gecə saatlarında Christabel? Auditoriya: Biz dondurma var idi. ANDI PENG: Belə ki, doğru, biz idi ofis saat dondurma ötən gecə. Mən ki, vəd edə bilməz baxmayaraq Biz ofis saat dondurma lazımdır hər həftə, mən sizə vəd edə bilər nə əhəmiyyətli dərəcədə olacaq ki, TA nisbəti daha yaxşı tələbə. Legit kimi, bir üç kimi. , Ilə fərqli Halbuki Cümə axşamı, siz təxminən 150 var həqiqətən uşaq və dondurma vurğulayıb. Və yalnız hər kəs üçün məhsuldar deyil. Hekayə belə mənəvi erkən gəlib ofis saat və yaxşı şeylər olacaq. Həmçinin, sual hazırlanmış gəlir. Sən bilirsən? Asılı olmayaraq nə TAŞ, mən deyərək edilmişdir edirəm, biz bir neçə tələbə əldə etdik 10:50, kimi, Cümə axşamı günü gəlib edən spec oxumaq olmayan mənə kömək kimi olan, mənə kömək. Təəssüf ki, o nöqtədə var çox deyil biz sizə kömək edə bilər. Belə ki, erkən həftə gəlmək edin. Ofis saat erkən gəlir. Sual hazırlanmış gel. Kimi, siz olun tələbə, burada belə ki, olmaq lazımdır Taş boyunca sizə yardım edə bilər nə ofis saat olan olmalıdır üçün ayrılmış olunacaq. İkincisi, mən professor bilirəm testlər bizə sürpriz etmək istəyirəm. Mən bir professor o idi yo kimi, yeri gəlmişkən, ki, aralıq xatırlayıram növbəti Bazar ertəsi var. Bəli, mən ki, aralıq haqqında bilmirdim. Beləliklə, mən ki, olmaq üçün gedirəm TA ki, siz bütün viktorina xatırladır Bilirsiniz, çünki 0-, biz CS istəyirik. İndi biz görülən seriallarda var ki, siz almaq Bu viktorina 0 niyə, eh, 1 viktorina deyil? OLDU. Oh, mən ki, bir sıra chuckles var. OLDU. Belə ki, viktorina 0, əgər 14 oktyabr olacaq Bazar ertəsi-çərşənbə bölməsində istəyirik və 15 oktyabr siz əgər Çərşənbə axşamı-Cümə axşamı bölmə. Bu üçün müraciət etmir Harvard sizin Mən sizə bütün olacaq edirəm who-- 14 viktorina alaraq. Belə ki, Bəli, gələn həftə, əgər David, mühazirə, gedir Bəli, bu barədə belə viktorina gələn həftə, bütün çünki şok deyil Siz bölmə gəldi və bilirik ki, sizin viktorina 0 iki həftə var. Və biz nəzərdən lazımdır sessiyaları və hər şey. Haqqında heç bir narahatlıq ki, qorxuram. Hər hansı bir sualınız Hər hansı bir sualınız, əvvəl bütün bağlı maddi-texniki məsələləri, grading, ofis saat, bölmələr? Bəli. Auditoriya: viktorina edir So mühazirə zamanı olacaq? ANDI PENG: Bəli. Viktorina Belə ki, mən hesab edirəm ki, 60 ki, zaman intervalı nəzərdə dəqiqə Siz yalnız almaq lazımdır ki, mühazirə zalında. Belə ki, gəlib yoxdur təsadüfi 7:00 PM kimi, on. Bu, bütün yaxşı. Bəli. Cool. Oldu. Belə ki, biz olacaq Sizə bir anlayış təqdim David cür artıq bu həftə Bu ötən həftə mühazirə də toxunub. Bu gdb deyirlər. Və necə bir çox, isə sizin psets yazı əlbəttə, deyir ki, bir böyük düyməsinə fark etdik Sizin IDE üst "debug" OLDU. Belə ki, indi biz, həqiqətən, axtarıb tapmaq üçün almaq lazımdır nə düyməsini sirr həqiqətən yoxdur. Və mən bir deyil, sizə zəmanət gözəl, gözəl bir şey. Indiyə qədər, mən hesab edirəm up So iki şey var oldu tələbələr adətən olmuşdur psets ayıklama zaman edir. One, onlar da əlavə printf () - belə bir neçə xətləri, Onlar printf () əlavə - oh, bu dəyişən nədir? Oh, bu dəyişən nə, indi və cür inkişaf görmək Sizin kodu çalışır kimi. Və ya uşaq nə ikinci metodu onlar yalnız bütün şey yazmaq və sonra sonunda bu kimi gedin. Ümid edirəm ki, işləyir. Mən sizə zəmanət, gdb daha yaxşıdır Bu üsulları həm çox. Bəli. Belə ki, bu yeni yaxşı dost olacaq. Bu gözəl bir şey var, çünki ki, vizual ekran, həm də nə code edir müəyyən bir nöqtədə eləcə də nə bütün kimi dəyişənlər daşıyırıq, Onların dəyərləri nə kimi, xüsusi nöqtədə. Və bu şəkildə, həqiqətən bilərsiniz Sizin kodu breakpoints. Siz xətti ilə xətti ilə çalıştırabilirsiniz. Və gdb yalnız üçün olacaq Siz, sizin üçün göstərilir nə bütün dəyişənlərin onlar nə edirlər ki, nə kodu olur. Və belə bir şəkildə, bu çox asan görmək üçün nə printf-ing əvəzinə baş ya bəyanatlar yazırlar. Beləliklə, biz bu nümunə edəcəyik. Belə ki, bu bir az mücərrəd görünür. Heç bir narahatlıq, biz nümunələri edəcəyik. Və belə mahiyyətcə, üç böyük, Siz gdb lazımdır funksiyaları ən çox istifadə olunan Next, artıq addım, və düymələri daxil addım. Mən artıq baş gedirəm Orada, həqiqətən, indi. Belə ki, uşaqlar bütün görə bilərsiniz və ya bir az zoom lazımdır? Geri, siz bilərsiniz? Mən zoom lazımdır? Bir azca? Sərin, OK. Biz orada getmək. OLDU. Belə ki, Mən burada var görməmiş üçün həyata keçirilməsi. Və uşaqlar bir çox yazdı ki, forması isə loop görməmiş etmək üçün bir mükəmməl məqbul yoldur Bu sadəcə nə üçün başqa bir yol pseudocode modulo bölmək. Sonra ola bilər, çünki sizin dəyəri və sonra qalan yoxdur. Və sonra yalnız bilərsiniz bütün birlikdə əlavə edin. Edirəm nə məntiq yoxdur burada hər kəs mənada, Biz başlamaq əvvəl? Kimi? Cool. Great. Bu olduqca sexy parça var kodu, mən deyərdim. Mən David, ifadə edərək, bir müddət sonra, mühazirə, Bütün kodu görmeye başlamaq lazımdır gözəl bir şey kimi. Və bəzən gözəl görəndə indeksi, belə bir gözəl hissi var. Lakin, bu kodu çox ederken gözəl, düzgün işləmir. Belə ki, bu barədə check50 run edək. 50 20-- oop yoxlayın. 2? Ki pset2 deyilmi? Bəli. Oh, pset1. OLDU. Beləliklə, biz check50 axır. Və uşaqlar burada görə bilərsiniz kimi, Bu hallarda bir neçə uğursuz oldu. Və bəzi üçün Sizin problem dəstləri bunu əlbəttə ki, ah, niyə iş deyil, kimi istəyirik. Nə üçün bəzi iş dəyərlər lakin başqaları üçün? Yaxşı, gdb siz rəqəm kömək edir niyə o giriş iş deyil. OLDU. Belə ki, bir görək Mən check50 verə bilmirdi çek 0,41 giriş dəyəri idi. Düzgün cavab Belə ki, Siz əldə edilməlidir 4 edir. Amma əvəzinə mən çap edirəm nə səhv 3-n edir. Belə ki, yalnız, yalnız özünüz bu run bildirin check50 iş ki, əmin olun. Nin ./greedy edək. Bağışlayın, mən görməmiş etmək lazımdır. Biz orada getmək. İndi ./greedy. Nə qədər borclu? Nin 0,41 edək. Və yep, biz burada bax Bu 3 tipi ki, zaman düzgün cavab, əslində, 4 olmalıdır. Belə ki, gdb daxil bildirin və biz necə Bu problem təyinat haqqında getmək bilər. Ilk addım belə həmişə kodu ayıklama breakpoint müəyyən edir, və ya bir nöqtə olan siz kompüter və ya istəyirəm ayıklama baxaraq başlamaq. Əgər belə deyil, həqiqətən, Sizin problem nə, adətən, tipik şey istəyirik Bunu əsas Bizim breakpoint müəyyən edir. Belə ki, uşaqlar bu edə bilərsiniz əgər orada qırmızı düyməsinə, yep, mənə qəbulu olan bir əsas funksiyası üçün breakpoint. Hesab edirəm ki, basın. Və sonra mən debug düyməsini qədər getmək olar. Hesab edirəm ki, düyməsini basın. Mən əgər mənə geri zoom imkan verir. Biz orada getmək. Belə ki, biz, burada, sağ bir panel var. Mən geri, uşaqlar kədərləndim, siz həqiqətən həqiqətən də görmək bilməz. Amma mahiyyətcə, bütün bu hüququ panel edir həm də qeyd track saxlanılması edir kod xətt line, Kompüter Hal-hazırda çalışan, həmçinin dəyişənlərin bütün kimi burada. Belə ki, qəpik, pul, n var, bütün müxtəlif şeylər elan Bu nöqtədə. Heç bir narahatlıq, çünki biz həqiqətən var hələ heç bir dəyişənlərin onları başlatılmış. Sizin kompüter Belə ki, kompüter yalnız görən oldu, oh, 32767 son istifadə funksiyası mənim kompüter yaddaş kosmik. Qəpik hazırda harada ki var. Amma heç bir dəfə siz kodu run Bu başlatılmış olmalıdır. Belə ki, çox, xətti ilə gedək line, nə burada olur. OLDU. Burada belə üç Mən yalnız izah düymələri. Siz Play, və ya Run funksiyası var düyməsini, siz düyməsini üzərində addım və siz də düyməsini daxil addım var. Və mahiyyətcə, bütün üç Onlara yalnız kod vasitəsilə getmək və müxtəlif şeylər. Belə ki, adətən, siz ayıklama etdiyiniz zaman, biz yalnız Play hit istəmirəm, Play yalnız davam edəcək, çünki Bunun sonuna kodu. Və sonra həqiqətən deyil nə sizin problem Bir neçə breakpoints halda deyil. Bir neçə breakpoints müəyyən etsəniz, yalnız avtomatik olaraq bir breakpoint run, növbəti, növbəti. Lakin bu halda biz yalnız bir, çünki bizim yol işləmək istəyirəm alt üst aşağı. Belə ki, düyməsini ignore olacaq İndi bu proqramın məqsədləri üçün. Funksiyası üzərində Addım Belə ki, yalnız hər bir xətti üzərində addımlar və sizə deyir nə kompüter edir. Funksiyası daxil Step gedir faktiki funksiyası daxil ki, kodu sizin line var. Belə ki, məsələn, printf kimi () doğru, bir funksiyası var? Mən fiziki addım istəyirdi printf () funksiyası daxil, Mən, həqiqətən, parça daxil getmək olardı printf () yazılı və görmək edildi kodu nə var olur. Amma adətən, biz güman biz sizə code işləyir. Biz () işləyir printf daşımır. Biz GetInt () iş olduğunu daşımır. Belə ki, heç bir ehtiyac üçün var bu funksiyaları daxil addım. Amma funksiyaları var, əgər Özünüz yazmaq Kontrol istədiyiniz ki, neler həyata, addım istəyirəm ki, funksiyası daxil. Belə ki, indi biz yalnız olacaq kodu bu parça üzərində addım. Belə ki, görək. Oh, çap, "Oh hai necə çox dəyişiklik borclu? " Biz qayğı yoxdur. Biz bu iş bilirik, belə ki, biz artıq addım. Belə ki, n, bizim float olan ki, biz initialized-- var və ya declared-- üst qədər, biz indi istəyirik GetFloat ki, bərabər (). Belə ki, üzərində addım edək. Və biz görmək bottom Burada proqram dəyəri daxil mənə isteyen olunur. Belə ki, giriş biz istəyirik dəyər imkan 0,41 olan, burada test. Great. Belə ki, indi n-- uşaqlar görürsünüz Burada Alt bu saxlanılmalıdır Çünki biz hələ dairəvi deyil, bu oxşar nəhəng saxlanılır 0,4099999996 edir float, kifayət qədər yaxın olan bizim məqsədləri, indi 0,41 üçün. Və sonra biz, sonra kimi görürsünüz biz proqramı üzərində gücləndirməklə davam, Burada sonra n olmuşdur dairəvi və qəpik 41 olmuşdur. Great. Belə ki, biz yuvarlaqlaşdırma nin iş ki, bilirik. Biz bilirik ki, qəpik doğru sayı, belə ki, bilirik həqiqətən problem. Beləliklə, biz addım davam Bu proqram haqqında. Biz burada getmək. Və belə kodu bu xətt sonra, biz biz nə qədər dörddə bilməlidir. Biz artıq addım. Və biz, əslində, bir var çox dörddəbir biz 25 çıxılacaq etdik, çünki 41 bizim ilkin dəyərindən. Və biz sent üçün 16 sol var. Hər kəs necə başa düşmək olar Proqram vasitəsilə gücləndirməklə olunur və niyə qəpik artıq 16 olmuşdur və nə, indi pul 1 oldu? Hər kəs məntiq təqib edir? Cool. Bu kəsir, belə ki, Proqramın iş, sağ? Biz məhz bunu bilirik biz bunu istəyirəm nə. Və biz, həqiqətən, olmadı oh, çap var, nə bu nöqtədə qəpik edir bu nöqtədə pul edir. Biz proqramı keçir davam edir. Üzərində addım. Cool. Biz Dimes üzərində gedin. Great. Biz qəbul ki, görəcəksiniz bir dime üçün $ 0.10 off. İndi biz iki pul var. Ki, doğru deyil. Biz pennies artıq getmək və biz biz qəpik artıq tərk var ki. Hmm, ki, qəribə deyil. Burada proqramında, mən idi Mənim pennies çıxılacaq üçün. Yəqin ki, mən yalnız idi ki, xətt hüququ edir. Və təəssüf ki, siz görə bilərsiniz Burada biz bilirik, çünki biz gücləndirməklə olunur ki, xətləri 32 və 33 vasitəsilə olduğu proqram var düzgün dəyişənlər run idi. Beləliklə, biz baxmaq və oh görə bilərsiniz, Mən burada qəpik subtracting alıram, lakin mən, həqiqətən deyiləm Mənim sikkə dəyər əlavə. Mən qəpik əlavə edirəm. Mən əlavə etmək istəmirəm qəpik, mən pul əlavə etmək istəyirəm. Beləliklə, biz pul üçün dəyişdirmək əgər, biz bir iş proqramı var. Mən check50 çalıştırabilirsiniz. Siz yalnız GDB hüququnun həyata çıxmaq bilər burada və sonra check50 axır. Mən yalnız bunu edə bilər. Mən görməmiş etmək lazımdır. 0,41. Və burada, bu çap var düzgün cavab həyata. Uşaqlar Gördüyünüz kimi, gdb həqiqətən güclü bir vasitədir biz çox kodu zaman üçün davam və bir çox dəyişənlər kimi, bizim üçün çətin ki, bir insan, takip. gdb kompüter, ayıklama, imkanı var hər şey takip. Mən yəqin ki, Visionaire, siz uşaqlar, bilirik bəzi seqmentasiyası çatışmazlıqlar edib ola bilər çalışan idi, çünki Sizin array hüdudlarından kənarda. Sezar Məsələn, ki məhz mən burada nə həyata etdik. Beləliklə, mən yoxlamaq unuttum nə əgər olur mən iki command line dəlilləri yox idi. Mən yalnız çek qoymadı. Mən Debug-- run əgər və mən müəyyən Mənim breakpoint orada sağ. Mən debug axır. OLDU. Bəli. Yəni əslində, gdb idi mənə demişəm bir seqmentasiya günah idi. Mən davam nə bilmirəm orada, lakin mən onu qaçdım zaman Bu işləyirdi. Siz vasitəsilə kodu xətləri çalıştırdığınızda və Gdb yalnız birdən sizə çıxmaq bilər getmək və qırmızı səhv nə baxmaq. Bu, hey, sizə deyim bir seqmentasiya günah var idi, siz daxil olmaq üçün cəhd o deməkdir ki, yox idi bir sıra yer. Bəli. Növbəti problem belə bu həftə müəyyən, uşaqlar yəqin ki, bir çox olacaq dəyişənlər ətrafında üzən. Siz əmin olmaq fikrində deyilik nə onlar bütün müəyyən bir nöqtədə deməkdir. Belə ki, gdb həqiqətən figuring sizə kömək edəcək onlar bütün bərabər nə və vizual ki, görəcəksiniz edə. Hər kəs necə səhv edir ki, hər hansı bir iş idi? Cool. Oldu. Belə ki, sonra, biz sağ dalış gedir müxtəlif dörd var Bu həftə üçün növ növləri. Necə bir çox ilk bütün, biz başlamaq əvvəl, pset3 üçün bütün spec oxumaq? OLDU. Mən sizə uşaqlar fəxr edirəm. Bu sinif yarısında kimi olan son dəfə xeyli çoxdur. Belə ki, böyük zaman, çünki biz məzmunu haqqında danışmaq məruzə ya üzr da, section-- da Mən istəyirəm ki, bir çox aid geri pset nə və istədiyiniz necə Sizin pset ki, həyata keçirir. Sizə olan gəlir əgər Belə ki, spec oxumaq, bu lazımdır Siz anlamaq üçün çox asan olacaq Mən deyəndə söhbət alıram nə, hey oh, bu, həqiqətən ola bilər bu cür həyata keçirilməsi üçün yaxşı bir yerdir. Oxumaq olan sizin So Sizin pset bir hissəsi kimi, bilirik ki SPEC, Siz olacaq növ bir növü yazın. Belə ki, bu çox faydalı ola bilər Siz bir çox bu gün. Beləliklə, biz ilə başlamaq lazımdır, mahiyyətcə, ən sadə növü sort, seçim sort. üçün tipik alqoritm Biz bu barədə getmək istədiyiniz necə is-- David bütün bu ilə getdi mühazirə, mən tez birlikdə hərəkət edəcəyik burada siz mahiyyətcə dəyərlərin bir sıra var. Və sonra tapmaq kiçik çeşidlənməmiş dəyəri və ki, dəyəri ilə dəyişdirmək ilk çeşidlənməmiş dəyəri. Və sonra yalnız təkrar saxlamaq Sizin siyahısına qalan. Və burada bir vizual şərh iş ki necə. Biz əgər Belə ki, məsələn, başlamaq üçün beş elementləri bir sıra, indeksi ilə 4 0, 3, 5, 2, 6 və 4 dəyərlər Belə ki, hazırda serialın yerləşdirilmiş, biz yalnız güman olacaq onlar bütün çeşidlənməmiş olduğunu biz başqa test deyil, çünki. Belə ki, necə bir seçim sort ki iş ki, ilk olardı deyil tam axır çeşidlənməmiş serialın. Bu kiçik dəyər seçmək olardı. Bu halda, 3, sağ indi kiçik deyil. 5 olur. Xeyr, 5 than-- böyük deyil və ya sorry, 3 than-- az deyil. Belə ki, minimum dəyəri hələ 3. Və sonra 2 almaq. oh, görür kompüter, 2 az 3 edir. 2 indi minimum dəyəri olmalıdır. Və belə ki, ilk dəyəri ilə 2 svopları. Belə ki, bir ötürməsindən sonra, biz həqiqətən görürsünüz ki, 2 və 3 dəyişdirildikdə. Və biz yalnız bunu davam edirik Bu yenidən serialın qalan. Belə ki, biz yalnız axır olacaq serialın son dörd göstəriciləri. Biz 3 olduğunu görəcəksiniz növbəti minimum dəyəri. Beləliklə, biz 4 ilə dəyişdirmək olacaq. Və sonra biz yalnız saxlamaq olacaq nəhayət qədər keçən, siz bir sıralanır array əldə olan 2, 3, 4, 5, 6, bütün sıralanır. Hər kəs məntiqi anlamaq olar bir seçim sort işləri necə? Siz yalnız bir növ var minimum dəyəri. Siz nə takip saxlanılması edirik. Onu tapmaq zaman, siz onu dəyişdirmək serialın ilk dəyəri ilə və ya, ilk dəyər array növbəti dəyər. Cool. Belə ki, uşaqlar kimi növ qısa fikir gördüm, biz bu pseudocode olacaq. Belə ki, geri uşaqlar istəyirsinizsə bir masada bir qrup, hər kəsə təşkil bir az tərəfdaş təşkil edə bilər, mən gedirəm üç dəqiqə kimi uşaqlar vermək yalnız vasitəsilə danışmaq məntiq, ingilis, biz həyata edə bilər necə pseudocode bir seçim növ yazmaq üçün. Və konfet var. Gəlmək və konfet almaq edin. Siz geri olduğunuzu və siz istəyirsinizsə candy, mən sizə konfet atmaq olar. Əslində, Səninlə sərin yoxdur. Oh, sorry. OLDU. Biz, istəyirsinizsə Belə ki, bir sinif, yazmaq pseudocode bir yanaşma bilər necə üçün Bu problem, yalnız çekinmeyin. Mən yalnız ətrafında getmək və lazımdır, məqsədilə qruplar xahiş növbəti xətti biz nə bunu etmək lazımdır. Sizlərin başlamaq istəyirsinizsə Belə ki, off, ilk şey nə var Siz çalışdığınız zaman nə etmək Bu proqram həll etmək üçün bir yol həyata seçilmiş siyahısını düzmək üçün? Yalnız biz güman edək bir sıra, bütün hüququ var? Auditoriya: Siz bir yaratmaq istəyirik sort [Işitilemez] sen ki, bütün array vasitəsilə çalışır. ANDI PENG: Sağ. Belə ki, təkrarlamaq istəyirəm olacaq hər kosmosda, sağ? Belə ki, böyük. Sizlərin mənə vermək istəyirsinizsə növbəti geri, evet xətti. Auditoriya: onları yoxlayın bütün kiçik üçün. ANDI PENG: biz də gedin. Belə ki, biz vasitəsilə getmək və check istədiyiniz minimum dəyəri, sağ nə görmək? Mən ki, qısaltmaq üçün gedirəm "min". Sizlərin sonra nə istəyirsiniz Siz minimum dəyəri gördük? Auditoriya: [işitilemez] ANDI PENG: Belə ki, istədiyiniz olacaq ki, serialın ilk ilə keçid, sağ? Mən demək gedirəm, başlanğıcı var. Oldu. Belə ki, indi ilk dəyişdirildikdə etdik ki, bir, nə sonra nə etmək istəyirsiniz? Belə ki, indi biz bilirik ki, burada bu bir sağ, kiçik dəyər olmalıdır? Sonra əlavə istirahət çeşidlənməmiş var serialın. Belə ki, əgər, burada nə etmək istədiklərini uşaqlar mənə növbəti line vermək istəyirsiniz? Auditoriya: Belə sonra təkrarlamaq istəyirəm serialın qalan vasitəsilə. ANDI PENG: Bəli. Və belə vasitəsilə iterating nə cür biz yəqin ki, lazımdır demək? Hansı növ of-- Auditoriya: Oh, əlavə dəyişən? ANDI PENG: Yəqin ki, loop üçün başqa, sağ? Belə ki, biz yəqin ki, istəyirəm olacaq through-- böyük təkrarlamaq. Və sonra geri getmək olacaq və yəqin ki, yenə minimum yoxlamaq, sağ? Və təkrar saxlamaq olacaq Bu, loops çünki yalnız gedir sağ, çalışan saxlamaq üçün? Belə ki, uşaqlar, Göründüyü kimi yalnız ümumi pseudocode var biz istəyirik necə bu proqram baxmaq. Burada Bu təkrarlamaq, biz nə adətən bizim kodu yazmaq lazımdır biz vasitəsilə təkrarlamaq istəyirsinizsə strukturunun array, hansı növ? Mən hesab edirəm ki, Christabel artıq əvvəl bildirib. Auditoriya: loop üçün A. ANDI PENG: loop üçün? Məhz. Belə ki, bu yəqin ki, bir loop üçün olacaq. Demək gedir burada bir çek nədir? Adətən, siz yoxlamaq istəyirsinizsə bir şey bir şey varsa else-- Auditoriya: Əgər. ANDI PENG: An əgər, sağ? Burada svop Və sonra, biz lazımdır sonra artıq getmək David çünki eləcə də mühazirə vasitəsilə getdi. Və sonra ikinci təkrarlamaq implies-- Auditoriya: loop üçün başqa. ANDI PENG: dəqiq, loop üçün --another. Biz arıyorsanız Belə ki doğru, biz Biz yəqin edirik ki, görə bilərsiniz loop üçün nested lazımdır gedir orada bir şərti bəyanat və sonra kod faktiki parça var ki, dəyərləri dəyişdirmək olacaq. Mən yalnız ümumiyyətlə yazdıq Burada pseudocode kodu. Və sonra biz, həqiqətən olacaq fiziki, bir sinif kimi, bu gün həyata keçirilməsi üçün cəhd edin. Bu IDE geri getmək edək. UH-oh. Niyə deyilik ki olmasıdır. OLDU. Bağışlayın, mənə bir az daha zoom edək. Biz orada getmək. Mən burada edirəm All I yaratdıq ki, adlı proqram "seçimi / sort.c." Mən doqquz bir sıra yaratdıq dəyərlər, 4, 8, 2, 1, 6, 9, 7, 5, 3. Hal-hazırda, bilərsiniz kimi onlar unordered var, bax. n sayı olacaq ki, siz dəyərlərin məbləği deyir Siz array var. Bu halda, biz doqquz dəyərləri var. Mən yalnız burada loop üçün var ki, çeşidlənməmiş array çap edir. Və sonunda, mən də bir var yalnız yenidən çap loop. Belə ki, nəzəri, bu proqram əgər sonunda, düzgün işləyir, Bir loop üçün çap görmək lazımdır olan 1, 2, 3, 4, 5, 6, 7, 8, 9 üçün bütün düzgün var. Beləliklə, biz burada pseudocode var. Mən yalnız deyiləm to-- hər kəs istəyir könüllülər üçün xahiş getmək üçün gedir əgər nə yazın dəqiq mənə biz ilk, yalnız təkrarlamaq istəyirəm bu serialın əvvəlində vasitəsilə? Mən kod xətt nədir yəqin ki, burada lazımdır gedir? Auditoriya: [işitilemez] ANDI PENG: Bəli, hiss pulsuz to-- Üzr istəyirik, gündəmə hiss dayanmaq yoxdur Səs bir az qaldırmaq pulsuz. Auditoriya: int i bərabərdir üçün 0- ANDI PENG: Bəli, yaxşı. Auditoriya: i array uzunluğu azdır. ANDI PENG: Belə ki, saxlamaq burada ağla Çünki biz bir funksiyası yoxdur ki, bizə bir serialın uzunluğu deyir, biz artıq var ki, saklar dəyər. Sağ? Başqa bir şey saxlamaq üçün bir sıra mind doqquz dəyərlər, göstəriciləri hansılardır? Yalnız bu array 3 0 idi deyirlər. Siz son ki, görəcəksiniz index həqiqətən 3. Bu var, baxmayaraq ki, 4 deyil array dörd dəyərlər. Burada Belə ki, biz çox diqqətli olmaq lazımdır uzunluğu nə bizim vəziyyətinin olacaq. Auditoriya: n minus 1 olmazdı? ANDI PENG: Bu olacaq dəqiq n minus 1. Bu mənada, niyə ki, n var minus 1, hər kəs? Diziler sıfır yönümlü var, çünki bu. Onlar 0 başlamaq və 1 n minus qədər axır. Bəli, bu bir az çətin var. OLDU. Daha sonra-- Auditoriya: Isnt'1 ki artıq olsa qayğı, Yalnız az və ya "deyərək deyil bərabər daha az "və yalnız" deyərək üçün? " ANDI PENG: Bu var həqiqətən yaxşı sual. Belə ki, bəli. Lakin, biz yol olduğunu yoxlanılması hüququnun həyata keçirilməsi, iki dəyərlər müqayisə etmək lazımdır. Beləliklə, siz həqiqətən istəyirəm "üçün" boş buraxın. Müqayisə Çünki əgər bu bir, siz fikrində deyilik sonra bir şey var sağ, müqayisə etmək olar? Bəli. Belə ki, i ++. Nin bizim Mötərizədə əlavə edək. Whoops. Great. Beləliklə, biz başlanğıcı var Bizim xarici loop. Belə ki, indi biz yəqin ki, istəyirəm saxlanılması üçün dəyişən yaratmaq kiçik dəyər track, sağ? Hər kəs mənə vermək istəyir Bunu ki, bir kod line? Gedirik, əgər biz nə lazımdır bir şey saxlamaq istəyirsiniz? Right. Ki, bəlkə daha yaxşı adı "Temp" be-- olardı tamamilə çalışır ki, bəlkə daha tutarlı olacaq adlı, biz kiçik dəyər istəyirsinizsə Auditoriya: Min. ANDI PENG: min, orada biz gedin. min yaxşı olardı. Və belə ki, burada biz nə onu başlamaq istəyirsiniz? Bu bir az çətin deyil. Çünki indi bu serialın əvvəlində, doğru şey baxdı yoxdur? Avtomatik Belə ki, əgər biz yalnız i 0 bərabərdir etdiyiniz biz başlamaq istəyirəm nə Bizim ilk minimum dəyəri? Auditoriya: i. ANDI PENG: i, dəqiq. Christabel, niyə biz istəyirsiniz i onu başlamaq üçün necə? Auditoriya: yaxşı, çünki biz 0 ilə başlayan edirik. Biz müqayisə etmək heç bir şey yoxdur, çünki Belə ki, Bu, minimum 0 olan son olacaq. ANDI PENG: Məhz. Belə ki, o tam doğru deyil. Biz, həqiqətən, var hələ bir şey baxdı Biz minimum dəyəri nə bilmirəm. Biz yalnız onu başlamaq istəyirəm i olan, hazırda sağ burada. Və biz davam bu array aşağı hərəkət, biz hər ilə ki, görürsünüz əlavə pass, i əlavələr. Və belə ki nöqtədə, Mən yəqin ki, davam edir minimum olmaq istəyirəm, Bu hər hansı olacaq, çünki çeşidlənməmiş serialın başlanğıcıdır. Cool. Belə ki, indi biz əlavə etmək istəyirəm burada loop üçün ki vasitəsilə təkrarlamaq niyyətində çeşidlənməmiş, və ya bu serialın qalan. Hər kəs mənə vermək istəyir Bunu ki, bir kod line? Hint-- biz burada nə edə bilərəm? Nə loop üçün bu getmək olacaq? Bəli. Auditoriya: Belə ki, biz istəyirəm fərqli bir tam var, biz qalan keçən edirik, çünki əvəzinə mən array, belə ki, bəlkə j. ANDI PENG: Bəli, j mənə yaxşı səslənir. Bərabər? Auditoriya: Belə ki, mən ola plus 1 olardı növbəti dəyəri başlayan edirik. Və sonra yenə end-- üçün, j deyil n minus 1, və sonra j ++ az. ANDI PENG: Great. Və sonra burada, biz istəyirəm olacaq Bizim vəziyyət görüşüb görmek üçün yoxlamaq, sağ? Siz etmək istəyirəm, çünki minimum dəyəri dəyişmək Bu daha həqiqətən kiçik, əgər nə sağ, müqayisə edirik? Belə ki, nə biz burada istədiyiniz gedir? Yoxlayın. Şərhdə hansı növü biz yəqin ki, gedir ti əgər istifadə etmək istəyirəm ki, biz şey yoxlamaq istəyirsiniz? Auditoriya: bir bəyanat əgər. ANDI PENG: An əgər bəyanat. Belə ki Varsa və olacaq nə biz daxili istəyirik vəziyyəti Bizim əgər şərhdə? Auditoriya: Əgər j dəyəri istisna olmaqla, mən dəyəri az ANDI PENG: Məhz. Belə ki Varsa bu array "array" deyilir. Great. Ki, nə idi array Belə ki? Daha demək. Auditoriya: array-j azdırsa array-i, sonra biz min dəyişə bilər. Belə ki, min j olardı. ANDI PENG: ki, mənada edirmi? OLDU. İndi aşağı burada, biz, həqiqətən, sağ, svop həyata keçirmək istəyirsiniz? Belə ki, mühazirə, geri David, zaman O the-- nə idi dəyişdirmək üçün çalışır pseudocode portağal şirəsi və milk-- Auditoriya: Bu ümumi idi. ANDI PENG: Bəli, bu cür ümumi idi. Lakin bu olduqca yaxşı idi anlayış vaxt nümayiş. Belə ki, burada dəyərlər edirəm. Siz bir sıra var min, mən bir sıra, və ya biz burada dəyişdirmək üçün çalışdıqlarını nə. Və yəqin ki, onları tökmək bilməz eyni zamanda bir-birinə, sağ? Beləliklə, biz gedir nə Burada yaratmaq lazımdır düzgün dəyərlər dəyişdirmək üçün? Auditoriya: A müvəqqəti dəyişən. ANDI PENG: A müvəqqəti dəyişən. Belə ki, int temp nə edək. Bu daha yaxşı olardı, baxın Vay to-- vaxt ki, nə idi? OLDU. Belə ki, bu daha yaxşı olardı time dəyişən "temp." adını Belə ki, int temp nə edək. Biz nə gedir burada bərabər temp qurmaq? Auditoriya: Min? ANDI PENG: Bu bir az çətin var. Bu, həqiqətən, sonunda fərqi yoxdur. Nə etməz üçün siz dəyişdirmək üçün seçin kimi uzun siz əmin edilməsi etdiyiniz kimi sen Siz dəyişdirmə etdiyiniz nə takip saxlanılması. Auditoriya: Bu array-i ola bilər. ANDI PENG: Bəli, array-i edək. Və sonra növbəti line nə kodu biz burada var istəyirsiniz? Auditoriya: array-i array-j bərabərdir. ANDI PENG: Və nəhayət? Auditoriya: array-j array-i bərabərdir. Auditoriya: Və ya array-j bərabər array-temp-- və ya, temp. ANDI PENG: OK. Belə ki, bu run edək və görmək bu iş olacaq əgər. Ki, harada baş verir? Oh, bir problem var. Biz istəyirik, xətt 40 Bax array-j istifadə etməyə çalışır? Amma harada yalnız j mövcuddur? Auditoriya: loop üçün edir. ANDI PENG: Sağ. Belə ki, nə biz nə etmək lazımdır gedir? Auditoriya: the-- kənarda müəyyən Auditoriya: Bəli, Mən sizə tapmaq Şərhdə, sağ başqa bir istifadə etmək olar? Belə ki, kimi, əgər minimum-- bütün sağ, məni düşünməyə imkan verir. ANDI PENG: Guys cəhd bir göz edək etmək Biz burada bir şey nə edə bilər ki, görmək? Auditoriya: OK. Minimum bərabər deyil, əgər belə minimum əgər j belə ki, hələ istisna olmaqla, mən sonra biz dəyişdirmək olmazdı. ANDI PENG: i bərabər varmı? Siz burada demək istəyirsiniz? Auditoriya: Və ya Bəli, əgər minimum Bəli, bərabər i yoxdur. ANDI PENG: OK. Yaxşı ki, bizim problemlərimiz cür həll edir. Lakin hələ də həll etmir j-ci ildən j əgər nə problemi kənarda mövcud deyil, nə Biz bunu istəyirsiniz? Kənarda bəyan? Bu çalışan cəhd edək. UH-oh. Bizim sort iş deyil. Siz bizim ilkin Gördüyünüz kimi array həmin dəyərlər idi. Və sonra bu olmalıdır 1, 2, 3, 4, 5, 6, 7, 8, 9 olmuşdur. Bu iş deyil. Ahh. Biz nə etməliyəm? Auditoriya: Debug. ANDI PENG: Bütün sağ, biz ki, cəhd edə bilərsiniz. Biz debug bilər. Bir az zoom. Bizim breakpoint müəyyən edək. Nin like-- OK gedək. Biz artıq bilirik ki, çünki Belə ki, bu xətlər, 15 22 vasitəsilə edirəm bütün çünki working-- olunur yalnız vasitəsilə və çap olunur iterating Mən irəli getmək və atlayabilirsiniz. Xətti 25 başlamaq edək. OOP, mənə xilas edək. Auditoriya: Belə breakpoint nin ayıklama harada başlayır? ANDI PENG: Or vermir. Auditoriya: Və ya vermir. ANDI PENG: Bəli. Siz çox breakpoints bilərsiniz və yalnız bir digər jump bilər. Lakin bu halda biz bilmirik harada səhv olur. Belə ki, biz yalnız istəyirəm aşağı üst başlayır. Yep. OLDU. Belə ki, burada bu xətt, biz addım ola bilər. Siz burada görə bilərsiniz biz bir sıra var. Həmin dəyərlər array var ki. Siz görürsünüz ki, necə index 0, bu , oh dəyər uyğundur Mən zoom üçün cəhd gedirəm. Bağışlayın, bu, həqiqətən çətindir array index 0 see-- üçün, Biz 4 dəyəri və sonra s və s. Biz yerli dəyişənlər var. Hal-hazırda i bərabərdir Biz olmaq istəyirəm 0. Və belə vasitəsilə gücləndirməklə saxlamaq imkan verir. Bizim minimum, 0 bərabərdir Hansı biz də olmaq istəyirəm. Və sonra biz ikinci daxil loop, array-j array-i az olduqda, olan deyildi. Belə ki, necə gördünüz ki, üzərində atlandı? Auditoriya: Belə ki, olmalıdır minimum, bütün that-- olmalıdır ki, loop üçün ilk daxilində olacaq? ANDI PENG: Xeyr, çünki Siz hələ test etmək istəyirəm. Siz hər bir müqayisə etmək istəyirəm vaxt, bu axır hətta sonra. Siz yalnız bunu etmək istəmirəm ilk pass-vasitəsilə. Siz bunu istəyirəm yenidən hər əlavə pass. Belə ki, check istədiyiniz daxili vəziyyəti. Belə ki, biz yalnız olacaq Burada keçən saxlamaq. Mən sizə uşaqlar bir ipucu vermək lazımdır. Bu faktı ilə nə var ki Sizin şərti kontrol edirik Siz yoxlanılması deyilik düzgün indeksi üçün. Belə ki, hazırda sizin üçün kontrol edirik j array index array az i index. Amma nə qədər edirik loop üçün başlanğıcı? Siz i bərabər j qəbulu deyil? Bəli, biz həqiqətən bilərsiniz burada ayıklama çıxmaq. Belə ki, bizim pseudocode nəzər salaq. Baxan mýsýn biz olacaq i 0 bərabərdir da başlayacaq. Biz 1 n minus qədər getmək olacaq. Yoxlamaq edək ki, sağ var idi? Yep, doğru idi. Belə ki, burada daxili, biz istəyirik minimum dəyər yaratmaq niyyətində və i ki, bərabər müəyyən. Biz bunu mi? Yep, etdi. İndi bizim daxili üçün loop, biz istəyirik j edəcəyimiz i n minus 1 bərabərdir. Biz bunu mi? Həqiqətən, biz etdi. Lakin, biz burada nə müqayisə olunur? Auditoriya: j plus 1. ANDI PENG: Məhz. Və sonra təyin etmək istəyirəm olacaq j plus 1 habelə bərabər minimum. Beləliklə, mən, həqiqətən, tez yolu ilə getdi. Sizlərin dərk edirsinizmi niyə j plus 1 var? OLDU. Sizin sıra, belə vasitəsilə ilk pass, Sizin loop üçün, int i 0 bərabərdir, yalnız imkan bu hələ dəyişməyib daşımır. Biz tamamilə, bir sıra var, yalnız dörd çeşidlənməmiş elementləri, sağ? Beləliklə, biz i 0 bərabər başlamaq istəyirəm. Və i gedir yalnız bu loop axır. Və belə ki, ilk pass, biz gedirik "min" adlı dəyişən başlamaq üçün ki, çünki i bərabərdir biz bir minimum dəyəri yoxdur. Belə ki, həmçinin 0 Hal-hazırda bərabər var. Və sonra biz vasitəsilə getmək olacaq. Biz bir daha təkrarlamaq istəyirəm. İndi biz gördük ki, nə bizim minimum biz vasitəsilə təkrarlamaq istəyirəm edir Bu müqayisə əgər daha doğru görmək? Belə ki, j, burada, gedir bərabər I, 0 olan. Və sonra əgər array j plus i olan az kimi, növbəti üzərində biridir nə cari minimum dəyər dəyişdirmək istəyirsinizsə, edir. Belə ki, yalnız biz demək edək 2, 5, 1, 8, kimi, var. Hal-hazırda, i bərabərdir 0 j 0 bərabərdir. Və bizim minimum dəyəri var. Array-j varsa plus istisna olmaqla, mən bir, belə ki, ki, biz baxırıq sonra var , əvvəl bir daha böyükdür Bu minimum olmaq olacaq. Belə ki, burada biz 5 ki, görəcəksiniz ki, az deyil. Belə ki, 5 olmayacaq olacaq. Biz 1, sağ az 2 olduğunu görmək? Belə ki, indi biz minimum bilirik ki, 0, 1, 2 at index dəyəri olacaq. Evet? Və sonra, burada almaq zaman Siz düzgün dəyərlər dəyişdirmək olar. Belə ki, uşaqlar yalnız j olan zaman əvvəl, bir baxaraq deyil sonra. Siz baxaraq eyni dəyəri olan yalnız bir şey məşğul deyil nə. Ki, hamıya mənada etmir, niyə biz ki, plus var 1 lazım? OLDU. İndi etmək vasitəsilə yalnız run imkan əmin kodu istirahət doğru deyil. Niyə baş verir? Ah, bu burada min var. Biz yanlış dəyər müqayisə edilmişdir. Ah, yox. Bəli Oh, aşağı burada biz eləcə də yanlış dəyərlər dəyişdirmə. Biz i və j baxaraq, çünki. Başqa, biz yoxlanılması olanlardır. Biz, həqiqətən, dəyişdirmək istəyirəm minimum cari minimum, nə ilə bir kənarda. Və uşaqlar aşağı Gördüyünüz kimi Burada biz bir sıralanır array var. Bu, yalnız ilə idi fakt zaman biz yoxlanılması biz müqayisə edildi dəyərlər, biz düzgün dəyərlər baxaraq deyil. Biz eyni biri aradığınız Burada həqiqətən dəyişdirmə deyil. Siz növbəti bir baxmaq lazımdır bu və sonra dəyişdirmək olar. Belə ki cür nə var əvvəl kodu bugging. Və nə mən burada idi hər şey ayıklama üçün etmiş ola bilər Mən yalnız bunu board, daha asan, çünki çalışırıq daha çox görmək ayıklama üzrə zoom. Ki, hamıya mənada edirmi? Cool. Oldu. Biz söhbət üçün hərəkət edə bilər asimptotik notation olan deyərək bir xülya yoldur bu növ bütün runtimes. Belə ki, mühazirə, David bilirik, runtimes toxunub. Və o, bütün formula ilə getdi runtimes hesablamaq üçün necə. Ki, haqqında heç bir narahatlıq. Siz, həqiqətən, maraqlı edirsinizsə ki, işləri necə, bölmə sonra mənə danışmaq üçün çekinmeyin. Biz vasitəsilə gəzmək olar birlikdə düsturlar. Lakin bütün uşaqlar həqiqətən var bilirik n 2-dən çox kvadrat ki, n kvadrat eyni şeydir. Böyük sayı Çünki, eksponent, ən artır. Və belə bizim üçün, biz qayğı bütün artan ki, nəhəng sayı. Belə ki, nə yaxşı haldır seçim növ uzunluğu? Siz olacaq əgər bir siyahısını təkrarlamaq və sonra vasitəsilə təkrarlamaq ki, siyahıda qalan, neçə dəfə Siz yəqin ki, gedir ən pis case-- da hal yaxşı, axır sorry? Bəlkə daha yaxşı sual xahiş, ən pis halda nə seçim növ uzunluğu. Auditoriya: n kvadrat. ANDI PENG: Bu n sağ, kvadrat oldu. Bu kimi belə asan bir yol hesab edirəm ki, Siz loops üçün iç-içə iki istənilən vaxt, Bu n kvadrat olacaq. Sən yalnız çünki bir daha keçən, geri getmək üçün var ətrafında və onun vasitəsilə run bir daha hər dəyər daxilində. Bu halda Belə ki, n yayınlıyorsanız dəfə n, sorry is-- ki, kvadrat n dəfə n, n kvadrat bərabərdir edir. Və sort da bir az mənada unikal Bu əgər məsələ deyil ki, dəyərləri üçün artıq. Bu hələ zaten axır olacaq. Yalnız bu 1, 2, 3, 4 idi deyirlər. Asılı olmayaraq idi asılı olmayaraq üçün, hələ də vasitəsilə qaçdı olardı və hələ də minimum dəyəri yoxlanılır. Bu edərdi çek eyni sayda hər bir zaman, hətta əgər həqiqətən bir şey toxunmaq etməyib. Belə bir vəziyyətdə, belə ki, ən yaxşı və ən pis runtimes həqiqətən bərabər. Belə ki, nə gözlənilir, uzunluğu seçim növ, Hansı simvolu ilə təyin teta, teta, bu halda, də n kvadrat olunacaq. Bütün bunlar üç kvadrat n olardı. Niyə hər kəs aydındır uzunluğu n kvadrat edir? Oldu. Mən yalnız tez çalıştırmak üçün gedirəm növ qalan vasitəsilə. üçün alqoritm bubble unutmayın, sort Bu ilk biri idi David mühazirə getdi. Əsasən, siz addım bütün siyahısı və yalnız sizə svop Bir anda iki müqayisə. Və bir daha, əgər Siz daha yalnız onları dəyişdirmək. Bu böyükdür Belə ki, siz dəyişdirmək olardı. Mən burada rəsmi var. Belə ki, yalnız siz 8, 6, 4, 2 idi deyək. 8 və 6 müqayisə ediyorum. Siz onları dəyişdirmək lazımdır ediyorum. 8 və 4 müqayisə edirəm. Siz onları dəyişdirmək lazımdır ediyorum. 8 dəyişdirmək varsa və 2, eləcə də onları dəyişdirmək. Belə bir mənada, belə ki, görə bilərsiniz uzun müddət ərzində həyata ifa, necə bubble dəyərlər cür bitir, biz bunu niyə zəng bubble sort. Biz yalnız yenidən axır ki ikinci pass, və üçüncü pass, və dördüncü pass. Əsasən, bubble sırala yalnız çalışır Əgər hər hansı bir daha svopları yoxdur qədər. Ki, mənada ki, bu yalnız Bunun üçün ümumi pseudocode. Heç bir narahatlıq, bu bütün online olacaq. Biz, həqiqətən, bu artıq getmək yoxdur. Biz yalnız counter başlamaq 0 başlayır dəyişən. Və biz bütün array vasitəsilə təkrarlamaq. Və bir dəyəri bu halda is-- əgər dəyəri ki, dəyəri daha böyükdür Əgər siz onları dəyişdirmək olacaq. Və sonra yalnız istəyirik davam etmək niyyətindədir. Və saymaq olacaq. Və yalnız bunu saxlamaq olacaq Bu counter çox isə o deməkdir ki, 0, daha hər zaman dəyişdirmək üçün, Siz getmək istədiyiniz bilirik geri və yenidən yoxlayın. Siz bilirsiniz qədər yoxlanılması saxlamaq istədiyiniz ki, siz artıq dəyişdirmək yoxdur. Belə ki, ən yaxşı və ən pis nə var hal bubble növ üçün runtimes? Və hint-- bu həqiqətən fərqli mənada seçim növ bu iki cavab eyni deyil ki. Nə olacağını düşünün bir halda ki, artıq çeşidlənir əgər. Və haqqında nə düşündüklərini idi əgər olur halda olan sıralanır deyil. Və cür çalıştırabilirsiniz niyə vasitəsilə baş verir. Mən 30 kimi, uşaqlar vermək lazımdır saniyə bu barədə düşünmək. OLDU. Hər hansı bir tahmin yoxdur bubble növ ən pis halda iş deyil? Bəli. Auditoriya: bu kimi, n dəfə olacaq n minus kimi 1 və ya bir şey? Kimi, çalışır hər dəfə, bir svop az kimi, yalnız var nə bu idi. ANDI PENG: Bəli, belə ki, siz tamamilə doğru istəyirik. Və bu bir haldır sizin Cavab həqiqətən, çox mürəkkəb idi bir çox vermək lazımdır. Belə ki, mən run-- olacaq Burada bütün bu silmək üçün gedir. Hər kəs yaxşı? Mən bu silmək bilər? OLDU. Siz n axır olacaq dəfə ilk dəfə, sağ? Onlar axır olacaq n mənfi 1, ikinci dəfə, sağ? Və sonra saxlamaq olacaq n mina 2, Et Cetera, gedir. David olduğu mühazirə, bu etdi, Əgər bütün bu dəyərlər əlavə əgər, Siz bir şey almaq like-- yeah-- mahiyyətcə yalnız azaldır 2-dən n aşağı kvadrat. Siz almaq olacaq Orada qəribə fraksiyası. Və belə ki, yalnız bilirik ki, n hər zaman kvadrat qismini üstün tutur. Və bu halda, ən pis uzunluğu n kvadrat olardı. Bu azalan idi üçün, sizə, hesab edirəm ki, svop hər bir zaman etmək lazımdır. Potensial nə olardı, ən yaxşı halda uzunluğu? Siyahısı artıq idi, yalnız deyək məqsədilə uzunluğu nə olardı? Auditoriya: n. ANDI PENG: Bu dəqiq, n var. Və nə üçün n? Auditoriya: Siz, çünki yalnız Hər bir dəfə yoxlamaq lazımdır. ANDI PENG: Məhz. , Mümkün olan ən yaxşı uzunluğu belə bu siyahı artıq idi sıralanır,-nin 1, 2, 3 deyək 4-- siz yalnız vasitəsilə getmək olardı, siz yoxlamaq olardı Siz oh, onlar bütün pan görmək olardı. Mən dəyişdirmək yox idi. Men etdim. Belə ki, bu halda, yalnız n var və ya addımlar sayı yalnız ilk siyahısında yoxlamaq idi. Və sonra, indi hit durub sort, alqoritm uçurum üçün mahiyyətcə bir sorted və çeşidlənməmiş hissəsi daxil. Və sonra bir-bir, çeşidlənməmiş dəyərlər onların müvafiq daxil siyahının başında mövqeləri. Belə ki, məsələn, biz bir var 3 siyahısı, 5, 2, 6, 4 yenidən. Biz hazırda bilirik ki, çeşidlənməmiş biz yalnız var, çünki onu axtarır başladı. Biz bir nəzər və biz bilirik ki, ilk dəyəri, sağ çeşidlənir? Yalnız bir sıra ilə istəyirsinizsə size bir, bu sıralanır ki, bilirik. Beləliklə biz bilirik ki, Digər dörd çeşidlənməmiş var. Biz vasitəsilə getmək və biz ki, dəyəri görürük. Geri getmək edək. 5 ki, dəyəri görmək? Biz buna nəzər. Biz 3 ilə müqayisə. Biz daha çox olduğunu bilirik 3, belə ki, sıralanır ki, bilirik. Beləliklə, biz artıq bilirik ki, ilk iki çeşidlənir və son üç deyil. Biz 2 nəzər. Biz ilk 5 ilə yoxlamaq. 5 azdır? Bu deyil. Beləliklə, biz aşağı axtarır saxlamaq lazımdır. Sonra 3 off 2 oldu. Bu az? Yox. Belə ki, 2 daxil edilməlidir bilmək ön və 3 və 5 həm də həyata sövq etmək lazımdır. 6 və 4 ilə yenidən bu edin. Və biz yalnız, mahiyyətcə yoxlanılması saxlamaq biz yalnız yoxlamaq harada yoxlamaq yoxlamaq. Və sağ qədər mövqeyi, biz növ yalnız doğru mövqe onu daxil edin, olan bu adı haradan gəldiyi deyil. Belə ki, yalnız alqoritm var, pseudocode özlüyündə cür, biz həyata keçirəcəklərini necə bir durub sort. Pseudocode burada. Bu, bütün online var. Heç bir narahatlıq uşaqlar əgər Bu aşağı surəti çalışır. Belə ki, bir daha eyni question-- nə Ən yaxşı və ən pis runtimes olacaq durub sort üçün? Bu son suala çox oxşar. Mən 30 kimi, uşaqlar vermək lazımdır saniyə həmçinin bu barədə düşünmək. Hər kəs istəyir OK Mənə ən pis uzunluğu vermək? Bəli. Auditoriya: n kvadrat. ANDI PENG: Bu kvadrat n oldu. Və niyə n kvadrat edir? Auditoriya: Çünki Əks üçün, var is-- olan n dəfə keçmək n üçün ANDI PENG: Bəli, dəqiq. Bubble sırala kimi belə eyni şey. Bu siyahıda olduğu halda azalan, sen ilk dəfə yoxlamaq üçün gedir. Və sonra hər əlavə dəyəri, sen üçün gedən qarşı yoxlamaq üçün Sağ hər bir dəyəri? Və belə tamamilə, siz etmək olacaq bir n pass dəfə bir n, keçmək n kvadrat edir. Nə yaxşı halda haqqında? Bəli. Auditoriya: n mənfi 1, çünki ilk bir artıq kvadrat edir. ANDI PENG: Belə ki, yaxın. Cavab həqiqətən n edir. Ilk biridir Çünki sıralanır, onu həqiqətən bilər biz yalnız həyata lucked ki, məsələn, ki, 2 kiçik sayı ola oldu. Amma bu həmişə belə olmayacaq. 2 artıq əvvəlində çeşidlənir əgər ancaq, baxmaq və burada 1 var 1 qabar gedir. Və bu son olacaq up zaten çarpdı. Ən yaxşı halda belə Bu, həqiqətən, yalnız n olacaq. Əgər 1, 2, 3, 4, 5, 6, 7, 8, sen axır gedir bütün siyahısını dəfə hər şey yolunda görmek üçün yoxlamaq. Çalışan hər kəs aydındır habelə seçilməsi dəfə? Mən keçir alıram bilirik Bu, həqiqətən, hızlı. Amma yalnız bilirsinizsə bilirik ki, ümumi anlayışlar, siz yaxşı olmalıdır. OLDU. Beləliklə, mən kimi, bəlkə uşaqlar vermək lazımdır, bir dəqiqə qonşuları danışmaq nə yalnız bir on əsas fərqlər növ bu cür arasında. Biz tezliklə artıq getmək lazımdır. Auditoriya: OK, Oh. ANDI PENG: Bəli. OLDU. Cool, bir sinif kimi reconvene bildirin. OLDU. Belə ki, bu idi cür bir mənada açıq sual ki, onlara cavab çox var. Və biz qısa bəziləri artıq getmək lazımdır. Mən yalnız uşaqlar almaq istəyirdi fərqli nə düşünür növ üç növ. Mən də, böyük eşitdim nə sort birləşməsi deyil question--? Böyük sual ki, çünki nə biz növbəti əhatə edirik. Belə ki, sort daxil ki, funksiyaları bir sort çox fərqli digər növ. Sizlərin see-- kimi David ki demo idi o, bütün sərin olduğu birləşməsi necə görən noises sort sonsuz kimi, qaçıb digər iki növ daha sürətli? OLDU. Belə ki, daxil, çünki sort ki, uçurum həyata keçirir və biz anlayışı fəth mühazirə çox danışdıq. Biz işləmək istəyirəm ki, mənada asan, siz bölmək zaman deyil, daha və problemlər fəth və onları pozmaq aşağı, və sonra, onlara birlikdə qoymaq yaxşı şeylər həmişə baş verir. Birləşməsi yolu So sort mahiyyətcə çalışır bir ayıran ki, yarısında çeşidlənməmiş array. Və sonra seriallarda iki yarıya indirir var. Və yalnız bu iki yarıya indirir növ. Bu, sadəcə olaraq, yarısı ayırıcı saxlayır yarısı yarısı hər şey çeşidlənir qədər və sonra recursively birlikdə bütün qoyur. Belə ki, həqiqətən mücərrəd deyil. Belə ki, bu pseudocode yalnız bir az. Ki, mənada edirmi Bu çalışan yol? Belə ki, yalnız bir var demək edək n elementləri array, sağ? N 2-dən az olarsa, siz ola bilər. Bilirsiniz, çünki ki, var, əgər yalnız bir şey, bu sıralanır olmalıdır. Else, sol yarım sort, və sonra sağ yarım sort, və sonra daxil. Ki, həqiqətən asan görünür isə Belə ki, əslində, bu barədə düşünürük var çətin növüdür. Siz kimi istəyirik, çünki, yaxşı, bu cür özü çalışan. Sağ? Bu özü çalışan. Belə ki, mənada, David toxunub sinif recursion ilə. Və bir anlayış var daha çox haqqında danışmaq lazımdır. Bu ki, bu iki xətləri var Burada, həqiqətən, yalnız proqram izah özü run müxtəlif daxil olan. Belə ki, daha özünü run daha n elementlərin bütövlükdə, Siz onu qırmaq bilər sol yarısı və sağ yarım və sonra yenidən axır. Və sonra biz, vizual baxmaq lazımdır Mən vizual şagird deyiləm, çünki. Bu, mənim üçün daha yaxşı işləyir. Beləliklə, biz burada bir vizual nümunə baxmaq lazımdır. Altı Biz bir sıra var deyirlər elementləri, 3, 5, 2, 6, 4, 1, sıralanır deyil. Bütün hüquqlar, bu səhifə haqqında bir çox var. Sizlərin baxmaq olar Belə ki Burada ilk addım, 3, 5, 2, 6, 4, 1, Siz yarım ildə split bilər. Siz 3, 5, 2, 6, 4, 1 var. Bu sizə aren't-- bilirik ki, onlar sıralanır və ya deyilik əgər bilmirəm, belə ki, yarım, onları parçalayaraq saxlamaq, yarısında yarısında, nəticədə qədər Siz yalnız bir element var. Və bir element həmişə doğru, çeşidlənir? Beləliklə, biz bilirik ki, 3, 5, 2, 4, 6, 1, özləri tərəfindən sıralanır. İndi biz onlara birlikdə geri qoymaq olar. Beləliklə, biz 3, 5 bilirik. Biz birlikdə bu qoymaq. Biz bu sorted bilirik. Hələ 2 var. Biz birlikdə 4 və 6 qoya bilər. Biz ki, çeşidlənir bilirik ki, belə ki, biz birlikdə qoymaq. 1 var. Və sonra yalnız baxmaq Burada bu iki yarıya indirir. Siz 3, 5, 2, 2, 3, 5 var. Siz yalnız müqayisə edə bilərsiniz hər şeyin başlanğıcı. Bu çeşidlənir bilirik ki, çünki və bu sıralanır ki, bilirik. Belə ki, sonra da yoxdur 5 müqayisə, yalnız 3 müqayisə. Və 2, belə ki, 3-dən az 2 sonunda getmək lazımdır bilirik. Orada eyni şey. 1 Burada getmək lazımdır. Siz getmək zaman sonra qoymaq üçün birlikdə bu iki dəyərlər, bu çeşidlənir bilirik ki, və ki, çeşidlənir bilirik. Belə ki, sonra 1 və 2, 1 az 2 edir. Ki, 1 ki, sizə deyir Bu sonunda getmək lazımdır hətta 3 və ya 5 baxaraq olmadan. Və sonra 4, yalnız bilərsiniz Burada doğru gedir yoxlamaq. Siz 5 baxmaq yoxdur. 6 ilə eyni şey. Bilirsiniz 6-- yalnız ki, baxdı lazım deyil. Və belə ki, yol, siz etdiyiniz özünüzü qənaət addımlar bir çox müqayisə etdiyiniz zaman. Siz hər müqayisə etmək yoxdur digər elementləri qarşı element. Siz yalnız olanları qarşı müqayisə Siz qarşı müqayisə etmək lazımdır. Belə ki, abstrakt anlayış növü var. Heç bir narahatlıq deyil, əgər çox sağ hələ vuruş. Amma ümumiyyətlə, bu necə bir birləşməsi sort işləyir. Suallar, tez suallar, Mən hərəkət əvvəl? Bəli. Auditoriya: Belə ki, siz almaq bildirib ki, 1 və sonra 4 və 6 və onları qoydu. Belə ki, those-- deyil deyil Siz onlara baxaraq Biz bütövlükdə ayrı-ayrı elementləri kimi? ANDI PENG: Bəli. Belə ki, nə ki, əsasən yeni array yaradır. Belə ki, burada, mən bilirəm ki, ölçüsü 3 iki Diziler, sağ? Belə ki, bilirik ki, mənim sıralanır array altı elementləri olmalıdır. Belə ki, yalnız bir yaratmaq yaddaş yeni məbləği. Belə ki, növ kimi istəyirik yaddaş israfçı olan lakin etməz belə kiçik, çünki. Belə ki, 1 baxmaq və 2 oldu. Və 1 az 2 olduğunu bilirik. Belə ki, 1-ci getmək lazımdır ki, bilirik o bütün başlanğıcı. Siz hətta lazım deyil 3 və 5 oldu. Belə ki, 1 orada gedir bilirik. Sonra əsasən 1 kəsmək. Bu, bizim üçün ölü kimi, var. Sonra biz yalnız 2 var, 3, 5, sonra 4 və 6. Və sonra, siz bilirsiniz ki, müqayisə 4 və 2, oh, 2 getmək lazımdır. Belə ki, 2 aşağı Plop, siz onu kəsmək. Belə ki, sonra yalnız 3 var 4 və 6 5. Və yalnız onu Doğrama saxlamaq Siz array onları qoymaq qədər. Auditoriya: Belə ki, yalnız həmişə istəyirik [Işitilemez] müqayisə? ANDI PENG: Məhz. Belə ki, mənada, etdiyiniz yalnız müqayisə, mahiyyətcə, digər qarşı bir sıra. Və bilirik, çünki Bu, siz sıralanır ki, vasitəsilə baxmaq yoxdur nömrələr bütün. Siz yalnız ilk bir baxmaq lazımdır. Və sonra yalnız Plop bilər Onlara aşağı, bilirsiniz, çünki onların mənsub lazım onların mənsub. Bəli. Yaxşı sualdır. Və sonra siz əgər varsa bir az iddialı, bu kodu baxmaq üçün çekinmeyin. Bu, həqiqətən deyil fiziki həyata keçirilməsi biz daxil sort yazmaq necə. Və bu çox qısa görə bilərsiniz. Arxasında Amma fikir bu, olduqca mürəkkəbdir. Belə ki, bu rəsm kimi hiss əgər ödev gecə, çekinmeyin. OLDU. Davud da mühazirə bu artıq getdi. Ən yaxşı halda hansılardır runtimes, ən pis halda runtimes, və birləşməsi növ gözlənilir runtimes? Bir neçə saniyə düşünmək. Bu olduqca çətindir, lakin cür Bu barədə intuitiv düşünürəm. Oldu. Auditoriya: ən pis halda n log n deyilmi? ANDI PENG: Məhz. Və niyə n log n edilir. Auditoriya: deyilmi çünki dözərək daha sürətli olur belə ki, bir funksiyası kimi əvəzinə sadəcə n olan kare və ya bir şey? ANDI PENG: Məhz. Belə ki, səbəbi Bu iş n log edir sizə nə çünki n bütün bu addımlar etdiyini? Siz yalnız sağ, yarım ildə Doğrama edirik? Və belə ki, biz bunu etdiyiniz zaman bunu bütün ki, daxil yarısında bir problem ayırıcı, yarısında yarısında daha yarıya indirir. Və bu mənada, siz cür bilərsiniz xətti model aradan qaldırılması ki, biz istifadə etdik. Siz doğramaq çünki yarısında hər şeyi, bir log var. Bu yalnız riyazi var ifadə edən yolu. Və sonra nəhayət, sonunda, sen yalnız son bir keçid vasitəsilə edilməsi sağ, üçün onlara bütün qoymaq üçün? Və belə ki, yalnız varsa bir şey deyil ki, n var. Və belə cür istəyirik iki birlikdə vurulması. Siz ki, son var kimi belə ki, n log ilə burada n kontrol burada. Və çoxaltmaq əgər Onlara ki, n n daxil oldu. Və belə ən yaxşı halda və ən pis halda və bütün n log n ki, gözlənilir. Başqa növ kimi də var. Bu seçim sort kimi bu mənada nə etməz sizin siyahısı yalnız gedir, var Eyni şey hər zaman etmək. OLDU. Baxmayaraq ki, uşaqlar Gördüyünüz kimi, belə ki, biz n through-- getdi sonra növ kvadrat, bu, çox səmərəli deyil. Və hətta bu n log n ən səmərəli deyil. Uşaqlar maraqlı varsa, sort mexanizmlər var onlar ki, səmərəli var ki, demək olar ki, əsasən düz uzunluğu. Siz bir günlük n nin var. Siz bir log daxil n in var. Biz onlara toxunmayın İndi bu sinif. Amma uşaqlar maraqlı əgər, nə var, google çekinmeyin ən səmərəli çeşidlənməsi mexanizmləri. Mən var, bilmirəm bəzi həqiqətən funny olanlar like-- bəzi həqiqətən var insanlar etmək funny olanları. Və necə wonder onlar Heç ki, düşündüm. Bəzi ehtiyat varsa, google vaxt, on, bəzi funny yolları hansılardır ki, eləcə də xalqımAğır səmərəli ways-- nəfər növ həyata bilmişlər. OLDU. Və burada yalnız bir lazımlı kiçik chart var. Hesab edirəm ki, viktorina 0 əvvəl, siz bütün bilirik oda yəqin ki, çalışırıq olacaq ki, yadda. Belə ki, uşaqlar orada gözəl. Just made-- məntiq unutmayın niyə o nömrələri meydana gələn edilmişdir. Siz həmişə itirilmiş edirsinizsə, yalnız etmək Siz növ var nə bilirik. Və axır bilər nəzərə onlara niyə o anlamaq üçün cavab o cavab var. Oldu. Belə ki, biz hərəkət olacaq nəhayət, axtarış üçün,. Çünki sizin kimi olan pset oxumaq, Axtarış də hissəsidir bu həftə problem müəyyən edir. Siz həyata keçirilməsi üçün istenir axtarışlar iki növ. Bir xətti axtarış və bir ikili axtarış edir. Belə ki, xətti axtarış olduqca asandır. Siz yalnız element axtarmaq istəyirsinizsə Siz almaq əgər bir siyahı görmək. Siz yalnız vasitəsilə təkrarlamaq lazımdır. Və bir şey bərabərdir əgər, Siz yalnız sağ, qaytara bilər? Amma biz ən istəyirik ki, söhbət maraqlı ikili axtarış olan sağ, bölmək və mexanizmi fəth edən David mühazirə nümayiş olunub. Telefon kitab misal saxla o qədər cəlb edir ki, o cür mübarizə bir Bu ötən il bir az, Siz yarısında problem bölmək olduğu, yarısında yarısında, təkrar, Siz aradığınız nə tapmaq qədər? Və var də ki, uzunluğu. Və edə bilərsiniz, bu əhəmiyyətli dərəcədə daha səmərəli axtarış başqa bir növü çox. Beləliklə, biz haqqında getmək yolu ikili axtarış həyata , biz bir sıra olsaydı, index 0 6, yeddi elementləri, biz right-- ortada baxa bilərsiniz sorry, bizim sual əgər first-- Biz sual soruşmaq istəyirsinizsə, yoxdur array, 7 element ola təbii ki, insanlar olan və olan kiçik array belə, bu, bizim üçün asan bəli demək. Amma yol ikili həyata keçirilməsi Axtarış ortasında baxmaq olardı. Biz index 3 bilirik ki, orta, Çünki biz yeddi elementləri var bilirəm. Nə 7 2 bölünür? Siz əlavə 1 ki kəsmək olar. Əgər ortada 3 var. Belə ki, 7 bərabər 3 array var? Bu doğru deyil? Amma biz çek bir neçə edə bilərsiniz. 3 azı 7 və ya array var 7-dən çox 3 sıra edir? Və biz az 7-dən var ki, bilirik. Beləliklə, biz bilirik oh, bu olmalıdır ki, yarıda buraxdı deyil. Biz olmalıdır bilirik sağ yarısında, sağ? Belə ki, biz yalnız yarısı sıra kəsmək olar. Biz hətta yoxdur Artıq baxmaq. Biz bilirik ki, çünki Bizim problem yarısı biz cavab olduğunu bilirik Bizim problem sağ yarım. Belə ki, biz yalnız indi baxmaq. Belə ki, indi biz baxmaq sol nə orta. Ki, index 5. Biz yenə eyni çek və biz bu kiçik var ki, görəcəksiniz. Belə ki, sol baxmaq. Və sonra biz ki, çek görürük. Array dəyəri edir 7 bərabər index 4? Bu. Beləliklə, biz doğru qayıtmaq, çünki bilər biz siyahısına dəyər tapdı. Mən yolu ilə getdi yol yoxdur hamı üçün mənada? OLDU. Mən kimi, bəlkə uşaqlar vermək lazımdır üç, dörd dəqiqə anlamaq üçün necə bu pseudocode. Mən bir yazmaq üçün xahiş təsəvvür geri funksiyası adlanır axtarış () dəyəri, bir Boolean dəyəri, ki, kimi doğru idi və ya yalan Siz aşkar etdikdə doğru dəyəri, siz əgər yalan. Və sonra idi dəyəri keçdi dəyərləri daxil aradığınız ki, array oh, mən mütləq qoymaq səhv yerdə ki. OLDU. Zaten ki, olmalıdır dəyərləri sağ üçün olmuşdur. Və sonra int n sayı ki, massivin elementlərinin. Necə çalışır haqqında getmək olardı ki, problem pseudocode? Mən sizə kimi uşaqlar vermək lazımdır üç dəqiqə bunu. Xeyr, mən only-- var edirəm Bəli, sağ qədər burada bir var. Auditoriya: I Can? ANDI PENG: Bəli, mən sizə var. Ki, işləyir? Sərin, OK. OLDU. Bütün hüquqlar uşaqlar, biz istəyirik onu dayandırmaq üçün gedir. OLDU. Beləliklə, biz bu sevimli var güman bu n dəyərləri ilə az array. Mən xətləri cəlb etməyib. Amma biz necə getmək olardı Bu yazmaq üçün çalışırıq? Hər kəs istəyir Mənə ilk xətt vermək? Mənə vermək istəyirsinizsə Bu pseudocode ilk line. Auditoriya: [işitilemez] Auditoriya: Siz istəyirəm vasitəsilə təkrarlamaq üçün Auditoriya: Just bir loop üçün? Auditoriya: --for. ANDI PENG: Belə ki, bu bir az çətin var. Istədiyiniz about-- düşünün Bu loop çalışan saxlamaq üçün yenidən üzərində zaman qədər? Auditoriya: [işitilemez] qədər dəyərinin dəyərinə bərabərdir. ANDI PENG: Məhz. Belə ki, həqiqətən, yalnız yazma bilər biz bunu daha da sadələşdirmək bilər. Biz sağ, bir müddət loop edə bilər? Belə ki, yalnız loop ola bilər biz bir müddət olduğunu bilirik. Amma indi, mən gedirəm nə ilə - "loop" demək? Loop nə until-- Bizim bitən vəziyyəti? Mən eşitdim edirəm. Mən kimsə demək eşitdim. Auditoriya: Dəyərlər orta bərabərdir. ANDI PENG: yenə deyirəm. Qədər və ya, Auditoriya dəyəri siz axtarış edirik orta dəyərinə bərabərdir. ANDI PENG: orada deyil nə olur? Nə siz axtarış edirik dəyəri bu array həqiqətən deyil? Auditoriya: Siz 1 qayıtmaq. ANDI PENG: Amma biz nə istəyirik biz bir vəziyyət varsa qədər loop? Bəli. Auditoriya: yalnız bir dəyər var qədər? ANDI PENG: Siz loop until-- belə ki, siz etdiyiniz bilirik ki, sağ, bir max dəyəri üçün gedir? Və siz olacaq bilirik ki, sağ min dəyəri var? Də, bir şey var, çünki Mən əvvəl demək unuttum ki, bir şey ikili axtarış haqqında tənqidi Sizin array artıq çeşidlənir olunur. Bunu heç bir yol var, çünki Bu yalnız təsadüfi dəyərlər əgər. Biri əgər bilmirəm digər daha böyük, sağ? Belə ki, bilirik ki, sizin max və Sizin dəqiqə sağ, burada var? Siz düzəliş etmək olacaq əgər Sizin dəqiqə və mid-- sizin max yalnız güman edək sizin ortalarında dəyəri doğru burada var siz əsasən olacaq loop minimum qədər sağ, sizin max eyni, və ya haqqında Sizin max sizin min eyni deyil. Sağ? Ki, baş zaman, çünki siz bilirsiniz ki, Siz nəhayət eyni dəyər təşkil etdik. Belə ki, sizin min qədər loop istəyirəm daha az və ya oops to-- bərabər deyil çox və ya bərabər daha az, max around-- digər yoldur. Ki, hissi etmək mi? Hesab edirəm ki, hüququ almaq üçün bir neçə çalışır etdi. Amma loop sizin max dəyəri qədər mahiyyətcə demək olar ki, az daha ya minimum bərabər, sağ? Bildiyiniz zaman ki Siz nöqtədə etdik ki. Auditoriya: zaman ki maksimum dəyəri minimum az ola bilərmi? ANDI PENG: Siz saxlamaq , düzəliş hansı biz gedir nə bu bunu etmək. Ki, hissi edirmi? Minimum və maksimum ədalətli Biz yəqin ki, integers istədiyiniz davam yaratmaq biz aradığınız harada track. Array mövcuddur, çünki asılı olmayaraq, biz işle. Kimi, biz, həqiqətən, fiziki deyilik sağ serialın off Doğrama? Biz yalnız düzəliş edirik biz baxırıq. Ki, hissi edirmi? Auditoriya: Bəli. ANDI PENG: OK. Ki, loop üçün şərt var Belə ki, biz bu loop daxilində nə istəyirsiniz? Biz nə etmək istəyən olacaq? Belə ki, indi, biz var bir max və min, sağ, yəqin ki, burada haradasa yaratmışdır. Biz yəqin ki, istəyirəm olacaq sağ orta tapmaq üçün? Necə ki, biz olacaq orta tapmaq mümkün? Mathematical-- nədir Auditoriya: Max plus 2 bölünür min. ANDI PENG: Məhz. Ki, hissi edirmi? Və uşaqlar niyə biz görürsünüz bu niyə yalnız use-- etməyib əvəzinə bunu yalnız n 2 bölünür? N dəyəri çünki eyni qalmaq olacaq. Sağ? Amma biz minimum tənzimləmək və maksimum dəyərləri, onlar dəyişmək olacaq. Və nəticə olaraq, bizim orta çox dəyişdirmək üçün gedir. Biz istəyirik nə ki, var burada bu hüququ yoxdur. OLDU. Və sonra, indi ki, biz yeah varsa, bizim gördük. Auditoriya: Just tez question-- zaman min və max demək, ki, fərz olunur Bu, artıq sıralanır? ANDI PENG: Bəli, ki, həqiqətən bir bir ikili axtarış üçün ilkin şərt Siz var ki, bu sıralanır bilmək. Niyə sort olan siz yazmaq sizin problem ikili axtarış əvvəl müəyyən. OLDU. Belə ki, indi biz burada bizim orta bilirik ki, , nə burada nə etmək istəyirsiniz edir? Auditoriya: Biz müqayisə etmək istədiyiniz digər bir ki. ANDI PENG: Məhz. Belə ki, müqayisə etmək olacaq dəyəri ortalarında, sağ? Və nə deyir bizə müqayisə zaman? Biz sonra nə etmək istəyirsiniz? Auditoriya: dəyər olarsa ortalarında çox, biz onu kəsmək istəyirəm. ANDI PENG: Məhz. Dəyəri böyük Belə ki ortalarında çox, biz istəyirik bu dəyişmək istəyirsinizsə gedir minimum və Maxes Təklif Reading, sağ? Biz dəyişdirmək istəyirsiniz? Biz bilirik Belə ki, əgər dəyəri haradasa burada biz dəyişdirmək üçün nə? Biz bizim dəyişməz istəyirəm minimum sağ ortalarında olacaq? Və sonra başqa, bu var, əgər yarım, nə biz dəyişdirmək istəyirsiniz? Auditoriya: Maksimum. ANDI PENG: Bəli. Və sonra yalnız olacaq sağ loop saxlamaq üçün? Indi bir iteration sonra vasitəsilə siz burada bir max var. Və sonra bir orta yeniden hesaplayabilirsiniz. Və sonra müqayisə edə bilərsiniz. Və siz saxlamaq olacaq dəqiqə və Maxes qədər mahiyyətcə nöqtədə var. Siz bilirsiniz ki, zaman ki siz sonunda təşkil etdik. Və ya siz gördük və ya o nöqtədə deyil. Bu hamı üçün mənada edirmi? OLDU. Bu, olduqca vacibdir Siz lazımdır, çünki Sizin kodu axşam bu yazmaq üçün. Amma uşaqlar olduqca yaxşı var Siz bunu etmək lazımdır nə mənada, olan yaxşıdır. OLDU. Beləliklə, biz yeddi haqqında var dəqiqədə bölmə buraxdı. Beləliklə, biz haqqında danışmaq olacaq biz bunu olacaq bu pset. Belə ki, pset iki yarıya indirir bölünür. İlk yarı daxildir bir tapmaq həyata Əgər xətti axtarış yazmaq, bir ikili axtarış və çeşidlənməsi alqoritmi. Belə ki, bu ilk bir pset olduğu vaxt deyirlər nə sizə uşaqlar verilməsi olacaq distribution kodu kodu biz əvvəlcədən yazılı ki, ancaq off bəzi parçaları sol Siz yazılı başa çatdırmaq üçün. Bu baxmaq uşaqlar, belə ki, indeksi, həqiqətən, qorxuram almaq bilər. Siz Ahh, mən kimi, yalnız edirsinizsə ki, bunu nə bilmirəm, Mən kimi, ki, görünür, bilmirəm belə mürəkkəb, Ahh, istirahət. Yaxşıdır. Spec oxuyun. spec tam sizə izah edəcək Bu proqramların bütün nə edirik. Məsələn, generate.c bir proqramdır ki, pset ilə gələcək. Siz, həqiqətən, toxunmaq var, lakin yoxdur Siz bunu nə anlamaq lazımdır. Və generate.c, bunu bütün ya təsadüfi ədəd yaradan və ya bir kimi, bir toxum verə bilər Bu edir əvvəlcədən hazırlanmış sayı, və daha ədəd yaradır. Belə ki, xüsusi bir yol var generate.c həyata olan Siz yalnız nömrələri bir dəstə edə bilərsiniz Siz digər üsullarla test üçün. Belə ki, istəyirdi üçün Məsələn, sizin tapmaq test, Siz generate.c run istəyirsiniz, , ədəd bir dəstə yaratmaq və sonra köməkçiləri funksiyası axır. Siz olduğunuz sizin köməkçiləri funksiyası həqiqətən fiziki kodu yazmaq. Və kitabxana faylı olaraq köməkçiləri hesab ki, tapmaq çağırır yazılı edirik. Belə helpers.c ərzində, siz lazımdır axtarış və çeşidlənməsi yoxdur. Və sonra mahiyyətcə olacaq yalnız onların hamısını qoymaq. necə spec sizə xəbər verəcəkdir command line qoymaq. Və olmadığını test edə bilərsiniz və ya Sizin sort və axtarış çalışırıq. Cool. Hər kəs artıq başlayıb və qarşılaşılan problemlər və ya suallarınız bu ilə indi var? OLDU. Auditoriya: gözləyin. Mənim bir sualım var. ANDI PENG: Bəli. Auditoriya: Mən bunu açılmış helpers.c xətti axtarış və bu, həqiqətən iş deyil. Amma sonra, biz yalnız aşkar silin və ikili axtarış var. Bu iş deyil, əgər Belə ki, fərqi yoxdur? ANDI PENG: Qısa cavab yoxdur. Lakin ildən biz deyilik istəyirik Auditoriya: Amma heç kim nin həqiqətən yoxlanılması. ANDI PENG: Biz heç vaxt istəyirik ki, görəcəksiniz gedir. Amma yəqin ki, etmək istəyirəm Sizin axtarış işlərini davam etdirir. Sizin xətti Çünki əgər Axtarış iş deyil, sonra şansını sizin ikili var Axtarış kimi yaxşı getmir. Oxşar var Onların həm də məntiq. Və heç bir, həqiqətən etməz. Belə ki, yalnız olanları çevirmək lazımdır sort və ikili axtarış var. Bəli. Və həmçinin, uşaqlar bir çox idi helpers.c tərtib etmək üçün çalışırıq. Siz, həqiqətən, icazə deyilik bunu helpers.c çünki əsas funksiyası yoxdur. Və belə ki, yalnız olmalıdır həqiqətən tərtib olmaq zənglər tapmaq çünki, yaratmaq və tapmaq helpers.c və bu ərzində fəaliyyət göstərir. Ki ayıklama edir, belə ki, butt bir ağrı. Amma ki, biz nə var, nə var. Auditoriya: Siz sağ, bütün etmək? ANDI PENG: Siz yalnız bilərsiniz Bəli, eləcə də bütün edir. OLDU. Belə ki, nə baxımından var pset siz bütün etmək xahiş olunur. Əgər hər hansı bir sualınız varsa, hiss bölmə sonra mənə sual pulsuz. Mən 20 dəqiqə kimi, burada olacaq. Və Bəli, pset nin həqiqətən, pis deyil. Siz uşaqlar OK olmalıdır. Bu, yalnız təlimatlarına əməl edin. Cür məntiqi, hissi var, nə olmalıdır baş və siz gözəl olacaq. Qorxuram etməyin. Kod bir çox var artıq yazılı. Əgər deyilsə qorxuram etməyin ki, bütün nə deməkdir başa düşmək. Bir çox varsa, bu tamamilə gözəl var. Və ofis saat gəlir. Biz bir nəzər kömək edəcəyik. Auditoriya: əlavə ilə funksiyaları, biz bu qədər görünür? ANDI PENG: Bəli, həmin kodu var. 15 oyun, yarısı da Bu artıq sizin üçün yazılı. Belə ki, o funksiyaları Artıq kodu. Yep. Oldu. Yaxşı, uğurlar yaxşı. Bu iyrənc gün. Belə ki, inşallah uşaqlar çox hiss etmir daxili olma və kodlaşdırma haqqında pis.