1 00:00:00,000 --> 00:00:08,532 >> [Musiikki soi] 2 00:00:08,532 --> 00:00:12,060 >> ZAMYLA Chan: Ensimmäinen asia, saatat ilmoitus siitä löytää on se, että meillä on jo 3 00:00:12,060 --> 00:00:13,450 on koodi kirjoitettu meille. 4 00:00:13,450 --> 00:00:15,160 Tätä kutsutaan jakelu koodi. 5 00:00:15,160 --> 00:00:18,000 Joten emme vain kirjallisesti oman koodata tyhjästä enää. 6 00:00:18,000 --> 00:00:22,800 Pikemminkin olemme täyttämällä huokoset Joissakin ennestään koodi. 7 00:00:22,800 --> 00:00:27,790 >> Find.c ohjelma kysyy numerot täyttää heinäsuovasta, etsii 8 00:00:27,790 --> 00:00:32,189 heinäpaali varten käyttäjä toimitti neula, ja se tekee tämän soittamalla lajitella ja 9 00:00:32,189 --> 00:00:35,590 haku, tehtävät määritellään vuonna helpers.c. 10 00:00:35,590 --> 00:00:37,670 Joten find.c on kirjoitettu jo. 11 00:00:37,670 --> 00:00:40,770 Sinun tehtäväsi on kirjoittaa auttajia. 12 00:00:40,770 --> 00:00:41,870 >> Joten mitä me teemme? 13 00:00:41,870 --> 00:00:44,210 Olemme täytäntöön kaksi tehtävää. 14 00:00:44,210 --> 00:00:49,030 Haku, joka palauttaa true, jos arvo löytyy Heinäsuovan palaavat 15 00:00:49,030 --> 00:00:51,370 false jos arvo on ei heinäsuovasta. 16 00:00:51,370 --> 00:00:57,990 Ja sitten me toteuttaa myös lajitella joka järjestää taulukon nimeltään arvoja. 17 00:00:57,990 --> 00:00:59,960 >> Joten puuttua haku. 18 00:00:59,960 --> 00:01:04,560 Haku on tällä hetkellä toteutettu lineaarista hakua, mutta voit tehdä paljon 19 00:01:04,560 --> 00:01:05,550 parempaa. 20 00:01:05,550 --> 00:01:09,910 Lineaarinen haku on toteutettu O n: n ajan, mikä on varsin hidasta. 21 00:01:09,910 --> 00:01:13,850 Vaikka se voi etsiä listassa sille antaneet. 22 00:01:13,850 --> 00:01:20,130 Sinun tehtäväsi on toteuttaa binäärihaku, joka on ajoaika O log n. 23 00:01:20,130 --> 00:01:21,130 Se on melko nopeasti. 24 00:01:21,130 --> 00:01:23,170 >> Mutta on määräys. 25 00:01:23,170 --> 00:01:27,600 Binäärihaku hakea vain kautta valmiiksi lajiteltu luetteloita. 26 00:01:27,600 --> 00:01:30,370 Miksi näin? 27 00:01:30,370 --> 00:01:32,620 >> No katsotaanpa esimerkki. 28 00:01:32,620 --> 00:01:36,280 Ottaen huomioon arvomatriisin, heinäsuovasta, aiomme olla etsimässä 29 00:01:36,280 --> 00:01:37,130 neulaa. 30 00:01:37,130 --> 00:01:40,460 Ja tässä esimerkissä, kokonaisluku kolme. 31 00:01:40,460 --> 00:01:44,130 Siten, että binäärihaku toimii on, että vertaamme keskellä arvo 32 00:01:44,130 --> 00:01:48,370 array neula, aivan kuten miten avasimme puhelinluettelo keskelle 33 00:01:48,370 --> 00:01:50,660 sivu viikolla nolla. 34 00:01:50,660 --> 00:01:54,650 >> Niin sen jälkeen verrattiin keskisuuria arvoa neula, voit hylätä joko 35 00:01:54,650 --> 00:01:58,530 vasemmalle tai oikealle puolet array kiristämällä rajasi. 36 00:01:58,530 --> 00:02:03,390 Tässä tapauksessa, koska kolme, meidän neula, on vähemmän kuin 10, keskimmäinen arvo, 37 00:02:03,390 --> 00:02:05,990 oikea raja voi vähentää. 38 00:02:05,990 --> 00:02:08,400 Mutta yritä tehdä rajoja mahdollisimman tiukka. 39 00:02:08,400 --> 00:02:11,630 Jos keskimmäinen arvo ei ole neulaa, niin tiedät, että sinun ei tarvitse 40 00:02:11,630 --> 00:02:13,010 sisällyttää sen haun. 41 00:02:13,010 --> 00:02:17,310 Joten olet oikeassa sidottu voi kiristää haku bounds vain pikkuisen enemmän, 42 00:02:17,310 --> 00:02:21,770 ja niin edelleen ja niin edelleen, kunnes huomaat neulan. 43 00:02:21,770 --> 00:02:23,480 >> Joten mitä pseudokoodin näyttää? 44 00:02:23,480 --> 00:02:28,420 No kun olemme vielä silmäilyn luettelo ja vielä elementtejä 45 00:02:28,420 --> 00:02:33,690 katso, otamme keskellä luettelon, ja vertaa, että keski arvoa 46 00:02:33,690 --> 00:02:34,950 meidän neula. 47 00:02:34,950 --> 00:02:37,310 Jos he ovat yhtä, niin se tarkoittaa, olemme löysi neulan ja voimme 48 00:02:37,310 --> 00:02:38,990 return true. 49 00:02:38,990 --> 00:02:42,870 >> Muussa tapauksessa, jos neula on pienempi kuin keskimmäinen arvo, niin se tarkoittaa, me 50 00:02:42,870 --> 00:02:47,280 voi hävitä oikea puoli, ja vain etsi vasemmalla puolella jono. 51 00:02:47,280 --> 00:02:51,090 Muuten me etsiä oikea puoli array. 52 00:02:51,090 --> 00:02:54,410 Ja lopussa, jos sinulla ei ole mitään enemmän elementtejä vasemmalle etsiä mutta et 53 00:02:54,410 --> 00:02:58,050 ole löytänyt neulan vielä, niin olet palauttaa false, koska neula 54 00:02:58,050 --> 00:03:01,890 varmasti ei ole heinäsuovasta. 55 00:03:01,890 --> 00:03:05,270 >> Nyt siisti asia tässä pseudokoodina binary haku on, että se voi olla 56 00:03:05,270 --> 00:03:09,940 tulkitaan joko iteratiivinen tai rekursiivinen täytäntöönpano. 57 00:03:09,940 --> 00:03:13,810 Joten olisi rekursiivinen, jos olet soittanut hakutoiminto sisällä haku 58 00:03:13,810 --> 00:03:17,350 toimiakseen joko puolet array. 59 00:03:17,350 --> 00:03:21,030 Me kattaa rekursio vähän myöhemmin Tietenkin, mutta tiedän, että se on 60 00:03:21,030 --> 00:03:24,190 vaihtoehto, jos haluat kokeilla. 61 00:03:24,190 --> 00:03:26,030 >> Nyt katsokaamme tavallaan. 62 00:03:26,030 --> 00:03:30,750 Järjestä vie array ja kokonaisluku n, joka on koko jono. 63 00:03:30,750 --> 00:03:34,030 Nyt on olemassa erilaisia ​​erittäin lajittelee, ja voit katsoa joitakin 64 00:03:34,030 --> 00:03:36,370 shortsit demoja ja selityksiä. 65 00:03:36,370 --> 00:03:39,580 Palautuva meidän lajittelu on mitätön. 66 00:03:39,580 --> 00:03:43,580 Niin se tarkoittaa, että emme aio palauttamaan array lajitella. 67 00:03:43,580 --> 00:03:48,140 Olemme todella aikoo muuttaa hyvin array, joka johdettiin meille. 68 00:03:48,140 --> 00:03:52,290 >> Ja se on mahdollista, koska ryhmät ovat läpäissyt viitteeksi C. Nyt me 69 00:03:52,290 --> 00:03:55,290 Katso lisää tästä myöhemmin, mutta Olennainen ero ohimennen 70 00:03:55,290 --> 00:03:59,340 jokseenkin kokonaisluku ja kulkee array, on, että kun 71 00:03:59,340 --> 00:04:03,490 pass kokonaisluku, C on juuri menossa tehdä kopio, että kokonaisluku ja siirtää 72 00:04:03,490 --> 00:04:04,450 sen toiminnon. 73 00:04:04,450 --> 00:04:08,530 Alkuperäinen muuttuja ei muutu kun toiminto on valmis. 74 00:04:08,530 --> 00:04:12,480 Kun joukko, toisaalta, se on aio tehdä kopio, ja voit 75 00:04:12,480 --> 00:04:17,910 todella muokkaamalla hyvin array itse. 76 00:04:17,910 --> 00:04:21,269 >> Joten yksi tyyppi sort on valinta lajitella. 77 00:04:21,269 --> 00:04:24,750 Valinta lajitella toimii aloittamalla alussa, ja sitten kerrata 78 00:04:24,750 --> 00:04:26,820 yli ja löytää pienin alkio. 79 00:04:26,820 --> 00:04:30,710 Ja sitten vaihtaa, että pienin elementti, jossa ensimmäinen. 80 00:04:30,710 --> 00:04:34,360 Ja sitten siirtyä toiseen elementtiin , Löytää seuraavaksi pienin 81 00:04:34,360 --> 00:04:38,320 elementti, ja sitten vaihtaa että Toinen alkio, koska 82 00:04:38,320 --> 00:04:41,100 ensimmäinen elementti on jo järjestetty. 83 00:04:41,100 --> 00:04:45,370 Ja niin sitten jatkat jokaiselle elementti tunnistamisessa pienin 84 00:04:45,370 --> 00:04:47,690 arvon ja vaihtamalla sen ulos. 85 00:04:47,690 --> 00:04:53,460 >> Sillä minä ollessa 0, ensimmäinen elementti N miinus 1, olet menossa vertailla 86 00:04:53,460 --> 00:04:57,820 jokainen seuraava arvon jälkeen ja löytää indeksi on pienin arvo. 87 00:04:57,820 --> 00:05:02,520 Kun löydät minimiarvon indeksi, voit vaihtaa että arvo array 88 00:05:02,520 --> 00:05:05,930 vähimmäis-ja array I. 89 00:05:05,930 --> 00:05:09,760 >> Toinen tyyppi tavallaan, että voit täytäntöön on kupla tavallaan. 90 00:05:09,760 --> 00:05:14,380 Joten kupla lajitella iteroi lista vertaamalla vierekkäisten elementtien ja 91 00:05:14,380 --> 00:05:17,720 vaihtava elementtejä, jotka ovat väärässä järjestyksessä. 92 00:05:17,720 --> 00:05:22,380 Ja tällä tavalla, suurin osa tulee kupla loppuun. 93 00:05:22,380 --> 00:05:28,070 Ja luettelo on järjestetty kerran enää elementit ovat vaihtuneet. 94 00:05:28,070 --> 00:05:31,920 >> Joten ne ovat kaksi esimerkkiä sort algoritmeja, jotka voit toteuttaa 95 00:05:31,920 --> 00:05:33,230 Find Program. 96 00:05:33,230 --> 00:05:37,350 Kun olet lajitella ja olet tehty haku, olet valmis. 97 00:05:37,350 --> 00:05:39,720 Nimeni on Zamyla, ja tämä on CS50. 98 00:05:39,720 --> 00:05:46,987 >> [Musiikki soi]