1 00:00:00,000 --> 00:00:08,532 >> [MUSIC Playing] 2 00:00:08,532 --> 00:00:12,060 >> ZAMYLA Chan: Az első dolog, amit értesítést találni, hogy már 3 00:00:12,060 --> 00:00:13,450 már kódot írt nekünk. 4 00:00:13,450 --> 00:00:15,160 Ez az úgynevezett elosztási kód. 5 00:00:15,160 --> 00:00:18,000 Szóval nem csak írásban, a saját kódot a semmiből többé. 6 00:00:18,000 --> 00:00:22,800 Inkább mi kitöltésével üregek néhány már meglévő kódot. 7 00:00:22,800 --> 00:00:27,790 >> A beolvasása sikertelen program rákérdez a számok , hogy töltse ki a szénakazalban, megkeresi a 8 00:00:27,790 --> 00:00:32,189 szénaboglya a felhasználó benyújtott tű, és ez teszi ezt hívja a fajta és a 9 00:00:32,189 --> 00:00:35,590 keresés funkciók meghatározása A helpers.c. 10 00:00:35,590 --> 00:00:37,670 Tehát elérése sikertelen van írva már. 11 00:00:37,670 --> 00:00:40,770 Az Ön feladata, hogy írjon segítők. 12 00:00:40,770 --> 00:00:41,870 >> Szóval, mit csinálunk? 13 00:00:41,870 --> 00:00:44,210 Mi végrehajtása két funkciója van. 14 00:00:44,210 --> 00:00:49,030 Search, amely igazat ad vissza, ha az érték megtalálható a szénakazalban, visszatérő 15 00:00:49,030 --> 00:00:51,370 hamis, ha az érték nem a szénakazalban. 16 00:00:51,370 --> 00:00:57,990 És akkor mi is végrehajtási sort amely rendezi a tömb neve értékeket. 17 00:00:57,990 --> 00:00:59,960 >> Úgyhogy kezelni keresést. 18 00:00:59,960 --> 00:01:04,560 Keresés jelenleg megvalósításra lineáris keresés, de akkor sokat 19 00:01:04,560 --> 00:01:05,550 jobb annál. 20 00:01:05,550 --> 00:01:09,910 Lineáris keresés megvalósítható O n idő, ami elég lassú. 21 00:01:09,910 --> 00:01:13,850 Bár, ez lehet keresni minden lista adott hozzá. 22 00:01:13,850 --> 00:01:20,130 Az Ön feladata, hogy végre bináris keresés, amely a futási idő O log n. 23 00:01:20,130 --> 00:01:21,130 Ez elég gyors. 24 00:01:21,130 --> 00:01:23,170 >> De van egy kikötés. 25 00:01:23,170 --> 00:01:27,600 Bináris keresés csak keresni a előválogatva listákat. 26 00:01:27,600 --> 00:01:30,370 Miért van ez? 27 00:01:30,370 --> 00:01:32,620 >> Nos, nézzük meg egy példát. 28 00:01:32,620 --> 00:01:36,280 Mivel az értékek tömbjét, a szénakazalban, fogunk keresni 29 00:01:36,280 --> 00:01:37,130 egy tűt. 30 00:01:37,130 --> 00:01:40,460 És ebben a példában, Az egész három. 31 00:01:40,460 --> 00:01:44,130 Az út, hogy a bináris keresés működik, hogy a összehasonlítjuk a közép értéke 32 00:01:44,130 --> 00:01:48,370 A tömb a tű, ugyanúgy, mint, hogy hogyan nyitottunk egy telefonkönyv a középső 33 00:01:48,370 --> 00:01:50,660 oldal hét nulla. 34 00:01:50,660 --> 00:01:54,650 >> Tehát miután összehasonlítva a közép-értéket a tű, akkor dobja ki vagy a 35 00:01:54,650 --> 00:01:58,530 a bal vagy a jobb fele a tömb szigorításával a határokat. 36 00:01:58,530 --> 00:02:03,390 Ebben az esetben, mivel három, a tű, kevesebb, mint 10, a középső érték, 37 00:02:03,390 --> 00:02:05,990 jobbra kötött csökkentheti. 38 00:02:05,990 --> 00:02:08,400 De próbálja meg, hogy a határt szoros amennyire csak lehetséges. 39 00:02:08,400 --> 00:02:11,630 Ha a középső érték nem a tűt, akkor tudja, hogy nem kell 40 00:02:11,630 --> 00:02:13,010 tartalmazza azt a keresésben. 41 00:02:13,010 --> 00:02:17,310 Szóval igazad van kötve húzza meg a Keresés korlátok csak egy kicsit nagyobb, 42 00:02:17,310 --> 00:02:21,770 és így tovább és így tovább, amíg megtalálni a tűt. 43 00:02:21,770 --> 00:02:23,480 >> Mit is jelent a pszeudokód néz ki? 44 00:02:23,480 --> 00:02:28,420 Nos, míg mi még mindig keresi a a listát, és még elemek 45 00:02:28,420 --> 00:02:33,690 nézz vesszük a közepén a listán, és hasonlítsa össze a középső értéket 46 00:02:33,690 --> 00:02:34,950 a tű. 47 00:02:34,950 --> 00:02:37,310 Ha ők azonos, akkor ez azt jelenti, hogy már találta a tűt, és mi is 48 00:02:37,310 --> 00:02:38,990 vissza igaz. 49 00:02:38,990 --> 00:02:42,870 >> Ellenkező esetben, ha az kisebb, mint a tű a középső érték, akkor ez azt jelenti, 50 00:02:42,870 --> 00:02:47,280 eldobhatja a jobb felét, és csak keresés a bal oldalán a tömb. 51 00:02:47,280 --> 00:02:51,090 Ellenkező esetben, akkor keresni a jobb oldalán a tömb. 52 00:02:51,090 --> 00:02:54,410 És a végén, ha nincs több elem maradt keresni, de 53 00:02:54,410 --> 00:02:58,050 nem találtam a tűt még, akkor vissza hamis, mert a tű 54 00:02:58,050 --> 00:03:01,890 biztosan nem a szénakazalban. 55 00:03:01,890 --> 00:03:05,270 >> Most egy szép dolog ez pszeudokódja bináris keresés, hogy lehet 56 00:03:05,270 --> 00:03:09,940 értelmezhető vagy egy iteratív vagy rekurzív végrehajtás. 57 00:03:09,940 --> 00:03:13,810 Így lenne rekurzív, ha hívják A keresési funkció a keresési 58 00:03:13,810 --> 00:03:17,350 működni mindkét fele a tömb. 59 00:03:17,350 --> 00:03:21,030 Majd kiterjed a rekurzió egy kicsit később, a Természetesen, de tudom, hogy ez egy 60 00:03:21,030 --> 00:03:24,190 lehetőség, ha szeretne kipróbálni. 61 00:03:24,190 --> 00:03:26,030 >> Most nézzük meg a sort. 62 00:03:26,030 --> 00:03:30,750 Sort vesz egy tömb, és az egész n, ami a méret a tömb. 63 00:03:30,750 --> 00:03:34,030 Most vannak különböző típusú a fajta, és nézd meg néhány 64 00:03:34,030 --> 00:03:36,370 rövidnadrág bemutatók és magyarázatok. 65 00:03:36,370 --> 00:03:39,580 A visszatérési típus számára szortírozás érvénytelen. 66 00:03:39,580 --> 00:03:43,580 Tehát ez azt jelenti, hogy nem megyünk vissza minden tömb a sort. 67 00:03:43,580 --> 00:03:48,140 Mi valóban meg fog változni az igen tömb, amit át belénk. 68 00:03:48,140 --> 00:03:52,290 >> És ez azért lehetséges, mert a tömbök által elfogadott referencia C. Most majd 69 00:03:52,290 --> 00:03:55,290 még több erről később, de a lényeges különbség múló 70 00:03:55,290 --> 00:03:59,340 valami, mint egy egész és múló egy tömb, az, hogy ha 71 00:03:59,340 --> 00:04:03,490 át az egész, a C csak megy, másolatot készíteni, amely egész és adja át 72 00:04:03,490 --> 00:04:04,450 azt a funkciót. 73 00:04:04,450 --> 00:04:08,530 Az eredeti változót nem változik ha a funkció befejeződött. 74 00:04:08,530 --> 00:04:12,480 Egy sor, másrészt, ez nem megy, hogy egy példányt, és azt is megtudhatod 75 00:04:12,480 --> 00:04:17,910 valóban szerkesztése Nagyon tömböt. 76 00:04:17,910 --> 00:04:21,269 >> Tehát az egyik fajta rendezés a kiválasztás sort. 77 00:04:21,269 --> 00:04:24,750 A kiválasztás sort működik kezdve az elején, és akkor iterációkhoz 78 00:04:24,750 --> 00:04:26,820 át, és megtalálja a legkisebb elem. 79 00:04:26,820 --> 00:04:30,710 És akkor a csere, hogy a legkisebb elem az első. 80 00:04:30,710 --> 00:04:34,360 És akkor lépjen a második elem , Meg a következő kisebb 81 00:04:34,360 --> 00:04:38,320 elemet, majd a csere, hogy a a második elem a tömbben, mivel 82 00:04:38,320 --> 00:04:41,100 Az első elem már rendezve. 83 00:04:41,100 --> 00:04:45,370 És igen, akkor is minden elem azonosítása a legkisebb 84 00:04:45,370 --> 00:04:47,690 érték és csere ki. 85 00:04:47,690 --> 00:04:53,460 >> Mert értéke 0, az első elem n mínusz 1, fogsz összehasonlítani 86 00:04:53,460 --> 00:04:57,820 minden következő érték után és megtalálni az index a minimális értéket. 87 00:04:57,820 --> 00:05:02,520 Ha megtalálta a minimális érték index, lehet cserélni az érték a tömb 88 00:05:02,520 --> 00:05:05,930 minimum és array I. 89 00:05:05,930 --> 00:05:09,760 >> Egy másik típusú fajta, amit lehet munkagép buborék sort. 90 00:05:09,760 --> 00:05:14,380 Tehát bubble sort végighalad a listán összehasonlítva a szomszédos elemeket és 91 00:05:14,380 --> 00:05:17,720 csere az elemeket, amelyek vannak rossz sorrendben. 92 00:05:17,720 --> 00:05:22,380 És így, a legnagyobb elem majd buborék a végén. 93 00:05:22,380 --> 00:05:28,070 És a lista sorrendje egyszer nem több elemeket cserélték. 94 00:05:28,070 --> 00:05:31,920 >> Tehát azok két példa a sort algoritmusok, amit végre a 95 00:05:31,920 --> 00:05:33,230 a find programot. 96 00:05:33,230 --> 00:05:37,350 Miután befejeztük sort, és akkor már végzett keresés, akkor véged. 97 00:05:37,350 --> 00:05:39,720 A nevem Zamyla, és ez CS50. 98 00:05:39,720 --> 00:05:46,987 >> [MUSIC Playing]