1 00:00:00,000 --> 00:00:08,532 >> [Musika jotzen] 2 00:00:08,532 --> 00:00:12,060 >> ZAMYLA Chan: lehenengoa duzu agian gauza aurkikuntza buruzko abisua dela dugu dagoeneko 3 00:00:12,060 --> 00:00:13,450 dute kode guretzat idatzitako. 4 00:00:13,450 --> 00:00:15,160 Hau deitzen banaketa kodea. 5 00:00:15,160 --> 00:00:18,000 Beraz, ez ari gara gure kabuz idazten hutsetik kode jada. 6 00:00:18,000 --> 00:00:22,800 Baizik eta, hutsune horretan ari gara betez Aurretik dagoen kode batzuetan. 7 00:00:22,800 --> 00:00:27,790 >> Find.c programaren zenbakiak galderen Lastategi bete, bilatzen du 8 00:00:27,790 --> 00:00:32,189 Erabiltzaileak aurkeztu orratz bat haystack, eta hau ez da sort deituz eta egindako 9 00:00:32,189 --> 00:00:35,590 bilaketa, zehaztutako funtzioak helpers.c in. 10 00:00:35,590 --> 00:00:37,670 Beraz find.c dagoeneko idatzita dagoen. 11 00:00:37,670 --> 00:00:40,770 Zure lana da laguntzaile idazteko. 12 00:00:40,770 --> 00:00:41,870 >> Beraz, zer ari gara egiten? 13 00:00:41,870 --> 00:00:44,210 Oraindik bi funtzioak gauzatzeko dugu. 14 00:00:44,210 --> 00:00:49,030 Bilaketa itzultzen egia bada balio bat aurkituz Lastategi batean, itzuli 15 00:00:49,030 --> 00:00:51,370 faltsua balioa bada Ez haystack en. 16 00:00:51,370 --> 00:00:57,990 Eta gero zu ere sort ezartzeko dugu eta horrek balore izeneko array ordenatzen du. 17 00:00:57,990 --> 00:00:59,960 >> Hargatik aurre bilaketa. 18 00:00:59,960 --> 00:01:04,560 Search gaur egun gisa ezarri da bilaketa lineala, baina asko egin dezakezu 19 00:01:04,560 --> 00:01:05,550 hori baino hobea. 20 00:01:05,550 --> 00:01:09,910 Bilaketa lineala da O en garatuta n Denbora-, nahiko motela da. 21 00:01:09,910 --> 00:01:13,850 Arren, bilatu daiteke horri ematen zaion edozein zerrenda. 22 00:01:13,850 --> 00:01:20,130 Zure lana da, bilaketa bitarra ezartzeko, horrek denbora O log n exekutatu. 23 00:01:20,130 --> 00:01:21,130 Hori nahiko azkar. 24 00:01:21,130 --> 00:01:23,170 >> Baina han aipatzen da. 25 00:01:23,170 --> 00:01:27,600 Binary bilaketa bakarrik bilatu ahal izango aurrez ordenatuko zerrenden bidez. 26 00:01:27,600 --> 00:01:30,370 Zergatik da hori? 27 00:01:30,370 --> 00:01:32,620 >> Beno dezagun adibide bat bilatzeko. 28 00:01:32,620 --> 00:01:36,280 Balioak array bat ematen, haystack, dira bilatzen goaz 29 00:01:36,280 --> 00:01:37,130 orratz bat. 30 00:01:37,130 --> 00:01:40,460 Eta adibide honetan, osokoa hiru. 31 00:01:40,460 --> 00:01:44,130 Bide bilaketa bitarra duten lan egiten duten erdiko balioa alderatu dugu 32 00:01:44,130 --> 00:01:48,370 orratza array, askoz bezala nola phonebook bat ireki genuen erdialdera 33 00:01:48,370 --> 00:01:50,660 Aste zero orri. 34 00:01:50,660 --> 00:01:54,650 >> Beraz, erdiko balioa alderatuz ondoren orratza, bai baztertu dezakezu 35 00:01:54,650 --> 00:01:58,530 ezker edo eskuinera array erdia Zure mugetatik estutze. 36 00:01:58,530 --> 00:02:03,390 Kasu honetan, hiru urtetik, gure orratz, 10 baino gutxiago, erdiko balioa da, 37 00:02:03,390 --> 00:02:05,990 eskuinera doazen txikitzeko. 38 00:02:05,990 --> 00:02:08,400 Baina saiatu zure mugetatik egiteko ahalik eta estu. 39 00:02:08,400 --> 00:02:11,630 Erdiko balioa ez da orratz bada, orduan badakizu ez duzula behar 40 00:02:11,630 --> 00:02:13,010 edo zure bila. 41 00:02:13,010 --> 00:02:17,310 Beraz, eskubidea duzu doazen estutu ahal du bilaketa mugetatik apur txiki bat besterik ez gehiago, 42 00:02:17,310 --> 00:02:21,770 eta abar eta abar arte Zure orratz aurkituko duzu. 43 00:02:21,770 --> 00:02:23,480 >> Beraz, zer pseudocode itxura? 44 00:02:23,480 --> 00:02:28,420 Bidez, oraindik dugu bilatzen ari zaren ongi bitartean zerrendan eta oraindik elementu izan 45 00:02:28,420 --> 00:02:33,690 begiratu batean, zerrendaren erdian hartuko dugu, eta erdiko balioa duten konparatzeko 46 00:02:33,690 --> 00:02:34,950 gure orratza. 47 00:02:34,950 --> 00:02:37,310 Berdinak dira bada, orduan horrek esan nahi dugu orratza aurkitu eta ahal dugun 48 00:02:37,310 --> 00:02:38,990 egia itzuliko. 49 00:02:38,990 --> 00:02:42,870 >> Bestela, orratz hori baino gutxiago bada erdiko balioa, orduan horrek esan nahi dugu 50 00:02:42,870 --> 00:02:47,280 eskuineko erdia baztertu dezake, eta besterik bilatu ezker array alde. 51 00:02:47,280 --> 00:02:51,090 Bestela, bilatu beharko dugu eskuineko array alde. 52 00:02:51,090 --> 00:02:54,410 Eta amaieran, bada ez duzu inolako elementu gehiago utzi bilatzeko baina zuk 53 00:02:54,410 --> 00:02:58,050 ez dute zure orratz oraindik aurkitu, eta gero zuk itzultzeko faltsua delako orratza 54 00:02:58,050 --> 00:03:01,890 zalantzarik ez da haystack en. 55 00:03:01,890 --> 00:03:05,270 >> Orain pseudocode honi buruz gauza neat bilaketa bitarra dela izan daiteke 56 00:03:05,270 --> 00:03:09,940 bai iteratibo gisa interpretatu edo ezartzeko recursive. 57 00:03:09,940 --> 00:03:13,810 Beraz recursive litzateke deitzen baduzu búsqueda barruan funtzioa 58 00:03:13,810 --> 00:03:17,350 array-erdi banatan funtzionatu. 59 00:03:17,350 --> 00:03:21,030 Errekurtsibitate pixka bat geroago estaliko dugu noski, baina ez dakit bat dela 60 00:03:21,030 --> 00:03:24,190 Aukera batzuk frogatu nahi izanez gero. 61 00:03:24,190 --> 00:03:26,030 >> Orain dezagun moduko at. 62 00:03:26,030 --> 00:03:30,750 Sort array bat eta zenbaki oso hartzen du n, eta hori array-tamaina da. 63 00:03:30,750 --> 00:03:34,030 Orain daude, hainbat mota ezberdinak daude ordenatzen, eta batzuk begiratu dezakezu 64 00:03:34,030 --> 00:03:36,370 demoak eta azalpenak film laburrak. 65 00:03:36,370 --> 00:03:39,580 Bueltan motaren gure moduko funtzioa void da. 66 00:03:39,580 --> 00:03:43,580 Beraz, horrek esan nahi du ari ez garela joan edozein array itzultzeko moduko batetik. 67 00:03:43,580 --> 00:03:48,140 Benetan ari gara oso aldatuko array izan zen gurekin pasa. 68 00:03:48,140 --> 00:03:52,290 >> Eta hori posible da array daudelako C. erreferentzia gainditu orain dugu 69 00:03:52,290 --> 00:03:55,290 ikusten honi buruz gehiago geroago, baina joana arteko funtsezko aldea 70 00:03:55,290 --> 00:03:59,340 zenbaki oso bat eta joana antzeko zerbait array bat, dela duzunean 71 00:03:59,340 --> 00:04:03,490 zenbaki oso bat pasatzeko, C besterik ez da joan osokoa dela kopia bat egin eta gainditu 72 00:04:03,490 --> 00:04:04,450 funtzioa da. 73 00:04:04,450 --> 00:04:08,530 Jatorrizko aldagaia ez dela aldatuko behin funtzioa amaitu da. 74 00:04:08,530 --> 00:04:12,480 Array bat, beste alde batetik, ez da ez eta kopia bat egiteko, egiten duzu, 75 00:04:12,480 --> 00:04:17,910 benetan editatzen du Oso array bera. 76 00:04:17,910 --> 00:04:21,269 >> Beraz moduko mota bat da hautaketa ordena. 77 00:04:21,269 --> 00:04:24,750 Aukeraketa sort hasita lanak hasieran, eta, ondoren, batetik bestera joateko 78 00:04:24,750 --> 00:04:26,820 baino gehiago eta elementu txikiena aurkitzeko. 79 00:04:26,820 --> 00:04:30,710 Eta, ondoren trukatzeko duzun txikiena lehenengoa elementu. 80 00:04:30,710 --> 00:04:34,360 Eta, ondoren, eraman du bigarren elementu dizu , Aurkitu hurrengo txikiena 81 00:04:34,360 --> 00:04:38,320 elementua, eta ondoren trukatu duten batera array bigarren elementua delako 82 00:04:38,320 --> 00:04:41,100 lehenengo elementua dagoeneko ordenatuko da. 83 00:04:41,100 --> 00:04:45,370 Eta beraz, ondoren, behin jarraituko duzu txikiena identifikatzeko elementu 84 00:04:45,370 --> 00:04:47,690 balioa eta aldaketa. 85 00:04:47,690 --> 00:04:53,460 >> I funtzioak 0, lehen elementua n ken 1, ari alderatu zoazen 86 00:04:53,460 --> 00:04:57,820 hurrengo balioa bakoitza ondoren eta jakin gutxieneko balioa indizea. 87 00:04:57,820 --> 00:05:02,520 Behin gutxieneko balioa indizea aurkituko duzu, array balioa duten swap dezakezu 88 00:05:02,520 --> 00:05:05,930 gutxieneko eta array I. 89 00:05:05,930 --> 00:05:09,760 >> Moduko beste mota bat, ahal duzun ezartzeko burbuila moduko da. 90 00:05:09,760 --> 00:05:14,380 Beraz, burbuila moduko zerrendan zehar iterates ondoko elementu eta alderatzea 91 00:05:14,380 --> 00:05:17,720 elementuen aldaketa horrek okerreko ordenean daude. 92 00:05:17,720 --> 00:05:22,380 Eta modu horretan, elementu handiena burbuila amaieran. 93 00:05:22,380 --> 00:05:28,070 Eta zerrenda behin no gehiago ordenatuko da elementu izan trukatuko dira. 94 00:05:28,070 --> 00:05:31,920 >> Beraz, horiek dira bi moduko adibiderik duzula ezartzeko ahal izango algoritmoak 95 00:05:31,920 --> 00:05:33,230 Aurkikuntza programan. 96 00:05:33,230 --> 00:05:37,350 Moduko amaitu ondoren, eta duzun Egin bilaketa, zu amaitu. 97 00:05:37,350 --> 00:05:39,720 Nire izena Zamyla da, eta hau da CS50. 98 00:05:39,720 --> 00:05:46,987 >> [Musika jotzen]