1 00:00:00,000 --> 00:00:13,300 2 00:00:13,300 --> 00:00:15,010 >> ROB BOWDEN: Kaixo, Rob naiz. 3 00:00:15,010 --> 00:00:16,790 Nola ez, bilaketa bitarra bat erabiltzen dugu? 4 00:00:16,790 --> 00:00:18,770 Jakin dezagun. 5 00:00:18,770 --> 00:00:23,400 Beraz, kontutan Bilaketa honek behar dugun errekurtsiboki ezartzeko. 6 00:00:23,400 --> 00:00:27,470 Era berean, ezin duzu bilaketa bitarra ezartzea iteratively, beraz, hori egin ezkero, 7 00:00:27,470 --> 00:00:29,280 primeran fina da. 8 00:00:29,280 --> 00:00:32,820 >> Orain lehen, dezagun gogoratzen zer bilaketa egiteko parametroak behar ekarri. 9 00:00:32,820 --> 00:00:36,120 Hemen, int balioa, hau da, ikusiko dugu ustezko balioa erabiltzailea da izan 10 00:00:36,120 --> 00:00:37,320 bilatuz. 11 00:00:37,320 --> 00:00:40,800 Du int balioak array, ikusiko dugu eta horrek array horretan gaude da 12 00:00:40,800 --> 00:00:42,520 balioa bilatuz. 13 00:00:42,520 --> 00:00:45,602 Eta ikusiko dugu int n, hau da, gure array luzera. 14 00:00:45,602 --> 00:00:47,410 >> Orain, lehenengo gauza lehen. 15 00:00:47,410 --> 00:00:51,350 N berdin 0 bada, ikusten den egiaztatu dugu kasu faltsua itzuliko gara. 16 00:00:51,350 --> 00:00:54,770 Hori besterik esaten huts bat badugu array, balio argi dago ez batean 17 00:00:54,770 --> 00:00:57,860 array hutsik eta, beraz, faltsua itzuliko ahal izango dugu. 18 00:00:57,860 --> 00:01:01,250 >> Orain, benetan bitarra egin nahi dugu bilaketa bilaketa bitarra parte. 19 00:01:01,250 --> 00:01:04,780 Beraz, erdian aurkitu nahi dugu array honen elementurik. 20 00:01:04,780 --> 00:01:09,130 Hemen, erdiko berdinen n banatzen esaten dugu 2, erdiko elementua da geroztik 21 00:01:09,130 --> 00:01:12,240 luzera izango da gure array 2 arabera banatuta. 22 00:01:12,240 --> 00:01:15,040 Orain ari gara ikusten egiaztatzeko gertatzen bada erdiko elementua balioa gaude berdinen 23 00:01:15,040 --> 00:01:16,160 bilatuz. 24 00:01:16,160 --> 00:01:21,030 Balioen erdian berdin hala bada balioa, dugu egia itzuli ahal izango dugu aurkitu zenetik 25 00:01:21,030 --> 00:01:22,810 gure array-balioa. 26 00:01:22,810 --> 00:01:26,380 >> Baina hori ez zen egia bada, orain errekurtsiboak egin behar dugu 27 00:01:26,380 --> 00:01:27,840 bilaketa bitarra pauso. 28 00:01:27,840 --> 00:01:30,450 Bai bilatu behar dugu array-edo utzi 29 00:01:30,450 --> 00:01:32,320 array-erdian. 30 00:01:32,320 --> 00:01:39,280 Beraz, hemen, erdian at balioak bada esaten dugu balioa baino txikiagoa, duten balioa esan nahi duen 31 00:01:39,280 --> 00:01:41,350 erdian baino handiagoa izan zen array. 32 00:01:41,350 --> 00:01:45,790 Beraz, balioa duten eskubidea izan behar du elementu hori begiratu besterik ez dugu. 33 00:01:45,790 --> 00:01:48,090 >> Beraz, hemen, goazela bilaketa errekurtsiboki. 34 00:01:48,090 --> 00:01:50,320 Eta zer pasatzen ari gara bilatuko dugu honetarako bigarren batean. 35 00:01:50,320 --> 00:01:53,440 Baina ari gara to bilatzeko joan erdiko elementua eskuinean. 36 00:01:53,440 --> 00:01:57,710 Eta beste kasuan, horrek esan nahi du balioa erdian baino txikiagoa da 37 00:01:57,710 --> 00:02:00,660 array, eta beraz, goazen ezkerrera bilatzeko. 38 00:02:00,660 --> 00:02:03,520 Orain, ezkerretik izango da pixka bat errazagoa begiratzen. 39 00:02:03,520 --> 00:02:07,770 Beraz, hemen ikusten dugun errekurtsiboki Oraindik dugu bilaketa deituz lehenengoa non 40 00:02:07,770 --> 00:02:10,120 argumentua da, berriro ere, balioa ari baino gehiago bilatzen dugu. 41 00:02:10,120 --> 00:02:14,970 Bigarren argumentua izango da izan array ziren dugun baino gehiago bilatzen. 42 00:02:14,970 --> 00:02:17,090 Eta azken elementua orain erdian dago. 43 00:02:17,090 --> 00:02:21,650 Gogoratu azken parametroa gure int da n, beraz, gure array luzera da. 44 00:02:21,650 --> 00:02:25,310 >> Dei errekurtsiboa bilatzeko asmoz, gaude orain esaten duten luzera 45 00:02:25,310 --> 00:02:27,230 array erdian dago. 46 00:02:27,230 --> 00:02:32,900 Beraz, gure array tamaina 20 eta dugu izan zen bada indizea 10 bilatuko, erdiko da geroztik 47 00:02:32,900 --> 00:02:36,930 20 2 arabera banatzen da, horrek esan nahi Oraindik dugu igaroz 10 berria bezala 48 00:02:36,930 --> 00:02:38,300 gure array luzera. 49 00:02:38,300 --> 00:02:41,910 Gogoratu array bat duzu luzera 10, horrek esan nahi du baliorik izango, 50 00:02:41,910 --> 00:02:45,450 elementuak 0 barrena 9 indizeak daude. 51 00:02:45,450 --> 00:02:50,120 Beraz, hau da zehazki zer nahi dugu ezkerretik - gure eguneratu array zehaztu 52 00:02:50,120 --> 00:02:53,010 erdiko elementu batetik array. 53 00:02:53,010 --> 00:02:55,710 >> Beraz, eskuinera begira dago pixka bat zailagoa. 54 00:02:55,710 --> 00:03:00,170 Orain lehen, kontuan hartu dezagun luzera eskuinean array of 55 00:03:00,170 --> 00:03:01,240 elementu erdian. 56 00:03:01,240 --> 00:03:08,390 Beraz, gure array tamaina n izan zen bada, orduan array berria egingo tamaina n ken izan 57 00:03:08,390 --> 00:03:10,140 erdiko ken 1. 58 00:03:10,140 --> 00:03:12,530 Beraz, dezagun uste n ken erdiko. 59 00:03:12,530 --> 00:03:18,710 >> Berriz ere, array tamaina 20ko balitz eta zatitzea 2 gehitu dugu erdian lortzeko, 60 00:03:18,710 --> 00:03:23,540 beraz erdian 10, orduan n ken erdian dago da digute 10, beraz, 10 joan 61 00:03:23,540 --> 00:03:25,330 erdiko eskuinean dagoen elementu. 62 00:03:25,330 --> 00:03:27,780 Baina, aldi berean dugu ken honetan 1, ez dugu geroztik nahi 63 00:03:27,780 --> 00:03:29,700 artean, erdian bera. 64 00:03:29,700 --> 00:03:34,190 Beraz, n ken erdiko ken 1 ematen digu guztira eskuinera elementu kopurua 65 00:03:34,190 --> 00:03:36,800 erdiko array indizearen. 66 00:03:36,800 --> 00:03:41,870 >> Orain hemen, gogoratu erdian parametroen balioak array da. 67 00:03:41,870 --> 00:03:46,180 Beraz, hemen, bat pasatzen ari gara balioak array eguneratu. 68 00:03:46,180 --> 00:03:50,930 Balore hau gehi erdiko gehi 1 da benetan errekurtsiboki deitzeko esanez 69 00:03:50,930 --> 00:03:56,460 bilaketa, array berri bat igaroz, non array berriak erdian hasten 70 00:03:56,460 --> 00:03:59,370 plus gure jatorrizko balioak array bat. 71 00:03:59,370 --> 00:04:05,400 >> Duten sintaxia ordezko bat, orain dela hasi duzun erakusleak ikusteko, da 72 00:04:05,400 --> 00:04:10,170 ampersand balioen erdiko gehi 1. 73 00:04:10,170 --> 00:04:17,149 Beraz, grab erdian-helbidea plus balioen elementu bat. 74 00:04:17,149 --> 00:04:23,690 >> Orain, ez zinen eroso bada horrelako array bat aldatzea, zuk 75 00:04:23,690 --> 00:04:28,900 izan ere ezarri dituzte hau erabiliz recursive helper funtzio bat, non 76 00:04:28,900 --> 00:04:31,680 helper funtzio hori hartzen argumentuak gehiago. 77 00:04:31,680 --> 00:04:36,610 Beraz ordez besterik balioa hartzen du, eta array, eta array-tamaina, 78 00:04:36,610 --> 00:04:42,315 helper funtzioa gehiago har lezake argumentuak, beheko indizea barne 79 00:04:42,315 --> 00:04:45,280 dela buruz zaintzen zenuke array eta goiko indizea duzu zaintzen 80 00:04:45,280 --> 00:04:46,300 array buruz. 81 00:04:46,300 --> 00:04:49,770 >> Eta, beraz, bai gero txikiagoa du jarraipena indize eta goi-indizea, ez duzu 82 00:04:49,770 --> 00:04:52,780 inoiz aldatu behar du jatorrizko balioak array. 83 00:04:52,780 --> 00:04:56,390 Besterik ez duzu jarraitu ahal erabili balioak array. 84 00:04:56,390 --> 00:04:59,540 Baina hemen, nabarituko ez dugu laguntzaile bat behar funtziona betiere gara gisa 85 00:04:59,540 --> 00:05:01,760 jatorrizko irudia eraldatzea prest balioak array. 86 00:05:01,760 --> 00:05:05,020 Pasatzeko prest gaude balioak eguneratu bat. 87 00:05:05,020 --> 00:05:09,140 >> Orain, ezin dugu gainetik bilaketa bitarra array bat hori da, ordenatu gabe. 88 00:05:09,140 --> 00:05:12,220 Beraz, dezagun hau ordenatuko daudelarik. 89 00:05:12,220 --> 00:05:17,650 Orain, konturatu moduko hori iragan da bi parametroak balio int, hau da, 90 00:05:17,650 --> 00:05:21,110 Array hori ordenatzeko ari gara, eta int n, horrek array luzera dela 91 00:05:21,110 --> 00:05:22,250 ordenatzeko ari gara. 92 00:05:22,250 --> 00:05:24,840 Beraz, hemen ezartzea nahi dugu ordenatzeko algoritmo bat 93 00:05:24,840 --> 00:05:26,690 Horren n o da karratu. 94 00:05:26,690 --> 00:05:30,560 Burbuila ordenatu, aukeraketa aukeratu ahal izango duzu ordenatu, edo txertatzeko moduko, edo 95 00:05:30,560 --> 00:05:32,670 beste nolabaiteko ez dugu klasean ikusi. 96 00:05:32,670 --> 00:05:36,380 Baina hemen, gabiltza joan aukeraketa sort erabili. 97 00:05:36,380 --> 00:05:40,030 >> Beraz, batetik bestera joateko goaz array osoa zehar. 98 00:05:40,030 --> 00:05:44,360 Beno, hemen errepikatzean ari garela ikusiko dugu ken 0tik n 1. 99 00:05:44,360 --> 00:05:45,990 Zergatik ez modu guztiak n arte? 100 00:05:45,990 --> 00:05:49,320 Beno, dagoeneko dugu ordenatuz gero lehenengoa n ken 1 elementu, ondoren, 101 00:05:49,320 --> 00:05:54,420 elementu oso azken zer dagoeneko izan behar du leku egokian, beraz baino gehiago sailkatzeko 102 00:05:54,420 --> 00:05:56,520 array osoa. 103 00:05:56,520 --> 00:05:58,770 >> Orain, gogoratu nola aukeraketa moduko lanak. 104 00:05:58,770 --> 00:06:01,950 Array osoa zehar joan goaz gutxieneko balioaren bila 105 00:06:01,950 --> 00:06:04,480 matrizearen eta makila duten hasieran. 106 00:06:04,480 --> 00:06:07,610 Ondoren gaude nahi osoa zehar joango array berriro bigarrenaren bila 107 00:06:07,610 --> 00:06:10,410 elementu txikiena, eta makila duten bigarren posizioan 108 00:06:10,410 --> 00:06:12,100 array, eta abar. 109 00:06:12,100 --> 00:06:14,330 Beraz, hori da hori egiten. 110 00:06:14,330 --> 00:06:17,290 >> Hemen, ikusten ari gara ari gara egungo gutxieneko ezarpena 111 00:06:17,290 --> 00:06:20,030 i-garren indizearen balio. 112 00:06:20,030 --> 00:06:23,160 Beraz, lehen iterazio on, goazen gutxieneko balioa izango kontuan hartu behar dira 113 00:06:23,160 --> 00:06:25,030 gure array hasieran. 114 00:06:25,030 --> 00:06:28,500 Ondoren, hemen baino gehiago batetik bestera goaz array, egiaztatzea gainerako 115 00:06:28,500 --> 00:06:31,870 ikusi han baino edozein elementu txikiagoa bada bata Une horretan gaude 116 00:06:31,870 --> 00:06:33,900 gutxieneko kontuan hartuta. 117 00:06:33,900 --> 00:06:38,840 >> Beraz, hemen, baloratzen j gehi bat - hori gaur egun zer garen baino gutxiago 118 00:06:38,840 --> 00:06:40,380 gutxieneko kontuan hartuta. 119 00:06:40,380 --> 00:06:42,940 Ondoren gaude eguneratzeko joan zer Uste dugu gutxienezko da 120 00:06:42,940 --> 00:06:44,640 j plus 1 indizea. 121 00:06:44,640 --> 00:06:48,540 Beraz, egin duten array osoan zehar, eta honen ostean begizta, gutxieneko 122 00:06:48,540 --> 00:06:53,160 gutxieneko elementu izan behar du aurrera i-garren array posizioa. 123 00:06:53,160 --> 00:06:57,350 >> Behin hori daukagu, trukatu ahal izango dugu gutxieneko i-garren posizioan sartu balioa 124 00:06:57,350 --> 00:06:58,230 array. 125 00:06:58,230 --> 00:07:00,130 Beraz, hau swap estandar bat da, besterik ez. 126 00:07:00,130 --> 00:07:03,940 Gordetzen dugu aldi baterako balio bat in - i-garren array balioa - 127 00:07:03,940 --> 00:07:08,460 i-garren array balioa jarri du gutxieneko balioa dagoela jabea da, 128 00:07:08,460 --> 00:07:13,580 eta ondoren gordetzeko atzera non sartu du oraingoa izan da erabili gutxieneko balioa 129 00:07:13,580 --> 00:07:16,460 array i-garren balioa, hain Ez garela galduko da. 130 00:07:16,460 --> 00:07:20,510 >> Beraz, horretan jarraitzen du hurrengo iterazio. 131 00:07:20,510 --> 00:07:23,480 Bigarrenaren bila hasiko gara gutxieneko balioa eta sartu zela sartu 132 00:07:23,480 --> 00:07:24,590 bigarren postua. 133 00:07:24,590 --> 00:07:27,440 Hirugarren iterazio on, bilatuko dugu egiteko Hirugarren gutxieneko balioa eta txertatze 134 00:07:27,440 --> 00:07:31,550 duten hirugarren postuan sartu da, eta ordenatuko array bat daukagu ​​arte. 135 00:07:31,550 --> 00:07:33,820 Nire izena Rob da, eta hau aukeraketa sort zen. 136 00:07:33,820 --> 00:07:39,456