1 00:00:00,000 --> 00:00:08,532 >> [Музика свира] 2 00:00:08,532 --> 00:00:12,060 >> ЗАМИЛА цхан: Прва ствар коју би могао Обавештење о налаза је да смо већ 3 00:00:12,060 --> 00:00:13,450 су код написан за нас. 4 00:00:13,450 --> 00:00:15,160 Ово се назива дистрибуција код. 5 00:00:15,160 --> 00:00:18,000 Дакле, ми не само писање наше више Код са нуле. 6 00:00:18,000 --> 00:00:22,800 Уместо тога, ми смо попуњавање празнина у неком већ постојећом шифром. 7 00:00:22,800 --> 00:00:27,790 >> Финд.ц Програм пита за бројеве да попуни пласту сена, тражи 8 00:00:27,790 --> 00:00:32,189 пласту сена за корисника подноси игле, и то чини овај позивом врсту и 9 00:00:32,189 --> 00:00:35,590 сеарцх, функције дефинисане у хелперс.ц. 10 00:00:35,590 --> 00:00:37,670 Дакле финд.ц је написано већ. 11 00:00:37,670 --> 00:00:40,770 Ваш посао је да пишем помагаче. 12 00:00:40,770 --> 00:00:41,870 >> Дакле, шта ми радимо? 13 00:00:41,870 --> 00:00:44,210 Ми спровођење две функције. 14 00:00:44,210 --> 00:00:49,030 Претрага, који враћа труе ако вредност се налази у пласту сена, враћа 15 00:00:49,030 --> 00:00:51,370 фалсе ако је вредност не у пласту сена. 16 00:00:51,370 --> 00:00:57,990 И онда смо такође спроводи врсту који сортира низ називом вредности. 17 00:00:57,990 --> 00:00:59,960 >> Па хајде да се позабаве претрагу. 18 00:00:59,960 --> 00:01:04,560 Тражи се тренутно спроводи као линеарно претраживање, али можете да урадите много 19 00:01:04,560 --> 00:01:05,550 боље од тога. 20 00:01:05,550 --> 00:01:09,910 Линеарно претраживање се спроводи у О од н времена, који је прилично спор. 21 00:01:09,910 --> 00:01:13,850 Мада, могуће је претражити сваки списак дати на њега. 22 00:01:13,850 --> 00:01:20,130 Ваш посао је да спроведе бинарну претрагу, који је остао од времена О лог н. 23 00:01:20,130 --> 00:01:21,130 То је прилично брзо. 24 00:01:21,130 --> 00:01:23,170 >> Али постоји одредба. 25 00:01:23,170 --> 00:01:27,600 Бинарни претраживање може само тражење кроз унапред сортираних листама. 26 00:01:27,600 --> 00:01:30,370 Зашто је то тако? 27 00:01:30,370 --> 00:01:32,620 >> Па погледајмо пример. 28 00:01:32,620 --> 00:01:36,280 Имајући у виду низ вредности, пласту сена, ћемо бити у потрази 29 00:01:36,280 --> 00:01:37,130 за иглу. 30 00:01:37,130 --> 00:01:40,460 И у овом примеру, цео број три. 31 00:01:40,460 --> 00:01:44,130 Начин на који ради је бинарна претрага да упоредимо средњу вредност 32 00:01:44,130 --> 00:01:48,370 низ на игле, много ми се како отворили смо именик за средину 33 00:01:48,370 --> 00:01:50,660 страна у недељу нула. 34 00:01:50,660 --> 00:01:54,650 >> Дакле, након поређења средњу вредност игла, можете одбаците или 35 00:01:54,650 --> 00:01:58,530 лево или десно половини низа пооштравањем своје границе. 36 00:01:58,530 --> 00:02:03,390 У овом случају, од три, наш игла, је мање од 10, средња вредност, 37 00:02:03,390 --> 00:02:05,990 Право граница може смањити. 38 00:02:05,990 --> 00:02:08,400 Али покушајте да направите границе као чврсто могуће. 39 00:02:08,400 --> 00:02:11,630 Ако средња вредност није игла, онда знате да не морате да 40 00:02:11,630 --> 00:02:13,010 укључити га у претрагу. 41 00:02:13,010 --> 00:02:17,310 Дакле, ти си у праву граница може затегнути Претрага границе само мали мало више, 42 00:02:17,310 --> 00:02:21,770 и тако даље и тако даље до сте пронашли своју иглу. 43 00:02:21,770 --> 00:02:23,480 >> Дакле, шта Псеудокод изгледа? 44 00:02:23,480 --> 00:02:28,420 Па док ми још увек гледа кроз листа и даље имају елементе 45 00:02:28,420 --> 00:02:33,690 изгледају у, узмемо средину листе, и упоредите ту средњу вредност 46 00:02:33,690 --> 00:02:34,950 наша игла. 47 00:02:34,950 --> 00:02:37,310 Ако су једнаки, онда то значи да смо нашао иглу и можемо 48 00:02:37,310 --> 00:02:38,990 ретурн труе. 49 00:02:38,990 --> 00:02:42,870 >> У супротном, ако игла мање од средња вредност, онда значи да смо 50 00:02:42,870 --> 00:02:47,280 може одбацити праву половину, а само Претраживач леву страну низа. 51 00:02:47,280 --> 00:02:51,090 У супротном, ми ћемо претрагу десна страна низа. 52 00:02:51,090 --> 00:02:54,410 И на крају, ако не имати било више елемената лева за претраживање, али вам 53 00:02:54,410 --> 00:02:58,050 нису пронашли своју иглу још, онда сте ретурн фалсе јер игла 54 00:02:58,050 --> 00:03:01,890 дефинитивно није у пласту сена. 55 00:03:01,890 --> 00:03:05,270 >> Сада уредан ствар у вези овог псеудокоду у бинарном потрази је да може да буде 56 00:03:05,270 --> 00:03:09,940 тумачити као било итеративни или рекурзивно имплементација. 57 00:03:09,940 --> 00:03:13,810 Дакле, било би рекурзивна ако зове функција претраге у потрази 58 00:03:13,810 --> 00:03:17,350 функционисати на било половини низа. 59 00:03:17,350 --> 00:03:21,030 Ми ћемо покрити рекурзија нешто касније у Наравно, али не знам да је то 60 00:03:21,030 --> 00:03:24,190 опција уколико желите да пробате. 61 00:03:24,190 --> 00:03:26,030 >> Сада ћемо погледати врсте. 62 00:03:26,030 --> 00:03:30,750 Сортирај узима низ и цео н, што је величина низа. 63 00:03:30,750 --> 00:03:34,030 Сада постоје различите различите врсте врста, а можете да погледате неке 64 00:03:34,030 --> 00:03:36,370 шорц за демонстрације и објашњења. 65 00:03:36,370 --> 00:03:39,580 Повратни тип за наше врста функција је празнина. 66 00:03:39,580 --> 00:03:43,580 То значи да не идемо да се врати било који низ од врсте. 67 00:03:43,580 --> 00:03:48,140 Ми у ствари ће се променити врло низ који је донет у нама. 68 00:03:48,140 --> 00:03:52,290 >> И то је могуће зато што су низови прошао по референци у Ц Сада ћемо 69 00:03:52,290 --> 00:03:55,290 види више о овоме касније, али Битна разлика између усвајања 70 00:03:55,290 --> 00:03:59,340 у нечему као што цео број и доношење у низу, је да када сте 71 00:03:59,340 --> 00:04:03,490 проћи у цео број, Ц је само да направите копију тог интегер и проћи 72 00:04:03,490 --> 00:04:04,450 га на функцију. 73 00:04:04,450 --> 00:04:08,530 Оригинални променљива неће се мењати када функција заврши. 74 00:04:08,530 --> 00:04:12,480 Са низом, с друге стране, то је неће да направи копију, а ви ћете 75 00:04:12,480 --> 00:04:17,910 заправо уређивање Сама веома низ. 76 00:04:17,910 --> 00:04:21,269 >> Дакле, једна врста врста је Избор врста. 77 00:04:21,269 --> 00:04:24,750 Избор Сортирај дела, са почетком у почетак, а онда поновити 78 00:04:24,750 --> 00:04:26,820 преко и наћи најмањи елемент. 79 00:04:26,820 --> 00:04:30,710 И онда ви мењате да најмањи елемент са првом. 80 00:04:30,710 --> 00:04:34,360 А онда сте прешли на други елемент , Наћи следећи најмањи 81 00:04:34,360 --> 00:04:38,320 елемент, а затим заменити да са Други елемент у низу, јер 82 00:04:38,320 --> 00:04:41,100 Први елемент је већ сортиран. 83 00:04:41,100 --> 00:04:45,370 И тако онда наставите за сваки елемент у идентификовању најмањи 84 00:04:45,370 --> 00:04:47,690 вредност и замене га. 85 00:04:47,690 --> 00:04:53,460 >> Јер једнако 0, први елемент до н минус 1, идете да упоредите 86 00:04:53,460 --> 00:04:57,820 свака наредна вредност након тога и наћи индекс минималне вредности. 87 00:04:57,820 --> 00:05:02,520 Када пронађете минимална вредност индекса, можете да мењате вредност низа 88 00:05:02,520 --> 00:05:05,930 минимална и низ И. 89 00:05:05,930 --> 00:05:09,760 >> Други тип врсте које можете имплементирати је мехур врста. 90 00:05:09,760 --> 00:05:14,380 Дакле мехур сортирање понавља преко листе упоређујући суседне елементе и 91 00:05:14,380 --> 00:05:17,720 замене елементе који су у погрешним редоследом. 92 00:05:17,720 --> 00:05:22,380 И на овај начин, највећи елеменат ће балон до краја. 93 00:05:22,380 --> 00:05:28,070 А листа је сортирана једном нема више елементи су заменили. 94 00:05:28,070 --> 00:05:31,920 >> Дакле, то су два примера врсте алгоритми које можете имплементирати за 95 00:05:31,920 --> 00:05:33,230 налаз програма. 96 00:05:33,230 --> 00:05:37,350 Када завршите врста, а ви сте уради претрагу, готов си. 97 00:05:37,350 --> 00:05:39,720 Моје име је Замила, а то је ЦС50. 98 00:05:39,720 --> 00:05:46,987 >> [Музика свира]