1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [Sehemu ya 3] [Less Starehe] 2 00:00:03,000 --> 00:00:05,000 >> [Nate Hardison] [Chuo Kikuu cha Harvard] 3 00:00:05,000 --> 00:00:08,000 >> [Hii ni CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:10,000 >> Haki zote, hebu kuanza. 5 00:00:10,000 --> 00:00:13,000 Karibu Wiki 4 ya CS50. 6 00:00:13,000 --> 00:00:19,000 Kama wewe guys kufungua kivinjari na kufungua pset 3, 7 00:00:19,000 --> 00:00:23,000 Kinyang'anyiro na CS50, tunakwenda kuanza kwenda 8 00:00:23,000 --> 00:00:26,000 kupitia sehemu ya maswali hapo. 9 00:00:26,000 --> 00:00:32,000 Tu kama wiki iliyopita, tutaweza kufanya kazi katika Spaces CS50, 10 00:00:32,000 --> 00:00:35,000 kama wewe utakuwa pia kuvuta kwamba up kama vile, 11 00:00:35,000 --> 00:00:43,000 na kama wewe kwenda mbele na kutembelea kiungo hiki kwamba mimi nimepata hapa juu kwa juu. 12 00:00:43,000 --> 00:00:45,000 Ni wakati wa kuanza. 13 00:00:45,000 --> 00:00:51,000 Sisi tumepewa hi yetu kidogo mpango hapa. Hakuna mambo. 14 00:00:51,000 --> 00:00:55,000 Moja ya mambo ya kwanza nataka kufanya na nyie leo ni kwenda juu ya ufumbuzi chache 15 00:00:55,000 --> 00:00:58,000 Tatizo kwa Set 1, aina ya ufumbuzi wa mfano, 16 00:00:58,000 --> 00:01:03,000 tu hivyo unaweza kupata kujisikia kwa aina gani ya wafanyakazi code ni kuandika, 17 00:01:03,000 --> 00:01:07,000 aina gani ya wanafunzi code nyingine ni kuandika, 18 00:01:07,000 --> 00:01:10,000 na kuwa na wewe kuangalia ni kwa sababu mimi najua ni weird 19 00:01:10,000 --> 00:01:14,000 wakati wewe kuwasilisha ufumbuzi wa tatizo kuweka na kupata maoni 20 00:01:14,000 --> 00:01:18,000 juu ya toleo yako mwenyewe, lakini wakati mwingine ni manufaa kwa kuona jinsi watu wengine alifanya hivyo, 21 00:01:18,000 --> 00:01:22,000 hasa wale ambao ni nice kuangalia. 22 00:01:22,000 --> 00:01:27,000 Kwa sehemu kubwa, nilikuwa kweli hisia na ufumbuzi kwamba wewe guys zinazozalishwa. 23 00:01:27,000 --> 00:01:31,000 Mimi bado kuanza kuangalia Tatizo 2S Set yako, lakini kama uko kitu kama kwanza, 24 00:01:31,000 --> 00:01:34,000 maana yoyote lakini mambo mema. 25 00:01:34,000 --> 00:01:40,000 >> Kama ukiangalia marekebisho yangu, hebu kuanza njia yote chini katika Revision 1, 26 00:01:40,000 --> 00:01:47,000 na sisi ni kwenda kuchukua haraka kuangalia ufumbuzi Mario. 27 00:01:47,000 --> 00:01:54,000 Kama wewe vuta hii juu, hizi programu kwamba sisi ni kwenda sasa ni sahihi. 28 00:01:54,000 --> 00:01:56,000 Kulikuwa na si usahihi masuala na matatizo haya, lakini badala yake, 29 00:01:56,000 --> 00:01:59,000 tunataka kuzungumza kidogo kuhusu masuala mbalimbali kubuni 30 00:01:59,000 --> 00:02:03,000 kwamba walikuwa kuwa kutumika hapa. 31 00:02:03,000 --> 00:02:08,000 Moja ya mambo ambayo ilikuwa ya kuvutia kuhusu ufumbuzi 32 00:02:08,000 --> 00:02:11,000 ni kwamba alitumia kujenga mpya iitwayo pound define, 33 00:02:11,000 --> 00:02:15,000 wakati mwingine pia inajulikana kama hash kufafanua. 34 00:02:15,000 --> 00:02:18,000 Hebu kuvuta hapa. 35 00:02:18,000 --> 00:02:24,000 # Define utapata kutoa majina kwa namba hizi katika programu yako. 36 00:02:24,000 --> 00:02:28,000 Katika kesi hiyo, urefu wa upeo wa piramidi katika Mario 37 00:02:28,000 --> 00:02:34,000 mara 23 na badala ya kuweka katika 23 yangu code- 38 00:02:34,000 --> 00:02:37,000 tunataka kutaja kwamba kama coding ngumu 23 - 39 00:02:37,000 --> 00:02:43,000 badala hii inatoa MAX_HEIGHT jina kwa idadi hiyo, 40 00:02:43,000 --> 00:02:48,000 hivyo kwamba chini hapa katika kitanzi yangu do-wakati 41 00:02:48,000 --> 00:02:51,000 unaweza kweli rejea MAX_HEIGHT 42 00:02:51,000 --> 00:02:55,000 badala ya kuweka idadi 23 in 43 00:02:55,000 --> 00:02:57,000 [Mwanafunzi] Nini faida ya kufanya hivyo? 44 00:02:57,000 --> 00:02:59,000 Hiyo ni swali kubwa. 45 00:02:59,000 --> 00:03:03,000 Moja ni readability. 46 00:03:03,000 --> 00:03:08,000 Faida ya kutumia hii # define ni readability. 47 00:03:08,000 --> 00:03:11,000 Wakati mimi nina kusoma hii code, naweza kuona nini kinaendelea. 48 00:03:11,000 --> 00:03:15,000 >> Mimi naona katika hali hii hapa kwamba sisi ni kupima 49 00:03:15,000 --> 00:03:19,000 kwa urefu kuwa <0, ambayo sisi inaweza kuwa pia defined 50 00:03:19,000 --> 00:03:22,000 kwa kuwa na urefu wa chini au urefu min. 51 00:03:22,000 --> 00:03:25,000 Faida nyingine ni kwamba naweza kisha kusoma mapumziko ya mstari wa kuona 52 00:03:25,000 --> 00:03:30,000 kwamba sisi ni kuangalia pia kuhakikisha kwamba urefu si mkuu zaidi kuliko urefu max, 53 00:03:30,000 --> 00:03:35,000 kwa sababu sisi ni kwenda kuendelea wakati urefu, ni mkubwa kuliko urefu max. 54 00:03:35,000 --> 00:03:40,000 Faida nyingine ni-kama mimi zoom nje kidogo hapa- 55 00:03:40,000 --> 00:03:49,000 kama mimi kukimbia mpango huu na mimi kukimbia, kusema, na 23 hivi sasa, 56 00:03:49,000 --> 00:03:52,000 itakuwa magazeti nje safu yote 23 tu kama hiyo. 57 00:03:52,000 --> 00:03:54,000 Lakini kusema mimi alitaka mabadiliko urefu max, 58 00:03:54,000 --> 00:03:57,000 na sasa nataka kikomo urefu upeo wa mapiramidi 59 00:03:57,000 --> 00:04:06,000 kuwa tu kusema-mtu, kwamba ilikuwa funky. 60 00:04:06,000 --> 00:04:14,000 # Pamoja , # define MAX_HEIGHT, 61 00:04:14,000 --> 00:04:18,000 na hebu sema tulitaka kuweka sawa na 10. 62 00:04:18,000 --> 00:04:22,000 Sasa katika hatua hii, wote mimi na kufanya ni kubadilisha katika hii eneo moja. 63 00:04:22,000 --> 00:04:27,000 Naweza recompile kificho, na sasa kama mimi kujaribu na aina katika 12, 64 00:04:27,000 --> 00:04:30,000 itakuwa kuchochea mimi tena. 65 00:04:30,000 --> 00:04:33,000 Katika kesi hiyo, tuko tu kutumia MAX_HEIGHT mara moja. 66 00:04:33,000 --> 00:04:37,000 Siyo kwamba kubwa ya Hassle kwenda katika 67 00:04:37,000 --> 00:04:40,000 na mabadiliko hayo katika kitanzi wakati ikiwa unahitaji. 68 00:04:40,000 --> 00:04:44,000 Lakini katika mipango ambapo wewe ni referencing huo uchawi idadi 69 00:04:44,000 --> 00:04:47,000 tena na tena, hii # define utaratibu ni kweli Handy 70 00:04:47,000 --> 00:04:52,000 kwa sababu wewe tu mabadiliko hayo mara moja kwa juu ya faili-ni kawaida ambapo wewe kuweka yao- 71 00:04:52,000 --> 00:04:57,000 na mabadiliko percolates kupitia mapumziko ya faili. 72 00:04:57,000 --> 00:05:02,000 >> Mambo mengine nilitaka kumbuka katika zoezi hili kwamba mimi walidhani inaonekana ni nzuri, 73 00:05:02,000 --> 00:05:05,000 moja ilikuwa kumtaja ya variables. 74 00:05:05,000 --> 00:05:14,000 Unaweza kuona hapa kwamba sisi tumepewa vigezo integer kuitwa mstari na kinachoitwa urefu. 75 00:05:14,000 --> 00:05:20,000 Spaces, hashes, inasaidia kufanya code kidogo zaidi someka, 76 00:05:20,000 --> 00:05:25,000 inafanya kidogo kueleweka zaidi ni nini kweli kinachoendelea. 77 00:05:25,000 --> 00:05:31,000 Hii ni tofauti kwa kutumia, wanasema, barua random 78 00:05:31,000 --> 00:05:35,000 au tu gobbledygook kabisa. 79 00:05:35,000 --> 00:05:39,000 Kitu ya mwisho mimi itabidi kumweka nje ni kwamba katika kwa tanzi, 80 00:05:39,000 --> 00:05:45,000 mara nyingi hizi vigezo iterator, hizi anajibu kuwa wewe kutumia katika yako kwa tanzi, 81 00:05:45,000 --> 00:05:51,000 ni ya kiwango na kawaida ya kuanza yao na ama i na kisha j na kisha k 82 00:05:51,000 --> 00:05:54,000 na kwenda juu kutoka huko kama unahitaji vigezo zaidi, 83 00:05:54,000 --> 00:05:56,000 na hii ni mkataba. 84 00:05:56,000 --> 00:05:58,000 Kuna kura ya mikataba. 85 00:05:58,000 --> 00:06:00,000 Ni inategemea lugha ya programu unatumia. 86 00:06:00,000 --> 00:06:04,000 Lakini katika C, sisi kawaida kuanza na i. 87 00:06:04,000 --> 00:06:08,000 Ni haina mantiki ya kutumia, kusema, au b 88 00:06:08,000 --> 00:06:13,000 kutegemea hali. 89 00:06:13,000 --> 00:06:15,000 Hiyo ni kwa ajili ya hii moja. 90 00:06:15,000 --> 00:06:25,000 Kama wewe sasa kuvuta Revision 2, utaona mwingine Mario, 91 00:06:25,000 --> 00:06:29,000 na moja hii ni sawa na mtu mwingine kwamba sisi tu kuona, 92 00:06:29,000 --> 00:06:32,000 lakini haina kitu aina ya baridi. 93 00:06:32,000 --> 00:06:38,000 Tukiangalia sehemu hii hapa hapa ndani ya ndani kwa kitanzi, 94 00:06:38,000 --> 00:06:44,000 wao ni kutumia baadhi crazy kuangalia syntax hapa haki katika mstari huu. 95 00:06:44,000 --> 00:06:47,000 Hii inaitwa operator ternary. 96 00:06:47,000 --> 00:06:53,000 Ni kauli kama mwingine kufupishwa katika mstari mmoja. 97 00:06:53,000 --> 00:06:57,000 hali hii ni sehemu ndani ya mabano. 98 00:06:57,000 --> 00:07:05,000 Ni sawa na kusema iwapo j urefu <- i - 1. 99 00:07:05,000 --> 00:07:10,000 Na kisha nini yaliyomo ya kwamba kama block itakuwa ni nafasi 100 00:07:10,000 --> 00:07:16,000 na kisha yaliyomo ya kile kingine itakuwa ni hii #. 101 00:07:16,000 --> 00:07:20,000 Ni kimsingi assigning nafasi ya kutofautiana hii. 102 00:07:20,000 --> 00:07:24,000 Ni kuweka nafasi katika maudhui ya variable kuzuia, 103 00:07:24,000 --> 00:07:29,000 kama hali hii ni alikutana, na kama hali si alikutana, 104 00:07:29,000 --> 00:07:32,000 kisha variable block anapata hii #. 105 00:07:32,000 --> 00:07:37,000 Na kisha, bila shaka, badala ya kujenga string nzima 106 00:07:37,000 --> 00:07:43,000 na uchapishaji kila kitu nje mwishoni ufumbuzi hii Prints ni nje moja tabia kwa wakati. 107 00:07:43,000 --> 00:07:48,000 Pretty cool. 108 00:07:48,000 --> 00:07:53,000 >> Mwingine michache ya mambo ya kuangalia. Tutaweza kuendelea na tamaa. 109 00:07:53,000 --> 00:07:58,000 Sasa kama sisi kuangalia tamaa, ufumbuzi huu kwanza 110 00:07:58,000 --> 00:08:00,000 anatumia hawa # amefafanua kidogo kabisa. 111 00:08:00,000 --> 00:08:06,000 Sisi tumepewa moja mara kwa mara hufafanuliwa kwa kila moja ya namba mbalimbali katika mpango huu. 112 00:08:06,000 --> 00:08:12,000 Sisi tumepewa moja kwa senti kwa dola, moja kwa robo, dimes, nickels, na pennies, 113 00:08:12,000 --> 00:08:15,000 na sasa kama sisi kitabu chini na kusoma kanuni, 114 00:08:15,000 --> 00:08:22,000 tunaweza kuona kiwango kufanya-wakati kitanzi uchapishaji kila kitu nje. 115 00:08:22,000 --> 00:08:25,000 Aina ya crux ya tatizo hili kwa kutambua kuwa 116 00:08:25,000 --> 00:08:29,000 unahitajika kubadili kuelea kwamba kusoma katika kutoka user integer 117 00:08:29,000 --> 00:08:32,000 kwa usahihi kufanya math, na hii ni kwa sababu 118 00:08:32,000 --> 00:08:36,000 na floating kumweka idadi, kama kuongelea katika hotuba kwa ufupi, 119 00:08:36,000 --> 00:08:41,000 kuwa si rahisi kwa usahihi kuwakilisha kila moja thamani kwenye mstari idadi 120 00:08:41,000 --> 00:08:47,000 sababu kuna maadili infinitely wengi kati ya 3 na, kusema, hata 3.1. 121 00:08:47,000 --> 00:08:54,000 Unaweza kuwa na 3.01 3.001 na 3.0001, na unaweza kuendelea. 122 00:08:54,000 --> 00:09:00,000 Ni zinageuka wakati wowote ni kufanya kazi na fedha, mara nyingi unataka kubadilisha 123 00:09:00,000 --> 00:09:05,000 ndani ya muundo integer hivyo kwamba wewe si kupoteza pennies na kwamba aina ya mambo ya ajabu. 124 00:09:05,000 --> 00:09:09,000 Kufanya hivyo na rounding ilikuwa muhimu. 125 00:09:09,000 --> 00:09:14,000 Ufumbuzi huu kutumika kikamilifu moja kwa moja, kubwa algorithm, 126 00:09:14,000 --> 00:09:17,000 ambayo decremented idadi ya senti zilizobaki, kwanza kwa robo, 127 00:09:17,000 --> 00:09:19,000 basi kwa dimes, basi kwa nickels, basi kwa pennies, 128 00:09:19,000 --> 00:09:24,000 na kuongeza kwa idadi ya sarafu ya kila wakati. 129 00:09:24,000 --> 00:09:31,000 >> Mwingine ufumbuzi kwamba tutaweza kuona, kama mimi zoom nje na kwenda kwa Revision 4, 130 00:09:31,000 --> 00:09:40,000 alikuwa mwanzo ni sawa lakini div badala kutumika na Mod 131 00:09:40,000 --> 00:09:44,000 haki zaidi ya hapa kwa hesabu ya senti. 132 00:09:44,000 --> 00:09:50,000 Hii, idadi ya robo ni sawa na idadi ya senti kugawanywa na 25, 133 00:09:50,000 --> 00:09:53,000 na sababu hii kazi ni kwa sababu sisi ni kufanya mgawanyo integer, 134 00:09:53,000 --> 00:09:58,000 hivyo ni Kasseringen yoyote salio. 135 00:09:58,000 --> 00:10:02,000 [Mwanafunzi] Je, tuna kutoa maoni search? 136 00:10:02,000 --> 00:10:05,000 Ni kweli inategemea. 137 00:10:05,000 --> 00:10:08,000 [Mwanafunzi] Wewe kutoa maoni zaidi ya code haki hapa. 138 00:10:08,000 --> 00:10:16,000 Yeah, na hivyo kuna rundo la tofauti falsafa juu ya hili. 139 00:10:16,000 --> 00:10:21,000 Falsafa yangu binafsi ni kwamba code yako ni kweli kweli, 140 00:10:21,000 --> 00:10:24,000 kama code yako ni nini kweli utekelezaji kwenye kompyuta, 141 00:10:24,000 --> 00:10:29,000 na hivyo code yako lazima kama someka kama inawezekana si necessitate kama maoni mengi. 142 00:10:29,000 --> 00:10:33,000 Alisema, wakati wewe ni kufanya mambo ambayo ni aina ya Tricky mathematically 143 00:10:33,000 --> 00:10:38,000 au algorithmically, ni nzuri kwa maoni wale ili uweze 144 00:10:38,000 --> 00:10:43,000 kuongeza dimension ya ziada, safu ya ziada anaye kusoma code yako. 145 00:10:43,000 --> 00:10:49,000 Katika hawa ufumbuzi, mara nyingi wao ni maoni zaidi sana kwa sababu tu 146 00:10:49,000 --> 00:10:52,000 tunataka kuwa na uwezo wa kusambaza yao na kuwa na watu kuwachukua 147 00:10:52,000 --> 00:10:56,000 na kuzisoma pretty urahisi. 148 00:10:56,000 --> 00:11:05,000 Lakini dhahiri, napenda kukubaliana kwamba hii ni nzito. 149 00:11:05,000 --> 00:11:07,000 [Mwanafunzi] Lakini wakati katika shaka, kwenda nzito? 150 00:11:07,000 --> 00:11:10,000 Wakati katika shaka, kwenda nzito. 151 00:11:10,000 --> 00:11:17,000 Baadhi ya watu wakati mwingine kusema kurudi 0 au kitu kama hicho. 152 00:11:17,000 --> 00:11:20,000 Nadhani hiyo ni maoni ridiculous. 153 00:11:20,000 --> 00:11:22,000 Wazi kwamba ni nini kinachofanyika. 154 00:11:22,000 --> 00:11:25,000 Sihitaji Kiingereza kuniambia kwamba. 155 00:11:25,000 --> 00:11:28,000 Wakati mwingine watu kuandika mambo kama "kthxbai!" 156 00:11:28,000 --> 00:11:32,000 Hiyo ni aina ya cute lakini pia si- 157 00:11:32,000 --> 00:11:35,000 si kwamba maamuzi tofauti kati ya pointi kutoa maoni au la. 158 00:11:35,000 --> 00:11:41,000 Aina wale wa maoni ni haki ya ha, ha. 159 00:11:41,000 --> 00:11:43,000 Cool. 160 00:11:43,000 --> 00:11:48,000 >> Katika hatua hii, hebu kuanza kazi Tatizo Set 3 sehemu ya maswali. 161 00:11:48,000 --> 00:11:52,000 Kama wewe guys kuvuta hii tena, 162 00:11:52,000 --> 00:11:55,000 kama na wiki iliyopita, sisi siyo kwenda kuangalia kaptula katika sehemu hii. 163 00:11:55,000 --> 00:12:00,000 Tutaweza basi guys kufanya hivyo kwa wakati yako mwenyewe na kuzungumza kuhusu maswali. 164 00:12:00,000 --> 00:12:05,000 Lakini sasa katika sehemu hii tunakwenda kutumia zaidi kidogo wakati 165 00:12:05,000 --> 00:12:11,000 kuzungumza juu ya chini ya misingi ya coding 166 00:12:11,000 --> 00:12:15,000 kama tulivyofanya wiki iliyopita, na badala yake, sisi ni kwenda kuzingatia zaidi juu ya 167 00:12:15,000 --> 00:12:22,000 kidogo zaidi ya nadharia, hivyo kuzungumza kuhusu tafuta binary na kisha kuchagua. 168 00:12:22,000 --> 00:12:27,000 Kutoka wale ambao wamekuwa kufuatia pamoja na hotuba, 169 00:12:27,000 --> 00:12:30,000 unaweza mtu nipe recap ya nini tofauti ni 170 00:12:30,000 --> 00:12:35,000 kati ya binary tafuta na tafuta linear? 171 00:12:35,000 --> 00:12:37,000 Nini kinaendelea? Uhakika. 172 00:12:37,000 --> 00:12:42,000 Linear tafuta utafutaji kupitia kila kipengele katika orodha Iliyopangwa 173 00:12:42,000 --> 00:12:45,000 moja kwa moja kwa moja kwa moja kwa moja, 174 00:12:45,000 --> 00:12:50,000 na kisha tafuta mgawanyiko orodha katika makundi 2, 175 00:12:50,000 --> 00:12:57,000 hundi kama thamani ya funguo kwamba wewe ni kwa ajili ya kutafuta ni zaidi au chini ya thamani midpoint 176 00:12:57,000 --> 00:13:00,000 kwamba wewe tu kupatikana, na kama ni chini ya, unaendelea na orodha ya chini 177 00:13:00,000 --> 00:13:03,000 na baadaye hugawanyika kuwa tena, anafanya kazi sawa 178 00:13:03,000 --> 00:13:07,000 njia yote chini mpaka anaona midpoint kuwa sawa na thamani yenyewe. 179 00:13:07,000 --> 00:13:10,000 Haki. 180 00:13:10,000 --> 00:13:12,000 >> Kwa nini sisi huduma? 181 00:13:12,000 --> 00:13:20,000 Kwa nini sisi majadiliano kuhusu tafuta binary dhidi tafuta linear? 182 00:13:20,000 --> 00:13:22,000 Yeah. 183 00:13:22,000 --> 00:13:24,000 Binary ni mengi kwa kasi, hivyo kama wewe mara mbili ya ukubwa wa tatizo 184 00:13:24,000 --> 00:13:27,000 inachukua hatua moja zaidi kuliko mara mbili kama wengi. 185 00:13:27,000 --> 00:13:29,000 Hasa. 186 00:13:29,000 --> 00:13:31,000 Hiyo ni jibu kubwa. 187 00:13:31,000 --> 00:13:36,000 Tafuta linear ni mengi sana kuangalia kipengele kimoja kwa wakati, 188 00:13:36,000 --> 00:13:39,000 na kama tuliona juu ya siku ya kwanza kabisa ya hotuba 189 00:13:39,000 --> 00:13:42,000 wakati Daudi akaenda kwa njia ya simu yake ya mfano kitabu 190 00:13:42,000 --> 00:13:45,000 na ripped nje ya ukurasa mmoja wa kitabu ya simu wakati 191 00:13:45,000 --> 00:13:47,000 na naendelea kufanya hivyo tena na tena na tena, 192 00:13:47,000 --> 00:13:51,000 itakavyo kumchukua wakati kweli kwa muda mrefu ili kupata mtu yeyote katika kitabu cha simu, 193 00:13:51,000 --> 00:13:55,000 isipokuwa, bila shaka, alikuwa anatafuta mtu katika mwanzo sana ya alfabeti. 194 00:13:55,000 --> 00:14:00,000 Pamoja na tafuta binary, unaweza kwenda mengi zaidi, 195 00:14:00,000 --> 00:14:05,000 na siyo tu mara mbili kwa haraka au mara 3 kwa haraka au mara 4 kwa haraka. 196 00:14:05,000 --> 00:14:13,000 Lakini tatizo anapata na ndogo ndogo na ndogo kwa kasi zaidi. 197 00:14:13,000 --> 00:14:17,000 Ili kuonyesha hili, tutaweza kuanza kuzungumza kuhusu nini kinaendelea 198 00:14:17,000 --> 00:14:21,000 wakati sisi kuandika binary tafuta. 199 00:14:21,000 --> 00:14:27,000 tatizo katika mkono ni kwamba kama nina safu ya idadi, 200 00:14:27,000 --> 00:14:40,000 kusema, 1, 2, 3, 5, 7, 23, 45, 78, 12,323, 201 00:14:40,000 --> 00:14:47,000 na kisha 9 kwa tani ya sekunde 0 baada ya hayo, 202 00:14:47,000 --> 00:14:52,000 tunataka kuwa na uwezo wa kufikiri kweli haraka ni nini katika 203 00:14:52,000 --> 00:14:57,000 hii safu ya namba. 204 00:14:57,000 --> 00:15:00,000 Najua hii inaonekana silly kidogo na kidogo contrived, 205 00:15:00,000 --> 00:15:02,000 kwa sababu sasa hivi ni. 206 00:15:02,000 --> 00:15:05,000 Tuna safu ambayo haina vipengele wengi sana katika hilo, 207 00:15:05,000 --> 00:15:08,000 na hata kama nikiwaulizeni moja ya wewe kufikiri kama au 208 00:15:08,000 --> 00:15:11,000 23 ni katika safu, unaweza kufanya hivyo pretty haraka 209 00:15:11,000 --> 00:15:16,000 tu na glancing saa hii na akiniambia ndiyo au hapana. 210 00:15:16,000 --> 00:15:20,000 Analog kufikiria ni kufikiria kama hii walikuwa, kusema, 211 00:15:20,000 --> 00:15:27,000 Excel spreadsheet na safu 10,000, safu 20,000. 212 00:15:27,000 --> 00:15:31,000 Bila shaka, unaweza kufanya F amri au F kudhibiti na kuangalia kitu juu. 213 00:15:31,000 --> 00:15:33,000 Unaweza pia kutumia filters na mambo ya utafutaji, 214 00:15:33,000 --> 00:15:37,000 lakini kama alikuwa na kuangalia njia ya kuwa mstari wa faili kwa mstari kwa mstari, 215 00:15:37,000 --> 00:15:40,000 itachukua muda mrefu wewe kupata hiyo. 216 00:15:40,000 --> 00:15:42,000 Ni aina ya kama katika mfano kitabu cha simu, pia, ambapo 217 00:15:42,000 --> 00:15:44,000 hakuna inaonekana kupitia ukurasa simu kitabu moja kwa wakati mmoja. 218 00:15:44,000 --> 00:15:47,000 Kawaida, hawana wazi kwa katikati, 219 00:15:47,000 --> 00:15:50,000 au katika kesi ya mengi ya vitabu simu na Mkwawa ambapo 220 00:15:50,000 --> 00:15:54,000 wewe kweli kuwa ni keyed juu ya barua ya kwanza, 221 00:15:54,000 --> 00:16:01,000 wewe flip kwa barua kwamba kwanza na kufungua na kuanza kwenda kupitia huko. 222 00:16:01,000 --> 00:16:03,000 >> Nikumbushe ya jina lako tena >> Sam.. 223 00:16:03,000 --> 00:16:05,000 Sam. 224 00:16:05,000 --> 00:16:11,000 Kama Sam akasema kuwa, linear tafuta mchakato ni kwenda kuwa kweli polepole, 225 00:16:11,000 --> 00:16:15,000 na badala yake na tafuta binary, njia hii kazi ni kwamba 226 00:16:15,000 --> 00:16:21,000 kila wakati sisi kwenda kwa iteration ya kompyuta yetu ya kutafuta, 227 00:16:21,000 --> 00:16:27,000 tunakwenda kugawanya orodha katika nusu, kimsingi, 228 00:16:27,000 --> 00:16:33,000 katika orodha mbili ndogo. 229 00:16:33,000 --> 00:16:39,000 Na kisha juu ya iteration ya pili ya kitanzi, tutaweza kugawanya tena 230 00:16:39,000 --> 00:16:44,000 katika orodha nyingine ndogo ndogo. 231 00:16:44,000 --> 00:16:48,000 Kama unaweza kuona, tatizo anaendelea kupata na ndogo ndogo 232 00:16:48,000 --> 00:16:55,000 kwa sababu sisi kuweka Kasseringen nusu ya orodha kila wakati. 233 00:16:55,000 --> 00:16:59,000 Jinsi gani hii Discard kazi? 234 00:16:59,000 --> 00:17:05,000 Tu kama ukumbusho, nini tunakwenda kufanya kama sisi walikuwa kompyuta 235 00:17:05,000 --> 00:17:11,000 na sisi tulikuwa, kusema, kwa ajili ya kutafuta namba 5 katika orodha hii 236 00:17:11,000 --> 00:17:15,000 ni kwamba tunataka kuchukua idadi katikati. 237 00:17:15,000 --> 00:17:26,000 Katikati ya orodha hii, kwa sababu kuna 1, 2, 3, 4, 5, 6, 7, 8, 9, idadi 10, 238 00:17:26,000 --> 00:17:32,000 tunatarajia kuchukua idadi aidha katika nafasi ya 4 au katika nafasi ya 5, 239 00:17:32,000 --> 00:17:38,000 na tunatarajia wito kwamba katikati ya orodha yetu. 240 00:17:38,000 --> 00:17:42,000 Pick idadi katikati. 241 00:17:42,000 --> 00:17:51,000 Kisha, kama Sam alisema, tutaweza mtihani kuona kama idadi hiyo ni sawa 242 00:17:51,000 --> 00:17:59,000 hadi kufikia idadi hiyo tunataka kupata au idadi yetu taka. 243 00:17:59,000 --> 00:18:06,000 Kama ni sawa, basi tumekuwa kupatikana. Sisi kushinda. 244 00:18:06,000 --> 00:18:12,000 Kama siyo sawa, basi kuna michache ya kesi. 245 00:18:12,000 --> 00:18:15,000 kesi mbili ni ama idadi ina kuwa kubwa kuliko idadi sisi ni kuangalia, 246 00:18:15,000 --> 00:18:19,000 au ni kidogo kuliko. 247 00:18:19,000 --> 00:18:25,000 Kama ni kubwa zaidi, sisi hoja ya kulia. 248 00:18:25,000 --> 00:18:33,000 Na kama ni kidogo, tunakwenda kwenye kushoto. 249 00:18:33,000 --> 00:18:41,000 Na kisha sisi kurudia tena mchakato mzima 250 00:18:41,000 --> 00:18:48,000 juu ya aidha nusu ya kulia au kushoto nusu ya orodha. 251 00:18:48,000 --> 00:18:51,000 >> Tatizo la kwanza katika sehemu ya leo ni kufikiri 252 00:18:51,000 --> 00:18:55,000 jinsi gani tunaweza kweli kuanza kueleza hii katika code C. 253 00:18:55,000 --> 00:18:58,000 Sisi tumepewa pseudocode hapa. 254 00:18:58,000 --> 00:19:04,000 Nini tutaweza kuanza kufanya ni mimi itabidi kuvuta up brand-mpya nafasi, 255 00:19:04,000 --> 00:19:09,000 kuokoa hii marekebisho hivyo kwamba tuna maelezo haya kwa ajili ya baadaye, 256 00:19:09,000 --> 00:19:20,000 tutaweza kufuta haya yote, na kisha nakala na kuweka kutoka kuweka tatizo 257 00:19:20,000 --> 00:19:26,000 habari hii katika maeneo yetu, na hopefully hii haina kuvunja. 258 00:19:26,000 --> 00:19:28,000 Perfect. 259 00:19:28,000 --> 00:19:33,000 Kama wewe guys wote kufanya hivyo, nakala na kuweka kanuni hii katika nafasi yako mpya, 260 00:19:33,000 --> 00:19:43,000 katika moja tupu. 261 00:19:43,000 --> 00:19:47,000 Hebu jaribu Daniel. Kama wewe kukusanya na kukimbia katika mpango huu, gani kazi? 262 00:19:47,000 --> 00:19:49,000 No >> Nini ni kusema? 263 00:19:49,000 --> 00:19:53,000 Ni anasema kudhibiti fika mwisho wa kazi zisizo utupu. 264 00:19:53,000 --> 00:19:55,000 Yeah, hivyo basi mimi kujaribu mbio. 265 00:19:55,000 --> 00:19:59,000 Je, guys kuonekana huu kabla? Unajua nini maana ya hii? 266 00:19:59,000 --> 00:20:01,000 Okay, hebu mchambue hii kidogo kidogo. 267 00:20:01,000 --> 00:20:10,000 Ni kusema katika file.c kwenye mstari 9, safu 1 tuna makosa, kama wewe alisema, 268 00:20:10,000 --> 00:20:16,000 na inasema kwamba ni inayotokana na onyo kosa na onyo kurudi aina. 269 00:20:16,000 --> 00:20:18,000 Inaonekana kama kitu kinachoendelea na aina ya kurudi, ambayo hufanya akili. 270 00:20:18,000 --> 00:20:21,000 Sisi tumepewa kazi zisizo batili, ambayo ina maana kwamba sisi tumepewa kazi 271 00:20:21,000 --> 00:20:24,000 kwamba haina kurudi tupu. 272 00:20:24,000 --> 00:20:27,000 kazi batili ni moja kwamba inaonekana kama hii: 273 00:20:27,000 --> 00:20:35,000 utupu foo (), na ni batili kwa sababu ya aina ya kurudi ni batili, 274 00:20:35,000 --> 00:20:38,000 ambayo ina maana kwamba kama sisi alikuwa na kitu fulani hapa 275 00:20:38,000 --> 00:20:45,000 kama kurudi 1, tunatarajia kupata kosa compiler kwa hili. 276 00:20:45,000 --> 00:20:49,000 Hata hivyo, tuna kazi zisizo utupu. 277 00:20:49,000 --> 00:20:51,000 Yetu yasiyo ya utupu kazi katika kesi hii ni yetu tafuta kazi 278 00:20:51,000 --> 00:20:56,000 sababu ina aina ya kurudi bool. 279 00:20:56,000 --> 00:20:59,000 Wakati wa kusema kwamba kudhibiti fika mwisho wa kazi zisizo batili, 280 00:20:59,000 --> 00:21:02,000 ni kwa sababu tafuta haina taarifa kurudi. 281 00:21:02,000 --> 00:21:04,000 Ni si kurudi kitu chochote cha aina bool. 282 00:21:04,000 --> 00:21:09,000 >> Tunaweza kurekebisha, na nini guys think 283 00:21:09,000 --> 00:21:13,000 tafuta inapaswa kurejea kwa default? 284 00:21:13,000 --> 00:21:16,000 Kile lazima kurudi default thamani ya search? 285 00:21:16,000 --> 00:21:19,000 Kwa sababu hiyo ndiyo tunaweza kuweka mwishoni. 286 00:21:19,000 --> 00:21:21,000 Charlotte, je, una-? 287 00:21:21,000 --> 00:21:23,000 Kweli au uongo? >> Kweli au uongo. 288 00:21:23,000 --> 00:21:26,000 Ambayo moja? 289 00:21:26,000 --> 00:21:28,000 Uongo. Mimi sijui. 290 00:21:28,000 --> 00:21:30,000 Uongo? Hebu jaribu hilo. 291 00:21:30,000 --> 00:21:32,000 Kwa nini wewe kusema uongo kurudi? Hiyo ni kubwa Intuition. 292 00:21:32,000 --> 00:21:35,000 [Charlotte] sijui. 293 00:21:35,000 --> 00:21:39,000 Sisi ni kwenda na kurudi uongo katika kesi hii kwa sababu hii itakuwa default wetu 294 00:21:39,000 --> 00:21:44,000 ikiwa kwa sababu baadhi ya orodha ni tupu au sindano 295 00:21:44,000 --> 00:21:46,000 kwamba sisi ni kuangalia kwa haipo. 296 00:21:46,000 --> 00:21:50,000 Kisha mwishoni sana, kama hatuwezi kurudi kweli mapema katika kazi hii, 297 00:21:50,000 --> 00:21:55,000 sisi daima kujua kwamba kazi hii watasema nope, siyo katika safu. 298 00:21:55,000 --> 00:21:58,000 Ni si katika haystack. 299 00:21:58,000 --> 00:22:03,000 Sasa kama sisi kukusanya na kukimbia-napenda kuokoa hii ili tuweze kuvuta it up. 300 00:22:03,000 --> 00:22:08,000 Sasa kama sisi kukusanya na kuendesha programu yetu, ni hujenga. 301 00:22:08,000 --> 00:22:12,000 Sisi kupata haraka yetu kidogo. 302 00:22:12,000 --> 00:22:20,000 Kama mimi hit 4-uh-oh. 303 00:22:20,000 --> 00:22:25,000 Haikuwa magazeti nje ya kitu chochote. Inaonekana kama kila kitu kumalizika sawa. 304 00:22:25,000 --> 00:22:35,000 Sisi tumepewa kujaza hii in 305 00:22:35,000 --> 00:22:39,000 Kuongelea algorithm katika pseudocode kidogo iliyopita. 306 00:22:39,000 --> 00:22:44,000 Hebu nione, ila hii, 307 00:22:44,000 --> 00:22:49,000 na mimi itabidi kuvuta kwamba algorithm nyuma tena. 308 00:22:49,000 --> 00:22:51,000 Hebu hit hii guy. Nope. 309 00:22:51,000 --> 00:22:58,000 Kuna ni. 310 00:22:58,000 --> 00:23:03,000 Tutafanyaje hili? 311 00:23:03,000 --> 00:23:11,000 Nini itakuwa nzuri kwa ajili ya mkakati mapya mbali kanuni hii? 312 00:23:11,000 --> 00:23:16,000 Una kuchukua idadi katikati. 313 00:23:16,000 --> 00:23:23,000 Jinsi gani sisi pick namba katikati ya safu? 314 00:23:23,000 --> 00:23:25,000 Mapendekezo yoyote? 315 00:23:25,000 --> 00:23:27,000 [Mwanafunzi] Strlen kugawanywa na 2. 316 00:23:27,000 --> 00:23:32,000 Strlen kugawanywa na 2. Hiyo ni moja kubwa. 317 00:23:32,000 --> 00:23:35,000 Strlen matendo na aina maalum ya arrays. 318 00:23:35,000 --> 00:23:38,000 Ni aina gani ya arrays? 319 00:23:38,000 --> 00:23:44,000 Kamba arrays, tabia ya arrays. 320 00:23:44,000 --> 00:23:48,000 Ni kwamba aina moja ya dhana kwamba tunataka kuomba, 321 00:23:48,000 --> 00:23:52,000 lakini hatuwezi kutumia strlen kwa sababu hatuna safu ya wahusika. 322 00:23:52,000 --> 00:23:55,000 Tuna safu ya ints. 323 00:23:55,000 --> 00:23:58,000 Lakini ni nini strlen kupata kwa ajili yetu? 324 00:23:58,000 --> 00:24:01,000 Unajua nini anapata kwa ajili yetu? 325 00:24:01,000 --> 00:24:03,000 [Mwanafunzi] Strlen anapata yetu urefu. 326 00:24:03,000 --> 00:24:05,000 Hasa, anapata sisi urefu. 327 00:24:05,000 --> 00:24:09,000 Strlen anapata urefu wa safu kwa ajili yetu. 328 00:24:09,000 --> 00:24:14,000 >> Jinsi gani sisi kupata kwamba katika mpango wetu binary search? 329 00:24:14,000 --> 00:24:18,000 Jinsi gani unaweza kupata urefu wa safu? 330 00:24:18,000 --> 00:24:20,000 [Mwanafunzi] Strlen? 331 00:24:20,000 --> 00:24:25,000 Unaweza kupata urefu wa safu vizuri formatted C string kwa strlen. 332 00:24:25,000 --> 00:24:31,000 tatizo, ingawa, ni kwamba hatuna safu kamba. 333 00:24:31,000 --> 00:24:36,000 Kama sisi kuangalia nyuma katika kanuni hii, sisi tuna hii safu integer. 334 00:24:36,000 --> 00:24:38,000 Jinsi gani tunajua ni muda gani? 335 00:24:38,000 --> 00:24:44,000 [Mwanafunzi] Je, kuna moja sawa kwa endpoint, kama l int au kitu? 336 00:24:44,000 --> 00:24:49,000 Ni zinageuka kuna kweli ni la, na hivyo katika njia, hii ni 337 00:24:49,000 --> 00:24:52,000 moja ya mambo ambayo ni nzuri tu kujua kuhusu C, 338 00:24:52,000 --> 00:24:57,000 kwamba hakuna njia ya kupata urefu wa safu 339 00:24:57,000 --> 00:24:59,000 kama wote nitakupa ni safu. 340 00:24:59,000 --> 00:25:02,000 sababu ni kazi na masharti, sababu strlen matendo, 341 00:25:02,000 --> 00:25:06,000 ni kwa sababu kama string ni vizuri formatted, 342 00:25:06,000 --> 00:25:12,000 itakuwa na kwamba maalum \ 0 tabia mwishoni sana. 343 00:25:12,000 --> 00:25:16,000 >> Unaweza pia kufikiria kama una kamba yenye formatted 344 00:25:16,000 --> 00:25:20,000 na hakuna \ 0 tabia huko, basi jambo zima haifanyi kazi. 345 00:25:20,000 --> 00:25:22,000 [Mwanafunzi] Je, unaweza kuongeza \ 0? 346 00:25:22,000 --> 00:25:24,000 Tunaweza katika kesi hii. 347 00:25:24,000 --> 00:25:29,000 Tunaweza kuongeza baadhi ya aina ya \ 0 348 00:25:29,000 --> 00:25:33,000 au aina fulani ya tabia akionyesha na kisha kutumia. 349 00:25:33,000 --> 00:25:36,000 Lakini si kwamba kabisa kwenda kufanya kazi 350 00:25:36,000 --> 00:25:40,000 kwa sababu 0 \ ni kwa ajili ya aina Char, 351 00:25:40,000 --> 00:25:43,000 na hapa sisi tumepewa ints. 352 00:25:43,000 --> 00:25:46,000 Jambo jingine ni kama tulikuwa kutumia thamani maalum 353 00:25:46,000 --> 00:25:49,000 kama -1 kuonesha mwisho wa safu 354 00:25:49,000 --> 00:25:54,000 kisha sisi kamwe kuhifadhi -1 katika arrays wetu integer. 355 00:25:54,000 --> 00:25:56,000 Tunatarajia kuwa na kukwama. 356 00:25:56,000 --> 00:26:00,000 Ni zinageuka kuwa njia pekee ya kupata urefu 357 00:26:00,000 --> 00:26:03,000 wa safu katika C ni kweli kukumbuka ni 358 00:26:03,000 --> 00:26:08,000 wakati kuweka it up na kisha kupita ni kuzunguka na safu 359 00:26:08,000 --> 00:26:14,000 hivyo kwamba wakati mimi kuwa na kazi hiyo kwenda kufanya baadhi ya kazi 360 00:26:14,000 --> 00:26:18,000 juu ya safu ya integers au ikifungwa au DOUBLES au kitu gani wewe, 361 00:26:18,000 --> 00:26:22,000 Mimi pia haja ya kutoa kazi urefu wa safu, 362 00:26:22,000 --> 00:26:26,000 na hii ndiyo hasa kile ambacho tumefanya hapa katika kazi ya utafutaji. 363 00:26:26,000 --> 00:26:30,000 Kama ukiangalia, kile ambacho tumefanya wakati sisi kupita katika safu yetu hapa, 364 00:26:30,000 --> 00:26:36,000 sisi pia kupita katika urefu, ukubwa. 365 00:26:36,000 --> 00:26:41,000 Inajitokeza kuwa tumetoa wito huu variable hapa, 366 00:26:41,000 --> 00:26:43,000 hii parameter au hoja. 367 00:26:43,000 --> 00:26:46,000 Hii inaitwa hoja kazi ya orodha au orodha parameter, 368 00:26:46,000 --> 00:26:51,000 na hawa pia wanaitwa hoja au vigezo. 369 00:26:51,000 --> 00:26:53,000 Watu kutumia maneno tofauti katika nyakati tofauti. 370 00:26:53,000 --> 00:26:55,000 Mimi wakati mwingine interchange yao mimi mwenyewe. 371 00:26:55,000 --> 00:27:00,000 Ni hivyo tu hutokea kwamba variable hii hapa ni jina vile vile 372 00:27:00,000 --> 00:27:03,000 hii # define hapa juu. 373 00:27:03,000 --> 00:27:06,000 Lakini wao siyo kitu kimoja. 374 00:27:06,000 --> 00:27:11,000 mtaji gani jambo. 375 00:27:11,000 --> 00:27:14,000 >> Kama wewe kuangalia nini kinatokea hapa, sisi kutangaza 376 00:27:14,000 --> 00:27:18,000 safu yetu int, ambayo tumekuwa aitwaye idadi. 377 00:27:18,000 --> 00:27:23,000 Tumekuwa aliyopewa ni kawaida yetu, ambayo inalingana na wetu # define juu kwa juu. 378 00:27:23,000 --> 00:27:27,000 Ni kwenda kuwa 8. 379 00:27:27,000 --> 00:27:35,000 Na kisha wakati sisi basi wito wetu tafuta kazi chini chini, 380 00:27:35,000 --> 00:27:40,000 sisi kupita katika idadi tunataka kutafuta, ambayo tumekuwa wakiongozwa, 381 00:27:40,000 --> 00:27:43,000 wamezipata kutoka kwa mtumiaji. 382 00:27:43,000 --> 00:27:46,000 Sisi kupita katika safu, idadi hii, 383 00:27:46,000 --> 00:27:51,000 na kisha sisi pia kupita katika ukubwa wa safu, 384 00:27:51,000 --> 00:27:57,000 na kisha thamani ya ukubwa 8 anapata kuhifadhiwa 385 00:27:57,000 --> 00:28:01,000 au kupita kwa ukubwa huu integer variable kuitwa. 386 00:28:01,000 --> 00:28:08,000 Tuna kawaida ya safu. 387 00:28:08,000 --> 00:28:11,000 Sasa kama sisi kurudi nyuma kwa nini sisi walikuwa wanazungumza juu ya awali, 388 00:28:11,000 --> 00:28:14,000 Nadhani Missy nililelewa uhakika kwamba kile sisi zinahitajika kufanya ni kupata urefu wa safu 389 00:28:14,000 --> 00:28:20,000 na kuigawanya na 2, na kwamba atatupa midpoint. 390 00:28:20,000 --> 00:28:22,000 Hebu angalia. 391 00:28:22,000 --> 00:28:25,000 Naweza kuwa na mtu kuandika hii na kuokoa ni katika nafasi zao? 392 00:28:25,000 --> 00:28:27,000 Vipi kuhusu Leila? 393 00:28:27,000 --> 00:28:31,000 Naweza kuwa na wewe kuandika hii katika? 394 00:28:31,000 --> 00:28:35,000 Andika mstari wa kwanza ambapo wewe kuchukua urefu wa safu na kupata midpoint 395 00:28:35,000 --> 00:28:41,000 na kuhifadhi katika variable mpya. 396 00:28:41,000 --> 00:28:44,000 Mimi nitakupa sekunde wanandoa. Je, uko tayari? 397 00:28:44,000 --> 00:28:46,000 [Mwanafunzi inaudible] 398 00:28:46,000 --> 00:28:50,000 Hakika, inaweza mimi na wewe mahesabu ya midpoint 399 00:28:50,000 --> 00:28:55,000 wa safu haystack ndani ya kazi tafuta 400 00:28:55,000 --> 00:29:03,000 kutumia urefu wa safu haystack, ambayo ni variable kawaida? 401 00:29:03,000 --> 00:29:08,000 Hakuna Tricky hapa. 402 00:29:08,000 --> 00:29:12,000 [Leila] Tu kawaida / 2 na tu- 403 00:29:12,000 --> 00:29:17,000 Na kuokoa, na hit button Save hapa juu kwa juu, 404 00:29:17,000 --> 00:29:19,000 na tutaweza kuvuta it up. 405 00:29:19,000 --> 00:29:22,000 Perfect. 406 00:29:22,000 --> 00:29:28,000 Kuna sisi kwenda. Ajabu. 407 00:29:28,000 --> 00:29:30,000 >> Kama ni, itakuwa hii kukusanya? 408 00:29:30,000 --> 00:29:32,000 [Leila] No, inahitaji kuwa juu zaidi. 409 00:29:32,000 --> 00:29:34,000 [Nate] Yeah, hivyo nini tunahitaji kufanya nini? 410 00:29:34,000 --> 00:29:36,000 [Leila] Kama midpoint int au kitu. 411 00:29:36,000 --> 00:29:41,000 Ajabu. Yeah, hebu kufanya hivyo, int midpoint = kawaida. 412 00:29:41,000 --> 00:29:44,000 Je, hii kukusanya? 413 00:29:44,000 --> 00:29:47,000 Hebu kufuta maoni na kupata nje ya njia. 414 00:29:47,000 --> 00:29:50,000 Nini si kukusanya kuhusu hili? 415 00:29:50,000 --> 00:29:52,000 Sisi siyo kufanya kitu chochote kwa integer, 416 00:29:52,000 --> 00:29:55,000 hivyo tunahitaji magazeti au kitu kama hicho. 417 00:29:55,000 --> 00:29:58,000 Yeah, kwa uhakika. 418 00:29:58,000 --> 00:30:00,000 Tutaweza kupata variable isiyotumika. 419 00:30:00,000 --> 00:30:02,000 Nini kingine si kwenda kufanya kazi kuhusu hili? 420 00:30:02,000 --> 00:30:06,000 Nadhani wewe alisema kitu, Sam. Semicolons. 421 00:30:06,000 --> 00:30:08,000 Yeah, mimi kukosa semicolons hizo. 422 00:30:08,000 --> 00:30:14,000 Ni kwenda kuwa kitu mara kwa mara katika mwenendo wa muda. 423 00:30:14,000 --> 00:30:17,000 Kitu ya mwisho mimi itabidi kufanya ni mimi itabidi kuweka baadhi ya nafasi nyeupe upande 424 00:30:17,000 --> 00:30:23,000 ya hii operator hapa, tangu kwamba ni kawaida jinsi sisi kufanya hivyo 425 00:30:23,000 --> 00:30:26,000 kulingana na style mwongozo wetu. 426 00:30:26,000 --> 00:30:29,000 Sisi tumepewa midpoint wa safu yetu. 427 00:30:29,000 --> 00:30:32,000 Sasa kama sisi kukumbuka nyuma algorithm yetu, 428 00:30:32,000 --> 00:30:37,000 kile ni hatua ya pili kwamba tulikuwa na kufanya mara moja tuna midpoint? 429 00:30:37,000 --> 00:30:42,000 [Mwanafunzi] Kama ni kubwa zaidi [inaudible]. 430 00:30:42,000 --> 00:30:48,000 Yeah, hivyo tuna kufanya aina fulani ya kulinganisha, na nini sisi kulinganisha hapa? 431 00:30:48,000 --> 00:30:53,000 Wewe alisema kama ni mkuu kuliko mimi. Ni kitu gani katika sentensi kwamba mnayosema? 432 00:30:53,000 --> 00:30:57,000 idadi hiyo inakuja juu, kama kwamba ni kubwa zaidi kuliko midpoint, kisha kwenda hadi safu? 433 00:30:57,000 --> 00:31:05,000 Hasa, hivyo idadi kuja juu wakati sisi- 434 00:31:05,000 --> 00:31:10,000 sindano, hivyo sisi ni kulinganisha na sindano, 435 00:31:10,000 --> 00:31:12,000 na nini sisi kulinganisha dhidi ya sindano? 436 00:31:12,000 --> 00:31:15,000 Kwa sababu sindano ni nini sisi ni kuangalia kwa. 437 00:31:15,000 --> 00:31:18,000 Sisi ni kulinganisha na kupata midpoint. 438 00:31:18,000 --> 00:31:21,000 >> Lakini haina mantiki kwa kuangalia kuona 439 00:31:21,000 --> 00:31:27,000 ikiwa sindano = midpoint? 440 00:31:27,000 --> 00:31:32,000 Je, hiyo mantiki? 441 00:31:32,000 --> 00:31:35,000 Je, mtu yeyote hawakubaliani? 442 00:31:35,000 --> 00:31:40,000 Hebu kutoa ni kujaribu, kama (sindano == midpoint). 443 00:31:40,000 --> 00:31:42,000 [Mwanafunzi] Je printf wewe kupatikana. 444 00:31:42,000 --> 00:31:51,000 [Nate] Printf ("Sisi kupatikana ni \ n!"); 445 00:31:51,000 --> 00:31:56,000 Vinginevyo-I'm kwenda kuanza kufanya kitu tofauti hapa. 446 00:31:56,000 --> 00:32:00,000 Mimi naenda kuanza kuweka braces kuzunguka kama kauli wakati wote 447 00:32:00,000 --> 00:32:05,000 tu kwa sababu kama sisi kuongeza zaidi stuff, kisha 448 00:32:05,000 --> 00:32:07,000 hatuwezi kupata compilers. 449 00:32:07,000 --> 00:32:09,000 Yeah, Sam. Nimepata uhakika. 450 00:32:09,000 --> 00:32:12,000 Tatizo ni kwamba midpoint inawakilisha nafasi katika safu, 451 00:32:12,000 --> 00:32:15,000 lakini unaweza kupata kuwakilisha thamani katika nafasi ya safu. 452 00:32:15,000 --> 00:32:17,000 Hiyo ni hatua kubwa. 453 00:32:17,000 --> 00:32:19,000 Je kila mtu asikie yale Sam alisema? 454 00:32:19,000 --> 00:32:22,000 Alisema kwamba kama ni midpoint 455 00:32:22,000 --> 00:32:28,000 inawakilisha tu nafasi katika safu, lakini si kipengele halisi katika safu. 456 00:32:28,000 --> 00:32:30,000 Kama unafikiri kuhusu code kama imeandikwa hivi sasa, 457 00:32:30,000 --> 00:32:35,000 tunapotazama katika safu hii hapa chini, ambayo ina mambo 8 ndani yake, 458 00:32:35,000 --> 00:32:39,000 nini ni thamani ya midpoint kwenda kuwa katika kazi hii? 459 00:32:39,000 --> 00:32:41,000 [Mwanafunzi] 4. 460 00:32:41,000 --> 00:32:45,000 [Nate] 4. 461 00:32:45,000 --> 00:32:51,000 Kama sisi kuangalia kwa namba 4 - 462 00:32:51,000 --> 00:32:54,000 na tunaweza tu kukimbia hii kanuni na kuweka kidogo kusikitisha uso katika hapa 463 00:32:54,000 --> 00:32:58,000 kwa sababu hatukuona ni-kama sisi kukimbia hii code 464 00:32:58,000 --> 00:33:04,000 kama ni haki ya sasa, ni kuweka, jengo, basi mimi kitabu chini, 465 00:33:04,000 --> 00:33:09,000 na kama sisi kuangalia kwa namba 4, 466 00:33:09,000 --> 00:33:18,000 sisi kuiona, lakini sisi hawakuwa kupata hii kwa printf ndiyo. 467 00:33:18,000 --> 00:33:23,000 Moja ya sababu ni kwamba sisi hakurudi kweli, 468 00:33:23,000 --> 00:33:26,000 lakini hawakuwa kweli sisi kupata idadi 4? 469 00:33:26,000 --> 00:33:28,000 Na Sam ni kusema hakuna. 470 00:33:28,000 --> 00:33:31,000 Nini sisi kupata? 471 00:33:31,000 --> 00:33:35,000 Sisi kwa kweli kupatikana midpoint, ambayo kama sisi kuangalia safu chini hapa, 472 00:33:35,000 --> 00:33:38,000 itakavyo kuwa kipengele katika index 4 kwamba sisi ni kuangalia, 473 00:33:38,000 --> 00:33:42,000 ambayo ni 23. 474 00:33:42,000 --> 00:33:46,000 >> Jinsi gani sisi kweli kupata kwamba kipengele katika midpoint 475 00:33:46,000 --> 00:33:48,000 na si tu midpoint yenyewe? 476 00:33:48,000 --> 00:33:52,000 [Mwanafunzi] Tunataka kuingia Char au kitu? 477 00:33:52,000 --> 00:33:55,000 Gani kwamba kufanya, tu nje ya udadisi? 478 00:33:55,000 --> 00:33:57,000 Je, unaweza kufafanua zaidi kidogo? 479 00:33:57,000 --> 00:34:02,000 Una kubadilisha msimamo katika idadi, 480 00:34:02,000 --> 00:34:05,000 hivyo nimepata kufanya baadhi ya uhusiano-Nadhani ni Char, lakini inaweza kuwa. 481 00:34:05,000 --> 00:34:07,000 Yeah, hiyo ni hatua nzuri. 482 00:34:07,000 --> 00:34:12,000 Tumekuwa kufanya mengi ya nafasi hii kuwabadili ndani ya chars, hawa wahusika, 483 00:34:12,000 --> 00:34:14,000 katika miwili ya kwanza tatizo seti. 484 00:34:14,000 --> 00:34:18,000 Ni zinageuka kuwa hapa, hii ni karibu sawa na 485 00:34:18,000 --> 00:34:24,000 kupata tabia idh ndani ya kamba, kama kwamba inafanya hisia. 486 00:34:24,000 --> 00:34:30,000 Hapa tunataka kupata kipengele midpoint. 487 00:34:30,000 --> 00:34:34,000 Jinsi gani sisi kufanya hivyo? 488 00:34:34,000 --> 00:34:39,000 Kevin, je, una mapendekezo yoyote jinsi sisi anaweza kufanya hivyo? 489 00:34:39,000 --> 00:34:44,000 Unaweza kufanya haystack, wazi bracket, katikati, imefungwa bracket. 490 00:34:44,000 --> 00:34:46,000 Je, unaweza kuandika kwamba kwa ajili yetu? 491 00:34:46,000 --> 00:34:51,000 Ila ni katika hapa, na tutaweza kuvuta kwamba up. 492 00:34:51,000 --> 00:34:56,000 Sisi ni kuangalia hayo mstari 9, 493 00:34:56,000 --> 00:34:59,000 na sisi ni kutambua kwamba hatutaki kulinganisha sindano midpoint, 494 00:34:59,000 --> 00:35:03,000 lakini badala yake, sisi unataka kulinganisha sindano 495 00:35:03,000 --> 00:35:07,000 kwa kipengele katika nafasi ya midpoint ndani ya haystack safu yetu. 496 00:35:07,000 --> 00:35:10,000 Cool. 497 00:35:10,000 --> 00:35:12,000 Kuna sisi kwenda. 498 00:35:12,000 --> 00:35:15,000 Yeah, kwamba inaonekana pretty nzuri, kama (sindano == haystack [midpoint]). 499 00:35:15,000 --> 00:35:18,000 Sisi kupatikana. 500 00:35:18,000 --> 00:35:22,000 Sasa kama sisi kukimbia nyuma code-we'll up kidogo kidogo- 501 00:35:22,000 --> 00:35:26,000 ni inaandaa, ni anaendesha, na sasa kama sisi kuangalia kwa 4, 502 00:35:26,000 --> 00:35:30,000 hatukuona sababu sasa sisi ni kweli kupata idadi 23. 503 00:35:30,000 --> 00:35:33,000 Sisi ni kupata thamani 23, na kwamba ni nini sisi ni kulinganisha na sindano yetu. 504 00:35:33,000 --> 00:35:35,000 Lakini hiyo ni nzuri. Hiyo ni hatua katika mwelekeo sahihi. 505 00:35:35,000 --> 00:35:37,000 >> Hiyo ni nini sisi ni kujaribu kufanya. 506 00:35:37,000 --> 00:35:40,000 Sisi siyo kujaribu kulinganisha sindano dhidi ya nafasi katika safu 507 00:35:40,000 --> 00:35:44,000 lakini badala dhidi mambo halisi katika safu. 508 00:35:44,000 --> 00:35:49,000 Kama sisi kuangalia nyuma tena sasa katika hatua ya pili katika kompyuta yetu, 509 00:35:49,000 --> 00:35:51,000 ni hatua gani inayofuata? 510 00:35:51,000 --> 00:35:57,000 Leila tayari kutajwa ni kwa ufupi. 511 00:35:57,000 --> 00:36:00,000 [Mwanafunzi] Angalia kuona kama ni zaidi au chini ya na kisha kuamua ambayo njia ya hoja. 512 00:36:00,000 --> 00:36:03,000 [Nate] Yeah, hivyo ni jinsi gani sisi kufanya hivyo? 513 00:36:03,000 --> 00:36:07,000 Je, unaweza kuweka katika baadhi I'll-kuokoa hii marekebisho, 514 00:36:07,000 --> 00:36:13,000 na kisha kama wewe kuweka katika mistari fulani fulani kufanya hivyo. 515 00:36:13,000 --> 00:36:15,000 Yeah, Charlotte >> nina swali.. 516 00:36:15,000 --> 00:36:19,000 Je, si ni kuwa midpoint - 1 kwa sababu jambo la kwanza ni 517 00:36:19,000 --> 00:36:26,000 ni 0 indexed, hivyo kama sisi kuweka 4, kwamba si kweli tabia sisi ni kuangalia kwa? 518 00:36:26,000 --> 00:36:30,000 Ndiyo, na tatizo nyingine na kwamba ni- 519 00:36:30,000 --> 00:36:35,000 hiyo ni samaki mkubwa, kwa sababu ni nini kinaenda kuishia kinachotokea uwezekano 520 00:36:35,000 --> 00:36:42,000 kama sisi kusonga na sisi si milele kurekebisha awali? 521 00:36:42,000 --> 00:36:46,000 Nadhani nini sisi tupate kuishia kufanya ni kujaribu kupata 522 00:36:46,000 --> 00:36:49,000 kipengele katika nafasi ya 8 ya safu, 523 00:36:49,000 --> 00:36:53,000 ambayo katika kesi hii haipo. 524 00:36:53,000 --> 00:36:56,000 Sisi unataka kufanya baadhi ya aina ya uhasibu kwa ajili ya ukweli 525 00:36:56,000 --> 00:36:59,000 kwamba tuna baadhi ya Indexing sifuri. 526 00:36:59,000 --> 00:37:05,000 [Charlotte] Samahani, mimi maana ya midpoint - 1 katika mabano mraba. 527 00:37:05,000 --> 00:37:08,000 Tunaweza kufanya hivyo. 528 00:37:08,000 --> 00:37:10,000 Tutaweza kurudi suala hili katika kidogo tu. 529 00:37:10,000 --> 00:37:13,000 Mara sisi kuanza kupata looping halisi, 530 00:37:13,000 --> 00:37:16,000 kwamba wakati tutaweza kweli kuona hii zinahusika. 531 00:37:16,000 --> 00:37:21,000 Kwa wakati kuwa, tunaweza kufanya hivyo, lakini wewe kabisa kulia. 532 00:37:21,000 --> 00:37:28,000 Hiyo Indexing sifuri itakuwa na athari kwamba tunahitaji kutoa maelezo yake. 533 00:37:28,000 --> 00:37:30,000 Hebu angalia. 534 00:37:30,000 --> 00:37:34,000 >> Jinsi ni mkuu kuliko na chini ya-? 535 00:37:34,000 --> 00:37:36,000 [Mwanafunzi] mimi kupata jinsi ya kufanya zaidi kuliko na chini ya sehemu. 536 00:37:36,000 --> 00:37:41,000 Mimi tu hakuwa na uhakika nini na magazeti kama utapata kuwa ni chini ya midpoint haystack au zaidi kuliko. 537 00:37:41,000 --> 00:37:43,000 Hapa naweza kuokoa kile I've- 538 00:37:43,000 --> 00:37:47,000 [Nate] Yeah, kama wewe kuokoa kile nimepata, na tutaweza kuvuta it up. 539 00:37:47,000 --> 00:37:49,000 Kuna sisi kwenda. 540 00:37:49,000 --> 00:37:51,000 [Mwanafunzi] Na mimi kuweka alama swali kwa nini mimi sikujua. 541 00:37:51,000 --> 00:37:54,000 [Nate] Hiyo inaonekana ni kubwa. 542 00:37:54,000 --> 00:37:58,000 Hapa sisi tumepewa alama swali kwa sababu sisi bado hawajui 543 00:37:58,000 --> 00:38:06,000 nini tunakwenda kufanya kabisa bado. 544 00:38:06,000 --> 00:38:12,000 Nini tunataka kufanya-oops, sisi tumepewa braces baadhi wote funky juu yetu. 545 00:38:12,000 --> 00:38:15,000 Tutaweza kusahihisha braces haya. 546 00:38:15,000 --> 00:38:19,000 Kuna sisi kwenda. 547 00:38:19,000 --> 00:38:22,000 Na hivyo nini tunataka kufanya, kulingana na kompyuta yetu, 548 00:38:22,000 --> 00:38:27,000 ikiwa hatuwezi kupata sindano? 549 00:38:27,000 --> 00:38:32,000 Sema katika kesi hiyo ni sindano chini ya kile sisi tunataka. Kevin. 550 00:38:32,000 --> 00:38:34,000 Tu kuangalia nusu kushoto. 551 00:38:34,000 --> 00:38:40,000 Haki, hivyo tutaweza kuweka maoni katika hapa kwamba anasema "kuangalia nusu kushoto." 552 00:38:40,000 --> 00:38:46,000 Na kama sindano ni mkubwa kuliko haystack katika midpoint, je, tunataka kufanya? 553 00:38:46,000 --> 00:38:48,000 [Mwanafunzi] Kisha ukiangalia nusu haki. 554 00:38:48,000 --> 00:38:53,000 Angalia katika nusu haki, "kuangalia nusu ya haki." 555 00:38:53,000 --> 00:38:58,000 Si pia shabby. 556 00:38:58,000 --> 00:39:05,000 Okay, kwa hivyo katika hatua hii, mambo ni kuangalia pretty nzuri. 557 00:39:05,000 --> 00:39:13,000 tatizo kwa kificho kama yaliyoandikwa ni nini? 558 00:39:13,000 --> 00:39:15,000 [Mwanafunzi] Huna endpoints kwa halves. 559 00:39:15,000 --> 00:39:18,000 Haki, hatuna endpoints kwa halves. 560 00:39:18,000 --> 00:39:20,000 Sisi pia ni kwenda tu kwenda kwa njia hii mara moja. 561 00:39:20,000 --> 00:39:23,000 Sisi ni tu kwenda kuangalia midpoint moja. 562 00:39:23,000 --> 00:39:27,000 Aidha kipengele ni pale, au siyo. 563 00:39:27,000 --> 00:39:34,000 Ili kukamilisha hili, tutaweza haja ya kufanya baadhi ya aina ya marudio. 564 00:39:34,000 --> 00:39:39,000 Tunahitaji kushika kurudia mpaka tunaona kwamba 565 00:39:39,000 --> 00:39:43,000 ama kipengele ni katika huko kwa sababu tumekuwa dhiki na hatimaye kupatikana, 566 00:39:43,000 --> 00:39:46,000 au siyo katika huko kwa sababu tumekuwa inaonekana kupitia mambo yote 567 00:39:46,000 --> 00:39:52,000 katika halves sahihi ya safu na kukuta kwamba hakuna kitu ni huko. 568 00:39:52,000 --> 00:39:56,000 >> Kila mara tumekuwa got marudio hii kinachoendelea, nini sisi kwenda kutumia? 569 00:39:56,000 --> 00:39:58,000 [Mwanafunzi] kitanzi. 570 00:39:58,000 --> 00:40:00,000 Baadhi ya aina ya kitanzi. Ndiyo. 571 00:40:00,000 --> 00:40:03,000 [Mwanafunzi] Je, tunaweza kufanya kitanzi do-wakati na kuwa ni kufanya hivyo na kisha wakati 572 00:40:03,000 --> 00:40:10,000 sindano haina sawa-I'm uhakika ambapo mimi alikuwa anaenda na kwamba. 573 00:40:10,000 --> 00:40:18,000 Lakini aina ya kama kufanya hivyo kwa muda mrefu kama haina thamani sawa kwamba pembejeo mtumiaji. 574 00:40:18,000 --> 00:40:21,000 Yeah, hivyo hebu angalia, jinsi wapate hii kuandika yenyewe? 575 00:40:21,000 --> 00:40:23,000 Wewe alisema hebu kutumia kitanzi do-wakati. 576 00:40:23,000 --> 00:40:26,000 Wapi kufanya kuanza? 577 00:40:26,000 --> 00:40:33,000 [Mwanafunzi] Haki baada ya kawaida / 2. 578 00:40:33,000 --> 00:40:42,000 [Nate] Okay, na nini sisi kwenda kufanya? 579 00:40:42,000 --> 00:40:44,000 Tutaweza kujaza wakati baadaye. 580 00:40:44,000 --> 00:40:46,000 Nini sisi kwenda kufanya? 581 00:40:46,000 --> 00:40:49,000 [Mwanafunzi] Je, si tunataka kufanya mambo yote sisi katika sehemu kama? 582 00:40:49,000 --> 00:40:52,000 [Nate] Je mambo haya yote, kubwa. 583 00:40:52,000 --> 00:40:55,000 Nakili na kuweka. 584 00:40:55,000 --> 00:40:59,000 Oh, mtu. 585 00:40:59,000 --> 00:41:03,000 Hebu angalia kama hii kazi, kama tunaweza tab hii zaidi. 586 00:41:03,000 --> 00:41:08,000 Beautiful. 587 00:41:08,000 --> 00:41:16,000 Okay, na sisi ila hii ili guys kuwa nayo. 588 00:41:16,000 --> 00:41:21,000 Haki zote, na sisi ni kwenda kufanya hii wakati- 589 00:41:21,000 --> 00:41:25,000 Je hali wakati ulipokuwa baada ya? 590 00:41:25,000 --> 00:41:31,000 [Mwanafunzi] Wakati sindano haina sawa, hivyo kama hatua Moderators. 591 00:41:31,000 --> 00:41:37,000 Lakini mimi nina uhakika nini hasa kwamba ni bado. 592 00:41:37,000 --> 00:41:39,000 [Nate] Yeah, hii ni njia mojawapo ya kufanya hivyo. 593 00:41:39,000 --> 00:41:41,000 Sam, una maoni? 594 00:41:41,000 --> 00:41:43,000 [Sam] Nilikumbuka wakati mimi inaonekana katika video, 595 00:41:43,000 --> 00:41:48,000 Mimi alichukua screenshot ya mmoja wa-kama alivyofanya wakati sisi pseudocode kwa ajili yake, 596 00:41:48,000 --> 00:41:52,000 kulikuwa na baadhi ya uhusiano kati ya max na min. 597 00:41:52,000 --> 00:41:58,000 Nadhani ilikuwa ni kitu kama kama max ni milele chini ya dk. 598 00:41:58,000 --> 00:42:00,000 Got it. 599 00:42:00,000 --> 00:42:04,000 [Sam] Au kama kama max ni si chini ya dk au kitu kama hicho, 600 00:42:04,000 --> 00:42:06,000 kwa sababu kwamba ingekuwa na maana kwamba ve searched kila kitu. 601 00:42:06,000 --> 00:42:13,000 >> Yeah, hivyo ni nini sauti kama max na min walikuwa mnayosema? 602 00:42:13,000 --> 00:42:16,000 [Sam] Maadili kwamba-integers kwamba ni kwenda na mabadiliko 603 00:42:16,000 --> 00:42:18,000 jamaa na ambapo sisi kuweka midpoint. 604 00:42:18,000 --> 00:42:20,000 Hasa. 605 00:42:20,000 --> 00:42:24,000 [Sam] Katika hatua hiyo, ni kwenda [inaudible] mahesabu max na min. 606 00:42:24,000 --> 00:42:29,000 Midpoint ni hii max na wazo min. 607 00:42:29,000 --> 00:42:35,000 Je, hiyo maana kufanya folks? 608 00:42:35,000 --> 00:42:39,000 Kama sisi kuanza kuangalia jinsi sisi ni kwenda kufanya hili iteration, 609 00:42:39,000 --> 00:42:43,000 wewe ni kabisa wa haki ya kuwa tunataka kutumia aina fulani ya kitanzi kufanya-wakati. 610 00:42:43,000 --> 00:42:49,000 Lakini mimi nadhani kama sisi kukumbuka nini kinaendelea katika doa wa safu hii 611 00:42:49,000 --> 00:42:53,000 na kile kinachotokea kweli-I'm kwenda kuandika juu hapa- 612 00:42:53,000 --> 00:42:58,000 katika iteration sana kwanza ya utafutaji binary, tuna- 613 00:42:58,000 --> 00:43:05,000 Mimi naenda kutumia b na e kuashiria mwanzo. 614 00:43:05,000 --> 00:43:10,000 Na kisha mwisho wa safu yetu. 615 00:43:10,000 --> 00:43:14,000 Tunajua kwamba mwanzo ni katika haki 4 zaidi ya hapa, 616 00:43:14,000 --> 00:43:18,000 na tunajua kwamba mwisho ni saa 108. 617 00:43:18,000 --> 00:43:23,000 Sema tuko kwa ajili ya kutafuta namba 15. 618 00:43:23,000 --> 00:43:27,000 mara ya kwanza sisi kufanya hili, kama tuliona mapema, 619 00:43:27,000 --> 00:43:30,000 midpoint ni ama kwenda kuwa 16 au 23 620 00:43:30,000 --> 00:43:34,000 kutegemeana na jinsi sisi hesabu mambo ya nje. 621 00:43:34,000 --> 00:43:37,000 Tangu sawasawa kugawa katikati atatupa nafasi hii 622 00:43:37,000 --> 00:43:42,000 kati ya 16 na 23, tunaweza si sawasawa kuigawanya 623 00:43:42,000 --> 00:43:47,000 au kuigawanya na kupata saa midpoint kweli. 624 00:43:47,000 --> 00:43:49,000 Tutaangalia 16. 625 00:43:49,000 --> 00:43:55,000 Tutaweza kutambua "Hey, 16> 15 kwamba sisi ni kuangalia kwa." 626 00:43:55,000 --> 00:43:59,000 Ili kisha kuangalia nusu ya kushoto ya safu 627 00:43:59,000 --> 00:44:03,000 nini sisi kuishia kufanya ni Kasseringen 628 00:44:03,000 --> 00:44:07,000 hii yote juu fungu 629 00:44:07,000 --> 00:44:16,000 na kusema, "Sawa, sasa endpoint yetu ni kwenda kuwa hapa." 630 00:44:16,000 --> 00:44:22,000 iteration ya pili ya kitanzi yetu, sisi ni sasa kuangalia safu hii, 631 00:44:22,000 --> 00:44:25,000 ufanisi baada ya kuondolewa sehemu hii kwa sababu sasa 632 00:44:25,000 --> 00:44:30,000 kama sisi ni kuchukua midpoint kuwa tofauti kati ya mwanzo na mwisho, 633 00:44:30,000 --> 00:44:34,000 sisi kupata midpoint yetu kuwa 8, 634 00:44:34,000 --> 00:44:40,000 ambayo tunaweza kisha mtihani 8 kuona ambapo ni katika uhusiano na idadi sisi ni kuangalia kwa, 635 00:44:40,000 --> 00:44:44,000 15, 15 kupata kwamba ni kubwa zaidi, 636 00:44:44,000 --> 00:44:49,000 hivyo tuna kuhamia sehemu ya haki ya orodha, 637 00:44:49,000 --> 00:44:51,000 ambayo sisi kujua sababu sisi ni binadamu, na tunaweza kuona. 638 00:44:51,000 --> 00:44:54,000 Tunajua kwamba sehemu haki ni kwenda kuwa ambapo sisi kupata hiyo, 639 00:44:54,000 --> 00:45:01,000 lakini kompyuta hajui kwamba, ili kile tutaweza kufanya ni kweli tutaweza 640 00:45:01,000 --> 00:45:04,000 kuwa hii kwenda juu, na sasa mwanzo na mwisho 641 00:45:04,000 --> 00:45:11,000 ni doa moja, hivyo midpoint inakuwa idadi tu katika orodha katika hatua hiyo, 642 00:45:11,000 --> 00:45:16,000 ambayo ni 15, na tumekuwa kupatikana. 643 00:45:16,000 --> 00:45:21,000 Je, hiyo kumwaga baadhi mwanga juu ambapo hii max nzima na nukuu min ni kwenda, 644 00:45:21,000 --> 00:45:24,000 kuweka wimbo wa endpoints wa safu ili kubaini 645 00:45:24,000 --> 00:45:35,000 jinsi ya kubana mambo chini? 646 00:45:35,000 --> 00:45:42,000 >> Nini kingetokea kama hii walikuwa si sawa na 15 sasa? 647 00:45:42,000 --> 00:45:52,000 Nini kama sisi walikuwa wanatafuta 15 na, badala yake, idadi hii pia walikuwa 16? 648 00:45:52,000 --> 00:45:54,000 Tunatarajia kusema, "Oh, ni kubwa zaidi. 649 00:45:54,000 --> 00:45:57,000 Sisi tunataka kurudi kwa upande wa kushoto. " 650 00:45:57,000 --> 00:46:01,000 Na tunatarajia hoja e yetu kwa haki, 651 00:46:01,000 --> 00:46:06,000 ambapo kiwango tuna endpoint kwamba itakuwa yanayokinzana. 652 00:46:06,000 --> 00:46:09,000 Isingekuwa na uwezo wa kutafuta mambo yoyote zaidi 653 00:46:09,000 --> 00:46:13,000 kwa sababu sasa tuna endpoint yetu na mwanzo wetu uhakika, 654 00:46:13,000 --> 00:46:16,000 max yetu na min yetu, ni sasa flipped. 655 00:46:16,000 --> 00:46:23,000 Sisi kutafuta njia safu nzima. Hatuwezi kupata chochote. 656 00:46:23,000 --> 00:46:27,000 Hiyo ni hatua ambayo tunatarajia unataka kusema, "Sawa, tunakwenda kuacha hii algorithm. 657 00:46:27,000 --> 00:46:34,000 Sisi si kupatikana kitu chochote. Tunajua si katika hapa. " 658 00:46:34,000 --> 00:46:36,000 Je, huu kwenda? 659 00:46:36,000 --> 00:46:40,000 [Mwanafunzi] Jinsi hasa gani kompyuta kubadili mwisho? 660 00:46:40,000 --> 00:46:45,000 Jinsi gani mwisho kuishia kabla ya mwanzo? 661 00:46:45,000 --> 00:46:48,000 mwisho mwisho juu kabla ya mwanzo 662 00:46:48,000 --> 00:46:54,000 sababu ya math kwamba sisi ni kwenda kufanya kila wakati sisi kufanya hivyo. 663 00:46:54,000 --> 00:47:00,000 njia ya sisi byta ni kama ukiangalia mara ya kwanza sisi kufanya hili byta 664 00:47:00,000 --> 00:47:03,000 ambapo tuna mwanzo saa 4 na mwisho 665 00:47:03,000 --> 00:47:13,000 njia yote chini saa 108 na midpoint yetu, kusema, saa 16 - 666 00:47:13,000 --> 00:47:20,000 Mimi naenda kuweka upya hii nyuma 15-kama sisi ni kuangalia kwa 15, 667 00:47:20,000 --> 00:47:25,000 sisi alijua kwamba sisi alivyofanya wakati sisi checked 16 na kuona kwamba hiyo ilikuwa kubwa 668 00:47:25,000 --> 00:47:28,000 na alitaka Discard nzima haki ya sehemu ya orodha, 669 00:47:28,000 --> 00:47:36,000 tuliona kwamba kile sisi walitaka kufanya ni hoja hii e haki hapa. 670 00:47:36,000 --> 00:47:44,000 Ufanisi, e got wakiongozwa na moja kabla ya midpoint. 671 00:47:44,000 --> 00:47:48,000 Kadhalika, wakati sisi alifanya hivyo iteration ya algorithm 672 00:47:48,000 --> 00:47:51,000 na midpoint ilikuwa saa 8, 673 00:47:51,000 --> 00:47:55,000 tulikuta kwamba 8 <15, hivyo sisi alitaka hoja b 674 00:47:55,000 --> 00:48:00,000 moja iliyopita midpoint. 675 00:48:00,000 --> 00:48:07,000 Sasa, mwanzo na mwisho ni wawili pamoja katika hii 15. 676 00:48:07,000 --> 00:48:10,000 >> Kama tunatarajia imekuwa ikitokea kwa kuangalia kwa thamani nyingine, si 15, 677 00:48:10,000 --> 00:48:14,000 au kama 15 hii alikuwa badala ya 16, 678 00:48:14,000 --> 00:48:20,000 tunataka wamegundua kwamba e tunataka hoja moja kabla ya midpoint. 679 00:48:20,000 --> 00:48:33,000 Sasa e itakuwa kuna flipped chini ya b. 680 00:48:33,000 --> 00:48:39,000 Hebu kutembea kwa njia ya jinsi sisi kweli kuishia coding hii algorithm. 681 00:48:39,000 --> 00:48:44,000 Tunajua kwamba tunataka kuwa na hii hesabu midpoint. 682 00:48:44,000 --> 00:48:48,000 Tunajua pia kwamba tunataka kufuatilia mwanzo na mwisho wa safu 683 00:48:48,000 --> 00:48:51,000 wa safu yetu ya sasa ili tuweze kufikiri 684 00:48:51,000 --> 00:48:56,000 ambapo hii nusu ya kushoto ya orodha ni na ambapo nusu wa kulia wa orodha ni. 685 00:48:56,000 --> 00:49:03,000 Sisi kufanya hivyo na ama kuanza na mwisho, 686 00:49:03,000 --> 00:49:07,000 au tunaweza kuwaita min na max. 687 00:49:07,000 --> 00:49:10,000 Mimi itabidi kutumia kuanza na mwisho wakati huu. 688 00:49:10,000 --> 00:49:15,000 Tunapoanza, kama sisi kuangalia nyuma katika mfano wetu hapa chini, 689 00:49:15,000 --> 00:49:20,000 mwanzo wetu ilikuwa kuweka mwanzo wa safu, kama asili. 690 00:49:20,000 --> 00:49:25,000 Nini index ilikuwa hii? Nini yetu kuanza kuwa? 691 00:49:25,000 --> 00:49:27,000 Daniel. 692 00:49:27,000 --> 00:49:30,000 [Daniel] haystack [0]. 693 00:49:30,000 --> 00:49:37,000 [Nate] Yeah, hivyo tunaweza kuweka sawa na haystack [0]. 694 00:49:37,000 --> 00:49:40,000 tatizo, ingawa, ni kwamba hii inatupa si msimamo wa kipengele kwanza. 695 00:49:40,000 --> 00:49:45,000 Hiyo inatupa index ya kipengele kwanza au thamani halisi katika nafasi ya kwanza. 696 00:49:45,000 --> 00:49:47,000 [Mwanafunzi] Hiyo kubadilisha na 0.20? 697 00:49:47,000 --> 00:49:52,000 [Nate] Nini hii kufanya ni-vizuri, itakuwa si kufanya lolote kuwabadili. 698 00:49:52,000 --> 00:49:56,000 Nini itakuwa kufanya ni kitahifadhi 4 katika kuanza, 699 00:49:56,000 --> 00:49:59,000 na basi itakuwa vigumu kufanya ulinganishi dhidi kuanza 700 00:49:59,000 --> 00:50:03,000 kwa sababu kuanza itafanya thamani ya 4, 701 00:50:03,000 --> 00:50:06,000 ambayo ni mwanzo wa safu yetu, 702 00:50:06,000 --> 00:50:08,000 lakini sisi wanataka kufuatilia fahirisi katika safu 703 00:50:08,000 --> 00:50:11,000 kinyume na maadili. 704 00:50:11,000 --> 00:50:17,000 Tutaweza kweli matumizi 0, kama hiyo. 705 00:50:17,000 --> 00:50:20,000 Kwa maana mwisho wa safu-Charlotte kuletwa hii hadi mapema kidogo. 706 00:50:20,000 --> 00:50:23,000 Hii ni pale ambapo tutaweza kuchukua katika akaunti Indexing sifuri. 707 00:50:23,000 --> 00:50:25,000 >> Charlotte, nini mwisho wa safu? 708 00:50:25,000 --> 00:50:28,000 Je, ni ripoti ya mwisho? 709 00:50:28,000 --> 00:50:30,000 [Charlotte] Ukubwa - 1. 710 00:50:30,000 --> 00:50:32,000 Yeah, na ambayo kawaida tunapaswa kutumia? 711 00:50:32,000 --> 00:50:35,000 Je, sisi kutumia mtaji ukubwa au ukubwa lowercase? 712 00:50:35,000 --> 00:50:37,000 Capital kawaida. 713 00:50:37,000 --> 00:50:42,000 Katika kesi hiyo, tunaweza kutumia mtaji kawaida. 714 00:50:42,000 --> 00:50:45,000 Kama sisi alitaka kazi hii kuwa portable 715 00:50:45,000 --> 00:50:48,000 na kutumia kazi hii katika programu nyingine, 716 00:50:48,000 --> 00:50:50,000 tunaweza kweli matumizi ya kawaida lowercase. 717 00:50:50,000 --> 00:50:52,000 Ni faini pia. 718 00:50:52,000 --> 00:51:01,000 Lakini Charlotte kabisa haki ya kwamba tunataka kuwa na ukubwa - 1. 719 00:51:01,000 --> 00:51:03,000 Katika hii-kumweka 720 00:51:03,000 --> 00:51:05,000 [Mwanafunzi] Jinsi ni kwamba unaweza kutumia ukubwa uppercase? 721 00:51:05,000 --> 00:51:07,000 Jinsi ni kwamba tunaweza kutumia ukubwa uppercase? 722 00:51:07,000 --> 00:51:13,000 Ni zinageuka kuwa hawa # amefafanua ni kweli, 723 00:51:13,000 --> 00:51:19,000 chini ya Hood, Nakala kama kupata na nafasi, kama kwamba inafanya hisia. 724 00:51:19,000 --> 00:51:24,000 Wakati wewe kukusanya code yako, awamu preprocessing 725 00:51:24,000 --> 00:51:27,000 wa compiler huenda kwa njia ya SVG, 726 00:51:27,000 --> 00:51:31,000 na inaonekana kwa kila mahali kwamba ve yameandikwa mji mkuu kawaida, 727 00:51:31,000 --> 00:51:39,000 na kazi ya kubadilisha kwamba Nakala halisi na 8, tu kama hiyo. 728 00:51:39,000 --> 00:51:42,000 Katika hali hiyo, hii ni tofauti sana na kutofautiana. 729 00:51:42,000 --> 00:51:45,000 Haina kuchukua nafasi yoyote katika kumbukumbu. 730 00:51:45,000 --> 00:51:52,000 Ni rahisi Nakala badala ya hila. 731 00:51:52,000 --> 00:51:57,000 Katika kesi hii, sisi ni kwenda kutumia kawaida. 732 00:51:57,000 --> 00:52:01,000 Kutoka hapa hatuna wanataka kufanya baadhi ya aina ya marudio, 733 00:52:01,000 --> 00:52:03,000 na sisi ni juu ya kufuatilia haki kwa kitanzi wetu do-wakati. 734 00:52:03,000 --> 00:52:08,000 Tunataka kufanya kitu mpaka hali hana tena, 735 00:52:08,000 --> 00:52:12,000 na kama tuliona mapema, tumeona kwamba kwamba hali 736 00:52:12,000 --> 00:52:19,000 ilikuwa kwa kweli kwamba hatutaki mwisho 737 00:52:19,000 --> 00:52:24,000 kuwa chini ya kuanza. 738 00:52:24,000 --> 00:52:26,000 >> Hii ni hali yetu ya kuacha. 739 00:52:26,000 --> 00:52:35,000 Kama hii hutokea, sisi kutaka kuzuia na kutangaza kama, "Hey, sisi sikuona kitu chochote." 740 00:52:35,000 --> 00:52:43,000 Kueleza hili, sisi kufanya wanataka kutumia aina fulani ya kitanzi. 741 00:52:43,000 --> 00:52:49,000 Katika kesi hii, itakuwa ni kitanzi do-wakati, kwa kitanzi, kitanzi wakati? 742 00:52:49,000 --> 00:52:51,000 Tuna kitanzi do-wakati hapa. 743 00:52:51,000 --> 00:52:53,000 Je guys kama mbinu kwamba? 744 00:52:53,000 --> 00:52:59,000 Je, unafikiri sisi lazima mkabala tofauti? 745 00:52:59,000 --> 00:53:01,000 Kevin, mawazo yoyote? 746 00:53:01,000 --> 00:53:06,000 Tunaweza kuwa kitanzi wakati kwa sababu tunajua upeo 747 00:53:06,000 --> 00:53:11,000 itakuwa kubwa kuliko min saa anyways mwanzo. 748 00:53:11,000 --> 00:53:14,000 Yeah, hivyo hakuna initialization kwamba mahitaji ya kutokea. 749 00:53:14,000 --> 00:53:17,000 Wale matanzi kufanya-wakati ni kubwa wakati una initialize kitu 750 00:53:17,000 --> 00:53:21,000 kabla kisha kupima, ambapo hapa 751 00:53:21,000 --> 00:53:26,000 Tunajua kwamba sisi siyo kwenda kuweka reinitializing wote kuanza na mwisho 752 00:53:26,000 --> 00:53:28,000 kila pande ya kitanzi. 753 00:53:28,000 --> 00:53:32,000 Tunajua kwamba tunataka initialize yao, kisha kuangalia hali yetu. 754 00:53:32,000 --> 00:53:38,000 Katika kesi hiyo, mimi itabidi kweli kwenda kwa kitanzi rahisi wakati. 755 00:53:38,000 --> 00:53:44,000 Ni zinageuka kuwa loops kufanya-wakati hutumiwa uungwana infrequently. 756 00:53:44,000 --> 00:53:49,000 mengi ya maeneo hayana hata kufundisha gani wakati matanzi. 757 00:53:49,000 --> 00:53:53,000 Wao ni nzuri kwa ajili ya utunzaji user pembejeo, hivyo tumeona mengi yao hivi sasa. 758 00:53:53,000 --> 00:53:59,000 Lakini kwa kawaida na wakati matanzi ni mengi zaidi ya kawaida. 759 00:53:59,000 --> 00:54:03,000 Ni zinageuka kuwa hali hii kama ilivyoandikwa 760 00:54:03,000 --> 00:54:09,000 si kweli kufanya sisi mengi mazuri, na kwa nini ni hivyo? 761 00:54:09,000 --> 00:54:11,000 Samahani, sijui jina lako. 762 00:54:11,000 --> 00:54:13,000 Mimi nina Jerry >> Sorry.? 763 00:54:13,000 --> 00:54:15,000 Ni B-O-R-U-mimi. 764 00:54:15,000 --> 00:54:18,000 Oh, sawa. 765 00:54:18,000 --> 00:54:23,000 Mimi wala kuona juu ya orodha yangu. 766 00:54:23,000 --> 00:54:26,000 Oh, ni kwa sababu-oh, kwamba hufanya akili. 767 00:54:26,000 --> 00:54:31,000 Je, una wazo la nini hii kitanzi wakati wanaweza kufanya kazi kama ilivyokusudiwa, 768 00:54:31,000 --> 00:54:38,000 kama ilivyoandikwa na hali? 769 00:54:38,000 --> 00:54:43,000 [Jerry] Una maana kama unataka mambo yote baada ya ndani-? 770 00:54:43,000 --> 00:54:46,000 Yeah, hivyo kwamba moja. 771 00:54:46,000 --> 00:54:49,000 Tupate kuwa na kuweka yote ya mambo haya kwenye kitanzi wakati, ambayo ni kabisa kweli. 772 00:54:49,000 --> 00:54:55,000 kitu ambacho ni zaidi kidogo tatizo, ingawa, ni kwamba hali hii haina kazi. 773 00:54:55,000 --> 00:54:57,000 [Mwanafunzi] Unahitaji flip yake. 774 00:54:57,000 --> 00:55:04,000 Haki, hivyo hali hii si milele kuwa kweli awali njia tuliongea juu ya hilo. 775 00:55:04,000 --> 00:55:08,000 Tunataka kufanya kitu mpaka mwisho 00:55:13,000 lakini tunataka kufanya kitu wakati 777 00:55:13,000 --> 00:55:21,000 kuanza ≤ mwisho. 778 00:55:21,000 --> 00:55:24,000 >> Kuna kwamba mabadiliko ya mantiki huko. 779 00:55:24,000 --> 00:55:27,000 Mimi nina hatia ya kufanya makosa hayo wakati wote. 780 00:55:27,000 --> 00:55:31,000 [Mwanafunzi] Kwa nini ni kuwa kuwa chini ya au sawa na? 781 00:55:31,000 --> 00:55:33,000 Kwa sababu Unakumbuka kesi hiyo tulipata 782 00:55:33,000 --> 00:55:36,000 ambapo kulikuwa na kipengele kimoja tu, na sisi walikuwa chini, 783 00:55:36,000 --> 00:55:43,000 na sisi tulikuwa tunaangalia tu 15 katika safu yetu? 784 00:55:43,000 --> 00:55:47,000 Na mwanzo wetu na wa mwisho wetu walikuwa kipengele hicho. 785 00:55:47,000 --> 00:55:50,000 Tunataka kuhakikisha kwamba sisi kushughulikia kwamba kesi. 786 00:55:50,000 --> 00:55:54,000 Kama sisi alifanya sawa chini ya, 787 00:55:54,000 --> 00:55:58,000 sisi itakuwa na uwezo wa kupata chini ya safu 2-kipengele. 788 00:55:58,000 --> 00:56:06,000 Mara sisi got chini ya kipengele kwamba mwisho, kama kwamba walikuwa kipengele yetu, tunatarajia kamwe kupata hiyo. 789 00:56:06,000 --> 00:56:10,000 Sasa hapa, tunaweza kufanya hasa kama wewe walikuwa wakisema. 790 00:56:10,000 --> 00:56:15,000 Tunaweza kuanza plopping stuff haki ndani ya katikati ya wakati kitanzi yetu. 791 00:56:15,000 --> 00:56:20,000 Tunaweza plop katika midpoint yetu. 792 00:56:20,000 --> 00:56:24,000 Tunaweza kuchukua yote haya ikiwa kauli, 793 00:56:24,000 --> 00:56:30,000 kuvuta yao nje ya hii kitanzi do-wakati, 794 00:56:30,000 --> 00:56:34,000 plop yao katika, 795 00:56:34,000 --> 00:56:39,000 safi mambo juu kidogo, 796 00:56:39,000 --> 00:56:48,000 na mimi itabidi kwenda mbele na kuokoa hii marekebisho. 797 00:56:48,000 --> 00:56:53,000 Na katika hatua hii, sisi ni kupata pretty karibu. 798 00:56:53,000 --> 00:56:55,000 Sam. 799 00:56:55,000 --> 00:56:58,000 Nadhani wewe pia kuwa na int midpoint = ukubwa - 1/2. 800 00:56:58,000 --> 00:57:01,000 Nimeipata, ukubwa - 1/2. 801 00:57:01,000 --> 00:57:05,000 Je, kuna kitu kingine tunahitaji kubadilisha juu ya mstari huo? 802 00:57:05,000 --> 00:57:10,000 Hiyo ilikuwa catch nzuri. 803 00:57:10,000 --> 00:57:14,000 >> Nini ukubwa kufanya? Je, sisi milele kubadilisha kawaida? 804 00:57:14,000 --> 00:57:17,000 Ili kuweka mstari kama hii, sisi kuwa na mabadiliko ya kawaida. 805 00:57:17,000 --> 00:57:21,000 Tuna kubadilisha ukubwa kila wakati sisi kwenda kuzunguka kwa kitanzi. 806 00:57:21,000 --> 00:57:25,000 Lakini kumbuka, tulipokuwa tunakwenda kupitia mfano wetu tu kidogo awali, 807 00:57:25,000 --> 00:57:30,000 na sisi alikuwa mwanzo saa 4 808 00:57:30,000 --> 00:57:33,000 na mwisho katika njia yote juu ya 108? 809 00:57:33,000 --> 00:57:35,000 Jinsi gani sisi hesabu midpoint? 810 00:57:35,000 --> 00:57:38,000 Walikuwa sisi kutumia kawaida? 811 00:57:38,000 --> 00:57:40,000 Au sisi walikuwa kutumia kuanza na mwisho badala yake? 812 00:57:40,000 --> 00:57:42,000 Ni tofauti kati ya mwisho na mwanzo. 813 00:57:42,000 --> 00:57:50,000 Hasa, na jinsi gani hasa anapaswa kuandika kwamba mimi, Charlotte? 814 00:57:50,000 --> 00:57:52,000 Tu mwisho - kuanza. 815 00:57:52,000 --> 00:57:55,000 Wewe bila haja ya kufanya - 1 816 00:57:55,000 --> 00:57:58,000 kwa sababu - 1 imekuwa ni pamoja na katika mwisho na kuanza tayari. 817 00:57:58,000 --> 00:58:00,000 [Nate] Mkuu, uko kabisa kulia. 818 00:58:00,000 --> 00:58:03,000 Hatuna kufanya - 1 kutokana na kwamba - 1 imekuwa ni pamoja na 819 00:58:03,000 --> 00:58:08,000 na waliendelea kwa wakati sisi initialize variable mwisho. 820 00:58:08,000 --> 00:58:11,000 >> Je, kuna kitu kingine mimi haja ya kufanya syntactically kuwa mstari huu mantiki? 821 00:58:11,000 --> 00:58:13,000 [Mwanafunzi] Plus kuanza. >> Plus kuanza? 822 00:58:13,000 --> 00:58:15,000 [Mwanafunzi] Mwishoni. 823 00:58:15,000 --> 00:58:20,000 Sababu ni tu mahesabu urefu nusu. 824 00:58:20,000 --> 00:58:26,000 Unahitaji kuongeza kuanza. 825 00:58:26,000 --> 00:58:31,000 [Nate] nini huyu mahesabu kwa ajili yetu? 826 00:58:31,000 --> 00:58:35,000 Kama tunafikiri kuhusu mwisho juu ya iteration hii ya kwanza kabisa ya kitanzi, 827 00:58:35,000 --> 00:58:40,000 mwisho ni kwenda kuwa katika nafasi index 7. 828 00:58:40,000 --> 00:58:43,000 Kuanza ni katika nafasi 0. 829 00:58:43,000 --> 00:58:47,000 Kumbuka, sisi ni kuangalia kwa aidha 830 00:58:47,000 --> 00:58:52,000 nafasi 3 au nafasi 4. 831 00:58:52,000 --> 00:58:56,000 Tukiangalia math hii, tu kufanya hivyo zaidi kidogo yanayoonekana, 832 00:58:56,000 --> 00:59:02,000 kuweka namba baadhi hapa, tuna 7, 0, 833 00:59:02,000 --> 00:59:10,000 hivyo 7-0, na kisha / 2 834 00:59:10,000 --> 00:59:19,000 ni 3 katika mgawanyiko integer, kwamba ni. 835 00:59:19,000 --> 00:59:26,000 Basi tunahitaji kisha kuongeza nyuma yetu kuanza? 836 00:59:26,000 --> 00:59:28,000 Sisi si katika kesi hii. 837 00:59:28,000 --> 00:59:31,000 On iteration sana kwanza, itakuwa faini kwa sababu kuanza ni 0. 838 00:59:31,000 --> 00:59:36,000 Lakini kama sisi maendeleo, sisi kufanya kweli wote tu haja 839 00:59:36,000 --> 00:59:42,000 mwisho - kuanza / 2. 840 00:59:42,000 --> 00:59:46,000 Kuna moja hila nyingine hapa, na kwamba ni moja ya precedence yaani. 841 00:59:46,000 --> 00:59:49,000 [Mwanafunzi] Je, tunahitaji mabano? 842 00:59:49,000 --> 00:59:53,000 [Nate] Hasa, na kwamba kwa sababu kama hatuwezi kuweka mabano haya, 843 00:59:53,000 --> 00:59:58,000 kisha line hii itakuwa kufasiriwa badala 844 00:59:58,000 --> 01:00:09,000 kama (mwisho) - (kuanza / 2), ambayo sisi dhahiri hawataki. 845 01:00:09,000 --> 01:00:11,000 Jihadharini na wale sheria ya kuendelezwa. 846 01:00:11,000 --> 01:00:15,000 [Mwanafunzi] Kwa nini si mwisho + kuanza? 847 01:00:15,000 --> 01:00:17,000 Kwa nini si mwisho + kuanza? 848 01:00:17,000 --> 01:00:19,000 [Mwanafunzi] Kwa nini ni kwamba? 849 01:00:19,000 --> 01:00:24,000 Kwa nini itakuwa ni ya +? 850 01:00:24,000 --> 01:00:26,000 Nadhani wewe ni haki. 851 01:00:26,000 --> 01:00:28,000 [Mwanafunzi] Kwa sababu ni wastani? 852 01:00:28,000 --> 01:00:31,000 [Nate] Mwisho + kuanza, wewe ni kabisa kulia. 853 01:00:31,000 --> 01:00:34,000 Wow, mimi kabisa goofed. Wewe ni haki. 854 01:00:34,000 --> 01:00:39,000 Kama tunafanya bala, tunataka unataka kuongeza kuanza nyuma in 855 01:00:39,000 --> 01:00:43,000 Katika kesi hiyo, wewe ni haki sana kwamba tunataka kuchukua wastani wa miaka miwili, 856 01:00:43,000 --> 01:00:45,000 hivyo hatuna unataka kuongeza yao, kinyume na Ondoa yao. 857 01:00:45,000 --> 01:00:49,000 [Mwanafunzi] Pia ingekuwa kazi kama alivyofanya mwisho - kuanza / 2 + kuanza. 858 01:00:49,000 --> 01:00:55,000 Ni ingekuwa kama sisi kufanya-naamini hivyo. 859 01:00:55,000 --> 01:01:00,000 >> Kwa mfano, kama sisi walikuwa kuangalia kuanza, 860 01:01:00,000 --> 01:01:04,000 na sisi ni juu ya kubadilishwa hapa 861 01:01:04,000 --> 01:01:08,000 hadi 15. 862 01:01:08,000 --> 01:01:12,000 Sasa kuanza ni katika nafasi ya 2. 863 01:01:12,000 --> 01:01:15,000 Mwisho ni katika nafasi ya 7. 864 01:01:15,000 --> 01:01:21,000 Kama sisi Ondoa yao, sisi kupata 5. 865 01:01:21,000 --> 01:01:24,000 Wagawe kwamba kwa 2, sisi kupata 2. 866 01:01:24,000 --> 01:01:27,000 Na kisha sisi kuongeza 2 nyuma, 867 01:01:27,000 --> 01:01:30,000 na kwamba anapata sisi nafasi ya 4, 868 01:01:30,000 --> 01:01:33,000 ambayo ni haki hapa, ambayo ni midpoint. 869 01:01:33,000 --> 01:01:36,000 [Mwanafunzi] Je, tunahitaji kutunza wrapping? 870 01:01:36,000 --> 01:01:39,000 Ni katika maana tunahitaji kutunza wrapping? 871 01:01:39,000 --> 01:01:43,000 Kama Jumla au tofauti kati ya 872 01:01:43,000 --> 01:01:45,000 kutegemeana na jinsi sisi kufanya hivyo ni si idadi hata. 873 01:01:45,000 --> 01:01:49,000 Kisha kompyuta anapata kuchanganyikiwa kama wakati ni 2.5; 874 01:01:49,000 --> 01:01:52,000 je, wewe hoja kwa upande wa kushoto au haki ya kuamua ambayo ni midpoint? 875 01:01:52,000 --> 01:01:54,000 Got it. 876 01:01:54,000 --> 01:01:56,000 Ni zinageuka kuwa na mgawanyiko integer, 877 01:01:56,000 --> 01:01:59,000 sisi si milele kupata nambari hizi hatua floating. 878 01:01:59,000 --> 01:02:01,000 Sisi kamwe kupata decimal. 879 01:02:01,000 --> 01:02:04,000 Ni kabisa kuondolewa. 880 01:02:04,000 --> 01:02:08,000 Kama una kompyuta kugawanya mbili vigezo int, 881 01:02:08,000 --> 01:02:11,000 na moja ni 7, na nyingine ni 2, 882 01:02:11,000 --> 01:02:13,000 huwezi kupata 3.5 kama matokeo. 883 01:02:13,000 --> 01:02:16,000 Ni kupata 3. 884 01:02:16,000 --> 01:02:19,000 salio itakuwa kuondolewa, hivyo ni ufanisi rounding- 885 01:02:19,000 --> 01:02:24,000 si pande zote lakini badala ya sakafu, kama wewe guys ni ukoo na kwamba katika math, 886 01:02:24,000 --> 01:02:27,000 ambapo wewe kabisa Discard decimal, 887 01:02:27,000 --> 01:02:31,000 na hivyo wewe ni kimsingi truncating ni chini ya karibu 888 01:02:31,000 --> 01:02:33,000 nzima ya msimamo, na idadi karibu yote. 889 01:02:33,000 --> 01:02:38,000 [Mwanafunzi] Lakini kisha hiyo tatizo kwa sababu kama una safu ya vipengele 7 890 01:02:38,000 --> 01:02:43,000 basi moja kwa moja inachukua kipengele 3 nje ya midpoint badala ya 4. 891 01:02:43,000 --> 01:02:46,000 Jinsi gani sisi kukabiliana na kwamba? 892 01:02:46,000 --> 01:02:49,000 Ni tatizo kwa sababu kama tulikuwa na safu ya 7, 893 01:02:49,000 --> 01:02:54,000 ingekuwa pick 3 badala ya 4. 894 01:02:54,000 --> 01:02:56,000 Unaweza kuelezea zaidi kidogo? 895 01:02:56,000 --> 01:02:59,000 [Mwanafunzi] Kwa sababu kama una vipengele 7 kisha kipengele 4 896 01:02:59,000 --> 01:03:04,000 itakuwa midpoint, haki? 897 01:03:04,000 --> 01:03:07,000 Kumbuka maoni yako kuhusu kuwa sifuri indexed, ingawa. 898 01:03:07,000 --> 01:03:10,000 [Mwanafunzi] Yeah, hivyo katika nafasi 3. Hiyo itakuwa midpoint. 899 01:03:10,000 --> 01:03:12,000 Yeah. 900 01:03:12,000 --> 01:03:16,000 Oh, sawa. Mimi naona nini. 901 01:03:16,000 --> 01:03:19,000 Ni aina ya weird, kama sisi kupata kutumika wazo hili zima la 902 01:03:19,000 --> 01:03:22,000 kupata kuondoa decimals. 903 01:03:22,000 --> 01:03:26,000 Hiyo ni hatua kubwa. 904 01:03:26,000 --> 01:03:30,000 Hebu kumaliza jambo hili. 905 01:03:30,000 --> 01:03:32,000 Tumekuwa mahesabu midpoint yetu. 906 01:03:32,000 --> 01:03:37,000 >> Sisi ni kupima ili kuona kama sindano yetu ni sawa na thamani ya kati. 907 01:03:37,000 --> 01:03:41,000 Sisi ni uchapishaji kwamba sisi kupatikana, lakini kwa kweli, je, tunataka kufanya katika hali hii? 908 01:03:41,000 --> 01:03:46,000 Tumegundua hiyo, hivyo tunataka basi mpigaji kujua kwamba sisi kupatikana. 909 01:03:46,000 --> 01:03:49,000 Sisi tumepewa kazi hiyo ni ya bulin typed kazi. 910 01:03:49,000 --> 01:03:54,000 njia ya sisi kuonyesha kwa mpigaji wa kazi yetu kwamba sisi ni tayari kwenda 911 01:03:54,000 --> 01:03:58,000 ni sisi kusema, "Hey, hii ni kweli." 912 01:03:58,000 --> 01:04:00,000 Jinsi gani tunafanya hivyo, Kevin? 913 01:04:00,000 --> 01:04:02,000 Wewe nodding kichwa yako >> [Kevin] Kuongeza kurudi kweli.. 914 01:04:02,000 --> 01:04:06,000 [Nate] Hasa, kurudi kweli. 915 01:04:06,000 --> 01:04:12,000 Sasa, kama si sawa, ni jinsi gani sisi kuangalia nusu kushoto? 916 01:04:12,000 --> 01:04:16,000 Mawazo yoyote? 917 01:04:16,000 --> 01:04:18,000 Stella, mawazo yoyote? 918 01:04:18,000 --> 01:04:21,000 Unahitaji kuweka msimamo mpya kwa ajili ya mwisho. 919 01:04:21,000 --> 01:04:23,000 Yeah. 920 01:04:23,000 --> 01:04:29,000 Hivyo tuna kufanya nafasi ya midpoint - mwisho. 921 01:04:29,000 --> 01:04:33,000 Mkuu. 922 01:04:33,000 --> 01:04:36,000 Tunahitaji kuweka msimamo mpya kwa ajili ya mwisho 923 01:04:36,000 --> 01:04:38,000 kuangalia nusu kushoto. 924 01:04:38,000 --> 01:04:41,000 Hii ilikuwa nini kuongelea kabla ambapo 925 01:04:41,000 --> 01:04:44,000 Mimi kushika kurejea mfano huu. 926 01:04:44,000 --> 01:04:50,000 Mimi kuanza hapa, na kisha mimi kuwa na mwisho njia yote juu hapa. 927 01:04:50,000 --> 01:04:53,000 >> Tena, kama sisi ni kuangalia kwa 15, na midpoint yetu ni saa 16, 928 01:04:53,000 --> 01:04:56,000 na sisi kutambua, "Lo, 16 ni kubwa zaidi. 929 01:04:56,000 --> 01:04:59,000 Sisi unataka kuhama kwa nusu kushoto. " 930 01:04:59,000 --> 01:05:02,000 Tunataka basi hoja ya mwisho 15, 931 01:05:02,000 --> 01:05:06,000 na sisi kufanya hivyo kwa kuchukua moja mbali kutoka midpoint 932 01:05:06,000 --> 01:05:09,000 na kuweka kwamba kama mwisho wetu mpya. 933 01:05:09,000 --> 01:05:12,000 Aidha, kama tunataka kuangalia katika nusu kulia, ni jinsi gani sisi kufanya hivyo? 934 01:05:12,000 --> 01:05:14,000 Je, una wazo? 935 01:05:14,000 --> 01:05:22,000 [Mwanafunzi] Wewe tu kuweka kuanza midpoint + 1. 936 01:05:22,000 --> 01:05:24,000 [Nate] Mkuu. 937 01:05:24,000 --> 01:05:29,000 Na sasa katika kesi ya kwamba hatuwezi kupata chochote, 938 01:05:29,000 --> 01:05:32,000 gani kwamba kupata huduma ya kuchukuliwa kwa ajili yetu? 939 01:05:32,000 --> 01:05:36,000 Daniel, je, hiyo kupata huduma ya kuchukuliwa kwa ajili yetu? 940 01:05:36,000 --> 01:05:38,000 [Daniel] No 941 01:05:38,000 --> 01:05:40,000 [Nate] Kama sisi kufanya hivyo kwa kupitia safu nzima na sisi si kupata chochote, 942 01:05:40,000 --> 01:05:42,000 ambapo ingekuwa kwamba kuchukuliwa huduma ya, au lazima sisi kuchukua huduma hiyo? 943 01:05:42,000 --> 01:05:44,000 [Daniel] hali wakati. 944 01:05:44,000 --> 01:05:48,000 [Nate] Yeah, hali wakati, hasa. 945 01:05:48,000 --> 01:05:51,000 Ni itachukua huduma ya kwenda kupitia safu nzima kama hatuwezi kupata chochote. 946 01:05:51,000 --> 01:05:53,000 Hii kitanzi wakati itaisha. 947 01:05:53,000 --> 01:05:56,000 Sisi kamwe kuwa wamekutana na hali hii, 948 01:05:56,000 --> 01:06:03,000 na tunaweza kurejea uongo. 949 01:06:03,000 --> 01:06:10,000 Tunaweza pia kuondoka hii ikiwa katika hapa kama hii 950 01:06:10,000 --> 01:06:14,000 kwa sababu kama hii kama maelezo ni ya kweli, 951 01:06:14,000 --> 01:06:16,000 na kazi yetu kurudi, 952 01:06:16,000 --> 01:06:21,000 na hivyo tutaweza kimsingi abort kazi hii katika hatua hii 953 01:06:21,000 --> 01:06:24,000 wakati sisi kurudi kweli. 954 01:06:24,000 --> 01:06:28,000 Lakini nini kinatokea kwa muundo huu hapa? 955 01:06:28,000 --> 01:06:34,000 Je, hii kazi kabisa, au kuna baadhi flaw mantiki katika huko? 956 01:06:34,000 --> 01:06:37,000 >> Kuna baadhi ya flaw mantiki huko, na njia ni kuanzisha. 957 01:06:37,000 --> 01:06:40,000 Nini kinaweza kuwa kitu gani? 958 01:06:40,000 --> 01:06:43,000 [Mwanafunzi] Kwa nini unahitaji - na + 1s? 959 01:06:43,000 --> 01:06:47,000 Kwamba anaweka safu yetu hadi kuwa kushoto wetu mpya nusu na nusu ya haki. 960 01:06:47,000 --> 01:06:51,000 [Mwanafunzi] Lakini kwa nini hawakuweza kufanya hivyo bila - 1s na + 1s? 961 01:06:51,000 --> 01:06:53,000 [Nate] Tunaweza kuweka sawa na midpoint? 962 01:06:53,000 --> 01:07:04,000 Nini kinaweza kuwa tatizo kuhusu hilo? 963 01:07:04,000 --> 01:07:08,000 [Mwanafunzi] mimi nadhani ni ufanisi kwa sababu wewe ni kuangalia thamani ambayo tayari imekuwa checked. 964 01:07:08,000 --> 01:07:11,000 [Nate] Hasa, hivyo ni Sam kabisa kulia. 965 01:07:11,000 --> 01:07:15,000 Kama kuweka mwisho na kuanza sawa na midpoint 966 01:07:15,000 --> 01:07:18,000 badala ya - 1 na 1 + reflectively, 967 01:07:18,000 --> 01:07:22,000 wakati fulani katika siku za baadaye sisi kuishia kuangalia midpoint tena. 968 01:07:22,000 --> 01:07:26,000 [Mwanafunzi] Nilianza pset, na kisha mimi alikuwa na kitu kama hicho 969 01:07:26,000 --> 01:07:30,000 ambapo mimi nilimsahau 1 +, na alikwama katika kitanzi usio. 970 01:07:30,000 --> 01:07:34,000 Haki, kwa sababu wakati fulani wewe kamwe kwenda kupata kuanza na mwisho 971 01:07:34,000 --> 01:07:39,000 kwa kweli yanaingiliana. 972 01:07:39,000 --> 01:07:41,000 Cool. 973 01:07:41,000 --> 01:07:44,000 Kuna moja zaidi flaw mantiki, na kwamba ni kwamba hii lazima dhahiri kuwa 974 01:07:44,000 --> 01:07:48,000 mwingine kama. 975 01:07:48,000 --> 01:07:55,000 Kwa nini wapate kuwa kuwa? 976 01:07:55,000 --> 01:07:59,000 >> Sababu ni kama si mwingine kama-Uliona hiyo, Kevin? 977 01:07:59,000 --> 01:08:02,000 [Kevin] Yeah, kwa sababu wewe ni kubadilisha mwisho uhakika. 978 01:08:02,000 --> 01:08:05,000 [Nate] Hasa. 979 01:08:05,000 --> 01:08:07,000 Tunabadilisha endpoint, 980 01:08:07,000 --> 01:08:12,000 na kama ni maandishi kama hii we'll-kufanya maeneo ya kati- 981 01:08:12,000 --> 01:08:14,000 itakuwa kuangalia hii kesi. 982 01:08:14,000 --> 01:08:18,000 Kesi hii, kama ikifanikiwa, mapenzi abort nje ya kazi. 983 01:08:18,000 --> 01:08:21,000 Basi itakuwa kuangalia hii kesi ya pili, 984 01:08:21,000 --> 01:08:24,000 na kama hii inafanikiwa, itakuwa kurekebisha endpoint, 985 01:08:24,000 --> 01:08:28,000 na basi itakuwa kuendelea na kuangalia hii kesi. 986 01:08:28,000 --> 01:08:31,000 Lakini katika hatua hii, hatutaki ni kuendelea kuangalia. 987 01:08:31,000 --> 01:08:35,000 Bahati nzuri, sisi si upya midpoint hapa, 988 01:08:35,000 --> 01:08:39,000 na tunajua kwamba kesi hii haitafaulu. 989 01:08:39,000 --> 01:08:44,000 Lakini sisi dhahiri wanataka kuweka mwingine kama huko 990 01:08:44,000 --> 01:08:48,000 hata ingawa nguvu-katika kesi hii 991 01:08:48,000 --> 01:08:52,000 tangu sisi siyo kurekebisha midpoint, ingekuwa kwamba kufanya mabadiliko? 992 01:08:52,000 --> 01:08:54,000 Hapana, kwa sababu hizi kesi zote kipekee. 993 01:08:54,000 --> 01:08:58,000 Tena, mbaya wangu. 994 01:08:58,000 --> 01:09:01,000 Hatuna, nadhani, wanahitaji hii mwingine ikiwa. 995 01:09:01,000 --> 01:09:05,000 Tunaweza kutoa ni kujaribu na kukimbia na kuona nini kinatokea. 996 01:09:05,000 --> 01:09:08,000 Ujenzi, kosa ilitokea. 997 01:09:08,000 --> 01:09:12,000 Ni pengine kwa sababu mimi kushoto haya ya b na e katika hapa. 998 01:09:12,000 --> 01:09:14,000 Je, nina yoyote zaidi ya hadi wale saa ya juu? 999 01:09:14,000 --> 01:09:16,000 Haionekani kama hiyo. 1000 01:09:16,000 --> 01:09:20,000 Sisi zoom nje, kujenga, 1001 01:09:20,000 --> 01:09:24,000 kuna unaendelea, hivyo sasa kama sisi kutafuta 15, 1002 01:09:24,000 --> 01:09:28,000 ndiyo. 1003 01:09:28,000 --> 01:09:30,000 Hebu zoom in 1004 01:09:30,000 --> 01:09:33,000 15, ndiyo. Tunaweza kukimbia tena. 1005 01:09:33,000 --> 01:09:36,000 Kuweka chanzo code, kujenga, kuendesha. 1006 01:09:36,000 --> 01:09:41,000 Tunaweza kutafuta kwa kitu kama 13, 1007 01:09:41,000 --> 01:09:45,000 na hatuwezi kupata kitu chochote uchapishaji nje, hivyo si kutafuta kuwa kwa ajili yetu. 1008 01:09:45,000 --> 01:09:51,000 Hiyo ni kubwa, kwa sababu si katika orodha yetu. 1009 01:09:51,000 --> 01:09:53,000 >> Sisi ni sasa nje ya muda. 1010 01:09:53,000 --> 01:09:55,000 Hiyo itakuwa ni kwa wiki hii. 1011 01:09:55,000 --> 01:10:00,000 Shukrani kwa ajili ya kujiunga, na kuona wewe baadaye. 1012 01:10:00,000 --> 01:10:02,000 >> [CS50.TV]