1 00:00:00,000 --> 00:00:13,300 2 00:00:13,300 --> 00:00:15,010 >> Rob BOWDEN: Hi, mimi nina Rob. 3 00:00:15,010 --> 00:00:16,790 Je, sisi kuajiri search binary? 4 00:00:16,790 --> 00:00:18,770 Hebu kujua. 5 00:00:18,770 --> 00:00:23,400 Hivyo, kumbuka kwamba hii tafuta tunakwenda kutekeleza recursively. 6 00:00:23,400 --> 00:00:27,470 Unaweza pia kutekeleza search binary iteratively, hivyo kama wewe alifanya hivyo, 7 00:00:27,470 --> 00:00:29,280 kwamba kikamilifu faini. 8 00:00:29,280 --> 00:00:32,820 >> Sasa kwanza, hebu kumbuka nini vigezo search ni maana ya kuwa. 9 00:00:32,820 --> 00:00:36,120 Hapa, tunaona int thamani, ambayo ni wanatakiwa kuwa thamani user ni 10 00:00:36,120 --> 00:00:37,320 ajili ya kutafuta. 11 00:00:37,320 --> 00:00:40,800 Tunaona maadili int safu, ambayo ni safu ambayo tuko 12 00:00:40,800 --> 00:00:42,520 kwa ajili ya kutafuta thamani. 13 00:00:42,520 --> 00:00:45,602 Na tunaona int n, ambayo ni urefu wa safu yetu. 14 00:00:45,602 --> 00:00:47,410 >> Sasa, jambo la kwanza kwanza. 15 00:00:47,410 --> 00:00:51,350 Sisi kuangalia ili kuona kama n sawa na 0, katika kesi ambayo sisi kurudi uongo. 16 00:00:51,350 --> 00:00:54,770 Hiyo tu kusema kama tuna tupu safu, thamani ni wazi si katika 17 00:00:54,770 --> 00:00:57,860 safu tupu, ili tuweze kurudi uongo. 18 00:00:57,860 --> 00:01:01,250 >> Sasa, sisi kweli unataka kufanya binary search sehemu ya kutafuta binary. 19 00:01:01,250 --> 00:01:04,780 Kwa hiyo, tunataka kupata katikati kipengele cha safu hii. 20 00:01:04,780 --> 00:01:09,130 Hapa, tunasema katikati ni sawa na n kugawanywa na 2, tangu hiki katikati ni 21 00:01:09,130 --> 00:01:12,240 kwenda kuwa urefu wa safu yetu kugawanywa na 2. 22 00:01:12,240 --> 00:01:15,040 Sasa tunakwenda kuangalia kuona kama hiki katikati ni sawa na thamani sisi ni 23 00:01:15,040 --> 00:01:16,160 ajili ya kutafuta. 24 00:01:16,160 --> 00:01:21,030 Hivyo kama maadili katikati ni sawa na thamani, sisi anaweza kurudi kweli tangu sisi kupatikana 25 00:01:21,030 --> 00:01:22,810 thamani katika safu yetu. 26 00:01:22,810 --> 00:01:26,380 >> Lakini kama hiyo ilikuwa si ya kweli, sasa tunahitaji kufanya kujirudia 27 00:01:26,380 --> 00:01:27,840 hatua ya kutafuta binary. 28 00:01:27,840 --> 00:01:30,450 Sisi haja ya kutafuta ama kushoto wa safu au kwa 29 00:01:30,450 --> 00:01:32,320 katikati ya safu. 30 00:01:32,320 --> 00:01:39,280 Hivyo hapa, tunasema kama maadili katikati ni chini ya thamani, hiyo ina maana thamani kwamba 31 00:01:39,280 --> 00:01:41,350 ilikuwa kubwa zaidi kuliko katikati wa safu. 32 00:01:41,350 --> 00:01:45,790 Hivyo thamani lazima na haki ya hiki kwamba sisi tu inaonekana katika. 33 00:01:45,790 --> 00:01:48,090 >> Hivyo hapa, tunakwenda kutafuta recursively. 34 00:01:48,090 --> 00:01:50,320 Na tutaangalia nini sisi ni kupita hii katika pili. 35 00:01:50,320 --> 00:01:53,440 Lakini sisi ni kwenda kutafuta kwa haki ya hiki katikati. 36 00:01:53,440 --> 00:01:57,710 Na katika kesi nyingine, hiyo ina maana kwamba thamani ilikuwa chini ya katikati ya 37 00:01:57,710 --> 00:02:00,660 safu, na hivyo tunakwenda kutafuta upande wa kushoto. 38 00:02:00,660 --> 00:02:03,520 Sasa, kushoto ni kwenda kuwa kidogo rahisi kuangalia. 39 00:02:03,520 --> 00:02:07,770 Hivyo, tunaona hapa kwamba sisi ni recursively wito search ambapo kwanza 40 00:02:07,770 --> 00:02:10,120 Hoja ni kwamba, tena, thamani sisi ni kuangalia juu. 41 00:02:10,120 --> 00:02:14,970 Hoja ya pili ni kwenda kuwa safu kwamba tulikuwa kutafuta juu. 42 00:02:14,970 --> 00:02:17,090 Na hiki mwisho sasa ni katikati. 43 00:02:17,090 --> 00:02:21,650 Kumbuka parameter mwisho ni int wetu n, hivyo kwamba ni urefu wa safu yetu. 44 00:02:21,650 --> 00:02:25,310 >> Katika wito kujirudia kutafuta, sisi ni sasa kusema kwamba urefu wa 45 00:02:25,310 --> 00:02:27,230 safu ni katikati. 46 00:02:27,230 --> 00:02:32,900 Hivyo, kama safu yetu ilikuwa ya ukubwa 20 na sisi searched katika index 10, tangu katikati ni 47 00:02:32,900 --> 00:02:36,930 20 kugawanywa na 2, hiyo ina maana sisi ni kupita 10 kama mpya 48 00:02:36,930 --> 00:02:38,300 urefu wa safu yetu. 49 00:02:38,300 --> 00:02:41,910 Kumbuka kwamba wakati una safu urefu wa 10, hiyo ina maana halali 50 00:02:41,910 --> 00:02:45,450 mambo ni katika fahirisi 0 kupitia 9. 51 00:02:45,450 --> 00:02:50,120 Hivyo hii ni nini hasa tunataka bayana safu yetu updated - upande wa kushoto 52 00:02:50,120 --> 00:02:53,010 safu kutoka hiki katikati. 53 00:02:53,010 --> 00:02:55,710 >> Kwa hiyo, kuangalia kwa haki ni vigumu kidogo zaidi. 54 00:02:55,710 --> 00:03:00,170 Sasa kwanza, hebu fikiria urefu ya safu na haki ya 55 00:03:00,170 --> 00:03:01,240 katikati hiki. 56 00:03:01,240 --> 00:03:08,390 Hivyo, kama safu yetu ilikuwa ya ukubwa n, kisha safu mpya itakuwa ya ukubwa n minus 57 00:03:08,390 --> 00:03:10,140 minus katikati 1. 58 00:03:10,140 --> 00:03:12,530 Kwa hiyo, hebu fikiria ya n minus katikati. 59 00:03:12,530 --> 00:03:18,710 >> Tena, kama safu yalikuwa ya kipimo 20 na sisi kugawanya na 2 kupata katikati, 60 00:03:18,710 --> 00:03:23,540 hivyo katikati ni 10, kisha n minus katikati ni kwenda kutupa 10, hivyo 10 61 00:03:23,540 --> 00:03:25,330 mambo ya haki ya katikati. 62 00:03:25,330 --> 00:03:27,780 Lakini pia tuna minus hii 1, tangu sisi hawataki 63 00:03:27,780 --> 00:03:29,700 ni pamoja na katikati yenyewe. 64 00:03:29,700 --> 00:03:34,190 Hivyo n minus katikati minus 1 inatupa jumla ya idadi ya mambo ya haki 65 00:03:34,190 --> 00:03:36,800 ya katikati index katika safu. 66 00:03:36,800 --> 00:03:41,870 >> Sasa hapa, kumbuka kwamba katikati parameter ni maadili safu. 67 00:03:41,870 --> 00:03:46,180 Hivyo hapa, sisi ni kupita updated maadili safu. 68 00:03:46,180 --> 00:03:50,930 Hii maadili pamoja na katikati plus 1 ni kweli kusema recursively simu 69 00:03:50,930 --> 00:03:56,460 search, kupita katika safu mpya, ambapo kwamba safu mpya kuanza katikati 70 00:03:56,460 --> 00:03:59,370 pamoja na moja ya maadili yetu ya awali safu. 71 00:03:59,370 --> 00:04:05,400 >> syntax mbadala kwa ajili ya kwamba, sasa umeingia kuona kuyatumia, ni 72 00:04:05,400 --> 00:04:10,170 maadili Ampersand katikati pamoja na 1. 73 00:04:10,170 --> 00:04:17,149 Hivyo, kunyakua pepe ya katikati pamoja na moja ya kipengele cha maadili. 74 00:04:17,149 --> 00:04:23,690 >> Sasa, ikiwa hawakuridhishwa kubadilisha safu kama kwamba, 75 00:04:23,690 --> 00:04:28,900 inaweza pia kuwa kutekelezwa hii kwa kutumia kujirudia msaidizi kazi, ambapo 76 00:04:28,900 --> 00:04:31,680 kwamba msaidizi kazi inachukua hoja zaidi. 77 00:04:31,680 --> 00:04:36,610 Hivyo badala ya kuchukua tu thamani, safu, na ukubwa wa safu, 78 00:04:36,610 --> 00:04:42,315 msaidizi kazi inaweza kuchukua zaidi hoja, ikiwa ni pamoja na index chini 79 00:04:42,315 --> 00:04:45,280 kuwa wewe huduma ya juu katika safu na index ya juu kwamba huduma 80 00:04:45,280 --> 00:04:46,300 kuhusu safu. 81 00:04:46,300 --> 00:04:49,770 >> Na hivyo kuweka wimbo wa wote chini index na juu index, huna 82 00:04:49,770 --> 00:04:52,780 haja ya milele kurekebisha maadili ya awali safu. 83 00:04:52,780 --> 00:04:56,390 Unaweza tu kuendelea kutumia maadili safu. 84 00:04:56,390 --> 00:04:59,540 Lakini hapa, taarifa hatuna haja msaidizi kazi kwa muda mrefu kama sisi ni 85 00:04:59,540 --> 00:05:01,760 tayari kurekebisha awali maadili safu. 86 00:05:01,760 --> 00:05:05,020 Tuko tayari kupita katika updated maadili. 87 00:05:05,020 --> 00:05:09,140 >> Sasa, hatuwezi search binary juu ya safu kwamba ni zisizochambuliwa. 88 00:05:09,140 --> 00:05:12,220 Hivyo, hebu kupata hii namna. 89 00:05:12,220 --> 00:05:17,650 Sasa, taarifa aina hiyo ni miwili iliyopita vigezo int maadili, ambayo ni 90 00:05:17,650 --> 00:05:21,110 safu kwamba sisi ni kuchagua, na int n, ambayo ni urefu wa safu kwamba 91 00:05:21,110 --> 00:05:22,250 sisi ni kuchagua. 92 00:05:22,250 --> 00:05:24,840 Kwa hiyo, hapa tunataka kutekeleza algorithm kuchagua 93 00:05:24,840 --> 00:05:26,690 kwamba ni o ya n mraba. 94 00:05:26,690 --> 00:05:30,560 Unaweza kuchagua Bubble aina, uteuzi aina, au kuingizwa aina, au 95 00:05:30,560 --> 00:05:32,670 baadhi aina nyingine tuna si kuonekana katika darasa. 96 00:05:32,670 --> 00:05:36,380 Lakini hapa, tunakwenda kutumia uteuzi aina. 97 00:05:36,380 --> 00:05:40,030 >> Kwa hiyo, tunakwenda iterate juu ya safu nzima. 98 00:05:40,030 --> 00:05:44,360 Naam, hapa tunaona kwamba sisi ni iterating kutoka kwa 0 n minus 1. 99 00:05:44,360 --> 00:05:45,990 Kwa nini si njia yote hadi n? 100 00:05:45,990 --> 00:05:49,320 Naam, kama tumekuwa tayari yamepangwa kwanza n minus 1 vipengele, kisha 101 00:05:49,320 --> 00:05:54,420 hiki mwisho sana kile ambacho ni lazima kuwa tayari katika mahali sahihi, hivyo kuchagua juu ya 102 00:05:54,420 --> 00:05:56,520 safu nzima. 103 00:05:56,520 --> 00:05:58,770 >> Sasa, kumbuka jinsi uteuzi aina kazi. 104 00:05:58,770 --> 00:06:01,950 Sisi ni kwenda juu ya safu nzima kuangalia kwa thamani ya chini katika 105 00:06:01,950 --> 00:06:04,480 safu na fimbo kwamba mwanzoni. 106 00:06:04,480 --> 00:06:07,610 Kisha sisi ni kwenda kwa kipindi chote safu tena kuangalia kwa pili 107 00:06:07,610 --> 00:06:10,410 ndogo hiki, na fimbo kwamba katika nafasi ya pili katika 108 00:06:10,410 --> 00:06:12,100 safu, na kadhalika. 109 00:06:12,100 --> 00:06:14,330 Hivyo, kwamba ni nini hii ni kufanya. 110 00:06:14,330 --> 00:06:17,290 >> Hapa, sisi ni kuona kwamba sisi ni kuweka kiwango cha chini sasa 111 00:06:17,290 --> 00:06:20,030 thamani kwa i-th index. 112 00:06:20,030 --> 00:06:23,160 Kadhalika iteration kwanza, tunakwenda kufikiria thamani ya chini kuwa 113 00:06:23,160 --> 00:06:25,030 mwanzo wa safu yetu. 114 00:06:25,030 --> 00:06:28,500 Basi, tunakwenda iterate juu ya salio wa safu, kuangalia kwa 115 00:06:28,500 --> 00:06:31,870 kuona kama kuna mambo yoyote ndogo kuliko moja kwamba sisi ni sasa 116 00:06:31,870 --> 00:06:33,900 kuzingatia kiwango cha chini. 117 00:06:33,900 --> 00:06:38,840 >> Hivyo hapa, maadili j plus moja - hiyo ni kidogo kuliko kile sisi ni sasa 118 00:06:38,840 --> 00:06:40,380 kuzingatia kiwango cha chini. 119 00:06:40,380 --> 00:06:42,940 Kisha tunakwenda update nini tunafikiri ni kiwango cha chini kwa 120 00:06:42,940 --> 00:06:44,640 index j plus 1. 121 00:06:44,640 --> 00:06:48,540 Hivyo, kufanya kuwa katika safu nzima, na baada ya hii kwa kitanzi, kiwango cha chini 122 00:06:48,540 --> 00:06:53,160 lazima hiki kima cha chini kutoka i-th nafasi katika safu. 123 00:06:53,160 --> 00:06:57,350 >> Mara baada ya sisi na kwamba, tunaweza kubadilishana thamani ya chini ndani ya i-th nafasi 124 00:06:57,350 --> 00:06:58,230 katika safu. 125 00:06:58,230 --> 00:07:00,130 Hivyo hii ni kubadilishana ya kiwango. 126 00:07:00,130 --> 00:07:03,940 Sisi kuhifadhi katika thamani ya muda - i-th thamani katika safu - 127 00:07:03,940 --> 00:07:08,460 kuweka katika i-th thamani katika safu thamani kima cha chini ambayo ni huko, 128 00:07:08,460 --> 00:07:13,580 na kisha kuhifadhi nyuma katika ambapo thamani ya sasa kima cha chini cha kutumika kuwa 129 00:07:13,580 --> 00:07:16,460 i-th thamani katika safu, hivyo kwamba hatukuwa kupoteza yake. 130 00:07:16,460 --> 00:07:20,510 >> Kwa hiyo, ambayo inaendelea juu ya iteration ijayo. 131 00:07:20,510 --> 00:07:23,480 Tutaweza kuanza kuangalia kwa pili thamani ya chini na kuingiza kwamba katika 132 00:07:23,480 --> 00:07:24,590 pili ya msimamo. 133 00:07:24,590 --> 00:07:27,440 On iteration tatu, tutaweza kuangalia kwa thamani ya tatu chini na kuingiza 134 00:07:27,440 --> 00:07:31,550 kwamba katika nafasi ya tatu, na hivyo juu ya mpaka tuna safu sorted. 135 00:07:31,550 --> 00:07:33,820 Jina langu ni Rob, na hii mara uteuzi aina. 136 00:07:33,820 --> 00:07:39,456