1 00:00:00,000 --> 00:00:08,532 >> [Muusika mängib] 2 00:00:08,532 --> 00:00:12,060 >> ZAMYLA Chan: Esimene asi, mida võiks teadet leid on see, et meil on juba 3 00:00:12,060 --> 00:00:13,450 on kood kirjutatud meile. 4 00:00:13,450 --> 00:00:15,160 Seda nimetatakse jaotus koodi. 5 00:00:15,160 --> 00:00:18,000 Nii et me ei ole ainult kirjalikult oma koodi nullist enam. 6 00:00:18,000 --> 00:00:22,800 Pigem me täidame tühjad mõnes olemasoleva koodi. 7 00:00:22,800 --> 00:00:27,790 >> Find.c programm küsib numbrid täita heinakuhjas, otsib 8 00:00:27,790 --> 00:00:32,189 heinakuhjas kasutajale esitatud nõel, ja ta teeb seda, kutsudes sorteerida ning 9 00:00:32,189 --> 00:00:35,590 Otsingu funktsioonid määratletud aastal helpers.c. 10 00:00:35,590 --> 00:00:37,670 Nii find.c on kirjutatud juba. 11 00:00:37,670 --> 00:00:40,770 Sinu ülesanne on kirjutada abilised. 12 00:00:40,770 --> 00:00:41,870 >> Niisiis, mida me teeme? 13 00:00:41,870 --> 00:00:44,210 Me rakendamisel kaks ülesannet. 14 00:00:44,210 --> 00:00:49,030 Search, mis tagastab tõene kui väärtus leitakse heinakuhjas, tagasi 15 00:00:49,030 --> 00:00:51,370 false, kui väärtus on ei heinakuhjas. 16 00:00:51,370 --> 00:00:57,990 Ja siis me ka rakendatakse sort mis sordib massiivi nimetatakse väärtused. 17 00:00:57,990 --> 00:00:59,960 >> Teeme tegeleda otsing. 18 00:00:59,960 --> 00:01:04,560 Otsi praegu rakendatakse lineaarne otsida, kuid mida saate teha palju 19 00:01:04,560 --> 00:01:05,550 paremini. 20 00:01:05,550 --> 00:01:09,910 Linear otsing rakendatakse O n ajal, mis on üsna aeglane. 21 00:01:09,910 --> 00:01:13,850 Kuigi see võib otsida Suvalise loendi talle antud. 22 00:01:13,850 --> 00:01:20,130 Sinu ülesanne on viia ellu binaarne otsing, mis on otsa aeg O log n. 23 00:01:20,130 --> 00:01:21,130 See on päris kiire. 24 00:01:21,130 --> 00:01:23,170 >> Aga seal on klausel. 25 00:01:23,170 --> 00:01:27,600 Binary otsing vaid otsida läbi eelnevalt sorteeritud nimekirja. 26 00:01:27,600 --> 00:01:30,370 Miks see nii on? 27 00:01:30,370 --> 00:01:32,620 >> Noh vaatame näiteks. 28 00:01:32,620 --> 00:01:36,280 Kuna massiivi väärtusi, heinakuhjas, me otsima 29 00:01:36,280 --> 00:01:37,130 nõela. 30 00:01:37,130 --> 00:01:40,460 Ja selles näites täisarv kolm. 31 00:01:40,460 --> 00:01:44,130 Nii, et binaarne otsing toimib on see, me võrdleme keskel väärtus 32 00:01:44,130 --> 00:01:48,370 massiivi nõela meelega kuidas avasime telefoniraamat keskel 33 00:01:48,370 --> 00:01:50,660 lehekülje nädal null. 34 00:01:50,660 --> 00:01:54,650 >> Nii et pärast võrreldes keskmise väärtuse nõel, võite visata kas 35 00:01:54,650 --> 00:01:58,530 vasakule või paremale poole massiivi pingutades oma piire. 36 00:01:58,530 --> 00:02:03,390 Sel juhul, kuna kolm meie nõela on väiksem kui 10, keskväärtusena, 37 00:02:03,390 --> 00:02:05,990 seonduv õigus võib väheneda. 38 00:02:05,990 --> 00:02:08,400 Aga proovi teha oma piire nii range kui võimalik. 39 00:02:08,400 --> 00:02:11,630 Kui keset väärtus ei ole nõela siis sa tead, et sa ei pea 40 00:02:11,630 --> 00:02:13,010 lisada selle oma otsingut. 41 00:02:13,010 --> 00:02:17,310 Nii et sa oled õiges seotud ei pinguta otsi piire natukene rohkem, 42 00:02:17,310 --> 00:02:21,770 ja nii edasi ja nii edasi, kuni leiad nõela. 43 00:02:21,770 --> 00:02:23,480 >> Mis siis pseudokoodi välja näeb? 44 00:02:23,480 --> 00:02:28,420 Noh, kui me otsime veel läbi nimekirja ja veel elemente 45 00:02:28,420 --> 00:02:33,690 vaata, me keskel nimekirja ja võrrelda seda keset väärtust 46 00:02:33,690 --> 00:02:34,950 meie nõel. 47 00:02:34,950 --> 00:02:37,310 Kui nad võrdsed, siis see tähendab, et me oleme leidsin nõela ja suudame 48 00:02:37,310 --> 00:02:38,990 tagasi true. 49 00:02:38,990 --> 00:02:42,870 >> Vastasel juhul, kui nõel on alla keskel väärtus, siis see tähendab, et me 50 00:02:42,870 --> 00:02:47,280 ära visata paremal poolel, ja lihtsalt search vasakul massiiv. 51 00:02:47,280 --> 00:02:51,090 Vastasel juhul me kontrollime paremal pool massiivi. 52 00:02:51,090 --> 00:02:54,410 Ja lõpuks, kui sa ei ole üldse rohkem elemente vasakule otsida aga sa 53 00:02:54,410 --> 00:02:58,050 ei ole leidnud oma nõela veel, siis tagasi false sest nõel 54 00:02:58,050 --> 00:03:01,890 kindlasti ei ole heinakuhjas. 55 00:03:01,890 --> 00:03:05,270 >> Nüüd puhas asi see pseudokoodi aastal Kahendotsingupuu on, et see võib olla 56 00:03:05,270 --> 00:03:09,940 tõlgendada kas iteratiivne või rekursiivne rakendamine. 57 00:03:09,940 --> 00:03:13,810 Seega oleks rekursiivne kui sa helistasid otsingu funktsiooni otsing 58 00:03:13,810 --> 00:03:17,350 toimida kas pooles massiivi. 59 00:03:17,350 --> 00:03:21,030 Me katame rekursioon veidi hiljem muidugi, aga tean, et see on 60 00:03:21,030 --> 00:03:24,190 valik, kui soovite, et proovida. 61 00:03:24,190 --> 00:03:26,030 >> Nüüd vaatame sort. 62 00:03:26,030 --> 00:03:30,750 Sort võetakse massiivi ja täisarv n, mis on suuruse massiivi. 63 00:03:30,750 --> 00:03:34,030 Nüüd on mitmeid erinevaid kehvasti, ja saate vaadata mõned 64 00:03:34,030 --> 00:03:36,370 püksid demos ja selgitused. 65 00:03:36,370 --> 00:03:39,580 Tagasipöördumise tüüp meie funktsioon on tühine. 66 00:03:39,580 --> 00:03:43,580 See tähendab, et me ei lähe tagastama array sort. 67 00:03:43,580 --> 00:03:48,140 Me tegelikult muudame väga massiiv, mis oli läinud meile. 68 00:03:48,140 --> 00:03:52,290 >> Ja see on võimalik, sest massiivid on möödunud viitena C. Nüüd me 69 00:03:52,290 --> 00:03:55,290 vaata rohkem sellest hiljem, kuid oluline vahe möödaminnes 70 00:03:55,290 --> 00:03:59,340 midagi nagu täisarv ja mööduv massiiv, on see, et kui sa 71 00:03:59,340 --> 00:04:03,490 pass täisarv, C on lihtsalt läheb koopia teha, et täisarv ja liigu 72 00:04:03,490 --> 00:04:04,450 seda funktsiooni. 73 00:04:04,450 --> 00:04:08,530 Originaal muutuja ei muutu kui funktsioon on lõppenud. 74 00:04:08,530 --> 00:04:12,480 Reis massiivi, teiselt poolt, on see ei kavatse teha koopia ja sa 75 00:04:12,480 --> 00:04:17,910 tegelikult toimetamine väga massiiv ise. 76 00:04:17,910 --> 00:04:21,269 >> Nii üht tüüpi sort on valik sort. 77 00:04:21,269 --> 00:04:24,750 Valiku sort töötab alates aasta alguses, ja siis kinnitada, 78 00:04:24,750 --> 00:04:26,820 üle ja leida kõige väiksem element. 79 00:04:26,820 --> 00:04:30,710 Ja siis vaheta see väiksema elemendi esimene. 80 00:04:30,710 --> 00:04:34,360 Ja siis liikuda teise elemendi , Leida järgmise väikseim 81 00:04:34,360 --> 00:04:38,320 element ja seejärel vahetada, et koos teine ​​element massiivi sest 82 00:04:38,320 --> 00:04:41,100 Esimene element on juba järjestatud. 83 00:04:41,100 --> 00:04:45,370 Ja nii siis jätkub kõik element väljaselgitamisel väikseim 84 00:04:45,370 --> 00:04:47,690 väärtus ja vahetada see välja. 85 00:04:47,690 --> 00:04:53,460 >> Sest ma võrdub 0, kõige esimene element kuni n miinus 1, sa lähed, et võrrelda 86 00:04:53,460 --> 00:04:57,820 iga järgnev väärtus pärast seda ja leiavad indeksi minimaalne väärtus. 87 00:04:57,820 --> 00:05:02,520 Kui leiate minimaalse väärtuse indeksi saab vahetada, et väärtus massiivi 88 00:05:02,520 --> 00:05:05,930 miinimum ja array I. 89 00:05:05,930 --> 00:05:09,760 >> Teist tüüpi sort, mida saate rakendamiseks on mull sort. 90 00:05:09,760 --> 00:05:14,380 Nii mull omamoodi kordab üle nimekirja võrreldes külgnevate elementide ja 91 00:05:14,380 --> 00:05:17,720 vahetada elemente on vales järjekorras. 92 00:05:17,720 --> 00:05:22,380 Ja sel viisil, suurima elemendi tahe mull lõpuni. 93 00:05:22,380 --> 00:05:28,070 Ja nimekiri on sorteeritud kord enam elemendid on vahetatud. 94 00:05:28,070 --> 00:05:31,920 >> Nii et need on kaks näidet sort algoritme, mis saab rakendada 95 00:05:31,920 --> 00:05:33,230 Leia programm. 96 00:05:33,230 --> 00:05:37,350 Kui olete sorteerida ning olete teha otsing, sa oled valmis. 97 00:05:37,350 --> 00:05:39,720 Minu nimi on Zamyla ja see on CS50. 98 00:05:39,720 --> 00:05:46,987 >> [Muusika mängib]