1 00:00:00,000 --> 00:00:03,332 >> [Musiikkia] 2 00:00:03,332 --> 00:00:06,490 >> ANDI Peng: Tervetuloa viikko 3 §. 3 00:00:06,490 --> 00:00:09,550 Kiitos, te, kaikkien tulevien Tämän aiemmin alkamisaika tänään. 4 00:00:09,550 --> 00:00:11,466 Meillä mukava, pieni intiimi ryhmä tänään. 5 00:00:11,466 --> 00:00:14,570 Joten toivottavasti saamme viimeistely, ehkä, varhainen, 6 00:00:14,570 --> 00:00:15,780 hieman aikaisin tänään. 7 00:00:15,780 --> 00:00:22,057 Niin nopeasti, vain joitakin Ilmoitukset esityslistalla tänään. 8 00:00:22,057 --> 00:00:23,890 Ennen kuin aloitamme, olemme menossa vain mennä yli 9 00:00:23,890 --> 00:00:28,910 joitakin lyhyitä logistisia kysymyksiä, PSET kysymyksiä, raportointitiedostoon, tuollaista. 10 00:00:28,910 --> 00:00:30,250 Ja sitten me sukellus oikealle. 11 00:00:30,250 --> 00:00:34,710 Käytämme debuggeri nimeltä gdb aloittaa debunking meidän koodi, joka David 12 00:00:34,710 --> 00:00:36,550 selitetään luento toinen päivä. 13 00:00:36,550 --> 00:00:39,420 Menemme yli neljä tapaisena. 14 00:00:39,420 --> 00:00:42,310 Menemme päälle melko nopeasti koska ne ovat melko intensiivinen. 15 00:00:42,310 --> 00:00:45,710 Mutta tiedämme, että kaikki diat ja lähdekoodi ovat aina verkossa. 16 00:00:45,710 --> 00:00:50,810 Joten rohkeasti, teidän vahvistettavaksi, että palata ja katsomaan että. 17 00:00:50,810 --> 00:00:53,930 >> Menemme läpi asymptoottinen merkintätapa, joka 18 00:00:53,930 --> 00:00:55,944 on vain hieno tapa sanoa "runtimes" 19 00:00:55,944 --> 00:00:58,360 jossa meillä on iso O, joka David selitetty luento. 20 00:00:58,360 --> 00:01:01,550 Ja meillä on myös Omega, joka on alarajan runtime. 21 00:01:01,550 --> 00:01:06,450 Ja puhumme hieman enemmän syvällistä siitä, miten nämä työt. 22 00:01:06,450 --> 00:01:10,160 Ja lopuksi, me mennä yli binäärihaku, koska monet teistä, jotka ovat jo 23 00:01:10,160 --> 00:01:15,190 vilkaisi teidän psets luultavasti tietää, että että on kysymys, joka on teidän PSET. 24 00:01:15,190 --> 00:01:17,470 Joten voit kaikki olla onnellinen että me kattaa tämän tänään. 25 00:01:17,470 --> 00:01:20,610 >> Ja lopuksi, teidän jakso palautetta, olen oikeastaan 26 00:01:20,610 --> 00:01:23,000 vasemmalle noin 15 minuuttia lopulta vain mennä yli 27 00:01:23,000 --> 00:01:27,730 logistiikka pset3, kysyttävää, ehkä hieman ohjeita, jos haluatte, 28 00:01:27,730 --> 00:01:28,990 ennen kuin aloitat ohjelmoinnin. 29 00:01:28,990 --> 00:01:30,890 Joten yrittää saada läpi materiaali melko nopeasti. 30 00:01:30,890 --> 00:01:33,880 Ja sitten voimme viettää aikaa ottaen enemmän kysymyksiä PSET. 31 00:01:33,880 --> 00:01:35,230 OK. 32 00:01:35,230 --> 00:01:39,570 >> Nopeasti, joten vain muutama ilmoitukset ennen kuin aloitamme tänään. 33 00:01:39,570 --> 00:01:45,410 Ensinnäkin, tervetuloa tekemään se läpi kaksi teidän psets. 34 00:01:45,410 --> 00:01:49,432 Otin tarkastella your-- joo, katsotaanpa saada aplodit, että yksi. 35 00:01:49,432 --> 00:01:51,140 Oikeastaan, olin todella, todella vaikuttunut. 36 00:01:51,140 --> 00:01:55,800 Olen arvostellaan ensimmäisen PSET varten te viime viikolla ja te tekivät uskomatonta. 37 00:01:55,800 --> 00:01:58,290 >> Tyyli oli kohta lisäksi muutamia kommentteja. 38 00:01:58,290 --> 00:02:00,660 Varmista, että olet aina kommentointi koodi. 39 00:02:00,660 --> 00:02:03,040 Mutta psets olivat piste. 40 00:02:03,040 --> 00:02:05,549 Ja keep it up. 41 00:02:05,549 --> 00:02:08,090 Ja se on hyvä luokkalainen nähdä, että te laskemisesta 42 00:02:08,090 --> 00:02:10,704 niin paljon vaivaa tyyliisi ja suunnittelua koodissa 43 00:02:10,704 --> 00:02:12,120 että haluaisimme voit nähdä. 44 00:02:12,120 --> 00:02:16,450 Joten olen kulkee pitkin kiitollisuuteni loput avustajat. 45 00:02:16,450 --> 00:02:19,210 >> Kuitenkin on olemassa muutaman pyytää raporttia kysymyksiä 46 00:02:19,210 --> 00:02:22,010 Haluan vain mennä yli, että tekisi molemmat elämäni 47 00:02:22,010 --> 00:02:24,900 ja paljon muuta TA elämää hieman helpompaa. 48 00:02:24,900 --> 00:02:28,220 Ensinnäkin, olen huomannut tämän viime week-- kuinka moni teistä 49 00:02:28,220 --> 00:02:32,301 on käynnissä check50 päälle koodi ennen kuin lähetät? 50 00:02:32,301 --> 00:02:32,800 OK. 51 00:02:32,800 --> 00:02:36,690 Joten kaikkien pitäisi tehdä check50, because-- secret-- me oikeastaan 52 00:02:36,690 --> 00:02:41,540 ajaa check50 osana oikeellisuuden skriptit testaat koodia. 53 00:02:41,540 --> 00:02:45,480 Joten jos koodia ei ole check50, todennäköisesti, 54 00:02:45,480 --> 00:02:47,570 se luultavasti epäonnistuvat meidän tarkistaa samoin. 55 00:02:47,570 --> 00:02:49,320 Joskus te on oikeat vastaukset. 56 00:02:49,320 --> 00:02:52,200 Kuten vuonna ahne, joissakin sinulla on oikeus numerot, 57 00:02:52,200 --> 00:02:53,960 te vain tulostaa ylimääräistä tavaraa. 58 00:02:53,960 --> 00:02:55,940 Ja että ylimääräistä tavaraa todella epäonnistuu tarkistaa, 59 00:02:55,940 --> 00:02:58,440 koska tietokone ei todellakaan tiedä, mitä se etsii. 60 00:02:58,440 --> 00:03:00,981 Ja niin se vain ajaa läpi, nähdä, että tuotanto ei ole 61 00:03:00,981 --> 00:03:03,810 vastannut sitä, mitä odotamme vastausta olla, ja merkitse se on väärin. 62 00:03:03,810 --> 00:03:06,560 >> Ja tiedän, että tapahtui joitakin tapauksia tällä viikolla. 63 00:03:06,560 --> 00:03:09,870 Joten menin takaisin ja käsin uudelleenluokiteltuja kaikkien koodi. 64 00:03:09,870 --> 00:03:12,780 Tulevaisuudessa, vaikka, ota, varmista 65 00:03:12,780 --> 00:03:14,570 että käytät tarkistaa 50 koodin. 66 00:03:14,570 --> 00:03:17,970 Koska se on eräänlainen tuskaa TA täytyy mennä takaisin ja käsin regrade 67 00:03:17,970 --> 00:03:21,197 joka ikinen PSET jokaisen yhden, vähän jäi esimerkiksi. 68 00:03:21,197 --> 00:03:22,530 Joten en ottanut pois mitään pistettä. 69 00:03:22,530 --> 00:03:25,210 Luulen lähti ehkä yksi tai kaksi design. 70 00:03:25,210 --> 00:03:27,710 Tulevaisuudessa kuitenkin, jos olet ei ole check50, 71 00:03:27,710 --> 00:03:31,330 näkökohdat otetaan huomioon pois oikeellisuudesta. 72 00:03:31,330 --> 00:03:35,020 >> Lisäksi, psets ovat koska perjantaisin keskipäivällä. 73 00:03:35,020 --> 00:03:38,990 Mielestäni siellä on seitsemän minuutin myöhään armonaika että annamme sinulle. 74 00:03:38,990 --> 00:03:42,434 Per Harvard aika, niiden sallitaan seitsemän minuuttia myöhässä kaikkeen. 75 00:03:42,434 --> 00:03:44,350 Joten tässä Yalen käymme kiinni että samoin. 76 00:03:44,350 --> 00:03:47,910 Mutta aika paljon, klo 12:07, jos PSET ei ole, 77 00:03:47,910 --> 00:03:49,720 se tulee merkitä myöhään. 78 00:03:49,720 --> 00:03:53,160 Ja niin kun se on merkitty niin myöhään, TA-- olen 79 00:03:53,160 --> 00:03:54,870 vielä aiotaan luokittelu teidän psets. 80 00:03:54,870 --> 00:03:56,760 Joten voit silti nähdä arvosana näkyviin. 81 00:03:56,760 --> 00:03:58,820 Kuitenkin tiedämme, että lukukauden loppuun, 82 00:03:58,820 --> 00:04:02,270 kaikki myöhässä psets vain on automaattisesti nollattu tietokoneen. 83 00:04:02,270 --> 00:04:04,490 >> Teemme tämän kahdesta syystä. 84 00:04:04,490 --> 00:04:09,220 Yksi, joskus saamme anteeksi, kuten Dean tekosyitä, 85 00:04:09,220 --> 00:04:10,762 myöhemmin, että en tiedä vielä. 86 00:04:10,762 --> 00:04:13,761 Joten haluamme varmistaa olemme luokittelu kaikki vain siinä tapauksessa, kuten olen 87 00:04:13,761 --> 00:04:15,080 puuttuu Dean tekosyy. 88 00:04:15,080 --> 00:04:17,000 Ja toiseksi, pitää mieli, voit silti 89 00:04:17,000 --> 00:04:19,370 pudota yksi PSET että on koko laajuudessaan pistettä. 90 00:04:19,370 --> 00:04:21,430 Ja niin haluamme luokka kaikki psets vain 91 00:04:21,430 --> 00:04:24,730 varmistaa, että soveltamisala on siellä ja yrität niitä. 92 00:04:24,730 --> 00:04:29,150 Joten vaikka se on myöhäistä, voit silti saada luottoa laajuus pistettä, luulen. 93 00:04:29,150 --> 00:04:33,730 >> Joten Tarinan on, tehdä varma psets ovat ajallaan. 94 00:04:33,730 --> 00:04:38,350 Ja jos ne eivät ole ajallaan, tietävät, että se ei ole suuri. 95 00:04:38,350 --> 00:04:41,678 Joo, ennen kuin eteenpäin, ei kellään kysyttävää PSET palautetta? 96 00:04:41,678 --> 00:04:42,178 Joo. 97 00:04:42,178 --> 00:04:43,630 >> Yleisö: Sanoitko me voi pudota yksi psets? 98 00:04:43,630 --> 00:04:44,296 >> ANDI Peng: Joo. 99 00:04:44,296 --> 00:04:47,050 Joten siellä on yhdeksän psets yleistä aikana lukukauden. 100 00:04:47,050 --> 00:04:50,610 Ja jos sinulla on soveltamisala points-- joten soveltamisala on vain, 101 00:04:50,610 --> 00:04:53,567 melko paljon, olet yrität ongelma, olet laskemisesta ajoissa, 102 00:04:53,567 --> 00:04:56,150 olet osoittaa, että olet osoitti olet lukenut spec. 103 00:04:56,150 --> 00:04:57,191 Se on aika paljon varaa. 104 00:04:57,191 --> 00:04:59,370 Ja jos täyttävät laajuus pistettä, me 105 00:04:59,370 --> 00:05:03,360 voi pudota alin yksi ulos koko laajuudessaan. 106 00:05:03,360 --> 00:05:06,790 Niin, että on eduksi täydentää ja yrittää kaikin PSET. 107 00:05:06,790 --> 00:05:10,320 >> Vaikka upload-- jos mikään niistä ei toimi, lataa ne kaikki. 108 00:05:10,320 --> 00:05:13,711 Ja sitten me voidaan toivottavasti antaa sinulle joitakin niistä pistettä takaisin. 109 00:05:13,711 --> 00:05:14,210 Viileä. 110 00:05:14,210 --> 00:05:16,780 Muita kysymyksiä? 111 00:05:16,780 --> 00:05:17,840 Suuri. 112 00:05:17,840 --> 00:05:21,960 >> Toiseksi, toimisto hours-- muutaman muistiinpanoja noin virka. 113 00:05:21,960 --> 00:05:24,300 Joten ensimmäinen, tulevat alkuviikosta. 114 00:05:24,300 --> 00:05:26,909 Kukaan ei koskaan at virka maanantaisin. 115 00:05:26,909 --> 00:05:28,700 Christabel tuli virka viime yönä. 116 00:05:28,700 --> 00:05:29,691 Joo, Christabel. 117 00:05:29,691 --> 00:05:32,190 Ja mitä meillä on toimistossa tuntia viime yönä, Christabelin? 118 00:05:32,190 --> 00:05:33,020 >> Yleisö: Meillä oli jäätelöä. 119 00:05:33,020 --> 00:05:36,160 >> ANDI Peng: Niin, että oikeus, meillä oli jäätelöä toimistossa tuntia viime yönä. 120 00:05:36,160 --> 00:05:39,390 Vaikka en voi luvata, että meidän täytyy jäätelöä virka 121 00:05:39,390 --> 00:05:43,230 joka viikko, mitä voin luvata on se, että siellä on huomattavasti 122 00:05:43,230 --> 00:05:45,380 parempi opiskelija TA suhde. 123 00:05:45,380 --> 00:05:47,650 Kuten legit, se on kuin viisikymmentäseitsemän yli kaksitoista. 124 00:05:47,650 --> 00:05:50,350 Sekä katsoo, kontrasti, että Torstai sinulla noin 150 125 00:05:50,350 --> 00:05:52,830 todella stressaantunut lapset ja ei jäätelöä. 126 00:05:52,830 --> 00:05:55,360 Ja se vain ei ole tuottavaa kenellekään. 127 00:05:55,360 --> 00:05:58,730 Joten Tarinan on, tule aikaisin Office tuntia ja hyvää 128 00:05:58,730 --> 00:06:00,310 tapahtuu. 129 00:06:00,310 --> 00:06:02,110 >> Myös tulevat valmis esittää kysymyksiä. 130 00:06:02,110 --> 00:06:03,200 Sinä tiedät? 131 00:06:03,200 --> 00:06:05,420 Riippumatta siitä, mitä TAS, minä ajatella, ovat sanoneet, 132 00:06:05,420 --> 00:06:10,710 olemme tulossa pari opiskelijaa jotka tulevat torstaina klo, kuten, 10:50 133 00:06:10,710 --> 00:06:15,100 ei lukeneeni spec on kuin auttaa minua, auttaa minua. 134 00:06:15,100 --> 00:06:18,200 Valitettavasti siinä vaiheessa, on olemassa ei paljon voimme tehdä auttaaksemme sinua. 135 00:06:18,200 --> 00:06:19,590 Joten tulkaa alkuviikosta. 136 00:06:19,590 --> 00:06:22,040 Tule aikaista virka. 137 00:06:22,040 --> 00:06:23,350 Tule valmis esittää kysymyksiä. 138 00:06:23,350 --> 00:06:25,310 Varmista, että olet, kuten opiskelija, ovat missä 139 00:06:25,310 --> 00:06:27,620 sinun täytyy olla niin, että TA voi opastaa sinua pitkin, 140 00:06:27,620 --> 00:06:32,850 joka on mitä virka Pitäisi olla varattu. 141 00:06:32,850 --> 00:06:37,380 >> Toiseksi, joten tiedän professorit haluavat yllättää meidät testejä. 142 00:06:37,380 --> 00:06:39,439 Minulla oli professori ne kuten, yo, muuten, 143 00:06:39,439 --> 00:06:41,230 muista, että puolivälin sinulla on ensi maanantaina. 144 00:06:41,230 --> 00:06:42,855 Joo, en tiedä, että puolivälin. 145 00:06:42,855 --> 00:06:45,630 Joten aion olla, että TA joka muistuttaa teille kaikille, että tietokilpailu 146 00:06:45,630 --> 00:06:47,270 0-- koska, tiedäthän, olemme CS. 147 00:06:47,270 --> 00:06:50,730 Nyt olemme tehneet ryhmät, saat miksi se on tietokilpailu 0, ei tietokilpailu 1, eh? 148 00:06:50,730 --> 00:06:51,320 OK. 149 00:06:51,320 --> 00:06:52,490 Voi, sain naurahtaa, että yksi. 150 00:06:52,490 --> 00:06:53,120 OK. 151 00:06:53,120 --> 00:06:59,710 >> Joten tietokilpailu 0 on 14 lokakuu jos olet ma-ke jakso 152 00:06:59,710 --> 00:07:02,920 ja 15 lokakuu jos olet tiistaista torstaihin osiosta. 153 00:07:02,920 --> 00:07:05,630 Tämä ei koske Niille teistä Harvardin 154 00:07:05,630 --> 00:07:10,350 who-- Mielestäni sinun kaikki olla ottaen tietokilpailuja 14.. 155 00:07:10,350 --> 00:07:13,560 >> Niin joo, ensi viikolla, jos David, luento, menee, 156 00:07:13,560 --> 00:07:15,747 joo, niin siitä tietokilpailu ensi viikolla, te kaikki 157 00:07:15,747 --> 00:07:17,580 ei järkyttynyt, koska tulit § 158 00:07:17,580 --> 00:07:19,664 ja tiedät, että Quiz 0 on kaksi viikkoa. 159 00:07:19,664 --> 00:07:21,580 Ja meidän täytyy arvostelu istuntoja ja kaikki. 160 00:07:21,580 --> 00:07:26,360 Joten ei huolestuta pelätä siitä. 161 00:07:26,360 --> 00:07:29,890 Kaikki kysymykset before-- kysyttävää ollenkaan koskevat logistisia kysymyksiä, 162 00:07:29,890 --> 00:07:32,591 luokittelua, virka, kohdat? 163 00:07:32,591 --> 00:07:33,090 Joo. 164 00:07:33,090 --> 00:07:35,100 >> Yleisö: Niin tietokilpailu on olemaan aikana luento? 165 00:07:35,100 --> 00:07:35,766 >> ANDI Peng: Joo. 166 00:07:35,766 --> 00:07:39,460 Joten tietokilpailu, mielestäni, on 60 minuuttia varattu siinä aikavälissä 167 00:07:39,460 --> 00:07:42,240 että sinun vain ottaa salissa. 168 00:07:42,240 --> 00:07:44,810 Joten sinun ei tarvitse tulla on, kuten, satunnainen 19:00. 169 00:07:44,810 --> 00:07:46,140 Kaikki on hyvin. 170 00:07:46,140 --> 00:07:47,100 Joo. 171 00:07:47,100 --> 00:07:50,060 Viileä. 172 00:07:50,060 --> 00:07:50,840 >> Selvä. 173 00:07:50,840 --> 00:07:54,330 Joten aiomme käyttöön käsite sinulle 174 00:07:54,330 --> 00:08:00,760 tällä viikolla, että David on jo eräänlainen on käsitellyt luento viime viikolla. 175 00:08:00,760 --> 00:08:02,010 Sitä kutsutaan GDB. 176 00:08:02,010 --> 00:08:05,570 Ja kuinka monet teistä, kun taas aikana kirjoittamalla psets, 177 00:08:05,570 --> 00:08:09,981 huomannut iso painiketta, jossa lukee "Debug" päällä teidän IDE? 178 00:08:09,981 --> 00:08:10,480 OK. 179 00:08:10,480 --> 00:08:13,770 Joten nyt me itse saada kaivaa mysteeri mitä tätä nappia todella 180 00:08:13,770 --> 00:08:14,270 tekee. 181 00:08:14,270 --> 00:08:16,790 Ja takaan, se on kaunis, kaunis asia. 182 00:08:16,790 --> 00:08:20,740 >> Joten tähän asti, luulen että on ollut kaksi asiaa 183 00:08:20,740 --> 00:08:23,320 opiskelijat ovat olleet tyypillisesti tekemässä kun virheenkorjaus psets. 184 00:08:23,320 --> 00:08:27,635 Yksi, ne joko lisätä printf () - niin joka muutama rivi, 185 00:08:27,635 --> 00:08:29,760 ne lisätä printf () - Voi, mikä on tämän muuttujan? 186 00:08:29,760 --> 00:08:32,551 Voi, mikä on tämän muuttujan now-- ja te tavallaan nähdä etenemisen 187 00:08:32,551 --> 00:08:33,940 teidän koodi se toimii. 188 00:08:33,940 --> 00:08:37,030 Tai toinen tapa lapset eivät on että he vain kirjoittaa koko juttu 189 00:08:37,030 --> 00:08:38,610 ja sitten mennä näin lopussa. 190 00:08:38,610 --> 00:08:39,970 Toivottavasti se toimii. 191 00:08:39,970 --> 00:08:44,851 Takaan, GDB on parempi kuin molemmat näistä menetelmistä. 192 00:08:44,851 --> 00:08:45,350 Joo. 193 00:08:45,350 --> 00:08:46,980 Joten tämä on uusi paras ystävä. 194 00:08:46,980 --> 00:08:51,780 Koska se on kaunis asia että visuaalisesti näyttää molemmat 195 00:08:51,780 --> 00:08:54,850 mitä koodi tekee tietyssä kohdassa 196 00:08:54,850 --> 00:08:57,486 sekä mitä kaikki muuttujat kuljettavat, 197 00:08:57,486 --> 00:08:59,610 kuten mitä niiden arvot ovat, tässä erityinen kohta. 198 00:08:59,610 --> 00:09:02,670 Ja tällä tavalla, voit todella asettaa raja-arvot koodissa. 199 00:09:02,670 --> 00:09:04,350 Voit käydä läpi rivi riviltä. 200 00:09:04,350 --> 00:09:07,324 Ja GDB täytyy vain varten te, näytetään sinulle, 201 00:09:07,324 --> 00:09:09,490 mitä kaikki muuttujat ovat, mitä he tekevät, 202 00:09:09,490 --> 00:09:10,656 mitä tapahtuu koodissa. 203 00:09:10,656 --> 00:09:13,240 Ja siten, se on niin paljon helpompi nähdä 204 00:09:13,240 --> 00:09:17,120 mitä tapahtuu sijasta printf-ta tai kirjoittaa ylös tiliotteesi. 205 00:09:17,120 --> 00:09:19,160 >> Joten teemme esimerkki tästä myöhemmin. 206 00:09:19,160 --> 00:09:20,660 Joten tämä tuntuu vähän abstrakti. 207 00:09:20,660 --> 00:09:23,490 Ei hätää, teemme esimerkkejä. 208 00:09:23,490 --> 00:09:29,170 Ja niin olennaisesti, kolme suurinta, eniten käytettyjä toimintoja, jotka tarvitset GDB 209 00:09:29,170 --> 00:09:32,500 ovat Seuraavaksi askel yli, ja Astu painikkeita. 210 00:09:32,500 --> 00:09:34,860 Aion pään yli siellä, itse asiassa, juuri nyt. 211 00:09:34,860 --> 00:09:40,930 >> Niin voi te kaikki nähdä, että tai minun pitäisi suurentaa vähän? 212 00:09:40,930 --> 00:09:43,220 213 00:09:43,220 --> 00:09:44,470 Takana, näetkö sen? 214 00:09:44,470 --> 00:09:45,730 Pitäisikö minun suurentaa? 215 00:09:45,730 --> 00:09:46,480 Ihan vähän? 216 00:09:46,480 --> 00:09:49,390 OK, viileä. 217 00:09:49,390 --> 00:09:50,280 Siellä mennään. 218 00:09:50,280 --> 00:09:50,960 OK. 219 00:09:50,960 --> 00:09:57,000 >> Olen siis, täällä, minun toteutus ahne. 220 00:09:57,000 --> 00:10:01,430 Ja vaikka paljon te kirjoitti ahne sisään, kun silmukka form-- että 221 00:10:01,430 --> 00:10:04,890 on täysin hyväksyttävä tapa tehdä it-- toinen tapa tehdä se on yksinkertaisesti 222 00:10:04,890 --> 00:10:06,280 kuilun modulo. 223 00:10:06,280 --> 00:10:09,290 Koska silloin voit saada arvo ja sitten pyydä loput. 224 00:10:09,290 --> 00:10:11,150 Ja sitten voit vain lisää se kaikki yhdessä. 225 00:10:11,150 --> 00:10:13,390 Onko logiikka, mitä olen tekemässä täällä järkevää kaikille, 226 00:10:13,390 --> 00:10:14,117 ennen kuin aloitamme? 227 00:10:14,117 --> 00:10:16,760 228 00:10:16,760 --> 00:10:17,980 Eräänlainen? 229 00:10:17,980 --> 00:10:18,710 Viileä. 230 00:10:18,710 --> 00:10:19,210 Suuri. 231 00:10:19,210 --> 00:10:21,290 Se on aika seksikäs pala koodia, sanoisin. 232 00:10:21,290 --> 00:10:23,502 Kuten sanoin, David, vuonna luento, kun taas, 233 00:10:23,502 --> 00:10:25,960 voit kaikki alkaa nähdä koodi jotain, joka on kaunis. 234 00:10:25,960 --> 00:10:29,950 Ja joskus kun näet kaunis koodi, se on niin ihana tunne. 235 00:10:29,950 --> 00:10:35,410 >> Niin kuitenkin, vaikka tämä koodi on hyvin kaunis, se ei toimi kunnolla. 236 00:10:35,410 --> 00:10:37,750 Joten ajaa check50 tästä. 237 00:10:37,750 --> 00:10:39,440 Tarkista 50 20-- oop. 238 00:10:39,440 --> 00:10:43,221 239 00:10:43,221 --> 00:10:43,720 2? 240 00:10:43,720 --> 00:10:44,990 Onko se pset2? 241 00:10:44,990 --> 00:10:46,870 Joo. 242 00:10:46,870 --> 00:10:47,520 Voi, pset1. 243 00:10:47,520 --> 00:10:50,970 244 00:10:50,970 --> 00:10:52,890 OK. 245 00:10:52,890 --> 00:10:53,900 Joten otamme check50. 246 00:10:53,900 --> 00:11:01,550 247 00:11:01,550 --> 00:11:07,170 >> Ja kun te voi nähdä täällä, se ei ole pari tapauksissa. 248 00:11:07,170 --> 00:11:10,165 Ja jotkut teistä, vuonna tietenkin tehdä ongelman asettaa, 249 00:11:10,165 --> 00:11:11,110 olet kuin, ah, miksi ei se toimi. 250 00:11:11,110 --> 00:11:13,318 Miksi se toimi joidenkin arvot mutta ei muille? 251 00:11:13,318 --> 00:11:17,760 No, GDB aikoo auttaa sinua kuva miksi nämä tulot eivät toimi. 252 00:11:17,760 --> 00:11:18,320 >> OK. 253 00:11:18,320 --> 00:11:21,640 Joten katso, yksi tarkastukset Olin ei ole vuonna check50 254 00:11:21,640 --> 00:11:24,920 oli tulon arvo 0,41. 255 00:11:24,920 --> 00:11:27,830 Joten oikea vastaus, että sinun pitäisi saada on 4. 256 00:11:27,830 --> 00:11:33,090 Mutta sen sijaan mitä olen tulostamalla on 3-n, joka on virheellinen. 257 00:11:33,090 --> 00:11:36,190 Joten vain ajaa manuaalisesti, vain varmista, että check50 toimii. 258 00:11:36,190 --> 00:11:36,940 Tehdään ./greedy. 259 00:11:36,940 --> 00:11:40,130 260 00:11:40,130 --> 00:11:43,340 Oho, minun täytyy tehdä ahne. 261 00:11:43,340 --> 00:11:43,840 Siellä mennään. 262 00:11:43,840 --> 00:11:44,381 Nyt ./greedy. 263 00:11:44,381 --> 00:11:46,950 264 00:11:46,950 --> 00:11:47,670 >> Kuinka paljon on velkaa? 265 00:11:47,670 --> 00:11:49,550 Tehdään 0,41. 266 00:11:49,550 --> 00:11:52,590 Ja juu, näemme täällä että se syöttöä 3 267 00:11:52,590 --> 00:11:55,160 kun oikea vastaus, itse asiassa pitäisi olla 4. 268 00:11:55,160 --> 00:12:01,460 Joten kirjoita GDB ja miten me voi mennä noin vahvistamisesta tähän ongelmaan. 269 00:12:01,460 --> 00:12:03,992 >> Joten ensimmäinen askel aina virheenkorjaus koodi 270 00:12:03,992 --> 00:12:05,950 on asettaa keskeytyskohta, tai piste, jossa sinua 271 00:12:05,950 --> 00:12:09,079 haluat tietokoneen tai debuggeri alkaa tarkastella. 272 00:12:09,079 --> 00:12:11,120 Joten jos et todellakaan tietää, mitä ongelma on, 273 00:12:11,120 --> 00:12:14,670 yleensä, tyypillinen asia haluamme tehdä, on asettaa meidän keskeytyskohdan tärkein. 274 00:12:14,670 --> 00:12:18,520 Joten jos te voi nähdä tämän punainen painike oikeassa, 275 00:12:18,520 --> 00:12:22,860 Jep, joka oli minulle asettaminen raja-arvot, sillä päätehtävä. 276 00:12:22,860 --> 00:12:24,130 Minä sitten että. 277 00:12:24,130 --> 00:12:26,130 >> Ja sitten voin mennä jopa minun Debug painiketta. 278 00:12:26,130 --> 00:12:27,036 Osuin että painiketta. 279 00:12:27,036 --> 00:12:31,710 280 00:12:31,710 --> 00:12:36,555 Saanen zoomata takaisin, jos voin. 281 00:12:36,555 --> 00:12:38,020 Siellä mennään. 282 00:12:38,020 --> 00:12:40,730 Joten olemme täällä, paneeli oikealla. 283 00:12:40,730 --> 00:12:43,680 Olen pahoillani, kaverit takaisin, te ei todellakaan voi nähdä todella hyvin. 284 00:12:43,680 --> 00:12:49,090 Mutta pohjimmiltaan, kaikki tämä oikeus paneeli tekee 285 00:12:49,090 --> 00:12:53,130 on pitää kirjaa sekä esiin linja, joka on koodiriviä 286 00:12:53,130 --> 00:12:56,640 että tietokone on parhaillaan käynnissä, sekä kaikki muuttujat 287 00:12:56,640 --> 00:12:57,600 täällä. 288 00:12:57,600 --> 00:13:00,487 >> Joten sinulla senttiä, kolikot, n, kaikki ilmoitetut eri asioita 289 00:13:00,487 --> 00:13:01,070 tässä tilanteessa. 290 00:13:01,070 --> 00:13:04,850 Ei hätää, koska meillä ei oikeastaan alustetaan heitä mitään muuttujia vielä. 291 00:13:04,850 --> 00:13:07,200 Joten tietokoneessa, sinun tietokone on vain nähdä, 292 00:13:07,200 --> 00:13:14,376 OH, 32767 oli viimeksi käytetty toiminto Kyseisen muistia minun tietokone. 293 00:13:14,376 --> 00:13:16,000 Ja niin se on silloin senttiä tällä hetkellä on. 294 00:13:16,000 --> 00:13:19,360 Mutta ei, että kun suorittaa koodia, sen pitäisi tulla alustettu. 295 00:13:19,360 --> 00:13:24,110 >> Joten mennään läpi, rivi linja, mitä täällä tapahtuu. 296 00:13:24,110 --> 00:13:25,350 OK. 297 00:13:25,350 --> 00:13:29,400 Joten täällä ovat kolme painikkeet, olen juuri selitti. 298 00:13:29,400 --> 00:13:34,090 Sinulla on toisto tai Run toiminto, painiketta, sinun on askel yli painikkeen, 299 00:13:34,090 --> 00:13:36,600 ja sinulla on myös Astu painiketta. 300 00:13:36,600 --> 00:13:41,260 Ja olennaisesti, kaikki kolme ne vain mennä läpi koodi 301 00:13:41,260 --> 00:13:42,690 ja tehdä erilaisia ​​asioita. 302 00:13:42,690 --> 00:13:45,680 >> Joten tyypillisesti, kun olet virheenkorjaus, emme halua painaa Play, 303 00:13:45,680 --> 00:13:47,930 koska Play vain ajaa koodi loppuun se. 304 00:13:47,930 --> 00:13:49,070 Ja sitten et itse tietää mikä ongelmasi 305 00:13:49,070 --> 00:13:51,432 on ellet asettaa useita raja-arvot. 306 00:13:51,432 --> 00:13:53,890 Jos asetat useita raja-arvot, se vain automaattisesti 307 00:13:53,890 --> 00:13:56,030 alkaa yksi breakpoint, seuraavaan, seuraavaan. 308 00:13:56,030 --> 00:13:58,030 Mutta tässä tapauksessa olemme vain että yksi, koska me 309 00:13:58,030 --> 00:13:59,970 haluavat työskennellä tiemme ylhäältä alas alas. 310 00:13:59,970 --> 00:14:04,830 Joten aiomme sivuuttaa tätä nappia juuri nyt tämän ohjelman. 311 00:14:04,830 --> 00:14:08,230 >> Joten askel yli toimintatavasta vaiheet yli joka ikinen viiva 312 00:14:08,230 --> 00:14:11,510 ja kertoo, mitä tietokone tekee. 313 00:14:11,510 --> 00:14:14,630 Astu toiminto menee varsinaiseen toiminto 314 00:14:14,630 --> 00:14:16,000 se on teidän riviä koodia. 315 00:14:16,000 --> 00:14:19,070 Niinpä esimerkiksi, kuten printf (), että on funktio, eikö? 316 00:14:19,070 --> 00:14:21,980 Jos halusin fyysisesti vaihe osaksi printf () funktio, 317 00:14:21,980 --> 00:14:25,610 Haluaisin todella mennä pala koodi missä printf () kirjoitettiin ja nähdä 318 00:14:25,610 --> 00:14:26,730 mitä siellä tapahtuu. 319 00:14:26,730 --> 00:14:29,924 >> Mutta tyypillisesti, oletamme, että koodi että annamme sinulle toimii. 320 00:14:29,924 --> 00:14:31,340 Oletamme printf () toimii. 321 00:14:31,340 --> 00:14:33,170 Oletamme, että GetInt () toimii. 322 00:14:33,170 --> 00:14:35,170 Joten ei ole tarvetta astu kyseisiä toimintoja. 323 00:14:35,170 --> 00:14:37,170 Mutta jos on toimintoja että kirjoitat itse 324 00:14:37,170 --> 00:14:39,060 että haluat tarkistaa mitä tapahtuu, 325 00:14:39,060 --> 00:14:41,200 haluaisi astua tuohon toiminto. 326 00:14:41,200 --> 00:14:43,940 >> Joten nyt me vain menossa vaiheeseen tänä koodinpätkä. 327 00:14:43,940 --> 00:14:44,485 Katsotaanpa. 328 00:14:44,485 --> 00:14:46,547 Voi, tulostaa, "Voi Hai, miten suuria muutoksia on velkaa? " 329 00:14:46,547 --> 00:14:47,130 Emme välitä. 330 00:14:47,130 --> 00:14:49,830 Tiedämme, että työskentelee, joten astua sen yli. 331 00:14:49,830 --> 00:14:53,290 >> Joten n, joka on meidän float että olemme initialized-- tai declared-- 332 00:14:53,290 --> 00:14:56,810 ylös huipulla, olemme nyt vastaten että GetFloat (). 333 00:14:56,810 --> 00:14:57,810 Joten askel yli sen. 334 00:14:57,810 --> 00:14:59,580 Ja näemme pohja tässä, ohjelma 335 00:14:59,580 --> 00:15:03,360 on kehotukset minua syötettävä arvo. 336 00:15:03,360 --> 00:15:08,580 Joten panos arvo haluamme testata tässä, joka on 0,41. 337 00:15:08,580 --> 00:15:09,160 Suuri. 338 00:15:09,160 --> 00:15:12,780 >> Joten nyt n- tehdä Näittekö täällä, bottom-- se 339 00:15:12,780 --> 00:15:15,140 stored-- koska me ei ole pyöristetty vielä, se on 340 00:15:15,140 --> 00:15:19,540 tallennettu tähän jättimäisiltä float että on ,4099999996, 341 00:15:19,540 --> 00:15:22,550 joka on tarpeeksi lähellä meidän tarkoituksiin, juuri nyt, 0,41. 342 00:15:22,550 --> 00:15:26,090 Ja sitten näemme myöhemmin, kun me jatkaa tehostamalla koko ohjelmakauden, 343 00:15:26,090 --> 00:15:29,850 jälkeen täällä, n on tullut pyöristetty ja senttiä on tullut 41. 344 00:15:29,850 --> 00:15:30,350 Suuri. 345 00:15:30,350 --> 00:15:32,230 Niin tiedämme, että pyöristys toimivuuden. 346 00:15:32,230 --> 00:15:34,700 Tiedämme, että meillä on oikea määrä senttiä, 347 00:15:34,700 --> 00:15:36,990 joten tiedämme, että se on ei oikeastaan ​​ongelma. 348 00:15:36,990 --> 00:15:40,050 >> Joten jatkamme tehostamalla on tässä ohjelmassa. 349 00:15:40,050 --> 00:15:40,900 Menemme täällä. 350 00:15:40,900 --> 00:15:46,139 Ja niin sen jälkeen tämä rivi koodia, me pitäisi tietää, kuinka monta neljäsosaa olemme. 351 00:15:46,139 --> 00:15:46,680 Me askel yli. 352 00:15:46,680 --> 00:15:52,040 Ja näet emme, itse asiassa, on yksi neljänneksellä koska olemme vähennetään 25 353 00:15:52,040 --> 00:15:53,790 meidän alkuperäisestä arvosta 41. 354 00:15:53,790 --> 00:15:55,890 Ja meillä on 16 vasemmalle meidän senttiä. 355 00:15:55,890 --> 00:15:58,830 >> Onko jokainen ymmärtää, miten ohjelma on tehostaa kautta 356 00:15:58,830 --> 00:16:02,980 ja miksi senttiä on tullut 16 ja miksi, nyt, kolikot on tullut 1? 357 00:16:02,980 --> 00:16:04,610 Onko jokainen jälkeen, logiikka? 358 00:16:04,610 --> 00:16:05,110 Viileä. 359 00:16:05,110 --> 00:16:07,860 Jotta tämän kohdan, Ohjelman työ, eikö? 360 00:16:07,860 --> 00:16:09,797 Tiedämme, että se tekee tarkalleen mitä me haluamme sen. 361 00:16:09,797 --> 00:16:11,880 Ja me ei oikeastaan täytyy tulostaa, oi, mikä 362 00:16:11,880 --> 00:16:14,430 on senttiä tässä vaiheessa, mikä on kolikot tässä vaiheessa. 363 00:16:14,430 --> 00:16:17,170 >> Jatkamme läpi ohjelman. 364 00:16:17,170 --> 00:16:18,100 Astua yli. 365 00:16:18,100 --> 00:16:18,620 Viileä. 366 00:16:18,620 --> 00:16:19,700 Menemme yli Dimes. 367 00:16:19,700 --> 00:16:20,200 Suuri. 368 00:16:20,200 --> 00:16:22,367 Näemme, että se otetaan pois $ 0,10 penniäkään. 369 00:16:22,367 --> 00:16:23,450 Ja nyt meillä on kaksi kolikkoa. 370 00:16:23,450 --> 00:16:25,260 Pitää paikkansa. 371 00:16:25,260 --> 00:16:31,555 >> Menemme yli penniä ja näemme että meillä jäljellä senttiä. 372 00:16:31,555 --> 00:16:32,680 Hmm, se on outoa. 373 00:16:32,680 --> 00:16:37,540 Ylös täällä ohjelma, minun piti pitänyt vähentää minun penniä. 374 00:16:37,540 --> 00:16:39,400 Ehkä en vain ollut teet että linja oikea. 375 00:16:39,400 --> 00:16:42,190 Ja valitettavasti, voit nähdä täällä, koska tiedämme 376 00:16:42,190 --> 00:16:44,360 että me panemme linjojen 32 ja 33, 377 00:16:44,360 --> 00:16:50,560 siitähän meidän ohjelma Väärin oli muuttujat juosta. 378 00:16:50,560 --> 00:16:55,136 Jotta voimme katsoa ja nähdä, Oh, Olen vähentämällä senttiä täällä, 379 00:16:55,136 --> 00:16:57,010 mutta en ole oikeastaan lisäämällä minun kolikon arvo. 380 00:16:57,010 --> 00:16:57,860 Olen lisäämällä senttiä. 381 00:16:57,860 --> 00:17:00,234 Ja en halua lisätä senttiä, haluan lisätä kolikkoa. 382 00:17:00,234 --> 00:17:05,420 Joten jos muutamme että kolikot, meillä työohjelman. 383 00:17:05,420 --> 00:17:06,730 Voin ajaa check50. 384 00:17:06,730 --> 00:17:11,063 Voit vain poistua ulos GDB oikeus täällä ja suorita check50 uudelleen. 385 00:17:11,063 --> 00:17:11,938 Voisin tehdä tämän. 386 00:17:11,938 --> 00:17:14,822 387 00:17:14,822 --> 00:17:18,480 Minun täytyy tehdä ahne. 388 00:17:18,480 --> 00:17:19,940 0.41. 389 00:17:19,940 --> 00:17:22,819 Ja täällä, se on tulostus ulos oikea vastaus. 390 00:17:22,819 --> 00:17:26,569 >> Niin te voi nähdä, GDB on todella tehokas työkalu 391 00:17:26,569 --> 00:17:29,940 sillä kun meillä on niin paljon koodia tekeillä ja niin paljon muuttujia 392 00:17:29,940 --> 00:17:32,510 että on vaikea meille, koska ihminen, seurata. 393 00:17:32,510 --> 00:17:35,360 Tietokone, vuonna GDB debuggeri, on kyky 394 00:17:35,360 --> 00:17:37,020 seurata kaikkea. 395 00:17:37,020 --> 00:17:40,480 Tiedän, vuonna visionääri, te luultavasti saattanut osua joitakin segmentointi vikoja 396 00:17:40,480 --> 00:17:43,150 koska olit käynnissä out of bounds oman array. 397 00:17:43,150 --> 00:17:46,510 Esimerkissä Caesar, joka on mitä olen lisännyt täällä. 398 00:17:46,510 --> 00:17:50,060 >> Niin unohdin tarkistaa mitä tapahtuisi, jos en 399 00:17:50,060 --> 00:17:52,510 ei ollut kaksi komentoriviargumentteja. 400 00:17:52,510 --> 00:17:53,880 En vain laittaa, että sisään. 401 00:17:53,880 --> 00:17:57,380 Joten jos juoksen Debug-- otan minun breakpoint oikealle siellä. 402 00:17:57,380 --> 00:17:58,055 Juoksen Debug. 403 00:17:58,055 --> 00:18:15,880 404 00:18:15,880 --> 00:18:16,550 >> OK. 405 00:18:16,550 --> 00:18:17,050 Joo. 406 00:18:17,050 --> 00:18:20,350 Joten oikeastaan, GDB piti että ovat kertoneet minulle siellä 407 00:18:20,350 --> 00:18:22,300 oli segmentointi vika siellä. 408 00:18:22,300 --> 00:18:24,883 En tiedä, mitä oli tekeillä oikeassa, mutta kun juoksin sen, 409 00:18:24,883 --> 00:18:25,590 se toimi. 410 00:18:25,590 --> 00:18:29,410 Kun suoritat riviä koodia kautta ja GDB saattaa yhtäkkiä lopettaa teitä, 411 00:18:29,410 --> 00:18:31,540 nousevat ja katso mitä punainen virhe on. 412 00:18:31,540 --> 00:18:33,930 Se tulee kertoa, hei, te oli segmentointi vika, 413 00:18:33,930 --> 00:18:38,550 mikä tarkoittaa, että yritit pääsy tilaa array, joka ei ollut olemassa. 414 00:18:38,550 --> 00:18:39,050 Joo. 415 00:18:39,050 --> 00:18:43,280 >> Joten seuraava ongelma asettaa tällä viikolla, te 416 00:18:43,280 --> 00:18:45,600 luultavasti paljon muuttujat kelluva noin. 417 00:18:45,600 --> 00:18:48,560 Et aio olla varma mitä ne kaikki tarkoittavat tietyssä vaiheessa. 418 00:18:48,560 --> 00:18:53,560 Joten GDB todella auttaa sinua miettiminen mitä he ovat kaikki verran 419 00:18:53,560 --> 00:18:55,940 ja että voimme nähdä, että visuaalisesti. 420 00:18:55,940 --> 00:19:01,995 Onko kukaan sekava miten mitään siitä toimi? 421 00:19:01,995 --> 00:19:02,495 Viileä. 422 00:19:02,495 --> 00:19:10,121 423 00:19:10,121 --> 00:19:10,620 Selvä. 424 00:19:10,620 --> 00:19:14,260 Niin sen jälkeen, olemme menossa sukeltaa oikealle 425 00:19:14,260 --> 00:19:17,562 osaksi neljä erilaista tyyppisiä lajittelee tällä viikolla. 426 00:19:17,562 --> 00:19:19,520 Kuinka moni teistä, ensin kaikista, ennen kuin aloitamme, 427 00:19:19,520 --> 00:19:23,020 lukenut koko spec pset3? 428 00:19:23,020 --> 00:19:23,824 OK. 429 00:19:23,824 --> 00:19:24,740 Olen ylpeä sinusta kaverit. 430 00:19:24,740 --> 00:19:29,110 Se on kuin puolet luokan, joka on huomattavasti enemmän kuin viime kerralla. 431 00:19:29,110 --> 00:19:33,950 >> Niin, että on hienoa, koska kun puhumme sisällöstä 432 00:19:33,950 --> 00:19:36,170 vuonna lecture-- tai anteeksi, vuonna section-- Pidän 433 00:19:36,170 --> 00:19:38,210 suhteuttaa paljon joka takaisin mitä PSET on 434 00:19:38,210 --> 00:19:40,210 ja miten haluat toteuttaa että teidän PSET. 435 00:19:40,210 --> 00:19:42,400 Joten jos tulet ottaa lukea spec, se tulee 436 00:19:42,400 --> 00:19:45,510 olla paljon helpompaa ymmärtää mitä puhun, kun sanon, 437 00:19:45,510 --> 00:19:48,720 Ai hei, tämä saattaa olla todella hyvä paikka toteuttaa tämmöinen. 438 00:19:48,720 --> 00:19:52,870 Joten ne teistä, jotka ovat lukeneet spec tietävät, että osana PSET, 439 00:19:52,870 --> 00:19:54,900 olet menossa on kirjoittaa tyyppi lajitella. 440 00:19:54,900 --> 00:19:58,670 Joten tämä voi olla erittäin hyödyllistä varten monet teistä tänään. 441 00:19:58,670 --> 00:20:01,760 >> Niin me alkajaisiksi, olennaisesti, kaikkein yksinkertainen tyyppi 442 00:20:01,760 --> 00:20:04,580 lajitella, valinta lajitella. 443 00:20:04,580 --> 00:20:06,800 Tyypillinen algoritmi kuinka me halua mennä tästä 444 00:20:06,800 --> 00:20:10,460 is-- David meni läpi nämä kaikki luento, niin minä nopeasti liikkuvat 445 00:20:10,460 --> 00:20:13,900 here-- on pohjimmiltaan, te on joukko arvoja. 446 00:20:13,900 --> 00:20:17,170 Ja sitten löydät pienin lajittelemattomat arvo 447 00:20:17,170 --> 00:20:20,200 ja vaihdat että arvoa ensimmäinen lajittelemattomat arvo. 448 00:20:20,200 --> 00:20:22,700 Ja sitten vain pitää toistaa muun listasi. 449 00:20:22,700 --> 00:20:25,740 >> Ja tässä on visuaalinen selitys miten se toimisi. 450 00:20:25,740 --> 00:20:30,460 Niinpä esimerkiksi, jos alkaisi jossa joukko viisi elementtiä, indeksi 451 00:20:30,460 --> 00:20:35,910 0-4, 3, 5, 2, 6, ja 4 arvot sijoitetaan array-- niin juuri nyt, 452 00:20:35,910 --> 00:20:38,530 olemme juuri menossa olettaa että he kaikki lajittelemattoman 453 00:20:38,530 --> 00:20:41,130 koska emme ole testanneet toisin. 454 00:20:41,130 --> 00:20:44,130 >> Joten miten valinta semmoista työ on, että se olisi ensin 455 00:20:44,130 --> 00:20:46,800 kulkevat kokonaisuudessaan ja lajittelemattoman array. 456 00:20:46,800 --> 00:20:49,120 Se poimia pienimmän arvon. 457 00:20:49,120 --> 00:20:51,750 Tässä tapauksessa 3, oikea nyt, on pienin. 458 00:20:51,750 --> 00:20:52,680 Se saa 5. 459 00:20:52,680 --> 00:20:55,620 Ehei, 5 ei ole suurempi than-- tai pahoillani, ei ole pienempi than-- 3. 460 00:20:55,620 --> 00:20:57,779 Joten pienin arvo on edelleen 3. 461 00:20:57,779 --> 00:20:58,695 Ja sitten saat 2. 462 00:20:58,695 --> 00:21:00,990 Tietokone näkee, oh, 2 on alle 3. 463 00:21:00,990 --> 00:21:02,750 2 on nyt pienin arvo. 464 00:21:02,750 --> 00:21:06,630 Ja niin 2 tuotevaihdoista että ensimmäinen arvo. 465 00:21:06,630 --> 00:21:10,702 >> Niin sen jälkeen yksi syöttö, me todellakin nähdä että 2 ja 3 ovat vaihtuneet. 466 00:21:10,702 --> 00:21:13,910 Ja me vain menossa jatkossakin tehdä tämä taas muun jono. 467 00:21:13,910 --> 00:21:17,660 Joten aiomme vain ajaa läpi neljä viimeistä indeksien jono. 468 00:21:17,660 --> 00:21:20,670 Näemme, että 3 on seuraava minimiarvo. 469 00:21:20,670 --> 00:21:23,240 Joten aiomme vaihtaa että 4. 470 00:21:23,240 --> 00:21:26,900 Ja sitten me vain aio pitää kulkee läpi kunnes lopulta sinä 471 00:21:26,900 --> 00:21:33,730 saada lajiteltua array jossa 2, 3, 4, 5, ja 6 ovat kaikki järjestetty. 472 00:21:33,730 --> 00:21:37,530 Onko jokainen ymmärtää logiikkaa miten valinta lajitella toimii? 473 00:21:37,530 --> 00:21:39,669 >> Sinun on vain jonkinlainen vähintään arvon. 474 00:21:39,669 --> 00:21:41,210 Olet pitää seurata, mitä se on. 475 00:21:41,210 --> 00:21:45,170 Ja kun löydät sen, voit vaihtaa sen ensimmäisen arvon array-- 476 00:21:45,170 --> 00:21:48,740 tai, ei ole ensimmäinen value-- seuraavan arvon jono. 477 00:21:48,740 --> 00:21:50,150 Viileä. 478 00:21:50,150 --> 00:21:55,460 >> Niin te eräänlainen näki suppea vilkaisu, 479 00:21:55,460 --> 00:21:58,450 aiomme pseudokoodit tätä. 480 00:21:58,450 --> 00:22:02,510 Joten jos te takaisin haluavat muodostavat ryhmän, jokainen pöydässä 481 00:22:02,510 --> 00:22:06,170 voi muodostaa hieman kumppani, aion antaa te kuin kolme minuuttia 482 00:22:06,170 --> 00:22:08,190 vain puhua kautta logiikka, Englanti, 483 00:22:08,190 --> 00:22:14,161 miten voisimme toteuttaa pseudokoodi kirjoittaa valinta lajitella. 484 00:22:14,161 --> 00:22:14,910 Ja siellä on karkkia. 485 00:22:14,910 --> 00:22:16,118 Tule ylös ja saada karkkia. 486 00:22:16,118 --> 00:22:19,520 Jos olet takana ja haluat karkkia, voin heittää karkkia sinua. 487 00:22:19,520 --> 00:22:22,850 Oikeastaan ​​tehdä sinä-- viileä. 488 00:22:22,850 --> 00:22:23,552 Anteeksi. 489 00:22:23,552 --> 00:22:26,751 490 00:22:26,751 --> 00:22:27,250 OK. 491 00:22:27,250 --> 00:25:23,880 492 00:25:23,880 --> 00:25:27,140 >> Joten jos haluaisimme, niin luokka, Kirjoita pseudokoodi 493 00:25:27,140 --> 00:25:30,466 miten voisi lähestyä tämä ongelma, vain rohkeasti. 494 00:25:30,466 --> 00:25:32,340 Otan vain mennä ympäri ja, jotta, kysy ryhmät 495 00:25:32,340 --> 00:25:35,065 seuraavan rivin mitä meidän pitäisi tehdä. 496 00:25:35,065 --> 00:25:37,840 Joten jos kaverit haluavat aloittaa pois, mikä on ensimmäinen asia 497 00:25:37,840 --> 00:25:40,600 tehdä, kun yrität toteuttaa tapa ratkaista tämä ohjelman 498 00:25:40,600 --> 00:25:43,480 valikoivasti lajitella lista? 499 00:25:43,480 --> 00:25:46,349 Haluan vain olettaa meidän on jono, okei? 500 00:25:46,349 --> 00:25:49,088 >> Yleisö: Haluat luoda joitakin eräänlainen [äänetön], että olet 501 00:25:49,088 --> 00:25:50,420 kulkee koko joukko. 502 00:25:50,420 --> 00:25:51,128 >> ANDI Peng: Oikea. 503 00:25:51,128 --> 00:25:54,100 Joten olet menossa haluavat kerrata läpi jokaisen tilaa, eikö? 504 00:25:54,100 --> 00:26:05,490 Niin suuri. 505 00:26:05,490 --> 00:26:08,600 Jos kaverit haluavat antaa minulle seuraava line-- joo, takana. 506 00:26:08,600 --> 00:26:11,414 507 00:26:11,414 --> 00:26:13,290 >> Yleisö: Tarkista ne kaikki pienimmille. 508 00:26:13,290 --> 00:26:14,248 >> ANDI Peng: Ei mennään. 509 00:26:14,248 --> 00:26:17,438 Joten haluamme mennä läpi ja tarkistaa mitä minimiarvo on, eikö? 510 00:26:17,438 --> 00:26:22,110 511 00:26:22,110 --> 00:26:24,840 Aion lyhenteenä että "min." 512 00:26:24,840 --> 00:26:27,658 Mitä te haluat tehdä jälkeen olet löytänyt pienin arvo? 513 00:26:27,658 --> 00:26:28,533 >> Yleisö: [äänetön] 514 00:26:28,533 --> 00:26:29,942 515 00:26:29,942 --> 00:26:33,150 ANDI Peng: Niin olet menossa haluavat kytke se ensimmäisen kyseisen array, 516 00:26:33,150 --> 00:26:33,650 oikea? 517 00:26:33,650 --> 00:26:45,120 518 00:26:45,120 --> 00:26:46,850 Se on alku, aion sanoa. 519 00:26:46,850 --> 00:26:47,220 Selvä. 520 00:26:47,220 --> 00:26:50,386 Joten nyt olet vaihtanut ensimmäinen yksi, mitä haluat tehdä sen jälkeen? 521 00:26:50,386 --> 00:26:54,840 Joten nyt me tiedämme, että tämä yksi täällä on pienin arvo, eikö? 522 00:26:54,840 --> 00:26:58,310 Sitten on vielä levätä array, joka on lajittelematon. 523 00:26:58,310 --> 00:27:01,569 Joten mitä haluat tehdä täällä, jos kaverit haluavat antaa minulle seuraavalle riville? 524 00:27:01,569 --> 00:27:04,610 Yleisö: Niin haluat kerrata loppuosan läpi matriisin. 525 00:27:04,610 --> 00:27:05,276 ANDI Peng: Joo. 526 00:27:05,276 --> 00:27:09,857 Ja niin mitä iteroimalla läpi Tällainen tarkoita meidän täytyy luultavasti? 527 00:27:09,857 --> 00:27:10,440 Millaisia ​​of-- 528 00:27:10,440 --> 00:27:12,057 >> Yleisö: Voi, lisämuuttuja? 529 00:27:12,057 --> 00:27:13,890 ANDI Peng: Luultavasti toinen silmukka, oikea? 530 00:27:13,890 --> 00:27:28,914 Joten me luultavasti menossa haluavat iteroida through-- suuri. 531 00:27:28,914 --> 00:27:31,830 Ja sitten aiot mennä takaisin ja luultavasti tarkistaa vähintään kerran, 532 00:27:31,830 --> 00:27:32,100 oikea? 533 00:27:32,100 --> 00:27:34,975 Ja aiot pitää toistaa tämä, koska silmukat juuri menossa 534 00:27:34,975 --> 00:27:36,010 pitää käynnissä, eikö? 535 00:27:36,010 --> 00:27:39,190 >> Niin te voi nähdä, me vain yleinen pseudokoodina 536 00:27:39,190 --> 00:27:41,480 miten haluamme tämän ohjelman näyttää. 537 00:27:41,480 --> 00:27:46,646 Tämä toistaa täällä, mitä me tyypillisesti täytyy kirjoittaa meidän koodi 538 00:27:46,646 --> 00:27:49,270 jos haluamme kerrata kautta array, minkälainen rakenne? 539 00:27:49,270 --> 00:27:51,030 Mielestäni Christabel jo sanoneet tämän aiemminkin. 540 00:27:51,030 --> 00:27:51,500 >> Yleisö: silmukka. 541 00:27:51,500 --> 00:27:52,160 >> ANDI Peng: silmukka? 542 00:27:52,160 --> 00:27:52,770 Aivan. 543 00:27:52,770 --> 00:27:56,060 Joten tämä on luultavasti olemaan silmukka. 544 00:27:56,060 --> 00:27:59,240 Mikä on tarkistaa täällä menossa tarkoita? 545 00:27:59,240 --> 00:28:02,536 Yleensä, jos haluat tarkistaa jos jotain on jotain else-- 546 00:28:02,536 --> 00:28:03,270 >> Yleisö: Jos. 547 00:28:03,270 --> 00:28:06,790 >> ANDI Peng: jos, eikö? 548 00:28:06,790 --> 00:28:10,790 Ja sitten swap täällä käymme mennä yli myöhemmin, koska David 549 00:28:10,790 --> 00:28:12,770 meni läpi että luento samoin. 550 00:28:12,770 --> 00:28:14,580 Ja sitten toinen toistaa implies-- 551 00:28:14,580 --> 00:28:15,120 >> Yleisö: toinen silmukka. 552 00:28:15,120 --> 00:28:16,745 >> ANDI Peng: --another silmukka, tarkalleen. 553 00:28:16,745 --> 00:28:19,870 554 00:28:19,870 --> 00:28:22,000 Joten jos me etsimme tässä oikein, me 555 00:28:22,000 --> 00:28:24,680 voi nähdä, että olemme luultavasti menossa on sisäkkäistä silmukkaa 556 00:28:24,680 --> 00:28:28,330 jossa ehdon siellä ja sitten todellinen koodinpätkä, joka on 557 00:28:28,330 --> 00:28:31,360 menossa vaihtaa arvoja. 558 00:28:31,360 --> 00:28:35,980 Joten olen juuri yleensä kirjallinen pseudokoodilla koodi tähän. 559 00:28:35,980 --> 00:28:38,910 Ja sitten me todella menossa fyysisesti, luokkana, 560 00:28:38,910 --> 00:28:40,700 yrittää toteuttaa tätä tänään. 561 00:28:40,700 --> 00:28:42,486 Mennään takaisin tähän IDE. 562 00:28:42,486 --> 00:28:49,243 563 00:28:49,243 --> 00:28:50,230 >> O-ou. 564 00:28:50,230 --> 00:28:51,754 Miksi että not-- siellä se on. 565 00:28:51,754 --> 00:28:52,253 OK. 566 00:28:52,253 --> 00:28:55,834 567 00:28:55,834 --> 00:28:57,500 Anteeksi, haluaisin yrittää lähentää hieman enemmän. 568 00:28:57,500 --> 00:28:59,310 Siellä mennään. 569 00:28:59,310 --> 00:29:05,060 Kaikki Teen täällä on Luomani ohjelma nimeltä "valinta / sort.c." 570 00:29:05,060 --> 00:29:10,860 Olen luonut joukko yhdeksän arvot, 4, 8, 2, 1, 6, 9, 7, 5, 3. 571 00:29:10,860 --> 00:29:14,370 Tällä hetkellä kuin voit katso, ne ovat järjestämättömiä. 572 00:29:14,370 --> 00:29:17,880 n tulee olemaan numero, joka kertoo määrä arvojen 573 00:29:17,880 --> 00:29:18,920 sinulla on joukko. 574 00:29:18,920 --> 00:29:20,670 Tässä tapauksessa meillä on yhdeksän arvot. 575 00:29:20,670 --> 00:29:23,760 Ja olen juuri saanut varten silmukka täällä että tulostaa lajittelemattoman array. 576 00:29:23,760 --> 00:29:28,370 >> Ja lopussa, olen myös saanut varten silmukka, joka vain tulostaa sen uudelleen. 577 00:29:28,370 --> 00:29:32,070 Joten teoriassa, jos tämä ohjelma toimii oikein, lopussa, 578 00:29:32,070 --> 00:29:35,670 sinun pitäisi nähdä painettu silmukka jossa 1, 2, 3, 4, 5, 6, 7, 8, 579 00:29:35,670 --> 00:29:39,310 9 ovat kaikki oikein, jotta. 580 00:29:39,310 --> 00:29:43,410 >> Joten meillä meidän pseudokoodilla täällä. 581 00:29:43,410 --> 00:29:46,090 Haluaako joku to-- Olen vain menossa pyytämään Vapaaehtoisten 582 00:29:46,090 --> 00:29:49,540 kerro mitä kirjoittaa, jos haluamme, ensimmäinen, vain kerrata 583 00:29:49,540 --> 00:29:52,840 kautta alussa array? 584 00:29:52,840 --> 00:29:55,204 Mikä koodiriviä olen luultavasti menossa on täällä? 585 00:29:55,204 --> 00:29:56,990 >> Yleisö: [äänetön] 586 00:29:56,990 --> 00:29:59,010 >> ANDI Peng: Joo, tuntuu vapaa to-- pahoillani, sinä 587 00:29:59,010 --> 00:30:02,318 ei tarvitse seistä up-- tuntea vapaasti korota ääntäsi hiukan. 588 00:30:02,318 --> 00:30:08,190 >> Yleisö: INT i vastaa 0-- 589 00:30:08,190 --> 00:30:10,690 >> ANDI Peng: Joo, hyvä. 590 00:30:10,690 --> 00:30:15,220 >> Yleisö: i on pienempi kuin array pituus. 591 00:30:15,220 --> 00:30:19,630 >> ANDI Peng: Niin pitää mielessä täällä, koska me 592 00:30:19,630 --> 00:30:23,060 ei ole toimintoa, joka kertoo pituus array, 593 00:30:23,060 --> 00:30:25,790 meillä on jo arvoa, joka tallentaa sen. 594 00:30:25,790 --> 00:30:27,920 Oikea? 595 00:30:27,920 --> 00:30:31,010 Toinen asia pitää vuonna mind-- array 596 00:30:31,010 --> 00:30:33,940 yhdeksän arvot, mitkä ovat indeksejä? 597 00:30:33,940 --> 00:30:38,720 Haluan vain sanoa tämän array on 0-3. 598 00:30:38,720 --> 00:30:41,500 Voit nähdä, että viime indeksi on todella 3. 599 00:30:41,500 --> 00:30:45,530 Se ei ole 4, vaikka siellä neljä arvot array. 600 00:30:45,530 --> 00:30:49,866 >> Joten täällä, meidän on oltava hyvin varovaisia mitä meidän edellytys pituus 601 00:30:49,866 --> 00:30:50,490 tulee olemaan. 602 00:30:50,490 --> 00:30:51,948 >> Yleisö: Eikö olisi n miinus 1? 603 00:30:51,948 --> 00:30:54,440 ANDI Peng: Se tulee n miinus 1, tarkalleen. 604 00:30:54,440 --> 00:30:57,379 Onko järkeä, miksi se on n miinus 1, kaikille? 605 00:30:57,379 --> 00:30:58,920 Se johtuu siitä, taulukot ovat nolla-indeksoitu. 606 00:30:58,920 --> 00:31:02,010 He alkavat 0 ja ajaa jopa n miinus 1. 607 00:31:02,010 --> 00:31:03,210 Joo, se on vähän hankala. 608 00:31:03,210 --> 00:31:03,730 OK. 609 00:31:03,730 --> 00:31:05,929 Ja sitten-- 610 00:31:05,929 --> 00:31:08,054 Yleisö: Isnt'1 että jo hoidettu kuitenkin, 611 00:31:08,054 --> 00:31:11,400 mukaan vain sano "pienempi tai vastaa "ja vain sanomalla" alle? " 612 00:31:11,400 --> 00:31:13,108 >> ANDI Peng: Se todella hyvä kysymys. 613 00:31:13,108 --> 00:31:13,630 Niin, kyllä. 614 00:31:13,630 --> 00:31:17,410 Mutta myös, että olemme täytäntöönpanon tarkkailun oikea, 615 00:31:17,410 --> 00:31:19,120 sinun täytyy verrata kahta arvoa. 616 00:31:19,120 --> 00:31:21,009 Joten te todella haluavat jätä "ja" tyhjä. 617 00:31:21,009 --> 00:31:23,050 Koska jos vertaa tämä, et tule 618 00:31:23,050 --> 00:31:25,530 mitään sen jälkeen verrata, eikö? 619 00:31:25,530 --> 00:31:27,460 Joo. 620 00:31:27,460 --> 00:31:29,297 Joten i ++. 621 00:31:29,297 --> 00:31:30,380 Katsotaanpa lisätä meidän suluissa. 622 00:31:30,380 --> 00:31:30,880 Oho. 623 00:31:30,880 --> 00:31:33,950 624 00:31:33,950 --> 00:31:34,710 Suuri. 625 00:31:34,710 --> 00:31:39,117 Joten meillä on alusta meidän ulomman silmukan. 626 00:31:39,117 --> 00:31:41,450 Joten nyt luultavasti halua luoda muuttujan pitää 627 00:31:41,450 --> 00:31:43,085 kirjaa pienimmän arvon, eikö? 628 00:31:43,085 --> 00:31:45,751 Haluaako joku antaa minulle koodiriviä että tekisi sellaista? 629 00:31:45,751 --> 00:31:48,700 630 00:31:48,700 --> 00:31:53,570 Mitä me tarvitsemme, jos aiomme haluta tallentaa jotain? 631 00:31:53,570 --> 00:31:55,047 >> Oikea. 632 00:31:55,047 --> 00:31:57,630 Ehkä parempi nimi, että olisi be-- "temp" täysin works-- 633 00:31:57,630 --> 00:32:00,655 ehkä enemmän osuvasti nimetty olisi, jos haluamme pienin value-- 634 00:32:00,655 --> 00:32:01,624 >> Yleisö: Min. 635 00:32:01,624 --> 00:32:02,790 ANDI Peng: min, siellä mennään. 636 00:32:02,790 --> 00:32:05,230 min olisi hyvä. 637 00:32:05,230 --> 00:32:08,340 Ja niin täällä, mitä me halua alustaa sen? 638 00:32:08,340 --> 00:32:09,620 Tämä on vähän hankala. 639 00:32:09,620 --> 00:32:13,580 Koska juuri nyt alussa array, 640 00:32:13,580 --> 00:32:15,730 et ole tutustunut mitään, eikö? 641 00:32:15,730 --> 00:32:19,200 Niin mitä, automaattisesti, jos olemme pelkästään i on 0, 642 00:32:19,200 --> 00:32:22,302 mitä haluamme alustaa ensimmäinen pienin arvo? 643 00:32:22,302 --> 00:32:22,802 Yleisö: i. 644 00:32:22,802 --> 00:32:24,790 ANDI Peng: i, tarkalleen. 645 00:32:24,790 --> 00:32:27,040 Christabel, miksi haluamme alustaa se i? 646 00:32:27,040 --> 00:32:28,510 >> Yleisö: koska hyvin, olemme alkaen 0. 647 00:32:28,510 --> 00:32:31,660 Joten koska meillä ei ole mitään verrata se, vähintään päätyvät juuri 0. 648 00:32:31,660 --> 00:32:32,451 >> ANDI Peng: Aivan. 649 00:32:32,451 --> 00:32:34,400 Joten hän on juuri oikea. 650 00:32:34,400 --> 00:32:36,780 Koska meillä ei oikeastaan Katsoin vielä mitään, 651 00:32:36,780 --> 00:32:38,680 emme tiedä, mitä meidän pienin arvo on. 652 00:32:38,680 --> 00:32:41,960 Haluamme vain alustaa se i, joka nykyään on täällä. 653 00:32:41,960 --> 00:32:44,750 Ja kun jatkamme siirrä alas tämän taulukon, 654 00:32:44,750 --> 00:32:48,122 näemme, että jokaisen lisäkulkulupa, i kasvattaa. 655 00:32:48,122 --> 00:32:49,830 Ja niin siinä vaiheessa, i on todennäköisesti aio 656 00:32:49,830 --> 00:32:52,329 halua olla vähintään, koska se tulee olemaan mitä tahansa 657 00:32:52,329 --> 00:32:54,520 on alku lajittelemattoman array. 658 00:32:54,520 --> 00:32:55,270 Viileä. 659 00:32:55,270 --> 00:32:58,720 >> Joten nyt haluamme lisätä silmukan tässä, että on 660 00:32:58,720 --> 00:33:03,225 menossa kerrata läpi lajittelemattomien, tai muusta tämän array. 661 00:33:03,225 --> 00:33:05,808 Haluaako joku antaa minulle koodiriviä että tekisi sellaista? 662 00:33:05,808 --> 00:33:08,870 663 00:33:08,870 --> 00:33:11,330 Hint-- mitä tarvitsemme täällä? 664 00:33:11,330 --> 00:33:17,320 665 00:33:17,320 --> 00:33:18,820 Mitä tulee mennä tähän silmukka? 666 00:33:18,820 --> 00:33:19,465 Joo. 667 00:33:19,465 --> 00:33:21,590 Yleisö: Joten me haluaisi on erilainen kokonaisluku, 668 00:33:21,590 --> 00:33:25,080 koska olemme kulkee loput array sijaan i, niin ehkä 669 00:33:25,080 --> 00:33:25,760 j. 670 00:33:25,760 --> 00:33:27,301 >> ANDI Peng: Joo, j kuulostaa hyvältä. 671 00:33:27,301 --> 00:33:27,850 Yhtä? 672 00:33:27,850 --> 00:33:33,930 >> Yleisö: Niin olisi i + 1, koska olet alkaen seuraavan arvon. 673 00:33:33,930 --> 00:33:40,395 Ja sitten end-- niin taas, j on vähemmän kuin n miinus 1, ja sitten j ++. 674 00:33:40,395 --> 00:33:41,103 ANDI Peng: Suuri. 675 00:33:41,103 --> 00:33:48,510 676 00:33:48,510 --> 00:33:52,750 >> Ja sitten täällä, aiomme haluavat tarkistaa, jos meidän ehto täyttyy, 677 00:33:52,750 --> 00:33:53,250 oikea? 678 00:33:53,250 --> 00:33:55,740 Koska haluat muuttaa minimiarvo 679 00:33:55,740 --> 00:33:58,700 jos se on itse asiassa pienempi kuin mitä olet vertaamalla sitä, eikö? 680 00:33:58,700 --> 00:34:01,146 Joten mitä me menossa haluavat täällä? 681 00:34:01,146 --> 00:34:04,160 682 00:34:04,160 --> 00:34:04,897 Tarkista. 683 00:34:04,897 --> 00:34:06,730 Millaisia ​​lausuman me luultavasti 684 00:34:06,730 --> 00:34:08,389 ti haluavat käyttää, jos haluat tarkistaa jotain? 685 00:34:08,389 --> 00:34:09,360 >> Yleisö: jos ilmoitus. 686 00:34:09,360 --> 00:34:10,485 >> ANDI Peng: jos ilmoitus. 687 00:34:10,485 --> 00:34:13,155 Joten if-- ja mitä tulee olemaan edellytyksellä, että haluamme sisällä 688 00:34:13,155 --> 00:34:13,988 meidän jos ilmoitus? 689 00:34:13,988 --> 00:34:18,255 690 00:34:18,255 --> 00:34:22,960 >> Yleisö: Jos arvo j on pienempi kuin arvo i-- 691 00:34:22,960 --> 00:34:24,600 >> ANDI Peng: Aivan. 692 00:34:24,600 --> 00:34:27,480 Joten if-- joten tämä array on nimeltään "array." 693 00:34:27,480 --> 00:34:27,980 Suuri. 694 00:34:27,980 --> 00:34:30,465 Joten jos array-- mikä se oli? 695 00:34:30,465 --> 00:34:31,090 Sanopa uudestaan. 696 00:34:31,090 --> 00:34:39,590 >> Yleisö: Jos array-j on pienempi kuin array-i, niin me muuttaisi min. 697 00:34:39,590 --> 00:34:41,590 Joten min olisi j. 698 00:34:41,590 --> 00:34:44,590 699 00:34:44,590 --> 00:34:47,249 >> ANDI Peng: Onko järkeä? 700 00:34:47,249 --> 00:34:48,670 OK. 701 00:34:48,670 --> 00:34:52,929 Ja nyt täällä, me oikeastaan haluavat toteuttaa swap, eikö? 702 00:34:52,929 --> 00:34:58,285 Joten muistaa, luento, että David, kun hän yritti vaihtaa the-- mikä oli 703 00:34:58,285 --> 00:34:59,996 it-- appelsiinimehua ja milk-- 704 00:34:59,996 --> 00:35:01,150 >> Yleisö: Se oli brutto. 705 00:35:01,150 --> 00:35:02,816 >> ANDI Peng: Joo, se oli sellainen brutto. 706 00:35:02,816 --> 00:35:05,310 Mutta se oli aika hyvä käsite osoittaa aikaa. 707 00:35:05,310 --> 00:35:08,430 Niin ajattele arvosi täällä. 708 00:35:08,430 --> 00:35:10,794 Sinulla array min, joukko i, 709 00:35:10,794 --> 00:35:12,460 tai mitä yritimme vaihtaa täällä. 710 00:35:12,460 --> 00:35:15,310 Ja luultavasti ei kaada ne toisiaan samalla, eikö? 711 00:35:15,310 --> 00:35:17,180 Mitä siis menossa tarvitse luoda täällä 712 00:35:17,180 --> 00:35:19,126 jotta vaihtaa arvot oikein? 713 00:35:19,126 --> 00:35:19,820 >> Yleisö: väliaikainen muuttuja. 714 00:35:19,820 --> 00:35:21,370 >> ANDI Peng: väliaikainen muuttuja. 715 00:35:21,370 --> 00:35:22,570 Tehdäänpä int temp. 716 00:35:22,570 --> 00:35:25,681 Katso, tämä olisi parempi aika to-- huh, mitä se oli? 717 00:35:25,681 --> 00:35:26,180 OK. 718 00:35:26,180 --> 00:35:29,800 Joten tämä olisi ollut parempi aika nimetä muuttuja "temp." 719 00:35:29,800 --> 00:35:30,730 Tehdäänpä int temp. 720 00:35:30,730 --> 00:35:32,563 Mitä aiomme Set Temp yhtä täällä? 721 00:35:32,563 --> 00:35:34,752 722 00:35:34,752 --> 00:35:35,335 Yleisö: Min? 723 00:35:35,335 --> 00:35:38,508 724 00:35:38,508 --> 00:35:39,716 ANDI Peng: Se on vähän hankala. 725 00:35:39,716 --> 00:35:43,110 726 00:35:43,110 --> 00:35:44,880 Se oikeastaan ​​ei ole väliä lopulta. 727 00:35:44,880 --> 00:35:47,690 Sillä ei ole väliä mitä jotta päätät vaihtua 728 00:35:47,690 --> 00:35:50,862 kunhan teet että olet pitää kirjaa mitä olet vaihtamalla. 729 00:35:50,862 --> 00:35:52,250 >> Yleisö: Se voisi olla joukko-i. 730 00:35:52,250 --> 00:35:53,666 >> ANDI Peng: Joo, tehdään array-i. 731 00:35:53,666 --> 00:35:55,950 732 00:35:55,950 --> 00:35:59,305 Ja sitten mitä seuraavalle riville koodia haluamme täällä? 733 00:35:59,305 --> 00:36:00,680 Yleisö: array-i vastaa array-j. 734 00:36:00,680 --> 00:36:07,154 735 00:36:07,154 --> 00:36:08,070 ANDI Peng: Ja lopuksi? 736 00:36:08,070 --> 00:36:12,070 Yleisö: array-j vastaa array-i. 737 00:36:12,070 --> 00:36:14,525 Yleisö: Tai array-j tasavertaisten array-temp-- tai lämpötila. 738 00:36:14,525 --> 00:36:17,135 739 00:36:17,135 --> 00:36:19,430 >> ANDI Peng: OK. 740 00:36:19,430 --> 00:36:21,510 Joten suorittaa tämän ja nähdä jos se on menossa töihin. 741 00:36:21,510 --> 00:36:37,520 742 00:36:37,520 --> 00:36:39,335 Missä se tapahtuu? 743 00:36:39,335 --> 00:36:40,210 Voi, se on ongelma. 744 00:36:40,210 --> 00:36:44,320 Katso, linjalla 40, olemme yrittää käyttää array-j? 745 00:36:44,320 --> 00:36:47,022 Mutta mistä j olemassa vain? 746 00:36:47,022 --> 00:36:48,402 >> Yleisö: Vuonna silmukka. 747 00:36:48,402 --> 00:36:49,110 ANDI Peng: Oikea. 748 00:36:49,110 --> 00:36:51,730 Mitä aiomme täytyy tehdä? 749 00:36:51,730 --> 00:36:53,170 >> Yleisö: Määrittele se ulkopuolella the-- 750 00:36:53,170 --> 00:36:57,777 751 00:36:57,777 --> 00:37:00,610 Yleisö: Joo, kai sinulla on käyttää toista jos ilmoitus, eikö? 752 00:37:00,610 --> 00:37:05,230 Joten kuten, jos minimum-- okei, haluan ajatella. 753 00:37:05,230 --> 00:37:08,170 754 00:37:08,170 --> 00:37:09,990 >> ANDI Peng: Guys, kokeile katsomaan Katsotaanpa 755 00:37:09,990 --> 00:37:11,270 katso, mitä emme voi tehdä täällä? 756 00:37:11,270 --> 00:37:11,811 >> Yleisö: OK. 757 00:37:11,811 --> 00:37:15,900 Joten jos vähintään ei vastaa j-- joten jos minimi on vielä i-- 758 00:37:15,900 --> 00:37:17,570 meidän ei tarvitsisi vaihtaa. 759 00:37:17,570 --> 00:37:22,450 760 00:37:22,450 --> 00:37:24,712 >> ANDI Peng: Onko että yhtäläiset i? 761 00:37:24,712 --> 00:37:25,920 Mitä haluat sanoa täällä? 762 00:37:25,920 --> 00:37:30,494 >> Yleisö: Tai joo, jos vähimmäismäärä ei vastaa i, joo. 763 00:37:30,494 --> 00:37:39,627 764 00:37:39,627 --> 00:37:40,210 ANDI Peng: OK. 765 00:37:40,210 --> 00:37:42,040 No, joka ratkaisee, sellainen, ongelmamme. 766 00:37:42,040 --> 00:37:47,265 Mutta se ei edelleenkään ratkaise ongelma, mitä tapahtuu, jos j-- alkaen j 767 00:37:47,265 --> 00:37:49,890 ei ole sen ulkopuolella, mitä sinä haluamme tehdä sen kanssa? 768 00:37:49,890 --> 00:37:50,698 Julistaa sen ulkopuolella? 769 00:37:50,698 --> 00:37:59,410 770 00:37:59,410 --> 00:38:02,730 Kokeillaan käynnissä tätä. 771 00:38:02,730 --> 00:38:04,435 O-ou. 772 00:38:04,435 --> 00:38:06,200 Meidän sort ei toimi. 773 00:38:06,200 --> 00:38:10,060 >> Kuten näette, alkuperäistä array oli näitä arvoja. 774 00:38:10,060 --> 00:38:14,800 Ja myöhemmin se olisi ollut 1, 2, 3, 4, 5, 6, 7, 8, 9. 775 00:38:14,800 --> 00:38:15,530 Se ei toimi. 776 00:38:15,530 --> 00:38:16,030 Ahh. 777 00:38:16,030 --> 00:38:17,184 Mitä me teemme? 778 00:38:17,184 --> 00:38:17,850 Yleisö: Debug. 779 00:38:17,850 --> 00:38:21,787 780 00:38:21,787 --> 00:38:23,370 ANDI Peng: Hyvä on, voimme yrittää että. 781 00:38:23,370 --> 00:38:25,030 Voimme debug. 782 00:38:25,030 --> 00:38:26,042 Pienennä hieman. 783 00:38:26,042 --> 00:38:31,177 784 00:38:31,177 --> 00:38:33,656 Katsotaanpa asettaneet murtuessa. 785 00:38:33,656 --> 00:38:37,280 Mennään like-- OK. 786 00:38:37,280 --> 00:38:40,444 >> Joten koska tiedämme jo, että Näillä radoilla 15 kautta 22, 787 00:38:40,444 --> 00:38:43,610 ovat working-- koska kaikki mulla on vain iteroimalla läpi ja printing-- 788 00:38:43,610 --> 00:38:45,406 Voin mennä eteenpäin ja ohittaa tämän. 789 00:38:45,406 --> 00:38:47,280 Aloitetaan rivillä 25. 790 00:38:47,280 --> 00:38:48,712 OOP, haluaisin päästä eroon siitä. 791 00:38:48,712 --> 00:38:51,598 792 00:38:51,598 --> 00:38:54,057 >> Yleisö: Niin keskeytyskohta n jossa virheenkorjaus alkaa? 793 00:38:54,057 --> 00:38:54,890 ANDI Peng: Or pysähtyy. 794 00:38:54,890 --> 00:38:55,670 Yleisö: Or pysähtyy. 795 00:38:55,670 --> 00:38:55,930 ANDI Peng: Joo. 796 00:38:55,930 --> 00:38:58,640 Voit asettaa useita raja-arvot ja se voi vain hypätä yhdestä muille. 797 00:38:58,640 --> 00:39:01,590 Mutta tässä tapauksessa emme tiedä missä virhe tapahtuu. 798 00:39:01,590 --> 00:39:03,780 Joten me vain haluamme Aloita ylhäältä alas. 799 00:39:03,780 --> 00:39:05,020 Jep. 800 00:39:05,020 --> 00:39:05,550 OK. 801 00:39:05,550 --> 00:39:08,460 >> Joten tämä linja täällä, voimme askel. 802 00:39:08,460 --> 00:39:11,499 Näet täällä, meillä array. 803 00:39:11,499 --> 00:39:13,290 Ne ovat arvoja jotka ovat jono. 804 00:39:13,290 --> 00:39:16,360 Näetkö, että miten indeksi 0, se vastaa value-- OH, 805 00:39:16,360 --> 00:39:17,526 Aion yrittää suurentaa. 806 00:39:17,526 --> 00:39:20,650 Anteeksi, se on todella vaikea on see-- klo taulukkoindeksin 0, 807 00:39:20,650 --> 00:39:24,090 meillä on arvo 4 ja sitten niin edelleen ja niin edelleen. 808 00:39:24,090 --> 00:39:25,670 Meillä on paikallisia muuttujia. 809 00:39:25,670 --> 00:39:28,570 Juuri nyt on yhtä suuri kuin 0, jonka haluamme sen olevan. 810 00:39:28,570 --> 00:39:31,540 811 00:39:31,540 --> 00:39:33,690 >> Ja niin katsotaanpa pitää tehostamalla kautta. 812 00:39:33,690 --> 00:39:36,850 Meidän vähintään on yhtä suuri kuin 0, jota me myös haluamme sen olevan. 813 00:39:36,850 --> 00:39:39,470 814 00:39:39,470 --> 00:39:45,560 Ja sitten astumme meidän toinen varten silmukka, jos array-j on pienempi kuin joukko-i, 815 00:39:45,560 --> 00:39:46,380 mikä se ei ollut. 816 00:39:46,380 --> 00:39:48,130 Joten Näitkö kuinka että ohitetaan että? 817 00:39:48,130 --> 00:39:52,430 >> Yleisö: Niin pitäisi, jos vähintään kaikki that-- ei pitäisi että 818 00:39:52,430 --> 00:39:55,424 olla sisällä ensimmäinen silmukka? 819 00:39:55,424 --> 00:39:57,340 ANDI Peng: Ei, koska Haluatko edelleen testata. 820 00:39:57,340 --> 00:40:00,329 Haluatko tehdä vertailu joka aika, vaikka olet ajaa sen läpi. 821 00:40:00,329 --> 00:40:02,620 Et vain halua tehdä sitä ensimmäisen läpiviennin. 822 00:40:02,620 --> 00:40:05,240 Haluatko tehdä sen jokaista pass uudelleen. 823 00:40:05,240 --> 00:40:07,198 Joten haluat tarkistaa vointisi sisällä. 824 00:40:07,198 --> 00:40:11,610 825 00:40:11,610 --> 00:40:13,746 Joten me vain menossa pitää käynnissä läpi täällä. 826 00:40:13,746 --> 00:40:17,337 827 00:40:17,337 --> 00:40:18,420 Minä annan teille kaverit vihje. 828 00:40:18,420 --> 00:40:23,910 Se on tekemistä sen kanssa, että kun olet tarkkailun ehdollinen, 829 00:40:23,910 --> 00:40:26,600 et ole tarkkailun oikea indeksi. 830 00:40:26,600 --> 00:40:32,510 Joten nyt olet tarkistanut joukko indeksi j on pienempi kuin array 831 00:40:32,510 --> 00:40:33,970 indeksi i. 832 00:40:33,970 --> 00:40:36,580 Mutta mitä teet ylös alussa silmukka? 833 00:40:36,580 --> 00:40:38,260 Etkö asetus j yhtä i? 834 00:40:38,260 --> 00:40:41,260 835 00:40:41,260 --> 00:40:45,415 >> Joo, joten voimme todella Poistu debuggeri täällä. 836 00:40:45,415 --> 00:40:47,040 Joten katsomaan meidän pseudokoodilla. 837 00:40:47,040 --> 00:40:50,070 838 00:40:50,070 --> 00:40:52,580 For-- aiomme alkavat i on yhtä kuin 0. 839 00:40:52,580 --> 00:40:54,760 Aiomme mennä jopa n miinus 1. 840 00:40:54,760 --> 00:40:58,040 Katsotaan tarkistaa, meillä oli tämä oikeus? 841 00:40:58,040 --> 00:40:59,580 Jep, se oli oikeassa. 842 00:40:59,580 --> 00:41:02,080 >> Joten sitten sisällä tässä, olemme luomme minimiarvoon 843 00:41:02,080 --> 00:41:03,630 ja asettaa että yhtä i. 844 00:41:03,630 --> 00:41:04,950 Teimme sen? 845 00:41:04,950 --> 00:41:06,270 Jep, teki sen. 846 00:41:06,270 --> 00:41:10,430 Nyt meidän sisempi silmukka, olemme aikoo tehdä j vastaa i n miinus 1. 847 00:41:10,430 --> 00:41:11,950 Teimme sen? 848 00:41:11,950 --> 00:41:15,540 Todellakin, teimme sen. 849 00:41:15,540 --> 00:41:19,922 >> Joten kuitenkin, mitä me vertaamalla täällä? 850 00:41:19,922 --> 00:41:20,925 >> Yleisö: j + 1. 851 00:41:20,925 --> 00:41:21,716 ANDI Peng: Aivan. 852 00:41:21,716 --> 00:41:24,184 853 00:41:24,184 --> 00:41:27,350 Ja sitten olet menossa halua asettaa sinun vähintään yhtä suuri kuin j + 1 samoin. 854 00:41:27,350 --> 00:41:31,057 855 00:41:31,057 --> 00:41:32,640 Menin läpi todella nopeasti. 856 00:41:32,640 --> 00:41:36,190 Onko teillä ymmärtää miksi se on j plus 1? 857 00:41:36,190 --> 00:41:36,890 OK. 858 00:41:36,890 --> 00:41:40,700 >> Joten teidän mä, ensimmäinen läpi, 859 00:41:40,700 --> 00:41:44,850 teidän silmukka, INT i on 0, haluan vain 860 00:41:44,850 --> 00:41:46,740 olettaa tämä ei ole muutettu vielä. 861 00:41:46,740 --> 00:41:53,180 862 00:41:53,180 --> 00:41:56,760 Meillä on joukko, täysin, vain neljä lajittelematonta elementtejä, eikö? 863 00:41:56,760 --> 00:42:00,760 Joten haluamme alustaa i 0. 864 00:42:00,760 --> 00:42:03,650 Ja i on menossa vain läpi tämän silmukan. 865 00:42:03,650 --> 00:42:08,560 Ja niin ensikierron aiomme alustaa muuttuja nimeltä "min" 866 00:42:08,560 --> 00:42:11,245 että myös vastaa i, koska meillä ei ole minimiarvo. 867 00:42:11,245 --> 00:42:12,870 Niin, että tällä hetkellä yhtä 0 hyvin. 868 00:42:12,870 --> 00:42:16,182 869 00:42:16,182 --> 00:42:17,640 Ja sitten me aiomme käydä läpi. 870 00:42:17,640 --> 00:42:19,270 Ja haluamme kerrata uudelleen. 871 00:42:19,270 --> 00:42:22,900 Nyt olemme löytäneet mitä meidän minimi on, haluamme kerrata kautta 872 00:42:22,900 --> 00:42:25,190 uudelleen nähdä, jos se on vertaamalla, eikö? 873 00:42:25,190 --> 00:42:40,440 Joten j, täällä, on menossa yhdenvertaiseen I, joka on 0. 874 00:42:40,440 --> 00:42:46,320 Ja sitten jos joukko J plus i, joka on yksi, joka on seuraava yli, vähemmän 875 00:42:46,320 --> 00:42:49,270 kuin mitä nykyinen vähimmäismäärä arvo on, haluat vaihtaa. 876 00:42:49,270 --> 00:42:56,850 >> Joten vain sanoa olemme sai, kuten, 2, 5, 1, 8. 877 00:42:56,850 --> 00:43:01,610 Juuri nyt, i on yhtä suuri kuin 0 ja j on yhtä suuri kuin 0. 878 00:43:01,610 --> 00:43:05,210 Ja se on meidän pienin arvo. 879 00:43:05,210 --> 00:43:09,950 Jos array-j plus i-- joten jos yksi se kun yksi me tarkastelemme 880 00:43:09,950 --> 00:43:13,450 on suurempi kuin ennen sitä, se tulee tulla minimiin. 881 00:43:13,450 --> 00:43:18,120 >> Joten tässä me näemme, että 5 ei ole pienempi. 882 00:43:18,120 --> 00:43:19,730 Niin se tulee olla 5. 883 00:43:19,730 --> 00:43:23,580 Näemme, että 1 on pienempi kuin 2, eikö? 884 00:43:23,580 --> 00:43:32,970 Joten nyt me tiedämme, että meidän vähimmäismäärä on olemaan indeksin arvo 0, 1, 2. 885 00:43:32,970 --> 00:43:34,030 Joo? 886 00:43:34,030 --> 00:43:39,170 Ja sitten kun saat tänne, voit vaihtaa oikeat arvot. 887 00:43:39,170 --> 00:43:42,610 >> Joten kun kaverit olivat vain ottaa j ennen, et ollut katsot yksi 888 00:43:42,610 --> 00:43:43,260 sen jälkeen. 889 00:43:43,260 --> 00:43:44,520 Katseltaessa sama arvo, joka 890 00:43:44,520 --> 00:43:46,290 Siksi se vain ei tee mitään. 891 00:43:46,290 --> 00:43:49,721 Tarkoittaako tämä järkevää kaikille, miksi me tarvitsimme että plus 1 siellä? 892 00:43:49,721 --> 00:43:50,220 OK. 893 00:43:50,220 --> 00:43:53,345 Nyt vain ajaa läpi sitä tehdä Varmista, että loput koodi on oikea. 894 00:43:53,345 --> 00:44:04,424 895 00:44:04,424 --> 00:44:05,340 Miksi se tapahtuu? 896 00:44:05,340 --> 00:44:14,780 897 00:44:14,780 --> 00:44:16,364 Ah, se min täällä. 898 00:44:16,364 --> 00:44:17,780 Olimme vertaamalla väärän arvon. 899 00:44:17,780 --> 00:44:24,944 900 00:44:24,944 --> 00:44:25,906 Voi ei. 901 00:44:25,906 --> 00:44:30,720 902 00:44:30,720 --> 00:44:33,482 >> Ai niin, täällä olimme vaihtava väärä arvot sekä. 903 00:44:33,482 --> 00:44:34,940 Koska me tarkastelemme i ja j. 904 00:44:34,940 --> 00:44:36,440 Ne ovat niitä olimme tarkkailun. 905 00:44:36,440 --> 00:44:39,160 Me todella haluavat vaihtaa minimi, nykyinen vähimmäistaso, 906 00:44:39,160 --> 00:44:40,550 kanssa, mitä yksi ulkopuolella on. 907 00:44:40,550 --> 00:44:59,510 908 00:44:59,510 --> 00:45:05,402 Ja kun te voi nähdä alas täällä, meillä on lajiteltu array. 909 00:45:05,402 --> 00:45:07,110 Se vain oli tekemistä se, että kun 910 00:45:07,110 --> 00:45:09,350 olimme tarkkailun arvot olimme vertaamalla, 911 00:45:09,350 --> 00:45:11,226 emme katsot oikeita arvoja. 912 00:45:11,226 --> 00:45:13,850 Etsimme samalla yksi täällä, ei oikeastaan ​​vaihtamalla sitä. 913 00:45:13,850 --> 00:45:17,135 Sinun täytyy katsoa yksi seuraavassa sen ja sitten voit vaihtaa. 914 00:45:17,135 --> 00:45:19,260 Niin sitähän oli eräänlainen salakuuntelu meidän koodin ennen. 915 00:45:19,260 --> 00:45:22,460 Ja mitä tein täällä on kaikkea debuggeri olisi voinut tehdä sinulle 916 00:45:22,460 --> 00:45:23,810 Tein sen aluksella, koska se on helpompaa 917 00:45:23,810 --> 00:45:26,320 nähdä eikä yrittää zoomata debuggeri. 918 00:45:26,320 --> 00:45:29,391 Tarkoittaako tämä järkevää kaikille? 919 00:45:29,391 --> 00:45:29,890 Viileä. 920 00:45:29,890 --> 00:45:34,800 921 00:45:34,800 --> 00:45:35,410 >> Selvä. 922 00:45:35,410 --> 00:45:41,070 Voimme siirtyä puhu asymptoottinen merkintätapa, joka 923 00:45:41,070 --> 00:45:44,580 on vain hieno tapa sanoa runtimes kaikkien näiden lajittelee. 924 00:45:44,580 --> 00:45:47,650 Joten tiedän David, luento, sivuttiin runtimes. 925 00:45:47,650 --> 00:45:52,124 Ja hän kävi läpi koko kaava laskemisesta runtimes. 926 00:45:52,124 --> 00:45:53,040 Ei huolestuta, että. 927 00:45:53,040 --> 00:45:54,660 Jos olet todella utelias miten se toimii, 928 00:45:54,660 --> 00:45:55,810 vapaasti puhua minulle jakson jälkeen. 929 00:45:55,810 --> 00:45:57,560 Voimme käydä läpi kaavat yhdessä. 930 00:45:57,560 --> 00:46:00,689 Mutta kaikki teillä todella tietää, että n potenssiin yli 2 931 00:46:00,689 --> 00:46:01,980 on sama asia kuin n potenssiin. 932 00:46:01,980 --> 00:46:04,710 Koska eniten, eksponentti, kasvaa eniten. 933 00:46:04,710 --> 00:46:06,590 Ja niin meidän tarkoituksiin, kaikki välitämme 934 00:46:06,590 --> 00:46:09,470 on että jättimäinen määrä, joka on kasvava. 935 00:46:09,470 --> 00:46:13,340 >> Joten mikä on paras asia runtime valinta lajitella? 936 00:46:13,340 --> 00:46:15,830 Jos aiot olla iteroida kautta lista 937 00:46:15,830 --> 00:46:18,712 ja sitten kerrata kautta loput tämän luettelon, 938 00:46:18,712 --> 00:46:20,420 kuinka monta kertaa on aiot luultavasti, 939 00:46:20,420 --> 00:46:24,612 pahimmassa case-- vuonna Parhaassa tapauksessa sorry-- kulkevat? 940 00:46:24,612 --> 00:46:27,070 Ehkä parempi kysymys on kysyä, mikä on pahimmassa tapauksessa 941 00:46:27,070 --> 00:46:28,153 runtime valinta lajitella. 942 00:46:28,153 --> 00:46:29,366 Yleisö: n neliö. 943 00:46:29,366 --> 00:46:30,740 ANDI Peng: Se on n potenssiin, oikea. 944 00:46:30,740 --> 00:46:36,986 Joten helppo tapa ajatella tätä on kuin, tahansa sinulla on kaksi sisäkkäistä silmukkaa, 945 00:46:36,986 --> 00:46:38,110 se tulee olemaan n neliö. 946 00:46:38,110 --> 00:46:40,386 Koska ei vain sinä kulkee jälleen, 947 00:46:40,386 --> 00:46:42,260 sinun täytyy mennä takaisin ympäri ja ajaa sen läpi 948 00:46:42,260 --> 00:46:44,980 jälleen sisällä jokaista arvo. 949 00:46:44,980 --> 00:46:48,640 Niin siinä tapauksessa, näytät n ajat n potenssiin, joka is-- anteeksi, 950 00:46:48,640 --> 00:46:50,505 n kertaa n, joka on yhtä kuin n neliö. 951 00:46:50,505 --> 00:46:53,230 952 00:46:53,230 --> 00:46:56,360 >> Ja lajitella on myös hieman ainutlaatuinen siinä mielessä, 953 00:46:56,360 --> 00:46:59,774 että sillä ei ole väliä, jos nämä arvot ovat jo kunnossa. 954 00:46:59,774 --> 00:47:01,440 Se on edelleen menossa läpi anyways. 955 00:47:01,440 --> 00:47:03,872 Sanotaan vain tämä oli 1, 2, 3, 4. 956 00:47:03,872 --> 00:47:07,080 Riippumatta siitä, onko se oli järjestys, se silti olisi kulki 957 00:47:07,080 --> 00:47:08,620 ja vielä tarkistanut minimiarvon. 958 00:47:08,620 --> 00:47:10,100 Se olisi tehnyt sama määrä tarkastuksia 959 00:47:10,100 --> 00:47:12,780 joka kerta, vaikka se ei oikeastaan ​​koske mihinkään. 960 00:47:12,780 --> 00:47:16,940 >> Joten tällaisessa tapauksessa paras ja huonoin runtimes ovat todella vastaavat. 961 00:47:16,940 --> 00:47:19,160 Joten odotettavissa runtime valinta lajitella, 962 00:47:19,160 --> 00:47:23,790 jota nimeävät symboli theta, theta, tässä tapauksessa, 963 00:47:23,790 --> 00:47:24,790 olisi myös n neliö. 964 00:47:24,790 --> 00:47:26,480 Nämä kaikki kolme olisi n neliö. 965 00:47:26,480 --> 00:47:29,653 Onko kaikki selvää miksi runtime on n potenssiin? 966 00:47:29,653 --> 00:47:33,360 967 00:47:33,360 --> 00:47:33,980 >> Selvä. 968 00:47:33,980 --> 00:47:39,120 Joten olen juuri menossa nopeasti ajaa läpi loput tapaisena. 969 00:47:39,120 --> 00:47:41,137 Algoritmi kupla sort-- muistaa, 970 00:47:41,137 --> 00:47:43,220 tämä oli ensimmäinen Daavid meni ohi luento. 971 00:47:43,220 --> 00:47:46,000 Pohjimmiltaan, astut läpi koko lista 972 00:47:46,000 --> 00:47:48,950 ja te swap-- juuri vertailla kahta kerrallaan. 973 00:47:48,950 --> 00:47:51,350 Ja jos yksi on suurempi, kuin vain vaihtaa niitä. 974 00:47:51,350 --> 00:47:53,590 Joten jos nämä ovat suurempia, voit vaihtaa. 975 00:47:53,590 --> 00:47:56,180 Minulla virallinen täällä. 976 00:47:56,180 --> 00:47:59,100 >> Joten vain sanoa teillä oli 8, 6, 4, 2. 977 00:47:59,100 --> 00:48:00,571 Sinun vertailla 8 ja 6. 978 00:48:00,571 --> 00:48:01,570 Sinun täytyy vaihtaa niitä. 979 00:48:01,570 --> 00:48:02,610 Voisitte vertailla 8 ja 4. 980 00:48:02,610 --> 00:48:03,609 Sinun täytyy vaihtaa niitä. 981 00:48:03,609 --> 00:48:07,000 Jos sinulla on vaihtaa 8 ja 2, muuttaa niitä samoin. 982 00:48:07,000 --> 00:48:10,760 Joten tällaisessa mielessä, näet, pelataan yli pitkän aikaa, 983 00:48:10,760 --> 00:48:13,730 miten arvot sellainen kupla päät, minkä vuoksi me kutsumme sitä 984 00:48:13,730 --> 00:48:15,320 kuplalajittelu. 985 00:48:15,320 --> 00:48:19,950 >> Haluamme vain ajaa läpi jälleen Toinen pass, ja meidän kolmas pass, 986 00:48:19,950 --> 00:48:21,150 ja meidän neljäs omille. 987 00:48:21,150 --> 00:48:25,820 Pohjimmiltaan, kuplalajittelu vain kulkee kunnes et tee enää swap. 988 00:48:25,820 --> 00:48:31,109 Joten siinä mielessä, tämä on vain yleinen pseudokoodi se. 989 00:48:31,109 --> 00:48:32,650 Ei hätää, nämä kaikki on verkossa. 990 00:48:32,650 --> 00:48:34,990 Meillä ei tarvitse itse mennä yli tämän. 991 00:48:34,990 --> 00:48:38,134 >> Olemme vain alustaa laskuri muuttuja, joka alkaa 0. 992 00:48:38,134 --> 00:48:39,800 Ja me kerrata läpi koko ryhmän. 993 00:48:39,800 --> 00:48:43,420 Ja jos yksi arvo is-- jos tämä arvo on suurempi kuin arvo, 994 00:48:43,420 --> 00:48:44,610 aiot vaihtaa niitä. 995 00:48:44,610 --> 00:48:46,860 Ja sitten olet vain aikoo jatkaa. 996 00:48:46,860 --> 00:48:47,970 Ja aiot laskea. 997 00:48:47,970 --> 00:48:50,845 Ja olet juuri menossa pitää tehdä tämä kun laskurin arvo on suurempi 998 00:48:50,845 --> 00:48:53,345 kuin 0, mikä tarkoittaa, että joka kerta, kun täytyy vaihtaa, 999 00:48:53,345 --> 00:48:55,220 tiedät haluat mennä takaisin ja tarkista uudelleen. 1000 00:48:55,220 --> 00:48:59,510 Haluat pitää tarkkailun kunnes tiedät että sinun ei tarvitse vaihtaa enää. 1001 00:48:59,510 --> 00:49:05,570 >> Mitkä ovat parhaat ja huonoimmat tapauksessa Varakäyntiajat varten kuplalajittelu? 1002 00:49:05,570 --> 00:49:09,300 Ja hint-- tämä on todella erilainen valinnasta lajitella siinä mielessä 1003 00:49:09,300 --> 00:49:11,810 että nämä kaksi vastausta eivät ole samoja. 1004 00:49:11,810 --> 00:49:14,709 Mieti, mitä tapahtuisi jos se oli jo järjestetty. 1005 00:49:14,709 --> 00:49:16,500 Ja miettiä, mitä tapahtuisi, jos se oli 1006 00:49:16,500 --> 00:49:18,372 tapauksessa, jossa se ei ole lajiteltu. 1007 00:49:18,372 --> 00:49:20,580 Ja voit sellaista ajaa kautta, miksi näin tapahtuu. 1008 00:49:20,580 --> 00:49:22,954 Annan te, kuten, 30 sekuntia ajatella, että. 1009 00:49:22,954 --> 00:49:52,330 1010 00:49:52,330 --> 00:49:53,540 >> OK. 1011 00:49:53,540 --> 00:49:57,462 Onko kellään arvata mitä Pahimmassa tapauksessa runtime kuplalajittelu on? 1012 00:49:57,462 --> 00:49:57,962 Joo. 1013 00:49:57,962 --> 00:50:07,810 >> Yleisö: Olisiko, kuten, n kertaa n miinus 1 tai jotain? 1014 00:50:07,810 --> 00:50:10,650 Kuten joka kerta se toimii, se on vain, kuten, yksi swap vähemmän 1015 00:50:10,650 --> 00:50:10,960 että mitä se oli. 1016 00:50:10,960 --> 00:50:12,668 >> ANDI Peng: Joo, niin olet täysin oikeassa. 1017 00:50:12,668 --> 00:50:15,940 Ja tämä on tapaus, jossa sinun Vastaus oli todella monimutkaisempi 1018 00:50:15,940 --> 00:50:17,240 kuin yksi meidän on annettava. 1019 00:50:17,240 --> 00:50:19,772 Joten se tulee run-- olen aikoo poistaa kaikki täällä. 1020 00:50:19,772 --> 00:50:20,480 Onko kaikki hyvin? 1021 00:50:20,480 --> 00:50:21,869 Voinko poistaa tämän? 1022 00:50:21,869 --> 00:50:22,368 OK. 1023 00:50:22,368 --> 00:50:27,904 1024 00:50:27,904 --> 00:50:30,320 Aiot ajaa läpi n kertaa ensimmäistä kertaa, eikö? 1025 00:50:30,320 --> 00:50:33,200 Ja he aikovat käydä läpi n miinus 1 toisen kerran, eikö? 1026 00:50:33,200 --> 00:50:37,130 Ja sitten aiot pitää menossa, n kaivos 2, jne. 1027 00:50:37,130 --> 00:50:40,210 David tekivät tämän luennon, jossa, jos lasketaan yhteen kaikki ne arvot, 1028 00:50:40,210 --> 00:50:48,080 saat jotain, joka on like-- yeah-- yli 2, joka olennaisesti vain vähentää 1029 00:50:48,080 --> 00:50:49,784 alas n potenssiin. 1030 00:50:49,784 --> 00:50:51,700 Olet menossa saada outo jae siellä. 1031 00:50:51,700 --> 00:50:53,892 Ja niin juuri tietää, että n potenssiin aina 1032 00:50:53,892 --> 00:50:55,350 menee osa. 1033 00:50:55,350 --> 00:50:58,450 Ja niin tässä tapauksessa, pahin runtime olisi n neliö. 1034 00:50:58,450 --> 00:51:00,210 Jos se oli laskeva järjestys, ajatella, te 1035 00:51:00,210 --> 00:51:02,530 on tehtävä swap joka kerta. 1036 00:51:02,530 --> 00:51:05,170 >> Mikä olisi mahdollisesti Parhaassa tapauksessa runtime? 1037 00:51:05,170 --> 00:51:08,580 Sanotaan vain, kun luettelo on jo jotta, mikä olisi runtime olla? 1038 00:51:08,580 --> 00:51:09,565 >> Yleisö: n. 1039 00:51:09,565 --> 00:51:10,690 ANDI Peng: Se on n, tarkalleen. 1040 00:51:10,690 --> 00:51:11,600 Ja miksi se n? 1041 00:51:11,600 --> 00:51:13,850 Yleisö: Koska juuri täytyy tarkistaa jokaisen kerran. 1042 00:51:13,850 --> 00:51:14,770 ANDI Peng: Aivan. 1043 00:51:14,770 --> 00:51:17,150 Joten mahdollisimman runtime, jos tämä lista oli jo 1044 00:51:17,150 --> 00:51:20,270 sorted-- sanokaamme 1, 2, 3, 4-- sinua olisi vain mennä läpi, voit tarkistaa, 1045 00:51:20,270 --> 00:51:21,720 näkisitte, OH, he kaikki sujua. 1046 00:51:21,720 --> 00:51:22,636 Minun ei tarvinnut vaihtaa. 1047 00:51:22,636 --> 00:51:23,370 Minulle riitti. 1048 00:51:23,370 --> 00:51:26,500 Niin siinä tapauksessa, se on vain n tai useita vaiheita juuri 1049 00:51:26,500 --> 00:51:29,870 oli tarkistaa ensimmäisessä luettelossa. 1050 00:51:29,870 --> 00:51:33,990 >> Ja kun me nyt osuma lisäyslajittelun, jossa 1051 00:51:33,990 --> 00:51:39,260 algoritmi on lähinnä jakaa se lajitellun ja lajittelemattoman osa. 1052 00:51:39,260 --> 00:51:42,810 Ja sitten yksi kerrallaan, lajittelemattomat arvot ovat 1053 00:51:42,810 --> 00:51:46,880 lisätään niiden asianmukaisen tehtävissä listan alkuun. 1054 00:51:46,880 --> 00:51:52,120 >> Niinpä esimerkiksi, meillä Luettelo 3, 5, 2, 6, 4 jälleen. 1055 00:51:52,120 --> 00:51:54,750 Tiedämme, että se on tällä hetkellä lajittelematon koska olemme juuri 1056 00:51:54,750 --> 00:51:57,030 aloitti katsomalla sitä. 1057 00:51:57,030 --> 00:52:00,610 Me katsomaan ja tiedämme, että ensimmäinen arvo lajitellaan, eikö? 1058 00:52:00,610 --> 00:52:04,190 Jos tarkastellaan vain joukko Koko Yksi, te tiedätte, että se on järjestetty. 1059 00:52:04,190 --> 00:52:08,230 >> Joten me tiedämme, että muut neljä lajittelemattomia. 1060 00:52:08,230 --> 00:52:10,980 Käymme läpi ja näemme, että arvo. 1061 00:52:10,980 --> 00:52:11,730 Mennään takaisin. 1062 00:52:11,730 --> 00:52:13,130 Katso, että arvo on 5? 1063 00:52:13,130 --> 00:52:14,110 Me katsomaan sitä. 1064 00:52:14,110 --> 00:52:15,204 Vertaamme sitä 3. 1065 00:52:15,204 --> 00:52:17,870 Tiedämme, että se on suurempi kuin 3, joten tiedämme, että on lajiteltu. 1066 00:52:17,870 --> 00:52:22,940 Joten me tiedämme nyt, että kaksi ensimmäistä lajitellaan ja kolme viimeistä eivät ole. 1067 00:52:22,940 --> 00:52:24,270 >> Me katsomaan 2. 1068 00:52:24,270 --> 00:52:25,720 Ensin tarkistaa sen 5. 1069 00:52:25,720 --> 00:52:26,700 Onko se vähemmän kuin 5? 1070 00:52:26,700 --> 00:52:27,240 Se ei ole. 1071 00:52:27,240 --> 00:52:29,510 Joten meidän on pidettävä katsoo alas. 1072 00:52:29,510 --> 00:52:30,940 Sitten voit tarkistaa 2 pois 3. 1073 00:52:30,940 --> 00:52:31,850 On se alle? 1074 00:52:31,850 --> 00:52:32,350 Ei. 1075 00:52:32,350 --> 00:52:35,430 Niin tiedät 2 on kytkettävä etuosaan ja 3 ja 5 1076 00:52:35,430 --> 00:52:38,200 molemmat on työnnetty ulos. 1077 00:52:38,200 --> 00:52:42,190 Tee näin uudelleen 6 ja 4. 1078 00:52:42,190 --> 00:52:48,962 Ja me vain pitää tarkistaa lähinnä, jossa me vain tarkistaa, tarkista, tarkista. 1079 00:52:48,962 --> 00:52:51,170 Ja kunnes se on oikeassa asema, me tavallaan vain 1080 00:52:51,170 --> 00:52:54,890 aseta se oikeaan asentoon, joka on ilmoitettaessa se tuli. 1081 00:52:54,890 --> 00:52:59,830 >> Niin se on vain algoritmi, pseudokoodilla sinänsä, sellainen, 1082 00:52:59,830 --> 00:53:04,990 miten voisimme toteuttaa lisäyslajittelun. 1083 00:53:04,990 --> 00:53:05,954 Pseudokoodilla on täällä. 1084 00:53:05,954 --> 00:53:06,620 Se kaikki verkossa. 1085 00:53:06,620 --> 00:53:10,720 Ei hätää, jos te olette yrittää kopioida tämän alas. 1086 00:53:10,720 --> 00:53:14,500 Joten jälleen kerran, sama question-- mitä olisi paras ja huonoin runtimes 1087 00:53:14,500 --> 00:53:16,120 asettamista varten lajitella? 1088 00:53:16,120 --> 00:53:17,750 Se on hyvin samankaltainen viimeiseen kysymykseen. 1089 00:53:17,750 --> 00:53:20,479 Annan te, kuten, 30 sekuntia ajatella tästä. 1090 00:53:20,479 --> 00:53:47,150 1091 00:53:47,150 --> 00:53:50,071 >> OK Onko kukaan halua anna minulle pahin runtime? 1092 00:53:50,071 --> 00:53:50,570 Joo. 1093 00:53:50,570 --> 00:53:51,490 >> Yleisö: n neliö. 1094 00:53:51,490 --> 00:53:52,573 >> ANDI Peng: Se on n potenssiin. 1095 00:53:52,573 --> 00:53:53,730 Ja miksi se n potenssiin? 1096 00:53:53,730 --> 00:53:57,562 >> Yleisö: Koska päinvastaisessa järjestyksessä, sinulla on 1097 00:53:57,562 --> 00:54:02,619 käydä läpi n kertaa n, joka is-- 1098 00:54:02,619 --> 00:54:03,660 ANDI Peng: Joo, täsmälleen. 1099 00:54:03,660 --> 00:54:06,610 Joten sama asia kuin kuplalajittelu. 1100 00:54:06,610 --> 00:54:08,720 Jos tämä luettelo on alenevassa järjestyksessä, olet 1101 00:54:08,720 --> 00:54:11,240 täytyy ensin tarkistaa kerran. 1102 00:54:11,240 --> 00:54:13,470 Ja sitten jokaisen lisäarvoa, olet 1103 00:54:13,470 --> 00:54:16,390 täytyy tarkistaa, että se jokainen yksittäinen arvo, eikö? 1104 00:54:16,390 --> 00:54:20,290 Ja niin kokonaan, aiot tehdä n syöttö kertaa toisen n pass, joka 1105 00:54:20,290 --> 00:54:21,750 on n potenssiin. 1106 00:54:21,750 --> 00:54:22,860 Entä Parhaassa tapauksessa? 1107 00:54:22,860 --> 00:54:24,360 Joo. 1108 00:54:24,360 --> 00:54:28,840 >> Yleisö: n miinus 1, koska ensimmäinen on jo potenssiin. 1109 00:54:28,840 --> 00:54:30,270 >> ANDI Peng: Niin lähellä. 1110 00:54:30,270 --> 00:54:31,850 Vastaus on itse asiassa n. 1111 00:54:31,850 --> 00:54:37,189 Sillä vaikka ensimmäinen on lajitellaan, se ei voi actually-- sitä 1112 00:54:37,189 --> 00:54:38,980 me vain lucked, vuonna että esimerkiksi, että 2 1113 00:54:38,980 --> 00:54:40,930 sattui olemaan pienin määrä. 1114 00:54:40,930 --> 00:54:43,680 Mutta se ei aina tapahdu. 1115 00:54:43,680 --> 00:54:48,040 Jos 2 on jo järjestetty alussa mutta näytät ja siellä 1 täällä, 1116 00:54:48,040 --> 00:54:49,144 1 on menossa kolahtaa se. 1117 00:54:49,144 --> 00:54:51,060 Ja se tulee lopettaa up on törmäsi anyways. 1118 00:54:51,060 --> 00:54:56,250 >> Joten parhaassa tapauksessa, se on oikeastaan ​​vain olemaan n. 1119 00:54:56,250 --> 00:54:59,090 Jos sinulla on 1, 2, 3, 4, 5, 6, 7, 8, olet 1120 00:54:59,090 --> 00:55:00,940 menossa ajaa läpi että koko lista kerran 1121 00:55:00,940 --> 00:55:03,430 tarkistaa, jos kaikki on hyvin. 1122 00:55:03,430 --> 00:55:07,390 Onko kaikki selvää käynnissä aikoina valinta samoin? 1123 00:55:07,390 --> 00:55:09,960 Tiedän, että olen menossa läpi nämä todella nopeasti. 1124 00:55:09,960 --> 00:55:13,330 Mutta vain tietää, että jos tiedät yleiset käsitteet, sinun pitäisi olla hyvä. 1125 00:55:13,330 --> 00:55:16,070 OK. 1126 00:55:16,070 --> 00:55:19,790 Niin minä vain antaa te ehkä, kuten, minuutti puhua naapurit 1127 00:55:19,790 --> 00:55:21,890 mitä ovat vain joitakin tärkeimmistä eroista 1128 00:55:21,890 --> 00:55:23,540 välillä tämäntyyppisiä tapaisena. 1129 00:55:23,540 --> 00:56:24,571 1130 00:56:24,571 --> 00:56:25,570 Menemme yli, että pian. 1131 00:56:25,570 --> 00:56:26,444 Yleisö: Voi, OK. 1132 00:56:26,444 --> 00:56:27,320 ANDI Peng: Joo. 1133 00:56:27,320 --> 00:56:28,380 OK. 1134 00:56:28,380 --> 00:56:33,420 Cool, nyt uudelleen koolle luokkana. 1135 00:56:33,420 --> 00:56:34,330 OK. 1136 00:56:34,330 --> 00:56:37,579 Joten tämä oli sellainen avoin kysymys siinä mielessä 1137 00:56:37,579 --> 00:56:39,120 että siellä on paljon niihin vastauksia. 1138 00:56:39,120 --> 00:56:40,746 Ja me mennä yli joitakin niistä lyhyesti. 1139 00:56:40,746 --> 00:56:43,411 Halusin vain saada te miettiä, mitä eriytetty 1140 00:56:43,411 --> 00:56:44,530 kaikki kolme tapaisena. 1141 00:56:44,530 --> 00:56:47,440 Ja kuulin, myös suuri question-- mitä merge sort tekee? 1142 00:56:47,440 --> 00:56:50,110 Suuri kysymys, koska se on mitä me kattaa seuraavaksi. 1143 00:56:50,110 --> 00:56:52,850 >> Joten yhdistää lajitella on yksi sort joka toimii 1144 00:56:52,850 --> 00:56:56,100 hyvin eri muunlaisia. 1145 00:56:56,100 --> 00:56:58,180 Kuten te voi see-- ei David tehdä demo 1146 00:56:58,180 --> 00:57:01,130 jossa hän oli kaikki viileä ääniä nähdä miten yhdistää 1147 00:57:01,130 --> 00:57:04,010 lajitella juoksi, kuten, äärettömän nopeammin kuin muut kaksi? 1148 00:57:04,010 --> 00:57:04,510 OK. 1149 00:57:04,510 --> 00:57:07,580 Niin, että koska yhdistää lajitella toteuttaa että kuilu 1150 00:57:07,580 --> 00:57:11,020 ja valloittaa käsite, että olemme puhui paljon luento. 1151 00:57:11,020 --> 00:57:14,550 Siinä mielessä, että haluamme työskennellä fiksummin, ei kovemmin, kun jaat 1152 00:57:14,550 --> 00:57:18,120 ja valloittaa ongelmia, ja rikkoa niitä alas, ja sitten laittaa ne yhteen, 1153 00:57:18,120 --> 00:57:19,930 hyviä asioita aina tapahdu. 1154 00:57:19,930 --> 00:57:21,960 >> Niin että yhdistää lajitella olennaisesti toimii 1155 00:57:21,960 --> 00:57:24,660 on se, että se jakaa lajittelematon array kahtia. 1156 00:57:24,660 --> 00:57:26,500 Ja sitten se sai kaksi puolikasta taulukot. 1157 00:57:26,500 --> 00:57:28,220 Ja se vain lajittelee nämä kaksi puolikasta. 1158 00:57:28,220 --> 00:57:31,750 Se vain pitää jakamalla kahtia, vuonna puoli, puoli kunnes kaikki on järjestetty 1159 00:57:31,750 --> 00:57:33,680 ja sitten rekursiivisesti panee kaiken yhteen. 1160 00:57:33,680 --> 00:57:36,550 >> Niin se on todella abstrakti. 1161 00:57:36,550 --> 00:57:38,750 Joten tämä on vain vähän pseudokoodina. 1162 00:57:38,750 --> 00:57:41,040 Tarkoittaako tämä järkevää miten se on käynnissä? 1163 00:57:41,040 --> 00:57:43,870 Joten vain sanoa olet joukko n osia, eikö? 1164 00:57:43,870 --> 00:57:45,450 Jos n on pienempi kuin 2, voit palata. 1165 00:57:45,450 --> 00:57:49,040 Koska tiedät, että jos on olemassa vain yksi asia, se on lajiteltava. 1166 00:57:49,040 --> 00:57:52,600 Else, voit lajitella vasen puoli, ja sitten lajitella oikea puoli, 1167 00:57:52,600 --> 00:57:54,140 ja sitten yhdistää. 1168 00:57:54,140 --> 00:57:56,979 >> Joten vaikka joka näyttää helppoa, Todellisuudessa ajatellut se 1169 00:57:56,979 --> 00:58:00,270 eräänlainen vaikea. Koska olet kuten, hyvin, että on tavallaan käynnissä itse. 1170 00:58:00,270 --> 00:58:00,769 Oikea? 1171 00:58:00,769 --> 00:58:02,430 Se käynnissä itse. 1172 00:58:02,430 --> 00:58:05,479 Joten siinä mielessä, David kosketti kun rekursio luokassa. 1173 00:58:05,479 --> 00:58:07,270 Ja se on käsite me puhumme enemmän. 1174 00:58:07,270 --> 00:58:11,430 Se, että tämä, nämä kaksi riviä täällä, itse asiassa on vain ohjelma 1175 00:58:11,430 --> 00:58:13,860 kertoo se ajaa itse eri tulo. 1176 00:58:13,860 --> 00:58:17,230 Joten mieluummin kuin ajaa itsensä kanssa kokonaisuudessaan n elementtejä, 1177 00:58:17,230 --> 00:58:20,530 voit rikkoa sen alas vasen puoli ja oikea puoli 1178 00:58:20,530 --> 00:58:22,680 ja sitten ajaa se uudelleen. 1179 00:58:22,680 --> 00:58:26,050 >> Ja sitten me tarkastelemme sitä visuaalisesti, koska olen visuaalinen oppija. 1180 00:58:26,050 --> 00:58:27,270 Se toimii paremmin minulle. 1181 00:58:27,270 --> 00:58:29,890 Joten me tarkastelemme visuaalinen esimerkki tästä. 1182 00:58:29,890 --> 00:58:36,237 >> Sanotaan meillä on joukko, kuusi elementtejä, 3, 5, 2, 6, 4, 1, ei lajitella. 1183 00:58:36,237 --> 00:58:37,820 Okei, siellä on paljon tällä sivulla. 1184 00:58:37,820 --> 00:58:43,179 Joten jos te katsoa Ensimmäinen askel tähän, 3, 5, 2, 6, 4, 1, 1185 00:58:43,179 --> 00:58:44,220 voit jakaa sen kahtia. 1186 00:58:44,220 --> 00:58:45,976 Sinulla on 3, 5, 2, 6, 4, 1. 1187 00:58:45,976 --> 00:58:48,850 Tiedät, että nämä aren't-- sinua tiedä jos he lajitellaan tai ei, 1188 00:58:48,850 --> 00:58:52,517 joten sinun pitää rikkomatta niitä alas, puoli, kahtia, puoli, kunnes lopulta, 1189 00:58:52,517 --> 00:58:53,600 sinulla on vain yksi elementti. 1190 00:58:53,600 --> 00:58:56,790 Ja yksi elementti on aina lajitellaan, eikö? 1191 00:58:56,790 --> 00:59:01,560 >> Joten tiedämme, että 3, 5, 2, 4, 6, 1, itse, lajitellaan. 1192 00:59:01,560 --> 00:59:05,870 Ja nyt voimme laittaa ne takaisin yhteen. 1193 00:59:05,870 --> 00:59:07,510 Joten me tiedämme 3, 5. 1194 00:59:07,510 --> 00:59:08,510 Laitamme ne yhteen. 1195 00:59:08,510 --> 00:59:09,617 Tiedämme, että se lajitellaan. 1196 00:59:09,617 --> 00:59:10,450 2 on yhä siellä. 1197 00:59:10,450 --> 00:59:11,830 Voimme laittaa 4 ja 6 yhdessä. 1198 00:59:11,830 --> 00:59:13,996 Tiedämme, että joka on lajiteltu, niin laitamme että yhdessä. 1199 00:59:13,996 --> 00:59:14,940 Ja 1 on siellä. 1200 00:59:14,940 --> 00:59:18,720 >> Ja sitten katsokaa nämä kaksi puolikasta täällä. 1201 00:59:18,720 --> 00:59:21,300 Sinulla on 3, 5, 2, 2, 3, 5. 1202 00:59:21,300 --> 00:59:23,465 Voit vain vertailla kaiken alku. 1203 00:59:23,465 --> 00:59:26,340 Koska tiedät, että tämä on lajiteltu ja te tiedätte, että on lajiteltu. 1204 00:59:26,340 --> 00:59:29,360 Joten sinun ei edes tarvitse vertailla 5, juuri vertailla 3. 1205 00:59:29,360 --> 00:59:32,070 Ja 2 on pienempi kuin 3, niin Tiedätkö 2 on mentävä loppuun. 1206 00:59:32,070 --> 00:59:33,120 >> Sama juttu tuolla. 1207 00:59:33,120 --> 00:59:34,740 1 on mentävä täällä. 1208 00:59:34,740 --> 00:59:37,330 Ja sitten kun menet laittaa nämä kaksi arvoa yhteen, 1209 00:59:37,330 --> 00:59:39,950 tiedät, että tämä lajitellaan ja tiedät, että se lajitellaan. 1210 00:59:39,950 --> 00:59:43,240 Niin sitten 1 ja 2, 1 on pienempi kuin 2. 1211 00:59:43,240 --> 00:59:45,570 Joka kertoo, että 1 pitäisi mennä loppuun 1212 00:59:45,570 --> 00:59:47,480 katsomatta edes 3 tai 5. 1213 00:59:47,480 --> 00:59:50,100 Ja sitten 4, voit vain tarkista, se menee suoraan tänne. 1214 00:59:50,100 --> 00:59:51,480 Sinun ei tarvitse katsoa 5. 1215 00:59:51,480 --> 00:59:52,570 Sama juttu 6. 1216 00:59:52,570 --> 00:59:55,860 Tiedätte, että 6-- se vain ei syytä tarkastella. 1217 00:59:55,860 --> 00:59:57,870 >> Ja niin tällä tavalla, olet vain säästää itsellesi 1218 00:59:57,870 --> 00:59:59,526 runsaasti portaita kun olet verrataan. 1219 00:59:59,526 --> 01:00:02,150 Sinun ei tarvitse verrata jokaisen elementti vastaan ​​muita elementtejä. 1220 01:00:02,150 --> 01:00:05,230 Sinä vain verrataan niitä että sinun täytyy verrata sitä vastaan. 1221 01:00:05,230 --> 01:00:06,870 Niin, että on tavallaan abstrakti käsite. 1222 01:00:06,870 --> 01:00:10,540 Ei hätää, jos se ei ole aivan lyömällä sinua juuri vielä. 1223 01:00:10,540 --> 01:00:14,740 Mutta yleisesti, tämä on miten yhdistää lajitella toimii. 1224 01:00:14,740 --> 01:00:17,750 Kysymykset, nopea kysymyksiä, ennen jatkan? 1225 01:00:17,750 --> 01:00:18,550 Joo. 1226 01:00:18,550 --> 01:00:22,230 >> Yleisö: Niin sanoit että otat 1, ja sitten 4, ja 6 1227 01:00:22,230 --> 01:00:23,860 ja laita ne. 1228 01:00:23,860 --> 01:00:26,800 Joten eivät those-- ei Etsitkö niitä 1229 01:00:26,800 --> 01:00:28,544 erillisinä elementteinä, ei koko? 1230 01:00:28,544 --> 01:00:29,210 ANDI Peng: Joo. 1231 01:00:29,210 --> 01:00:32,020 Joten mitä tapahtuu on, että et periaatteessa 1232 01:00:32,020 --> 01:00:33,650 luovat upouusi array. 1233 01:00:33,650 --> 01:00:36,690 Niin tiedät, että täällä, minulla on kaksi ryhmät koko 3, eikö? 1234 01:00:36,690 --> 01:00:39,600 Niin tiedät, että minun lajitellut array tarvitsee kuusi elementtejä. 1235 01:00:39,600 --> 01:00:42,270 Joten sinun tarvitsee vain luoda uusi muistin määrä. 1236 01:00:42,270 --> 01:00:44,270 Olet siis ikään kuin tuhlailevaksi muistia, 1237 01:00:44,270 --> 01:00:46,186 mutta se ei ole väliä koska se on niin pieni. 1238 01:00:46,186 --> 01:00:48,590 Joten sinä katsot 1 ja sinä katsot 2. 1239 01:00:48,590 --> 01:00:50,770 Ja te tiedätte, että 1 on alle 2. 1240 01:00:50,770 --> 01:00:53,840 Niin tiedät, että 1 pitäisi mennä alussa kaikki nämä. 1241 01:00:53,840 --> 01:00:55,850 >> Sinun ei edes tarvitse katso 3 ja 5. 1242 01:00:55,850 --> 01:00:57,400 Joten tiedät 1 menee siellä. 1243 01:00:57,400 --> 01:00:59,300 Sitten et periaatteessa katkaista 1. 1244 01:00:59,300 --> 01:01:00,370 Se on, kuten, kuollut meille. 1245 01:01:00,370 --> 01:01:03,690 Sitten meidän on vain 2, 3, 5, ja sitten 4 ja 6. 1246 01:01:03,690 --> 01:01:06,270 Ja niin tiedät, että sinun vertailla 4 ja 2, 1247 01:01:06,270 --> 01:01:07,560 oh, 2 pitäisi mennä sinne. 1248 01:01:07,560 --> 01:01:09,685 Joten voit plop 2 alas, voit pilkkoa sen pois. 1249 01:01:09,685 --> 01:01:12,060 Niin sitten sinun täytyy vain 3 ja 5 4 ja 6. 1250 01:01:12,060 --> 01:01:14,650 Ja te vain pitää pilkkominen se pois kunnes laitat ne array. 1251 01:01:14,650 --> 01:01:17,110 >> Yleisö: Joten olet vain aina verrataan [äänetön]? 1252 01:01:17,110 --> 01:01:17,710 >> ANDI Peng: Aivan. 1253 01:01:17,710 --> 01:01:19,590 Joten siinä mielessä, olet vain vertaamalla lähinnä, 1254 01:01:19,590 --> 01:01:21,240 yksi numero vastaan ​​toinen numero. 1255 01:01:21,240 --> 01:01:22,990 Ja koska tiedät että se on lajiteltu, sinua 1256 01:01:22,990 --> 01:01:24,350 ei tarvitse käydä läpi kaikki numerot. 1257 01:01:24,350 --> 01:01:25,870 Täytyy vain katsoa ensimmäinen. 1258 01:01:25,870 --> 01:01:27,582 Ja sitten voit vain plop ne alas, koska tiedät 1259 01:01:27,582 --> 01:01:29,640 ne kuuluvat, jos ne täytyy kuulua. 1260 01:01:29,640 --> 01:01:31,030 Joo. 1261 01:01:31,030 --> 01:01:32,920 Hyvä kysymys. 1262 01:01:32,920 --> 01:01:35,290 >> Ja sitten jos joku teistä ovat hieman kunnianhimoinen, 1263 01:01:35,290 --> 01:01:38,660 rohkeasti katsomaan tätä koodia. 1264 01:01:38,660 --> 01:01:40,680 Tämä on oikeastaan fyysinen toteutus 1265 01:01:40,680 --> 01:01:42,150 miten voisimme kirjoittaa yhdistämisen lajitella. 1266 01:01:42,150 --> 01:01:44,070 Ja näet, se on hyvin lyhyt. 1267 01:01:44,070 --> 01:01:46,310 Mutta ideoista se on melko monimutkainen. 1268 01:01:46,310 --> 01:01:50,865 Joten jos tuntuu piirustus tätä teidän kotitehtäviä tänä iltana, rohkeasti. 1269 01:01:50,865 --> 01:01:54,050 1270 01:01:54,050 --> 01:01:54,740 >> OK. 1271 01:01:54,740 --> 01:01:58,070 Niin David meni tänä luento. 1272 01:01:58,070 --> 01:02:00,660 Mitkä ovat parhaassa tapauksessa runtimes, pahimmassa tapauksessa varakäyntiajat, 1273 01:02:00,660 --> 01:02:05,680 ja odotettu runtimes on yhdistämisen lajitella? 1274 01:02:05,680 --> 01:02:07,260 Pari sekuntia ajatella. 1275 01:02:07,260 --> 01:02:11,198 Tämä on melko kova, mutta eräänlainen intuitiivinen jos ajattelee sitä. 1276 01:02:11,198 --> 01:02:20,090 1277 01:02:20,090 --> 01:02:23,054 Selvä. 1278 01:02:23,054 --> 01:02:25,269 >> Yleisö: Onko pahimmillaan n log n? 1279 01:02:25,269 --> 01:02:26,060 ANDI Peng: Aivan. 1280 01:02:26,060 --> 01:02:29,380 Ja miksi se n log n. 1281 01:02:29,380 --> 01:02:32,230 >> Yleisö: Eikö se, koska se tulee eksponentiaalisesti nopeammin, 1282 01:02:32,230 --> 01:02:35,390 joten se on kuin funktio, joka eikä vain yksinkertaisesti n 1283 01:02:35,390 --> 01:02:37,529 neliö tai jotain? 1284 01:02:37,529 --> 01:02:38,320 ANDI Peng: Aivan. 1285 01:02:38,320 --> 01:02:40,750 Joten miksi runtime tästä on n log 1286 01:02:40,750 --> 01:02:44,310 n on because-- mitä olet tekee kaikki nämä vaiheet? 1287 01:02:44,310 --> 01:02:46,190 Olet vain paloittelu se puoliksi oikeassa? 1288 01:02:46,190 --> 01:02:48,750 Ja niin kun me teemme log, kaikki, että se tekee 1289 01:02:48,750 --> 01:02:53,150 on jakamalla ongelma kahtia, kahtia, puoli, enemmän puolikkaat. 1290 01:02:53,150 --> 01:02:56,430 Ja siinä mielessä, voit laji ja poistaa lineaarinen malli 1291 01:02:56,430 --> 01:02:57,510 että olemme käyttäneet. 1292 01:02:57,510 --> 01:03:00,254 Koska kun pilko asioita puoli, se on loki. 1293 01:03:00,254 --> 01:03:02,420 Se on vain matemaattinen tapa esittää se. 1294 01:03:02,420 --> 01:03:06,310 >> Ja sitten lopulta, lopussa, olet vain tehdä yksi viime läpi 1295 01:03:06,310 --> 01:03:07,930 laittaa ne kaikki järjestyksessä, eikö? 1296 01:03:07,930 --> 01:03:10,330 Joten jos sinun täytyy vain tarkistaa yksi asia, joka on n. 1297 01:03:10,330 --> 01:03:13,420 Ja niin olet sellainen kertomalla kaksi yhdessä. 1298 01:03:13,420 --> 01:03:17,660 Joten se on kuin sinulla, että lopullinen tarkista N alas täällä log n 1299 01:03:17,660 --> 01:03:18,390 täällä. 1300 01:03:18,390 --> 01:03:21,060 Ja jos kerrot heille, joka on n log n. 1301 01:03:21,060 --> 01:03:26,100 >> Ja niin parhaassa tapauksessa ja pahimmassa tapaus ja odotettu ovat kaikki n log n. 1302 01:03:26,100 --> 01:03:27,943 Se on myös kuin toinen lajitella. 1303 01:03:27,943 --> 01:03:30,090 Se on kuin valinta lajitella siinä mielessä, että se 1304 01:03:30,090 --> 01:03:32,131 ei ole väliä, mitä lista on, se on juuri menossa 1305 01:03:32,131 --> 01:03:34,801 tehdä sama asia joka ikinen kerta. 1306 01:03:34,801 --> 01:03:35,300 OK. 1307 01:03:35,300 --> 01:03:39,950 Niin te voi nähdä, vaikka lajittelee, että olemme menneet through-- n 1308 01:03:39,950 --> 01:03:41,660 potenssiin, se ei ole kovin tehokas. 1309 01:03:41,660 --> 01:03:47,060 Ja tämäkin n log n on ole tehokkain. 1310 01:03:47,060 --> 01:03:49,720 Jos te olette utelias, siellä on eräänlainen mekanismeja 1311 01:03:49,720 --> 01:03:54,310 jotka ovat niin tehokkaita, että ne ovat lähes olennaisen tasaisia ​​runtime. 1312 01:03:54,310 --> 01:03:55,420 >> Sinulla joitakin log n n. 1313 01:03:55,420 --> 01:03:58,190 Sinulla joitakin log n n. 1314 01:03:58,190 --> 01:04:00,330 Emme koske heitä tässä luokassa juuri nyt. 1315 01:04:00,330 --> 01:04:02,663 Mutta jos te olette utelias, rohkeasti google, mitä 1316 01:04:02,663 --> 01:04:04,392 tehokkain lajittelu mekanismeja. 1317 01:04:04,392 --> 01:04:06,350 En tiedä, on olemassa joitakin todella hauska ystävät, 1318 01:04:06,350 --> 01:04:09,860 like-- on joitakin todella Funny niitä, jotka ihmiset tekevät. 1319 01:04:09,860 --> 01:04:12,210 Ja ihmettelet miten he koskaan ajatellut että. 1320 01:04:12,210 --> 01:04:15,730 Joten Google, jos sinulla on ylimääräistä aika, siitä, mitkä ovat hauskoja tapoja 1321 01:04:15,730 --> 01:04:17,730 että people-- sekä tehokas ways-- ihmiset 1322 01:04:17,730 --> 01:04:20,371 ovat kyenneet toteuttamaan tapaisena. 1323 01:04:20,371 --> 01:04:20,870 OK. 1324 01:04:20,870 --> 01:04:22,880 Ja tässä on vain kätevä kaavio. 1325 01:04:22,880 --> 01:04:26,850 Tiedän kaiken sinusta, ennen tietokilpailu 0, on omassa huoneessa luultavasti yrittää 1326 01:04:26,850 --> 01:04:27,960 muistaa, että. 1327 01:04:27,960 --> 01:04:30,940 Niin, että on mukavaa siellä teitä. 1328 01:04:30,940 --> 01:04:37,120 Mutta älä unohda logiikkaa että made-- miksi nämä numerot tapahtuivat. 1329 01:04:37,120 --> 01:04:39,870 Jos olet aina menetetty, vain tehdä että tiedät mitä lajittelee ovat. 1330 01:04:39,870 --> 01:04:40,820 Ja voit käydä läpi ne mielessäsi 1331 01:04:40,820 --> 01:04:42,903 selvittää, miksi ne vastaukset ovat näitä vastauksia. 1332 01:04:42,903 --> 01:04:46,250 1333 01:04:46,250 --> 01:04:47,600 >> Selvä. 1334 01:04:47,600 --> 01:04:49,680 Joten aiomme siirtää on lopuksi haku. 1335 01:04:49,680 --> 01:04:51,638 Koska kuin sinä jotka ovat lukeneet PSET, 1336 01:04:51,638 --> 01:04:55,175 haku on myös osa tämän viikon ongelma asetetaan. 1337 01:04:55,175 --> 01:04:57,300 Sinua pyydetään toteuttamaan kahdenlaisia ​​hakuja. 1338 01:04:57,300 --> 01:05:00,070 Yksi on lineaarinen haku ja yksi on binäärihaku. 1339 01:05:00,070 --> 01:05:01,760 >> Niin lineaarinen haku on melko helppoa. 1340 01:05:01,760 --> 01:05:04,070 Sinä vain haluat hakea elementtiin luettelon nähdä, jos saat sen. 1341 01:05:04,070 --> 01:05:05,444 Sinun täytyy vain kerrata kautta. 1342 01:05:05,444 --> 01:05:08,170 Ja jos se vastaa jotain, voit vain palauttaa sen, eikö? 1343 01:05:08,170 --> 01:05:10,890 Mutta yksi että olemme eniten kiinnostuneita puhu 1344 01:05:10,890 --> 01:05:14,550 on binäärihakupuu, oikea, mikä on hajota ja hallitse mekanismi, joka 1345 01:05:14,550 --> 01:05:18,190 Daavid oli osoittaa luento. 1346 01:05:18,190 --> 01:05:20,810 >> Muista puhelinluettelon esimerkki että hän pitää kasvatuksesta, 1347 01:05:20,810 --> 01:05:23,960 joka hän sellainen kamppaillut hieman tämän vuoden aikana, 1348 01:05:23,960 --> 01:05:27,530 jossa jaat ongelma kahtia, kahtia, puoli, uudelleen ja uudelleen, 1349 01:05:27,530 --> 01:05:30,730 kunnes löydät mitä etsit? 1350 01:05:30,730 --> 01:05:33,727 Ja sinulla runtime että samoin. 1351 01:05:33,727 --> 01:05:35,810 Ja näet, se on huomattavasti tehokkaampi 1352 01:05:35,810 --> 01:05:39,080 kuin mikä tahansa muu haku. 1353 01:05:39,080 --> 01:05:41,880 >> Niin että me menisi noin täytäntöön binäärihaku 1354 01:05:41,880 --> 01:05:46,510 on, jos meillä olisi array, indeksi 0-6, seitsemän elementtiä, 1355 01:05:46,510 --> 01:05:49,790 voimme katsoa keskellä, right-- pahoillani, jos meidän kysymys first-- 1356 01:05:49,790 --> 01:05:53,840 jos haluamme kysyä kysymyksen, ei array sisältävät elementin 7, 1357 01:05:53,840 --> 01:05:56,840 tietenkin, että ihmiset, ja ottaa niin pieni joukko, se on helppoa meille 1358 01:05:56,840 --> 01:05:58,210 sanoa kyllä. 1359 01:05:58,210 --> 01:06:05,750 Mutta tapa toteuttaa binäärisen haku olisi katsoa keskellä. 1360 01:06:05,750 --> 01:06:08,020 >> Tiedämme, että indeksi 3 keskellä, koska me 1361 01:06:08,020 --> 01:06:09,270 tietää on seitsemän elementtejä. 1362 01:06:09,270 --> 01:06:10,670 Mitä 7 jaettuna 2? 1363 01:06:10,670 --> 01:06:12,850 Voit katkaista että ylimääräinen 1. 1364 01:06:12,850 --> 01:06:14,850 Sinulla 3 keskellä. 1365 01:06:14,850 --> 01:06:17,590 Joten on joukko 3 yhtä 7? 1366 01:06:17,590 --> 01:06:18,900 Se ei ole, eikö? 1367 01:06:18,900 --> 01:06:21,050 Mutta me voimme tehdä pari tarkastuksia. 1368 01:06:21,050 --> 01:06:25,380 On joukko 3 alle 7 tai on joukko 3 yli 7? 1369 01:06:25,380 --> 01:06:27,240 >> Ja me tiedämme, että se on alle 7. 1370 01:06:27,240 --> 01:06:30,259 Joten tiedämme, että, oi, sen on ei olla vasen puoli. 1371 01:06:30,259 --> 01:06:32,300 Tiedämme, että se on oikea puoli, oikea? 1372 01:06:32,300 --> 01:06:34,662 Joten voimme vain katkaista puoli jono. 1373 01:06:34,662 --> 01:06:36,370 Emme edes tarvitse katsoa sitä enää. 1374 01:06:36,370 --> 01:06:38,711 Koska tiedämme, että puolet problem-- 1375 01:06:38,711 --> 01:06:41,210 me tiedämme, että vastaus on oikea puoli meidän ongelma. 1376 01:06:41,210 --> 01:06:42,580 Joten me katsokaa nyt. 1377 01:06:42,580 --> 01:06:44,860 >> Joten nyt katsomme Keskellä mitä on jäljellä. 1378 01:06:44,860 --> 01:06:46,880 Tämä indeksi 5. 1379 01:06:46,880 --> 01:06:50,200 Teemme sama tarkastus uudelleen ja näemme, että se on pienempi. 1380 01:06:50,200 --> 01:06:52,050 Joten odotamme vasemmalla että. 1381 01:06:52,050 --> 01:06:53,430 Ja sitten näemme, että tarkastus. 1382 01:06:53,430 --> 01:06:57,600 Onko array arvo indeksi 4 vastaa 7? 1383 01:06:57,600 --> 01:06:58,260 Se on. 1384 01:06:58,260 --> 01:07:03,580 Joten voimme palata totta, koska löysimme arvo listallamme. 1385 01:07:03,580 --> 01:07:06,738 Onko tapa Kävin läpi että järkeä kaikille? 1386 01:07:06,738 --> 01:07:08,760 OK. 1387 01:07:08,760 --> 01:07:11,670 Annan te ehkä, kuten, kolme, neljä minuuttia selvittää 1388 01:07:11,670 --> 01:07:13,270 Miten pseudokoodilla tämä. 1389 01:07:13,270 --> 01:07:18,070 >> Joten kuvitella Pyysin sinua kirjoittaa toiminto nimeltään haku () joka palasi 1390 01:07:18,070 --> 01:07:20,640 arvo, Boolen arvo, että oli totta tai false-- kuten, 1391 01:07:20,640 --> 01:07:22,970 totta, jos olet löytänyt arvo, false jos et. 1392 01:07:22,970 --> 01:07:25,230 Ja sitten olit hyväksyttiin arvo sinua 1393 01:07:25,230 --> 01:07:28,410 etsivät arvoiksi, joka on array-- OH, olen ehdottomasti laittaa 1394 01:07:28,410 --> 01:07:29,410 että väärässä paikassa. 1395 01:07:29,410 --> 01:07:29,580 OK. 1396 01:07:29,580 --> 01:07:31,829 Ainakin, että pitäisi olla ollut oikealle arvoja. 1397 01:07:31,829 --> 01:07:36,280 Ja sitten int n on numero elementtien että jono. 1398 01:07:36,280 --> 01:07:39,430 Miten te sitten yrittää sen pseudokoodilla että ongelma? 1399 01:07:39,430 --> 01:07:41,630 Annan sinulle kaverit kuten kolme minuuttia tehdä se. 1400 01:07:41,630 --> 01:08:00,137 1401 01:08:00,137 --> 01:08:02,595 Ei, mielestäni on olemassa only-- joo, siellä on yksi oikea täällä. 1402 01:08:02,595 --> 01:08:03,261 Yleisö: Voinko? 1403 01:08:03,261 --> 01:08:04,388 ANDI Peng: Joo, Sain sinut. 1404 01:08:04,388 --> 01:08:09,410 1405 01:08:09,410 --> 01:08:11,050 Onko se toimi? 1406 01:08:11,050 --> 01:08:12,290 OK, viileä. 1407 01:08:12,290 --> 01:10:43,590 1408 01:10:43,590 --> 01:10:44,720 >> OK. 1409 01:10:44,720 --> 01:10:47,630 Selvä kaverit, olemme menossa hillitä sitä. 1410 01:10:47,630 --> 01:10:49,730 OK. 1411 01:10:49,730 --> 01:10:54,020 Joten olettaa meillä tämän ihanan pikku array n arvoja sen. 1412 01:10:54,020 --> 01:10:55,170 En piirtää viivoja. 1413 01:10:55,170 --> 01:10:58,649 Mutta miten osaamme yrittää kirjoittaa tähän? 1414 01:10:58,649 --> 01:11:00,440 Onko kukaan halua antaa minulle ensimmäinen rivi? 1415 01:11:00,440 --> 01:11:02,814 Jos haluat antaa minulle ensimmäinen rivi tämän pseudokoodin. 1416 01:11:02,814 --> 01:11:06,563 1417 01:11:06,563 --> 01:11:08,430 >> Yleisö: [äänetön] 1418 01:11:08,430 --> 01:11:10,138 Yleisö: Sinun haluavat iteroida through-- 1419 01:11:10,138 --> 01:11:11,094 Yleisö: Vain toinen silmukka? 1420 01:11:11,094 --> 01:11:11,760 Yleisö: --for. 1421 01:11:11,760 --> 01:11:15,880 1422 01:11:15,880 --> 01:11:17,780 >> ANDI Peng: Eli tämä on vähän hankala. 1423 01:11:17,780 --> 01:11:23,130 Ajattele about-- haluat pitää käynnissä tämän silmukan 1424 01:11:23,130 --> 01:11:27,950 uudestaan ​​ja uudestaan ​​saakka? 1425 01:11:27,950 --> 01:11:30,819 >> Yleisö: Kunnes [äänetön] arvo on sama kuin arvo. 1426 01:11:30,819 --> 01:11:31,610 ANDI Peng: Aivan. 1427 01:11:31,610 --> 01:11:33,900 Joten voit itse vain write-- voimme jopa yksinkertaistaa sitä enemmän. 1428 01:11:33,900 --> 01:11:35,630 Voimme vain tehdä samalla silmukka, oikea? 1429 01:11:35,630 --> 01:11:39,380 Joten voit vain olla loop-- me tiedämme, että se on taas. 1430 01:11:39,380 --> 01:11:42,850 Mutta juuri nyt, aion sanoa "loop" - kautta mitä? 1431 01:11:42,850 --> 01:11:46,640 Silmukka until-- mikä on meidän päättyy ehto? 1432 01:11:46,640 --> 01:11:47,510 Mielestäni Kuulin sen. 1433 01:11:47,510 --> 01:11:48,530 Kuulin jonkun sanovan sen. 1434 01:11:48,530 --> 01:11:51,255 >> Yleisö: arvot vastaa keskellä. 1435 01:11:51,255 --> 01:11:52,255 ANDI Peng: Sano se uudelleen. 1436 01:11:52,255 --> 01:11:54,470 Yleisö: Tai, kunnes arvo etsit 1437 01:11:54,470 --> 01:11:58,470 sillä on yhtä suuri kuin keskimmäinen arvo. 1438 01:11:58,470 --> 01:12:00,280 >> ANDI Peng: Mitä jos se ei ole siellä? 1439 01:12:00,280 --> 01:12:03,113 Mitä jos arvo etsit sillä ei ole oikeastaan ​​tässä array? 1440 01:12:03,113 --> 01:12:05,890 Yleisö: Palaat 1. 1441 01:12:05,890 --> 01:12:08,850 >> ANDI Peng: Mutta mitä haluamme silmukka kunnes jos meillä on kunnossa? 1442 01:12:08,850 --> 01:12:09,350 Joo. 1443 01:12:09,350 --> 01:12:11,239 >> Yleisö: Kunnes on olemassa vain yksi arvo? 1444 01:12:11,239 --> 01:12:13,530 ANDI Peng: Voit silmukka until-- niin tiedät, että olet 1445 01:12:13,530 --> 01:12:15,714 menossa on max, eikö? 1446 01:12:15,714 --> 01:12:18,130 Ja te tiedätte, että olet menossa olla min arvo, eikö? 1447 01:12:18,130 --> 01:12:20,379 Koska myös, että on jotain Unohdin sanoa ennen, 1448 01:12:20,379 --> 01:12:22,640 että jotain, joka kriittinen binary haku 1449 01:12:22,640 --> 01:12:24,182 on, että joukko on jo järjestetty. 1450 01:12:24,182 --> 01:12:26,973 Koska ei ole mitään tapaa tehdä tämä jos he vain satunnaisesti arvoja. 1451 01:12:26,973 --> 01:12:29,190 Et tiedä, jos yksi on suurempi kuin muut, eikö? 1452 01:12:29,190 --> 01:12:32,720 >> Niin tiedät, että max ja teidän min tässä, eikö? 1453 01:12:32,720 --> 01:12:35,590 Jos aiot sopeutuvan max teidän min ja mid-- 1454 01:12:35,590 --> 01:12:38,470 Haluan vain olettaa sinun mid arvo on oikea here-- 1455 01:12:38,470 --> 01:12:43,910 aiot pohjimmiltaan silmukka kunnes minimi on 1456 01:12:43,910 --> 01:12:47,510 suunnilleen sama kuin korkein, oikealla, tai jos max ei ole sama kuin min. 1457 01:12:47,510 --> 01:12:48,040 Oikea? 1458 01:12:48,040 --> 01:12:51,340 Koska kun näin tapahtuu, te tiedätte, että olet lopulta osui sama arvo. 1459 01:12:51,340 --> 01:12:59,135 Joten haluat silmukan kunnes min on pienempi tai yhtä suuri kuin to-- oho, 1460 01:12:59,135 --> 01:13:01,510 ei pienempi kuin tai yhtä suuri kuin, toisinpäin around-- max. 1461 01:13:01,510 --> 01:13:15,110 1462 01:13:15,110 --> 01:13:16,160 >> Onko järkeä? 1463 01:13:16,160 --> 01:13:18,810 Otin muutaman yrittää saada tätä oikeutta. 1464 01:13:18,810 --> 01:13:21,869 Mutta silmukka kunnes korkein arvo on olennaisesti lähes vähemmän 1465 01:13:21,869 --> 01:13:23,410 tai yhtä suuri kuin teidän minimi, eikö? 1466 01:13:23,410 --> 01:13:25,201 Silloin tiedät että olet lähentyneet. 1467 01:13:25,201 --> 01:13:29,290 Yleisö: Koska korkeinta arvo on pienempi kuin pienin? 1468 01:13:29,290 --> 01:13:31,040 ANDI Peng: Jos pidät muuttaa sitä, mikä 1469 01:13:31,040 --> 01:13:32,380 me aiomme tekevän tässä. 1470 01:13:32,380 --> 01:13:33,460 Onko siinä järkeä? 1471 01:13:33,460 --> 01:13:35,750 Pienin ja suurin sallittu ovat vain kokonaislukuja, että olemme luultavasti 1472 01:13:35,750 --> 01:13:39,260 menossa haluavat luoda pitää Seuraa jossa etsimme. 1473 01:13:39,260 --> 01:13:41,790 Koska array olemassa riippumatta siitä, mitä teemme. 1474 01:13:41,790 --> 01:13:45,030 Kuten, emme ole oikeastaan ​​fyysisesti paloittelu pois array, eikö? 1475 01:13:45,030 --> 01:13:47,261 Olemme vain säätämällä jossa etsimme. 1476 01:13:47,261 --> 01:13:48,136 Onko siinä järkeä? 1477 01:13:48,136 --> 01:13:48,472 >> Yleisö: Joo. 1478 01:13:48,472 --> 01:13:49,110 >> ANDI Peng: OK. 1479 01:13:49,110 --> 01:13:57,090 Joten jos se on edellytys meidän silmukka, mitä me haluamme sisällä tämän silmukan? 1480 01:13:57,090 --> 01:13:58,700 Mitä me aiotaan haluavat tehdä? 1481 01:13:58,700 --> 01:14:02,390 Joten nyt, meillä Max ja min, oikea, 1482 01:14:02,390 --> 01:14:04,962 luultavasti luotu täällä jossain. 1483 01:14:04,962 --> 01:14:07,170 Aiomme luultavasti halua löytää keski, oikea? 1484 01:14:07,170 --> 01:14:08,450 Miten aiomme olla löytää keskellä? 1485 01:14:08,450 --> 01:14:09,491 Mikä mathematical-- 1486 01:14:09,491 --> 01:14:11,079 Yleisö: Max ja min jaettuna 2. 1487 01:14:11,079 --> 01:14:11,870 ANDI Peng: Aivan. 1488 01:14:11,870 --> 01:14:20,300 1489 01:14:20,300 --> 01:14:21,620 Onko siinä järkeä? 1490 01:14:21,620 --> 01:14:25,780 Ja te olette, miksi me ei vain use-- miksi teimme tämän 1491 01:14:25,780 --> 01:14:27,850 sen sijaan tehdä vain n jaetaan 2? 1492 01:14:27,850 --> 01:14:30,310 Se johtuu n on arvo joka tulee pysyä samana. 1493 01:14:30,310 --> 01:14:30,979 Oikea? 1494 01:14:30,979 --> 01:14:34,020 Mutta kuten me sopeutamme vähimmäis- ja enimmäisarvot, he aikovat muuttaa. 1495 01:14:34,020 --> 01:14:36,040 Ja sen seurauksena, meidän keski tulee muuttumaan liian. 1496 01:14:36,040 --> 01:14:37,873 Joten siksi haluamme tehdä tätä täällä. 1497 01:14:37,873 --> 01:14:38,510 OK. 1498 01:14:38,510 --> 01:14:41,600 >> Ja sitten, nyt olemme löytäneet our-- joo. 1499 01:14:41,600 --> 01:14:44,270 >> Yleisö: Just a quick question-- kun sanot min ja max, 1500 01:14:44,270 --> 01:14:46,410 me olettaen että se on jo järjestetty? 1501 01:14:46,410 --> 01:14:48,400 >> ANDI Peng: Joo, se on todella edellytys binäärihaku, 1502 01:14:48,400 --> 01:14:49,816 että sinun täytyy tietää se lajitellaan. 1503 01:14:49,816 --> 01:14:53,660 Minkä vuoksi lajitella, te kirjoitatte Harjoitus ennen binäärihakupuu. 1504 01:14:53,660 --> 01:14:55,910 OK. 1505 01:14:55,910 --> 01:14:58,876 Joten nyt me tiedämme, missä keskipiste on, mitä haluat tehdä täällä? 1506 01:14:58,876 --> 01:15:01,789 1507 01:15:01,789 --> 01:15:04,319 >> Yleisö: Haluamme verrata että toinen. 1508 01:15:04,319 --> 01:15:05,110 ANDI Peng: Aivan. 1509 01:15:05,110 --> 01:15:12,280 Joten aiot verrata keski- arvo, eikö? 1510 01:15:12,280 --> 01:15:14,900 1511 01:15:14,900 --> 01:15:18,670 Ja mitä se kertoo meitä, kun vertaamme? 1512 01:15:18,670 --> 01:15:22,226 Mitä haluamme tehdä jälkikäteen? 1513 01:15:22,226 --> 01:15:25,389 >> Yleisö: Jos arvo on suurempi kuin puolivälissä, haluamme leikata se pois. 1514 01:15:25,389 --> 01:15:26,180 ANDI Peng: Aivan. 1515 01:15:26,180 --> 01:15:33,940 Joten jos arvo on suurempi kuin puolivälissä, olemme 1516 01:15:33,940 --> 01:15:36,550 menossa haluavat muuttaa näitä minimi ja maxes, eikö? 1517 01:15:36,550 --> 01:15:38,980 Mitä haluamme muuttaa? 1518 01:15:38,980 --> 01:15:42,145 Joten jos me tiedämme arvo on jossain täällä, mitä sinä me muuttaa? 1519 01:15:42,145 --> 01:15:44,758 Haluamme muuttaa vähintään olla puolivälissä, eikö? 1520 01:15:44,758 --> 01:15:49,420 1521 01:15:49,420 --> 01:15:54,292 Ja sitten muuta, jos se on tässä puoli, mitä haluamme muuttaa? 1522 01:15:54,292 --> 01:15:55,306 >> Yleisö: Korkeimman. 1523 01:15:55,306 --> 01:15:55,972 ANDI Peng: Joo. 1524 01:15:55,972 --> 01:16:02,597 1525 01:16:02,597 --> 01:16:04,680 Ja sitten olet juuri menossa pitää silmukoiden, eikö? 1526 01:16:04,680 --> 01:16:08,920 Koska nyt, kun yksi iteraation kautta, sinulla max täällä. 1527 01:16:08,920 --> 01:16:10,760 Ja sitten voit laskea puolivälissä. 1528 01:16:10,760 --> 01:16:11,990 Ja sitten voit vertailla. 1529 01:16:11,990 --> 01:16:14,766 Ja aiot jatkaa kunnes min ja maxes 1530 01:16:14,766 --> 01:16:15,890 ovat olennaisesti lähentyneet. 1531 01:16:15,890 --> 01:16:17,890 Ja silloin te tiedätte, että olet osuma lopussa. 1532 01:16:17,890 --> 01:16:20,280 Ja joko olet löytänyt sen tai et ole tässä vaiheessa. 1533 01:16:20,280 --> 01:16:23,170 >> Onko tämä järkevää kaikille? 1534 01:16:23,170 --> 01:16:26,020 1535 01:16:26,020 --> 01:16:26,770 OK. 1536 01:16:26,770 --> 01:16:27,900 Tämä on aika tärkeä, koska sinulla on 1537 01:16:27,900 --> 01:16:29,760 kirjoittaa tämän koodissa tänä iltana. 1538 01:16:29,760 --> 01:16:32,660 Mutta teillä melko hyvä tunne siitä, mitä pitäisi tehdä, 1539 01:16:32,660 --> 01:16:34,051 mikä on hyvä. 1540 01:16:34,051 --> 01:16:34,550 OK. 1541 01:16:34,550 --> 01:16:38,840 Joten meillä noin seitsemän minuuttia jäljellä jakso. 1542 01:16:38,840 --> 01:16:43,170 Joten aiomme puhua tämä PSET että me voidaan tehdä. 1543 01:16:43,170 --> 01:16:46,410 Joten pset on jaettu kahtia. 1544 01:16:46,410 --> 01:16:50,230 Alkupuoliskolla liittyy täytäntöönpanosta löytää 1545 01:16:50,230 --> 01:16:54,210 jossa voit kirjoittaa lineaarinen haku, binary haku, ja lajittelualgoritmi. 1546 01:16:54,210 --> 01:16:56,690 >> Joten tämä on ensimmäinen aika PSET jossa 1547 01:16:56,690 --> 01:17:00,050 Annamme te mitä kutsutaan jakelu koodi, joka on koodi 1548 01:17:00,050 --> 01:17:02,740 että olemme ennalta kirjoitetun, mutta lähti juuri joitakin paloja pois 1549 01:17:02,740 --> 01:17:04,635 voit lopettaa kirjoittamisen. 1550 01:17:04,635 --> 01:17:07,510 Joten te, kun sinä katsot tätä koodi, saatat saada todella pelottaa. 1551 01:17:07,510 --> 01:17:08,630 Jos olet vain haluavat, Ahh, I eivät tiedä, mitä se on tekemässä, 1552 01:17:08,630 --> 01:17:11,670 En tiedä, kuten, että näyttää niin monimutkainen, Ahh, rentoutua. 1553 01:17:11,670 --> 01:17:12,170 Se on ok. 1554 01:17:12,170 --> 01:17:12,930 Lue spec. 1555 01:17:12,930 --> 01:17:16,920 Spec selittää sinulle täsmälleen mitä kaikki nämä ohjelmat tekevät. 1556 01:17:16,920 --> 01:17:20,560 >> Esimerkiksi, generate.c on ohjelma jotka tulevat teidän PSET. 1557 01:17:20,560 --> 01:17:24,060 Et itse tarvitse koskettaa sitä, mutta sinun pitäisi ymmärtää, mitä se tekee. 1558 01:17:24,060 --> 01:17:28,550 Ja generate.c, kaikki se tekee on joko tuottaa satunnaisia ​​numeroita 1559 01:17:28,550 --> 01:17:32,400 tai voit antaa sen siemen, kuten sovittu määrä, että se kestää, 1560 01:17:32,400 --> 01:17:34,140 ja se tuottaa enemmän numeroita. 1561 01:17:34,140 --> 01:17:37,170 Joten siellä erityisellä tavalla toteuttaa generate.c jossa 1562 01:17:37,170 --> 01:17:42,760 voit vain tehdä joukko numeroita voit testata muita menetelmiä. 1563 01:17:42,760 --> 01:17:45,900 >> Joten jos halusi, varten Esimerkiksi testata löytää, 1564 01:17:45,900 --> 01:17:48,970 mitä haluaisi ajaa generate.c, tuottaa joukko numeroita, 1565 01:17:48,970 --> 01:17:50,880 ja sitten ajaa auttajia toiminto. 1566 01:17:50,880 --> 01:17:53,930 Sinun auttajia toiminto on, jos olet todella fyysisesti koodausta. 1567 01:17:53,930 --> 01:17:59,330 Ja ajatella auttajia kuin kirjastotiedosto olet kirjallisesti että find soittaa. 1568 01:17:59,330 --> 01:18:02,950 Ja niin sisällä helpers.c, luultavasti do etsiminen ja lajittelu. 1569 01:18:02,950 --> 01:18:06,500 >> Ja sitten aiot olennaisesti vain laittaa ne kaikki yhdessä. 1570 01:18:06,500 --> 01:18:10,350 Spec kertoo miten laittaa että komentorivillä. 1571 01:18:10,350 --> 01:18:14,880 Ja voit testata, ei sinun lajitella ja etsiä toimivat. 1572 01:18:14,880 --> 01:18:15,870 Viileä. 1573 01:18:15,870 --> 01:18:18,720 Onko kukaan jo aloitettu ja kohdannut ongelmia tai kysymyksiä 1574 01:18:18,720 --> 01:18:20,520 heillä on oikeus nyt tämän? 1575 01:18:20,520 --> 01:18:21,020 OK. 1576 01:18:21,020 --> 01:18:21,476 >> Yleisö: Odota. 1577 01:18:21,476 --> 01:18:21,932 Minulla on kysymys. 1578 01:18:21,932 --> 01:18:22,844 >> ANDI Peng: Joo. 1579 01:18:22,844 --> 01:18:28,390 >> Yleisö: Aloin tehdä lineaarinen toimialalla helpers.c 1580 01:18:28,390 --> 01:18:29,670 ja se ei todellakaan toimi. 1581 01:18:29,670 --> 01:18:34,590 Mutta sitten myöhemmin, sain selville me vain täytyy poistaa se ja tehdä binary haku. 1582 01:18:34,590 --> 01:18:36,991 Joten se väliä, jos se ei toimi? 1583 01:18:36,991 --> 01:18:39,700 1584 01:18:39,700 --> 01:18:41,510 >> ANDI Peng: Lyhyt vastaus on ei. 1585 01:18:41,510 --> 01:18:42,642 Mutta koska olemme not-- 1586 01:18:42,642 --> 01:18:44,350 Yleisö: Mutta kenenkään todella tarkkailun. 1587 01:18:44,350 --> 01:18:46,058 ANDI Peng: Emme ole koskaan menossa katsomaan että. 1588 01:18:46,058 --> 01:18:49,590 Mutta todennäköisesti haluat tehdä Varmista hakua toimii. 1589 01:18:49,590 --> 01:18:51,700 Koska jos lineaarinen haku ei toimi, 1590 01:18:51,700 --> 01:18:54,410 niin mahdollisuudet ovat sinun binary haku ei tule toimimaan samoin. 1591 01:18:54,410 --> 01:18:56,646 Koska sinulla on samanlaisia logiikka molemmat. 1592 01:18:56,646 --> 01:18:58,020 Ja ei, se ei ole oikeastaan ​​väliä. 1593 01:18:58,020 --> 01:19:01,300 Joten ainoat voit kääntyä vuonna ovat lajitella ja binäärihakupuu. 1594 01:19:01,300 --> 01:19:02,490 Joo. 1595 01:19:02,490 --> 01:19:06,610 >> Ja myös, paljon lapset olivat yrittää koota helpers.c. 1596 01:19:06,610 --> 01:19:09,550 Et oikeastaan ​​sallittu tehdä niin, koska helpers.c 1597 01:19:09,550 --> 01:19:11,200 ei ole päätehtävä. 1598 01:19:11,200 --> 01:19:13,550 Ja niin sinun pitäisi vain olla todella kokoaminen 1599 01:19:13,550 --> 01:19:18,670 tuottaa ja löytää, koska löytää puhelut helpers.c ja toimintojen sisällä. 1600 01:19:18,670 --> 01:19:20,790 Niin että tekee virheenkorjaus kipu Butt. 1601 01:19:20,790 --> 01:19:22,422 Mutta se, mitä meidän täytyy tehdä. 1602 01:19:22,422 --> 01:19:23,880 Yleisö: Sinä vain tehdä kaikki, eikö? 1603 01:19:23,880 --> 01:19:27,290 ANDI Peng: Voit vain tehdä kaikki samoin, joo. 1604 01:19:27,290 --> 01:19:28,060 OK. 1605 01:19:28,060 --> 01:19:32,570 Niin, että se siitä, mitä PSET pyytää teitä kaikkia tekemään. 1606 01:19:32,570 --> 01:19:35,160 Jos sinulla on kysyttävää, ota vapaasti kysyä minulta jakson jälkeen. 1607 01:19:35,160 --> 01:19:37,580 Olen täällä, kuten, 20 minuuttia. 1608 01:19:37,580 --> 01:19:40,500 >> Ja joo, PSET n todellakaan ole niin paha. 1609 01:19:40,500 --> 01:19:41,680 Te pitäisi olla OK. 1610 01:19:41,680 --> 01:19:43,250 Nämä, seuraa vain ohjeita. 1611 01:19:43,250 --> 01:19:47,840 Kind of on tunne, loogisesti, mitä pitäisi tapahtua ja voit olla hieno. 1612 01:19:47,840 --> 01:19:48,690 Älä ole liian peloissaan. 1613 01:19:48,690 --> 01:19:50,220 Siellä on paljon koodia jo kirjoitettu siellä. 1614 01:19:50,220 --> 01:19:53,011 Älä uskalla jos et ymmärtää, mitä kaikki tämä tarkoittaa. 1615 01:19:53,011 --> 01:19:54,749 Jos se on paljon, se on täysin hieno. 1616 01:19:54,749 --> 01:19:55,790 Ja tulevat virka. 1617 01:19:55,790 --> 01:19:57,520 Autamme sinua katsomaan. 1618 01:19:57,520 --> 01:20:00,810 >> Yleisö: Kun ylimääräinen toiminnot, näytämmekö ne ylös? 1619 01:20:00,810 --> 01:20:03,417 >> ANDI Peng: Joo, ne ovat koodi. 1620 01:20:03,417 --> 01:20:05,750 Pelissä on 15, puolet se on jo kirjoitettu puolestasi. 1621 01:20:05,750 --> 01:20:09,310 Joten ne toiminnot jo koodi. 1622 01:20:09,310 --> 01:20:12,020 Jep. 1623 01:20:12,020 --> 01:20:12,520 Selvä. 1624 01:20:12,520 --> 01:20:14,000 No, onnea. 1625 01:20:14,000 --> 01:20:15,180 Se on inhottavaa päivä. 1626 01:20:15,180 --> 01:20:19,370 Joten toivottavasti te eivät ole kovin paha mieli pysyä sisällä ja koodausta. 1627 01:20:19,370 --> 01:20:22,133