1 00:00:00,000 --> 00:00:09,560 2 00:00:09,560 --> 00:00:13,120 >> ЗАМИЛА цхан: Прва ствар коју би могао Обавештење о налаза је да смо већ 3 00:00:13,120 --> 00:00:14,520 су код написан за нас. 4 00:00:14,520 --> 00:00:16,219 Ово се назива дистрибуција код. 5 00:00:16,219 --> 00:00:19,060 Дакле, ми не само писање наше више Код са нуле. 6 00:00:19,060 --> 00:00:23,870 Уместо тога, ми смо попуњавање празнина у неком већ постојећом шифром. 7 00:00:23,870 --> 00:00:28,860 >> Финд.ц Програм пита за бројеве да попуни пласту сена, тражи 8 00:00:28,860 --> 00:00:33,260 пласту сена за корисника подноси игле, и то чини овај позивом врсту и 9 00:00:33,260 --> 00:00:36,660 сеарцх, функције дефинисане у хелперс.ц. 10 00:00:36,660 --> 00:00:38,740 Дакле финд.ц је написано већ. 11 00:00:38,740 --> 00:00:41,840 Ваш посао је да пишем помагаче. 12 00:00:41,840 --> 00:00:42,940 >> Дакле, шта ми радимо? 13 00:00:42,940 --> 00:00:45,270 Ми спровођење две функције. 14 00:00:45,270 --> 00:00:50,110 Претрага, који враћа труе ако вредност се налази у пласту сена, враћа 15 00:00:50,110 --> 00:00:52,430 фалсе ако је вредност не у пласту сена. 16 00:00:52,430 --> 00:00:59,060 И онда смо такође спроводи сортирање, који сортира низ називом вредности. 17 00:00:59,060 --> 00:01:01,120 Па хајде да се позабаве претрагу. 18 00:01:01,120 --> 00:01:04,550 >> Тражи се тренутно спроводи као линеарну претрагу. 19 00:01:04,550 --> 00:01:06,620 Али можете да урадите много боље од тога. 20 00:01:06,620 --> 00:01:11,610 Линеарно претраживање се спроводи у О од н време, што је прилично споро, мада 21 00:01:11,610 --> 00:01:14,920 може да тражи било какву листу дато. 22 00:01:14,920 --> 00:01:21,190 Ваш посао је да спроведе бинарну претрагу, који је остао од времена О лог н. 23 00:01:21,190 --> 00:01:22,200 То је прилично брзо. 24 00:01:22,200 --> 00:01:24,240 >> Али постоји одредба. 25 00:01:24,240 --> 00:01:28,910 Бинарни претраживање може само тражење кроз унапред сортираних листама. 26 00:01:28,910 --> 00:01:31,450 Зашто је то тако? 27 00:01:31,450 --> 00:01:33,690 Па, погледајмо пример. 28 00:01:33,690 --> 00:01:37,350 Имајући у виду низ вредности, пласту сена, ћемо бити у потрази 29 00:01:37,350 --> 00:01:41,510 за игле, и у овом на пример, цео број 3.. 30 00:01:41,510 --> 00:01:45,220 >> Начин на који ради је бинарна претрага да упоредимо средњу вредност 31 00:01:45,220 --> 00:01:49,430 низ на игле, много ми се како отворили смо телефонски именик на средини 32 00:01:49,430 --> 00:01:51,720 страна у Недељи 0. 33 00:01:51,720 --> 00:01:55,710 Дакле, након поређења средњу вредност игла, можете одбаците или 34 00:01:55,710 --> 00:01:59,620 лево или десно половини низа пооштравањем своје границе. 35 00:01:59,620 --> 00:02:04,450 У овом случају, од 3, наша игла, је мање од 10, средња вредност, 36 00:02:04,450 --> 00:02:07,060 Право граница може смањити. 37 00:02:07,060 --> 00:02:09,470 >> Али покушајте да направите границе као чврсто могуће. 38 00:02:09,470 --> 00:02:12,690 Ако средња вредност није игла, онда знате да не морате да 39 00:02:12,690 --> 00:02:14,070 укључити га у претрагу. 40 00:02:14,070 --> 00:02:18,390 Дакле, ваше право везан може затегнути Претрага границе само мали мало више, 41 00:02:18,390 --> 00:02:22,840 и тако даље и тако даље, све док сте пронашли своју иглу. 42 00:02:22,840 --> 00:02:24,580 >> Дакле, шта псеудо код изгледа? 43 00:02:24,580 --> 00:02:28,980 Па, док смо још увек гледа кроз листа и даље имају 44 00:02:28,980 --> 00:02:33,540 елементи за изгледају у, узмемо средину листе и упоредите то 45 00:02:33,540 --> 00:02:36,020 средња вредност за наше уши. 46 00:02:36,020 --> 00:02:38,380 Ако су једнаки, онда то значи да смо нашао иглу, и можемо 47 00:02:38,380 --> 00:02:40,160 ретурн труе. 48 00:02:40,160 --> 00:02:43,940 >> У супротном, ако игла мање од средња вредност, онда значи да смо 49 00:02:43,940 --> 00:02:48,350 може одбацити праву половину и само Претраживач леву страну низа. 50 00:02:48,350 --> 00:02:51,860 У супротном, ми ћемо претрагу десна страна низа. 51 00:02:51,860 --> 00:02:55,470 И на крају, ако не имати било више елемената лева за претраживање, али вам 52 00:02:55,470 --> 00:02:58,030 нису пронашли своју иглу још, онда се вратите лажна. 53 00:02:58,030 --> 00:03:02,960 Зато игла дефинитивно није у пласту сена. 54 00:03:02,960 --> 00:03:06,200 >> Сада, један уредан ствар у вези овог псеудо код у бинарном потрази је да он може да 55 00:03:06,200 --> 00:03:11,000 тумачити као било итеративни или рекурзивно имплементација. 56 00:03:11,000 --> 00:03:14,900 Дакле, било би рекурзивна ако зове функција претраге у потрази 57 00:03:14,900 --> 00:03:18,400 функционисати на било половини низа. 58 00:03:18,400 --> 00:03:20,750 Ми ћемо покрити рекурзије мало касније у току. 59 00:03:20,750 --> 00:03:23,210 Али знам да је то опција ако желите да испробате. 60 00:03:23,210 --> 00:03:24,460