1 00:00:00,000 --> 00:00:11,904 >> [MUSIC nagpe-play] 2 00:00:11,904 --> 00:00:12,910 >> PROFESSOR: Lahat ng karapatan. 3 00:00:12,910 --> 00:00:16,730 Ito ay CS50 at ito ay ang katapusan ng linggo tatlong. 4 00:00:16,730 --> 00:00:20,230 Kaya narito kami ngayon, hindi sa Sanders Theater, sa halip sa Weidner Library. 5 00:00:20,230 --> 00:00:23,170 Inside ng kung saan ay isang studio kilala bilang Hauser Studio, 6 00:00:23,170 --> 00:00:28,310 o dapat naming sabihin Studio H, o dapat say-- namin kung Tatangkilikin mo na joke, 7 00:00:28,310 --> 00:00:30,540 ito ay mula sa aktwal na kaklase, Mark, online, 8 00:00:30,540 --> 00:00:32,420 na iminungkahi ng mas maraming sa pamamagitan ng Twitter. 9 00:00:32,420 --> 00:00:34,270 Ngayon kung ano ang cool na tungkol pagiging dito sa isang studio 10 00:00:34,270 --> 00:00:38,410 ay na ako napapalibutan ng mga berdeng pader, ng isang kulay berdeng screen o Chromakey, 11 00:00:38,410 --> 00:00:43,290 wika nga, na nangangahulugan na ang CS50 production team, walang anumang kaalaman sa akin 12 00:00:43,290 --> 00:00:47,380 sa ngayon, maaaring maging paglagay sa akin karamihan sa kahit saan sa mundo, 13 00:00:47,380 --> 00:00:48,660 para sa mas mahusay o para sa mas masahol pa. 14 00:00:48,660 --> 00:00:51,800 >> Ngayon kung ano ang kasinungalingan maaga, itakda ang problema dalawang ito ay nasa iyong mga kamay para sa linggong ito, 15 00:00:51,800 --> 00:00:53,830 pero sa pamamagitan ng hanay ng problema tatlong ito darating na linggo, 16 00:00:53,830 --> 00:00:56,600 ikaw ay hinamon sa ang tinatawag na laro ng 15, 17 00:00:56,600 --> 00:00:58,960 ang lumang partido pabor na maaari mong isipin ang pagtanggap 18 00:00:58,960 --> 00:01:02,030 bilang isang bata na may isang buong grupo ng mga numero na maaaring i-slide pataas, pababa, 19 00:01:02,030 --> 00:01:05,790 pakaliwa at pakanan, at mayroong isang puwang sa loob ng mga puzzle, sa kung saan ka 20 00:01:05,790 --> 00:01:07,840 maaaring aktwal na i-slide ang mga piraso ng puzzle. 21 00:01:07,840 --> 00:01:11,150 Sa huli mong matanggap ito palaisipan sa ilang mga semi random order, 22 00:01:11,150 --> 00:01:12,940 at ang layunin ay upang ayusin ito, itaas hanggang sa ibaba, 23 00:01:12,940 --> 00:01:16,310 kaliwa hanggang kanan, mula sa isang lahat ng mga paraan up sa pamamagitan ng 15. 24 00:01:16,310 --> 00:01:19,360 >> Sa kasamaang palad, ang pagpapatupad magkakaroon ka sa kamay 25 00:01:19,360 --> 00:01:21,590 ay magiging software based, hindi pisikal. 26 00:01:21,590 --> 00:01:25,280 Ikaw ang tunay na ay pagpunta sa may upang isulat code na kung saan ang mag-aaral o manwal ng lata 27 00:01:25,280 --> 00:01:26,760 i-play ang laro ng 15. 28 00:01:26,760 --> 00:01:29,030 At sa katunayan, sa hacker edisyon ng laro ng 15, 29 00:01:29,030 --> 00:01:32,155 makikita mo ang isang hamon upang ipatupad, hindi lamang ang paglalaro ng old school 30 00:01:32,155 --> 00:01:35,010 laro, ngunit sa halip ang tuos ng mga ito, ang pagpapatupad ng mode diyos, 31 00:01:35,010 --> 00:01:38,280 wika nga, na aktwal na malulutas nito ang puzzle para sa mga tao, 32 00:01:38,280 --> 00:01:41,080 sa pamamagitan ng pagbibigay sa kanila ng hint, matapos hint, pagkatapos ng hint. 33 00:01:41,080 --> 00:01:42,280 Kaya higit pa sa na sa susunod na linggo. 34 00:01:42,280 --> 00:01:43,720 Ngunit iyon lamang ang mangyayari sa hinaharap. 35 00:01:43,720 --> 00:01:47,610 >> Para sa ngayon pagpapabalik na mas maaga sa linggong ito kami ay nagkaroon na ito cliffhanger, kung ikaw ay, 36 00:01:47,610 --> 00:01:52,560 kung saan ang mga pinakamahusay na aming ginagawa sa pag-uuri matalino ay isang itaas na nakatali sa malaking o ng n 37 00:01:52,560 --> 00:01:53,210 nakalapat. 38 00:01:53,210 --> 00:01:56,520 Sa ibang salita, bubble uri, pagpili ng uri, uri pagpapasok, 39 00:01:56,520 --> 00:01:59,120 lahat ng mga ito, habang ang iba't-ibang sa kanilang pagpapatupad, 40 00:01:59,120 --> 00:02:03,480 devolved sa isang n nakalapat tumatakbo oras sa pinakadulo pinakamasama kaso. 41 00:02:03,480 --> 00:02:06,010 At kami ay karaniwang ipinapalagay na tunay pinakamasama kaso para sa pag-uuri 42 00:02:06,010 --> 00:02:08,814 ay isa na ang iyong input ay ganap na paurong. 43 00:02:08,814 --> 00:02:11,980 At sa katunayan, ito kinuha lubos ng ilang mga hakbang upang ipatupad ang bawat isa sa mga algorithm. 44 00:02:11,980 --> 00:02:15,110 >> Ngayon sa dulo ng klase pagpapabalik, namin kumpara bubble sort 45 00:02:15,110 --> 00:02:19,390 laban uri laban sa isa sa iba pang mga pagpipilian na tinatawag naming pagsasama-uuri sa oras, 46 00:02:19,390 --> 00:02:22,120 at imungkahi ko na ito ay ang pagkuha bentahe ng isang aralin mula sa linggo 47 00:02:22,120 --> 00:02:24,060 zero, hatiin at lupigin. 48 00:02:24,060 --> 00:02:28,810 At sa anumang paraan sa pagkamit ng ilang mga uri ng logarithmic tumatakbo ang oras sa huli, 49 00:02:28,810 --> 00:02:31,024 sa halip ng isang bagay na pulos parisukat. 50 00:02:31,024 --> 00:02:33,440 At ito ay hindi lubos logarithmic, ito ay isang piraso ng higit sa na. 51 00:02:33,440 --> 00:02:36,520 Subalit kung ang pagpapabalik sa iyo mula sa klase, ito ay marami, marami mas mabilis. 52 00:02:36,520 --> 00:02:38,210 Tingnan natin ang isang pagtingin sa kung saan namin kaliwa off. 53 00:02:38,210 --> 00:02:41,880 54 00:02:41,880 --> 00:02:45,370 >> Sort Bubble laban seleksyon uri laban sa pagsasama-uuri. 55 00:02:45,370 --> 00:02:47,700 Ngayon lahat sila ay tumatakbo, sa teorya, at sa parehong oras. 56 00:02:47,700 --> 00:02:50,510 CPU ay tumatakbo sa parehong bilis. 57 00:02:50,510 --> 00:02:54,990 Ngunit maaari mong pakiramdam kung paano boring ito ay masyadong mabilis ang pagpunta sa maging, 58 00:02:54,990 --> 00:02:58,790 at lamang kung paano mabilis, kapag mag-iniksyon namin isang piraso ng algorithm linggo zero, ang 59 00:02:58,790 --> 00:03:00,080 maaari naming mapabilis ang mga bagay up. 60 00:03:00,080 --> 00:03:01,630 >> Kaya mukhang kamangha-manghang mark sort. 61 00:03:01,630 --> 00:03:05,220 Paano natin pagkilos ito, upang upang maipagsama-sama mga numero na mas mabilis. 62 00:03:05,220 --> 00:03:07,140 Sabihin sa tingin pabalik Well hayaan sa isang sangkap na namin 63 00:03:07,140 --> 00:03:10,380 nagkaroon pabalik sa linggo zero, na ng na naghahanap para sa isang tao sa isang libro ng telepono, 64 00:03:10,380 --> 00:03:12,380 at isipin na ang pseudocode na aming iminungkahi, 65 00:03:12,380 --> 00:03:14,560 sa pamamagitan ng kung saan maaari naming mahanap ang isang tao tulad ng Mike Smith, 66 00:03:14,560 --> 00:03:16,310 tumingin ng isang maliit na isang bagay na katulad nito. 67 00:03:16,310 --> 00:03:20,820 >> Ngayon tingnan sa partikular sa line 7 at 8, at 10 at 11, 68 00:03:20,820 --> 00:03:25,240 na magbuod na loop, kung saan kami ay nag-iingat balik sa 3 linya muli, at muli, 69 00:03:25,240 --> 00:03:26,520 at muli. 70 00:03:26,520 --> 00:03:31,790 Ngunit ito ay lumiliko out na maaari naming tingnan algorithm na ito, dito sa pseudocode, 71 00:03:31,790 --> 00:03:33,620 isang maliit na mas holistically. 72 00:03:33,620 --> 00:03:35,960 Sa katunayan, kung ano Naghahanap ako at dito sa screen, 73 00:03:35,960 --> 00:03:41,180 ay isang algorithm para sa paghahanap para Mike Smith sa gitna ng ilang hanay ng mga pahina. 74 00:03:41,180 --> 00:03:45,520 At sa katunayan, maaari naming gawing simple ito algorithm sa mga linya 7 at 8, 75 00:03:45,520 --> 00:03:49,860 at 10 at 11 upang sabihin lamang na ito, na kung saan ko na ipinakita dito sa kulay dilaw. 76 00:03:49,860 --> 00:03:52,210 Sa ibang salita, kung Mike Smith ay mas maaga sa aklat, 77 00:03:52,210 --> 00:03:55,004 hindi namin kailangan upang tukuyin ang hakbang sa pamamagitan ng hakbang na ngayon kung paano pumunta mahanap sa kanya. 78 00:03:55,004 --> 00:03:56,920 Wala kaming upang tukuyin upang bumalik sa line 3, 79 00:03:56,920 --> 00:03:58,960 bakit hindi namin sa halip na lamang, sabihin, mas pangkalahatang paraan, 80 00:03:58,960 --> 00:04:01,500 maghanap para sa Mike sa kaliwang kalahati ng libro. 81 00:04:01,500 --> 00:04:03,960 >> Sa kabaligtaran, kung Mike ay talagang ibang pagkakataon sa mga libro, 82 00:04:03,960 --> 00:04:07,540 bakit hindi na quote lang namin magpanipi search para sa Mike sa kanang kalahati ng libro. 83 00:04:07,540 --> 00:04:11,030 Sa ibang salita, bakit hindi namin lamang uri ng tumikin sa ating sarili na sinasabi, 84 00:04:11,030 --> 00:04:13,130 maghanap para sa Mike sa ganitong subset ng libro, 85 00:04:13,130 --> 00:04:16,279 at iwanan ito sa aming mga umiiral na algorithm upang sabihin sa amin 86 00:04:16,279 --> 00:04:18,750 paano mag-search para sa Mike sa na kaliwang kalahati ng libro. 87 00:04:18,750 --> 00:04:20,750 Sa ibang salita, ang aming algorithm ay gumagana kung ito ay 88 00:04:20,750 --> 00:04:24,670 isang libro ng kapal ng telepono, ng mga ito kapal, o anumang kapal ano pa man. 89 00:04:24,670 --> 00:04:27,826 Kaya maaari naming recursively tukuyin ang algorithm na ito. 90 00:04:27,826 --> 00:04:29,950 Sa ibang salita, sa screen dito, ay isang algorithm 91 00:04:29,950 --> 00:04:33,130 para sa paghahanap para sa Mike Smith sa pagitan ng mga pahina ng isang libro ng telepono. 92 00:04:33,130 --> 00:04:37,410 Kaya sa linya 7 at 10, sabihin lang sabihin eksakto na. 93 00:04:37,410 --> 00:04:40,250 At gagamitin ko ang terminong ito sa isang sandali nakaraan, at sa katunayan, recursion 94 00:04:40,250 --> 00:04:42,450 ay ang buzzword para sa ngayon, at ito ay ang proseso na ito 95 00:04:42,450 --> 00:04:47,210 ng paggawa ng isang bagay cyclical pamamagitan paanuman gamit ang code na mayroon ka, 96 00:04:47,210 --> 00:04:49,722 at pagtawag ito muli, at muli, at muli. 97 00:04:49,722 --> 00:04:51,930 Ngayon ito ay magiging mahalaga na namin sa paanuman ibaba 98 00:04:51,930 --> 00:04:53,821 out, at huwag gawin na walang katapusan ang haba. 99 00:04:53,821 --> 00:04:56,070 Kung hindi man namin ang pagpunta sa Mayroon talagang isang walang-katapusang loop. 100 00:04:56,070 --> 00:04:59,810 Ngunit sabihin makita kung maaari naming humiram ng mga ideya na ito ng isang recursion, paggawa ng isang bagay muli 101 00:04:59,810 --> 00:05:03,600 at muli at muli, upang malutas ang pag-uuri ng problema sa pamamagitan ng merge 102 00:05:03,600 --> 00:05:05,900 uri, lahat ng mga mas mahusay. 103 00:05:05,900 --> 00:05:06,970 >> Kaya bigyan ko bang pagsamahin mo sort. 104 00:05:06,970 --> 00:05:07,920 Tignan natin. 105 00:05:07,920 --> 00:05:10,850 Kaya dito ay pseudocode, na may kung saan maaari naming ipatupad ang pag-uuri, 106 00:05:10,850 --> 00:05:12,640 gamit ang algorithm na ito na tinatawag na pagsasama-uuri. 107 00:05:12,640 --> 00:05:13,880 At ito ay lubos na lamang ito. 108 00:05:13,880 --> 00:05:15,940 On input ng n elemento, sa ibang salita, kung ikaw ay 109 00:05:15,940 --> 00:05:18,830 ibinigay n elemento at mga numero at mga titik o kahit na ano ang input ay, 110 00:05:18,830 --> 00:05:22,430 kung ikaw ay bibigyan n elemento, kung n ay mas mababa sa 2, bumalik lang. 111 00:05:22,430 --> 00:05:22,930 Right? 112 00:05:22,930 --> 00:05:26,430 Dahil kung ang n ay mas mababa sa 2, na ay nangangahulugan na ang aking listahan ng mga elemento 113 00:05:26,430 --> 00:05:30,446 ay alinman sa sukat na 0 o 1, at sa pareho ng mga walang kuwenta mga kaso, 114 00:05:30,446 --> 00:05:31,570 ang listahan na pinagsunod-sunod. 115 00:05:31,570 --> 00:05:32,810 Kung walang listahan, ito ay pinagsunod-sunod. 116 00:05:32,810 --> 00:05:35,185 At kung may isang listahan ng haba 1, malinaw naman ito ay pinagsunod-sunod. 117 00:05:35,185 --> 00:05:38,280 Kaya lamang ang mga pangangailangan ng mga algorithm upang talagang gawin ang isang bagay na interesante, 118 00:05:38,280 --> 00:05:40,870 kung kami ay may dalawa o higit pang elemento ibinigay sa atin. 119 00:05:40,870 --> 00:05:42,440 Kaya tingnan natin ang magic pagkatapos ay hayaan. 120 00:05:42,440 --> 00:05:47,500 Iba Pa ayusin ang kaliwang kalahati ng mga sangkap, pagkatapos ay ayusin ang kanang kalahati ng mga sangkap, 121 00:05:47,500 --> 00:05:49,640 pagkatapos ay pagsamahin ang pinagsunod-sunod halves. 122 00:05:49,640 --> 00:05:52,440 At kung ano ang uri ng isip baluktot dito, ay na hindi ko talaga 123 00:05:52,440 --> 00:05:56,190 mukhang may nagsabi sa iyo kahit ano pa lang, di ba? 124 00:05:56,190 --> 00:05:59,560 Lahat ng sinabi ko na ay, na ibinigay ng isang listahan ng mga n elemento, uri-uriin ang kaliwang kalahati, 125 00:05:59,560 --> 00:06:01,800 pagkatapos ay ang kanang kalahati, at pagkatapos ay pagsamahin ang pinagsunod-sunod halves, 126 00:06:01,800 --> 00:06:03,840 ngunit kung saan ay ang aktwal na lihim sauce? 127 00:06:03,840 --> 00:06:05,260 Saan ang algorithm? 128 00:06:05,260 --> 00:06:09,150 Well ito ay lumiliko out na ang mga dalawang linya una, uri kaliwa kalahati ng mga sangkap, 129 00:06:09,150 --> 00:06:13,970 at uri kanang kalahati ng mga sangkap, mga recursive tawag, kaya na magsalita. 130 00:06:13,970 --> 00:06:16,120 >> Pagkatapos ng lahat, hindi na ito punto sa panahon, ang mayroon ako 131 00:06:16,120 --> 00:06:18,950 isang algorithm na kung saan na ayusin ang maramihang mga elemento? 132 00:06:18,950 --> 00:06:19,450 Oo. 133 00:06:19,450 --> 00:06:20,620 Ito ay karapatan dito. 134 00:06:20,620 --> 00:06:25,180 Ito ay karapatan dito sa screen, at kaya ang maaari kong gamitin ang parehong hanay ng mga hakbang 135 00:06:25,180 --> 00:06:28,500 upang ayusin ang kaliwang kalahati, bilang ko ang kanang kalahati. 136 00:06:28,500 --> 00:06:30,420 At sa katunayan, muli, at muli. 137 00:06:30,420 --> 00:06:34,210 Kaya sa anumang paraan o iba pang, at bibigyan namin ng lalong madaling panahon makita ang mga ito, ang magic ng pagsasama-uuri 138 00:06:34,210 --> 00:06:37,967 ay naka-embed sa mga na napaka-final line, pinagsasama ang pinagsunod-sunod na halves. 139 00:06:37,967 --> 00:06:39,300 At na tila medyo madaling maunawaan. 140 00:06:39,300 --> 00:06:41,050 Kumuha ka ng dalawang kalahati, at ikaw, kahit papaano, pagsamahin ang mga ito nang sama-sama, 141 00:06:41,050 --> 00:06:43,260 at kami na makita na ito concretely sa isang sandali. 142 00:06:43,260 --> 00:06:45,080 >> Ngunit ito ay isang kumpletong algorithm. 143 00:06:45,080 --> 00:06:46,640 At ni makita ang eksaktong dahilan kung bakit ipaalam. 144 00:06:46,640 --> 00:06:50,912 Well ipagpalagay na kami ay ibinigay ng mga parehong walong elemento dito sa screen, isa 145 00:06:50,912 --> 00:06:53,120 sa pamamagitan ng walong, ngunit ang mga ito sa mukha random order. 146 00:06:53,120 --> 00:06:55,320 At ang mga layunin sa kamay ay upang ayusin ang mga elementong ito. 147 00:06:55,320 --> 00:06:58,280 Well paano ko pumunta tungkol sa ginagawa ito gamit, muli, 148 00:06:58,280 --> 00:07:00,407 sumanib-uuri, tulad ng bawat ang pseudocode? 149 00:07:00,407 --> 00:07:02,740 At muli, itanim ito sa ang iyong isip, para sa sandali lamang. 150 00:07:02,740 --> 00:07:05,270 Ang unang kaso ay medyo walang halaga, kung ito ay mas mababa sa 2, 151 00:07:05,270 --> 00:07:07,060 bumalik lang, walang trabaho upang gawin. 152 00:07:07,060 --> 00:07:09,290 Kaya talagang may tatlo lamang mga hakbang sa tunay na panatilihin sa isip. 153 00:07:09,290 --> 00:07:11,081 Muli, at muli, ako pagpunta sa nais na magkaroon 154 00:07:11,081 --> 00:07:13,980 upang ayusin ang kaliwang kalahati, pagbukud-bukurin ang kanang kalahati, 155 00:07:13,980 --> 00:07:15,890 at pagkatapos ay sa sandaling ang kanilang dalawang kalahati ay pinagsunod-sunod, 156 00:07:15,890 --> 00:07:18,710 Gusto ko na pagsamahin ang mga ito nang sama-sama sa isa pinagsunod-sunod na listahan. 157 00:07:18,710 --> 00:07:19,940 Kaya panatilihin na sa isip. 158 00:07:19,940 --> 00:07:21,310 >> Kaya dito ay ang orihinal na listahan. 159 00:07:21,310 --> 00:07:23,510 Ni ituturing ito bilang isang Ipaalam array, tulad namin na nagsimula sa 160 00:07:23,510 --> 00:07:25,800 sa dalawang linggo, kung saan ay isang magkadikit bloke ng memorya. 161 00:07:25,800 --> 00:07:28,480 Sa kasong ito, na naglalaman ng walong numero, bumalik sa likod sa likod. 162 00:07:28,480 --> 00:07:30,700 At ngayon mag-aplay pagsasama-uuri ipaalam. 163 00:07:30,700 --> 00:07:33,300 Kaya unang ko nais upang maipagsama-sama sa kaliwang kalahati ng listahan na ito, 164 00:07:33,300 --> 00:07:37,370 at sabihin, samakatuwid, focus sa 4, 8, 6, at 2. 165 00:07:37,370 --> 00:07:41,000 >> Ngayon paano ko pumunta tungkol sa pag-uuri ng isang listahan ng mga laki 4? 166 00:07:41,000 --> 00:07:45,990 Well kailangan kong ngayon isaalang-alang paghihiwalay sa kaliwa ng kaliwang kalahati. 167 00:07:45,990 --> 00:07:47,720 Muli, ni rewind para sa sandali lamang ipaalam. 168 00:07:47,720 --> 00:07:51,010 Kung ang pseudocode ay ito, at ako ng ibinigay walong elemento, 169 00:07:51,010 --> 00:07:53,230 8 ay malinaw naman higit na kaysa sa o katumbas ng 2. 170 00:07:53,230 --> 00:07:54,980 Kaya sa ay hindi akma sa unang kaso. 171 00:07:54,980 --> 00:07:58,120 Kaya upang maipagsama-sama walong elemento, ako unang pagbukud-bukurin ang kaliwang kalahati ng mga sangkap, 172 00:07:58,120 --> 00:08:01,930 pagkatapos ko ayusin ang mga karapatan sa kalahati, pagkatapos ay pagsamahin ko ang dalawang inayos halves, ang bawat isa ng mga laki 4. 173 00:08:01,930 --> 00:08:02,470 SIGE. 174 00:08:02,470 --> 00:08:07,480 >> Ngunit kung lamang na iyong sinabi sa akin, ayusin ang kaliwang kalahati, na ngayon ng mga laki 4, 175 00:08:07,480 --> 00:08:09,350 paano ko ayusin ang kaliwa kalahati? 176 00:08:09,350 --> 00:08:11,430 Well kung ako ay may isang input ng apat na mga sangkap, 177 00:08:11,430 --> 00:08:14,590 Ako unang-uri-uriin ang kaliwang dalawa, pagkatapos ay ang karapatan ng dalawa, 178 00:08:14,590 --> 00:08:16,210 at pagkatapos ko bang pagsamahin ang mga ito nang magkakasama. 179 00:08:16,210 --> 00:08:18,700 Kaya muli, ito ay nagiging isang bit ng isang isip baluktot laro dito, 180 00:08:18,700 --> 00:08:21,450 dahil sa iyo, uri ng, kung tandaan kung nasaan ka sa mga kuwento, 181 00:08:21,450 --> 00:08:23,620 ngunit sa pagtatapos ng araw, bibigyan ng anumang numero ng mga elemento, 182 00:08:23,620 --> 00:08:25,620 unang nais na ayusin ang kaliwang kalahati, at pagkatapos ay ang kanang kalahati, 183 00:08:25,620 --> 00:08:26,661 pagkatapos ay pagsamahin ang mga ito nang magkakasama. 184 00:08:26,661 --> 00:08:28,630 Magsimula na gawin eksakto na Hayaan. 185 00:08:28,630 --> 00:08:30,170 Narito ang input ng walong elemento. 186 00:08:30,170 --> 00:08:31,910 Ngayon kami ay naghahanap sa kaliwang kalahati dito. 187 00:08:31,910 --> 00:08:33,720 Paano ko ayusin apat na mga sangkap? 188 00:08:33,720 --> 00:08:35,610 Well una kong ayusin ang kaliwa kalahati. 189 00:08:35,610 --> 00:08:37,720 Ngayon paano ko ayusin ang kaliwa kalahati? 190 00:08:37,720 --> 00:08:39,419 Well ko na binigyan ng dalawang elemento. 191 00:08:39,419 --> 00:08:41,240 Kaya ayusin ni ang dalawang mga elemento ipaalam. 192 00:08:41,240 --> 00:08:44,540 2 ay mas malaki kaysa sa o katumbas ng 2, siyempre. 193 00:08:44,540 --> 00:08:46,170 Kaya na unang kaso ay hindi akma. 194 00:08:46,170 --> 00:08:49,010 >> Kaya ako ngayon ay upang ayusin ang kaliwang kalahati ng mga ito ng dalawang mga sangkap. 195 00:08:49,010 --> 00:08:50,870 Ang kaliwang kalahati, siyempre, ay 4 lamang. 196 00:08:50,870 --> 00:08:54,020 Kaya paano ko ayusin ang isang listahan ng isang elemento? 197 00:08:54,020 --> 00:08:57,960 Well ngayon, ang mga espesyal na base kaso up itaas, kaya na magsalita, nalalapat. 198 00:08:57,960 --> 00:09:01,470 1 ay mas mababa sa 2, at ang aking list ay sa katunayan ng sukat 1. 199 00:09:01,470 --> 00:09:02,747 Kaya bumalik ako lang. 200 00:09:02,747 --> 00:09:03,580 Hindi ako gumawa ng kahit ano. 201 00:09:03,580 --> 00:09:06,770 At sa katunayan, tumingin sa kung ano na ko tapos, 4 na pinagsunod-sunod. 202 00:09:06,770 --> 00:09:09,220 Tulad na ako bahagyang matagumpay dito. 203 00:09:09,220 --> 00:09:11,750 >> Ngayon na tila uri ng tangang sa paghahabol, ngunit ito ay totoo. 204 00:09:11,750 --> 00:09:13,700 4 ay isang listahan ng mga sukat 1. 205 00:09:13,700 --> 00:09:15,090 Na ito ay pinagsunod-sunod. 206 00:09:15,090 --> 00:09:16,270 Iyan ang kaliwang kalahati. 207 00:09:16,270 --> 00:09:18,010 Ngayon ko uri-uriin ang kanang kalahati. 208 00:09:18,010 --> 00:09:22,310 Aking input ay isang elemento, 8 katulad, pinagsunod-sunod. 209 00:09:22,310 --> 00:09:25,170 Stupid, masyadong, ngunit muli, pangunahing alituntuning 210 00:09:25,170 --> 00:09:28,310 ay pagpunta sa nagpapahintulot sa amin upang ngayon magtayo sa tuktok ng ito ay matagumpay na. 211 00:09:28,310 --> 00:09:32,260 4 inayos, 8 ay inayos, ngayon kung ano na ang huling hakbang? 212 00:09:32,260 --> 00:09:35,330 Kaya ang ikatlong at huling hakbang, ang anumang oras na naka-uuri-uri ng isang listahan, pagpapabalik, 213 00:09:35,330 --> 00:09:38,310 ay upang sumanib sa dalawang halves, sa kaliwa at kanan. 214 00:09:38,310 --> 00:09:39,900 Kaya sabihin gawin eksakto na. 215 00:09:39,900 --> 00:09:41,940 Aking kaliwang kalahati ay, of course, 4. 216 00:09:41,940 --> 00:09:43,310 Aking kanang kalahati ay 8. 217 00:09:43,310 --> 00:09:44,100 >> Kaya sabihin gawin ito. 218 00:09:44,100 --> 00:09:46,410 Unang pupuntahan ko upang maglaan ang ilang mga karagdagang memory, 219 00:09:46,410 --> 00:09:48,680 na kukunin ko na kumakatawan dito, bilang lamang ng isang pangalawang array, 220 00:09:48,680 --> 00:09:49,660 na sapat na malaki upang magkasya ito. 221 00:09:49,660 --> 00:09:52,243 Ngunit maaari mong isipin ang pagpapalawak na rectangle ang buong haba, 222 00:09:52,243 --> 00:09:53,290 kung kailangan namin ng higit pang mga bago. 223 00:09:53,290 --> 00:09:58,440 Paano ako kumuha ng 4 at 8, at sumanib dalawang mga listahan ng mga ng laki 1 magkasama? 224 00:09:58,440 --> 00:10:00,270 Dito, masyadong, pretty simple. 225 00:10:00,270 --> 00:10:03,300 Unang 4 na dumating, at pagkatapos ay dumating 8. 226 00:10:03,300 --> 00:10:07,130 Dahil kung gusto kong ayusin ang kaliwang kalahati, at pagkatapos ay ang kanang kalahati, 227 00:10:07,130 --> 00:10:09,900 at pagkatapos ay pagsamahin ang dalawang halves sama-sama, sa inayos order, 228 00:10:09,900 --> 00:10:11,940 Unang 4 na dumating, at pagkatapos ay dumating 8. 229 00:10:11,940 --> 00:10:15,810 >> Kaya tila namin ay ang paggawa ng progreso, kahit na kahit na hindi ko nagawa ang anumang aktwal na trabaho. 230 00:10:15,810 --> 00:10:17,800 Ngunit tandaan na kung saan tayo sa kuwento. 231 00:10:17,800 --> 00:10:19,360 Orihinal naming kinuha walong elemento. 232 00:10:19,360 --> 00:10:21,480 Inayos namin ang kaliwang kalahati, na kung saan ay 4. 233 00:10:21,480 --> 00:10:24,450 Pagkatapos inayos namin ang kaliwang kalahati ng kaliwang kalahati, na kung saan ay 2. 234 00:10:24,450 --> 00:10:25,270 At ayan na naman. 235 00:10:25,270 --> 00:10:26,920 Kami ay tapos ka na sa hakbang na iyon. 236 00:10:26,920 --> 00:10:29,930 >> Kaya kung Inayos na namin ang mga kaliwa kalahati ng 2, na namin ngayon 237 00:10:29,930 --> 00:10:32,130 kung ayusin ang mga karapatan sa kalahati ng 2. 238 00:10:32,130 --> 00:10:35,710 Kaya ang kanang kalahati ng 2 ay mga ito ng dalawang mga halaga dito, 6 at 2. 239 00:10:35,710 --> 00:10:40,620 Kaya sabihin na ngayong kumuha ng isang input ng laki 2, at uri-uriin ang kaliwang kalahati, at pagkatapos ay 240 00:10:40,620 --> 00:10:42,610 ang kanang kalahati, at pagkatapos ay pagsamahin ang mga ito nang magkakasama. 241 00:10:42,610 --> 00:10:45,722 Well paano ko ayusin ang isang listahan ng laki 1, na naglalaman lamang ang bilang 6? 242 00:10:45,722 --> 00:10:46,430 Ginagamit ko na tapos na. 243 00:10:46,430 --> 00:10:48,680 Na listahan ng mga sukat na 1 ay pinagsunod-sunod. 244 00:10:48,680 --> 00:10:52,140 >> Paano ko ayusin ng isa pang listahan ng mga size 1, ang tinatawag na kanang kalahati. 245 00:10:52,140 --> 00:10:54,690 Well ito, masyadong, na pinagsunod-sunod. 246 00:10:54,690 --> 00:10:56,190 Ang bilang 2 ay nag-iisa. 247 00:10:56,190 --> 00:11:00,160 Kaya ngayon ay mayroon akong dalawang halves, kaliwa at karapatan, kailangan ko na pagsamahin ang mga ito nang magkakasama. 248 00:11:00,160 --> 00:11:01,800 Hayaan akong bigyan ang aking sarili ng ilang dagdag na espasyo. 249 00:11:01,800 --> 00:11:05,580 At maglagay ng 2 sa doon, pagkatapos ay 6 sa doon, sa gayon 250 00:11:05,580 --> 00:11:10,740 pag-uuri listahan na iyon, kaliwa at kanan, at pinagsasama ang mga ito nang sama-sama, sa huli. 251 00:11:10,740 --> 00:11:12,160 Kaya ako sa bahagyang mas mahusay na hugis. 252 00:11:12,160 --> 00:11:16,250 Hindi ko na tapos na, dahil malinaw na 4, 8, 2, 6 ay hindi ang panghuling pag-order na gusto ko. 253 00:11:16,250 --> 00:11:20,640 Ngunit ako ngayon ay dalawang mga listahan ng laki 2, na may pareho, ayon sa pagkakabanggit, ay inayos. 254 00:11:20,640 --> 00:11:24,580 Kaya ngayon kung rewind mo sa iyong isip ni eye, saan na-iwan sa amin? 255 00:11:24,580 --> 00:11:28,520 Nagsimula ako sa walong elemento, pagkatapos ay ako whittled ito pababa sa kaliwang kalahati ng 4, 256 00:11:28,520 --> 00:11:31,386 pagkatapos ay sa kaliwang kalahati ng 2, at pagkatapos ay ang kanang kalahati ng 2, 257 00:11:31,386 --> 00:11:34,510 Natapos ko, samakatuwid, pag-uuri sa kaliwa kalahati ng 2, at ang kanang kalahati ng 2, 258 00:11:34,510 --> 00:11:37,800 kaya kung ano ang ikatlong at huling hakbang dito? 259 00:11:37,800 --> 00:11:41,290 Kailangan ko bang sumanib magkasama dalawang mga listahan ng laki 2. 260 00:11:41,290 --> 00:11:42,040 Kaya sabihin sige. 261 00:11:42,040 --> 00:11:43,940 At sa screen dito, bigyan sa akin ang ilang mga karagdagang memory, 262 00:11:43,940 --> 00:11:47,170 bagaman technically, mapapansin na ko Naging isang buong bungkos ng mga blangko ang puwang up top 263 00:11:47,170 --> 00:11:47,670 doon. 264 00:11:47,670 --> 00:11:50,044 Kung gusto kong maging lalo mabisa space matalino, 265 00:11:50,044 --> 00:11:52,960 Hindi ko na lang simulan ang paglipat ng mga elemento balik, itaas at ibaba. 266 00:11:52,960 --> 00:11:55,460 Ngunit lamang para sa visual na kaliwanagan, Pupunta ako upang ilagay ito sa ibaba, 267 00:11:55,460 --> 00:11:56,800 upang panatilihing maganda at malinis na mga bagay. 268 00:11:56,800 --> 00:11:58,150 >> Kaya Mayroon akong dalawang mga listahan ng laki 2. 269 00:11:58,150 --> 00:11:59,770 Ang unang listahan ay may 4 at 8. 270 00:11:59,770 --> 00:12:01,500 Ang pangalawang listahan ay may 2 at 6. 271 00:12:01,500 --> 00:12:03,950 Ni sumanib mga Ipaalam magkasama sa inayos order. 272 00:12:03,950 --> 00:12:09,910 2, siyempre, ang nauna, pagkatapos ay 4, pagkatapos 6, pagkatapos ay 8. 273 00:12:09,910 --> 00:12:12,560 At ngayon kami ay tila na maging sa pagkuha sa tabi-tabi na interesante. 274 00:12:12,560 --> 00:12:15,720 Ngayon ay na pinagsunod-sunod sa ko kalahati ng list, at coincidentally, ito ay 275 00:12:15,720 --> 00:12:18,650 lahat ng kahit na mga numero, ngunit na ay, sa katunayan, isang pagkakataon lamang. 276 00:12:18,650 --> 00:12:22,220 At ako ngayon ay may inayos ang kaliwang kalahati, kaya na ito ay 2, 4, 6, at 8. 277 00:12:22,220 --> 00:12:23,430 Walang ay sa labas ng order. 278 00:12:23,430 --> 00:12:24,620 Na pakiramdam ng tulad ng pag-unlad. 279 00:12:24,620 --> 00:12:26,650 >> Ngayon ito nararamdaman tulad na ko pakikipag-usap magpakailanman ngayon, 280 00:12:26,650 --> 00:12:29,850 kaya kung ano ay nananatiling upang makita kung ito algorithm ay, sa katunayan, mas mahusay. 281 00:12:29,850 --> 00:12:31,766 Ngunit kami ay pagpunta sa pamamagitan ng ito super methodically. 282 00:12:31,766 --> 00:12:34,060 Ang isang computer, siyempre, Gusto ko ito tulad na. 283 00:12:34,060 --> 00:12:34,840 Kaya kung saan ang mga namin? 284 00:12:34,840 --> 00:12:36,180 Nagsimula kami sa walong elemento. 285 00:12:36,180 --> 00:12:37,840 Inayos ko ang kaliwang kalahati ng 4. 286 00:12:37,840 --> 00:12:39,290 Mukhang kong gawin sa mga iyon. 287 00:12:39,290 --> 00:12:42,535 Kaya ngayon ang susunod na hakbang ay pagbukud-bukurin ang kanang kalahati ng 4. 288 00:12:42,535 --> 00:12:44,410 At bahagi ito maaari naming pumunta sa pamamagitan ng isang maliit na mas 289 00:12:44,410 --> 00:12:47,140 mabilis, kahit na ikaw ay malugod na rewind o i-pause, makatarungan 290 00:12:47,140 --> 00:12:49,910 tingin sa pamamagitan ng mga ito sa sarili mong bilis, ngunit kung ano 291 00:12:49,910 --> 00:12:53,290 na namin ngayon ay isang pagkakataon upang gawin ang eksaktong parehong algorithm sa apat 292 00:12:53,290 --> 00:12:54,380 magkakaibang numero. 293 00:12:54,380 --> 00:12:57,740 >> Kaya sabihin sige, at tumutok sa ang kanang kalahati, na kung saan kami ay dito. 294 00:12:57,740 --> 00:13:01,260 Ang kaliwang kalahati ng na kanang kalahati, at ngayon ang 295 00:13:01,260 --> 00:13:04,560 kaliwang kalahati ng kaliwang kalahati ng na kanang kalahati, 296 00:13:04,560 --> 00:13:08,030 at kung paano ko ayusin ang isang listahan ng laki 1 na naglalaman lamang ang bilang 1? 297 00:13:08,030 --> 00:13:09,030 Tapos na. 298 00:13:09,030 --> 00:13:11,830 Paano ko gawin ang parehong para sa isang listahan ng laki 1 na naglalaman lamang ng 7? 299 00:13:11,830 --> 00:13:12,840 Tapos na. 300 00:13:12,840 --> 00:13:16,790 Hakbang tatlong para sa mga ito sa kalahati pagkatapos ay upang sumanib ang dalawang mga elemento 301 00:13:16,790 --> 00:13:20,889 sa isang bagong listahan ng mga laki 2, 1 at 7. 302 00:13:20,889 --> 00:13:23,180 Huwag mukhang may tapos na ang lahat ganoong karaming mga kawili-wiling trabaho. 303 00:13:23,180 --> 00:13:24,346 Tingnan natin kung ano ang susunod na mangyayari Hayaan. 304 00:13:24,346 --> 00:13:29,210 Ko lang inayos ang kaliwang kalahati ng karapatan sa kalahati ng aking orihinal na input. 305 00:13:29,210 --> 00:13:32,360 Ngayon ayusin ni kanan ipaalam kalahati, na naglalaman ng 5 at 3. 306 00:13:32,360 --> 00:13:35,740 Muli tumingin sa kaliwa Ipaalam kalahati, ayun, kanang kalahati, ayun, 307 00:13:35,740 --> 00:13:39,120 at sumanib sa mga dalawang magkasama, sa ilang dagdag na espasyo, 308 00:13:39,120 --> 00:13:41,670 3 ang mauna, at pagkatapos ay dumating 5. 309 00:13:41,670 --> 00:13:46,190 At kaya ngayon, may inayos namin ang mga kaliwang kalahati ng kanang kalahati 310 00:13:46,190 --> 00:13:49,420 ng orihinal na problema, at ang kanang kalahati ng kanang kalahati 311 00:13:49,420 --> 00:13:50,800 ng orihinal na problema. 312 00:13:50,800 --> 00:13:52,480 Ano ang ikatlong at huling hakbang? 313 00:13:52,480 --> 00:13:54,854 Well upang sumanib sa mga dalawang halves magkasama. 314 00:13:54,854 --> 00:13:57,020 Kaya hayaan mo akong makakuha ng aking sarili sa ilang dagdag na espasyo, ngunit, muli, ako 315 00:13:57,020 --> 00:13:58,699 maaaring gamit na ekstrang espasyo up top. 316 00:13:58,699 --> 00:14:00,490 Ngunit kami ay pagpunta sa panatilihin itong simple biswal. 317 00:14:00,490 --> 00:14:07,070 Hayaan akong sumanib sa ngayon 1, at pagkatapos ay 3, at pagkatapos ay 5, at pagkatapos ay 7. 318 00:14:07,070 --> 00:14:10,740 Sa gayong paraan Aalis ako ngayon sa mga kanang kalahati ng orihinal na problema 319 00:14:10,740 --> 00:14:12,840 na ganap na pinagsunod-sunod. 320 00:14:12,840 --> 00:14:13,662 >> Ano Kaya nananatiling? 321 00:14:13,662 --> 00:14:16,120 Pakiramdam ko ay tulad panatilihin ko sinasabi ang parehong bagay muli, at muli, 322 00:14:16,120 --> 00:14:18,700 ngunit iyan ay mapanimdim ng katunayan na aming ginagamit recursion. 323 00:14:18,700 --> 00:14:21,050 Ang proseso ng paggamit ng isang algorithm muli, at muli, 324 00:14:21,050 --> 00:14:23,940 sa mas maliit na subset ng ang orihinal na problema. 325 00:14:23,940 --> 00:14:27,580 Kaya ako ngayon ay may inayos ng isang kaliwa kalahati ng mga orihinal na problema. 326 00:14:27,580 --> 00:14:30,847 May karapatan akong inayos half ng orihinal na problema. 327 00:14:30,847 --> 00:14:32,180 Ano ang ikatlong at huling hakbang? 328 00:14:32,180 --> 00:14:33,590 Oh, ito ay pinagsasama. 329 00:14:33,590 --> 00:14:34,480 Kaya sabihin gawin iyon. 330 00:14:34,480 --> 00:14:36,420 Sabihin maglaan ng ilang karagdagang memory, ngunit ang aking mga diyos, kami ay 331 00:14:36,420 --> 00:14:37,503 ito ay maaaring ilagay kahit saan sa ngayon. 332 00:14:37,503 --> 00:14:40,356 Mayroon kaming magagamit kaya magkano ang puwang sa amin, ngunit kami ay panatilihin itong simple. 333 00:14:40,356 --> 00:14:42,730 Sa halip ng pagpunta sa likod at balik sa aming orihinal na memorya, 334 00:14:42,730 --> 00:14:44,480 sabihin lamang gawin ito biswal down dito sa ibaba, 335 00:14:44,480 --> 00:14:47,240 upang tapusin up pagsanib ng kaliwang kalahati at ang kanang kalahati. 336 00:14:47,240 --> 00:14:49,279 >> Kaya sa pamamagitan ng pinagsasama, ano ang kailangan kong gawin? 337 00:14:49,279 --> 00:14:50,820 Gusto kong kumuha ng mga elemento sa order. 338 00:14:50,820 --> 00:14:53,230 Kaya ang pagtingin sa kaliwang kalahati, Nakikita ko ang unang numero ay 2. 339 00:14:53,230 --> 00:14:55,230 Tumingin ako sa kanang kalahati, Nakikita ko ang unang numero 340 00:14:55,230 --> 00:14:58,290 ay 1, kaya malinaw naman kung saan number ang gusto kong bunutin, 341 00:14:58,290 --> 00:15:00,430 at inuuna sa aking huling listahan? 342 00:15:00,430 --> 00:15:01,449 Siyempre, 1. 343 00:15:01,449 --> 00:15:02,990 Ngayon, gusto kong hilingin na parehong katanungan. 344 00:15:02,990 --> 00:15:05,040 Sa kaliwang kalahati, na ako Nakakuha pa rin ang number 2. 345 00:15:05,040 --> 00:15:07,490 Sa kanang kalahati, Mayroon akong ang number 3. 346 00:15:07,490 --> 00:15:08,930 Aling isa ang gusto kong piliin? 347 00:15:08,930 --> 00:15:11,760 Siyempre, number 2 At ngayon ay mapapansin sa mga kandidato 348 00:15:11,760 --> 00:15:13,620 4 sa kaliwa, 3 sa kanan. 349 00:15:13,620 --> 00:15:15,020 Sabihin, siyempre, piliin ang 3. 350 00:15:15,020 --> 00:15:18,020 Ngayon ang mga kandidato ay 4 sa sa kaliwa, 5 sa kanan. 351 00:15:18,020 --> 00:15:19,460 Kami, siyempre, piliin ang 4. 352 00:15:19,460 --> 00:15:21,240 6 sa kaliwa, 5 sa kanan. 353 00:15:21,240 --> 00:15:22,730 Kami, siyempre, piliin ang 5. 354 00:15:22,730 --> 00:15:25,020 6 sa kaliwa, 7 sa kanan. 355 00:15:25,020 --> 00:15:29,320 Pumili kami ng 6, at pagkatapos namin piliin ang 7, at pagkatapos ay piliin namin 8. 356 00:15:29,320 --> 00:15:30,100 Voila. 357 00:15:30,100 --> 00:15:34,370 >> Kaya ang isang malaking bilang ng mga salita sa ibang pagkakataon, kami ay may inayos ang listahang ito ng walong elemento 358 00:15:34,370 --> 00:15:38,450 sa isang listahan ng isa sa pamamagitan ng walong, na pagtaas sa bawat hakbang, 359 00:15:38,450 --> 00:15:40,850 ngunit kung magkano ang oras na ginawa aabutin upang gawin iyon sa amin. 360 00:15:40,850 --> 00:15:43,190 Well hindi ko na sadyang out pictorially inilatag bagay 361 00:15:43,190 --> 00:15:46,330 dito, upang maaari naming uri ng makita o pinasasalamatan ang division 362 00:15:46,330 --> 00:15:49,060 sa mapanakop na ang na-aksidente. 363 00:15:49,060 --> 00:15:52,830 >> Sa katunayan, kung ikaw ay tumingin muli sa wake, Iniwan ko na ang lahat ng mga tuldok na mga linya 364 00:15:52,830 --> 00:15:55,660 sa may hawak ng lugar, maaari mong, uri ng, makita, sa reverse order, 365 00:15:55,660 --> 00:15:58,800 kung ang uri ng kang maghanap pabalik sa kasaysayan ngayon, ang aking orihinal na listahan 366 00:15:58,800 --> 00:16:00,250 ay, of course, ng size 8. 367 00:16:00,250 --> 00:16:03,480 At pagkatapos ay dati, ako ay pagharap sa dalawang mga listahan ng laki 4, 368 00:16:03,480 --> 00:16:08,400 at pagkatapos ng apat na mga listahan ng mga laki 2, at pagkatapos ay walong listahan ng mga laki 1. 369 00:16:08,400 --> 00:16:10,151 >> Kaya kung ano ang gumagawa nito, uri ng, ipaalala sa iyo ng? 370 00:16:10,151 --> 00:16:11,858 Well, sa katunayan, ang alinman sa mga ang algorithm na namin 371 00:16:11,858 --> 00:16:14,430 tumingin sa gayon ay malayo kung saan kami hatiin, at hatiin, at hatiin, 372 00:16:14,430 --> 00:16:19,500 panatilihin ang pagkakaroon muli ng mga bagay, at muli, ang mga resulta na ito sa pangkalahatang ideya. 373 00:16:19,500 --> 00:16:23,100 At kaya mayroong isang bagay logarithmic nangyayari dito. 374 00:16:23,100 --> 00:16:26,790 At ito ay hindi lubos log ng n, ngunit mayroong isang logarithmic component 375 00:16:26,790 --> 00:16:28,280 sa kung ano lang ginawa namin. 376 00:16:28,280 --> 00:16:31,570 >> Ngayon isaalang-alang ang kung paano na aktwal na ay. 377 00:16:31,570 --> 00:16:34,481 Kaya mag-log ng n, ay muli isang mahusay na tumatakbo oras, 378 00:16:34,481 --> 00:16:36,980 kapag ginawa namin ang isang bagay tulad binary paghahanap, bilang tawag namin ito ngayon, 379 00:16:36,980 --> 00:16:40,090 ang hatiin at lupigin diskarte sa pamamagitan ng kung saan namin natagpuan Mike Smith. 380 00:16:40,090 --> 00:16:41,020 Ngayon technically. 381 00:16:41,020 --> 00:16:43,640 Iyan ay log base 2 ng n, kahit kahit na sa karamihan ng mga klase sa matematika, 382 00:16:43,640 --> 00:16:45,770 10 ay karaniwang ang base na akala mo. 383 00:16:45,770 --> 00:16:48,940 Ngunit siyentipiko computer halos palaging mag-isip at makipag-usap sa mga tuntunin ng base 2, 384 00:16:48,940 --> 00:16:52,569 kaya kami ay karaniwang lamang sabihin log ng n, sa halip na mag-log base 2 ng n, 385 00:16:52,569 --> 00:16:55,110 ngunit ang mga ito ay eksaktong isang at ang parehong sa mundo ng mga computer 386 00:16:55,110 --> 00:16:57,234 agham, at bilang isang tabi, mayroong isang constant factor 387 00:16:57,234 --> 00:17:01,070 pagkakaiba sa pagitan ng dalawang, kaya pagtalunan pa rin, para sa mas pormal na dahilan. 388 00:17:01,070 --> 00:17:04,520 >> Ngunit sa ngayon, mga bagay na mahalaga namin tungkol sa ay halimbawa na ito. 389 00:17:04,520 --> 00:17:08,520 Kaya hindi ni patunayan sa pamamagitan ng halimbawa ipaalam, ngunit sa bababa gamitin ang isang halimbawa ng mga numero 390 00:17:08,520 --> 00:17:10,730 sa kamay bilang isang katinuan check, kung ikaw ay. 391 00:17:10,730 --> 00:17:14,510 Kaya dati ang formula ay log base 2 ng n, ngunit kung ano ang n sa kasong ito. 392 00:17:14,510 --> 00:17:18,526 Nagkaroon na ako n orihinal na mga numero, o 8 ng orihinal na numero mismo. 393 00:17:18,526 --> 00:17:20,359 Ngayon ito ay naging isang maliit na habang, ngunit ako ay medyo 394 00:17:20,359 --> 00:17:25,300 siguraduhin na mag-log base 2 ng halaga 8 ay 3, 395 00:17:25,300 --> 00:17:29,630 at sa katunayan, kung ano ang magaling tungkol sa na ay na ang 3 ay eksakto ang bilang ng mga beses 396 00:17:29,630 --> 00:17:33,320 na maaari mong hatiin ang isang listahan ng muli, at muli haba 8, 397 00:17:33,320 --> 00:17:36,160 at muli, hanggang sa ikaw ay kaliwa may mga listahan ng mga sukat lamang 1. 398 00:17:36,160 --> 00:17:36,660 Right? 399 00:17:36,660 --> 00:17:40,790 8 papunta sa 4, papunta sa 2, papunta sa 1, at na ang 400 00:17:40,790 --> 00:17:43,470 mapanimdim ng eksakto na picture namin ay may lamang ng isang sandali ang nakalipas. 401 00:17:43,470 --> 00:17:47,160 Kaya ng kaunti katinuan check na sa kung saan logarithm ay aktwal na kasangkot. 402 00:17:47,160 --> 00:17:50,180 >> Kaya ngayon, ano pa ang kasangkot dito? n. 403 00:17:50,180 --> 00:17:53,440 Kaya mapapansin na ang bawat time split ko sa listahan, 404 00:17:53,440 --> 00:17:58,260 kahit na baligtad ang pagkakasunudsunod sa kasaysayan dito, hindi pa rin ako ay ginagawa n bagay. 405 00:17:58,260 --> 00:18:02,320 Na pinagsasama ang hakbang na kinakailangan na Hinawakan ko ang bawat isa sa mga numero, 406 00:18:02,320 --> 00:18:05,060 upang slide ito sa kanyang naaangkop na lokasyon. 407 00:18:05,060 --> 00:18:10,760 Kaya kahit na ang taas ng mga ito diagram ay ng laki log n ng n o 3, 408 00:18:10,760 --> 00:18:13,860 partikular, sa ibang salita, Ginawa ko tatlong sangay dito. 409 00:18:13,860 --> 00:18:18,800 Magkano work ang gagawin ko horizontally kasama ang chart na ito sa bawat panahon? 410 00:18:18,800 --> 00:18:21,110 >> Well, ginawa ko n hakbang ng magtrabaho, dahil kung hindi ko na 411 00:18:21,110 --> 00:18:24,080 Nakakuha ng apat na elemento at apat na mga sangkap, at kailangan ko upang pagsamahin ang mga ito nang magkakasama. 412 00:18:24,080 --> 00:18:26,040 Kailangan ko bang pumunta sa pamamagitan ng mga apat na at ang mga ito sa apat, 413 00:18:26,040 --> 00:18:28,123 sa huli upang pagsamahin ang mga ito bumalik sa walong elemento. 414 00:18:28,123 --> 00:18:32,182 Kung pasalungat Mayroon akong walong mga daliri higit sa rito, na hindi ako, at walong 415 00:18:32,182 --> 00:18:34,390 fingers-- sorry-- Kung Na ko Nakakuha apat na daliri sa paglipas dito, 416 00:18:34,390 --> 00:18:37,380 kung saan gagawin ko, apat na mga daliri higit sa rito, na ang gagawin ko, 417 00:18:37,380 --> 00:18:40,590 pagkatapos na ang parehong Halimbawa tulad ng dati, kung gagawin ko 418 00:18:40,590 --> 00:18:44,010 may walong daliri bagaman sa total, kung saan maaari kong, uri ng, gawin. 419 00:18:44,010 --> 00:18:47,950 Maaari ko nang eksakto gawin dito, pagkatapos ay maaari ko tiyak 420 00:18:47,950 --> 00:18:50,370 pagsamahin ang lahat ng mga listahang ito ng laki 1 magkasama. 421 00:18:50,370 --> 00:18:54,050 Ngunit tiyak ko upang tumingin sa bawat elemento ng minsan. 422 00:18:54,050 --> 00:18:59,640 Kaya ang taas ng prosesong ito ay log n, ang lapad ng prosesong ito, kaya na magsalita, 423 00:18:59,640 --> 00:19:02,490 ay n, kaya kung ano tila namin na magkaroon, sa huli, ay 424 00:19:02,490 --> 00:19:06,470 isang oras na tumatakbo ng laki n beses log n. 425 00:19:06,470 --> 00:19:08,977 >> Sa ibang salita, hinati namin listahan, mag-log n beses, 426 00:19:08,977 --> 00:19:11,810 ngunit sa bawat oras na ginawa namin na, kami ay sa pindutin ang bawat isa sa mga elemento 427 00:19:11,810 --> 00:19:13,560 upang pagsamahin ang mga ito lahat ng sama-sama, na kung saan 428 00:19:13,560 --> 00:19:18,120 ay n hakbang, kaya kami n beses log n, o bilang isang computer scientist nais sabihin, 429 00:19:18,120 --> 00:19:20,380 asymptotically, na ay magiging ang malaking salita 430 00:19:20,380 --> 00:19:22,810 upang ilarawan ang itaas nakasalalay sa isang tumatakbo ang oras, 431 00:19:22,810 --> 00:19:28,010 kami ay tumatakbo sa isang malaking o ng mag-log n oras, kaya na magsalita. 432 00:19:28,010 --> 00:19:31,510 >> Ngayon na ito ay makabuluhan, dahil isipin kung ano ang tumatakbo beses ay 433 00:19:31,510 --> 00:19:34,120 may mga uri ng bubble, at pagpili uri, at uri pagpapasok, 434 00:19:34,120 --> 00:19:38,200 at kahit na ang ilang mga iba na umiiral, n nakalapat ay kung saan kami ay sa. 435 00:19:38,200 --> 00:19:39,990 At maaari mong, uri ng, makita ang mga ito dito. 436 00:19:39,990 --> 00:19:45,720 Kung n nakalapat ay malinaw naman n ulit n, ngunit dito kami n beses log n, 437 00:19:45,720 --> 00:19:48,770 at kami na malaman mula sa linggo zero, na mag-log n, ang logarithmic, 438 00:19:48,770 --> 00:19:50,550 ay mas mahusay kaysa sa isang bagay linear. 439 00:19:50,550 --> 00:19:52,930 Pagkatapos ng lahat, isipin ang mga larawan na ang red at ang dilaw 440 00:19:52,930 --> 00:19:56,500 at ang berdeng linya na namin Drew, ang green logarithmic line ay lubhang mas mababa. 441 00:19:56,500 --> 00:20:00,920 At dahil dito, mas mas mahusay at mas mabilis na kaysa sa mga straight dilaw at pulang linya, 442 00:20:00,920 --> 00:20:05,900 n beses log n ay, sa katunayan, mas mahusay na kaysa n beses n, o n nakalapat. 443 00:20:05,900 --> 00:20:09,110 >> Kaya tila namin na magkaroon kinilala ng isang algorithm merge 444 00:20:09,110 --> 00:20:11,870 uri na tumatakbo sa marami mas mabilis na oras, at sa katunayan, 445 00:20:11,870 --> 00:20:16,560 na ang dahilan kung bakit, mas maaga sa linggong ito, kapag Nakita namin na ang paligsahan sa pagitan ng bubble 446 00:20:16,560 --> 00:20:20,750 uri, pagpili ng uri, at sumanib uri-uriin, sumanib uri tunay, tunay na nanalo. 447 00:20:20,750 --> 00:20:23,660 At sa katunayan, hindi namin kahit na maghintay para sa uri ng bubble at pagpili-uuri 448 00:20:23,660 --> 00:20:24,790 tapusin. 449 00:20:24,790 --> 00:20:27,410 >> Ngayon sabihin tumagal ng isa sa iba pang pass at ito, mula sa isang bahagyang mas 450 00:20:27,410 --> 00:20:31,030 pormal na pananaw, lamang sa kaso, mas mahusay na ito resonates 451 00:20:31,030 --> 00:20:33,380 kaysa sa mas mataas na antas ng talakayan. 452 00:20:33,380 --> 00:20:34,880 Kaya dito muli ang algorithm. 453 00:20:34,880 --> 00:20:36,770 Tanungin natin ang ating sarili Hayaan, kung ano ang mga oras na tumatakbo 454 00:20:36,770 --> 00:20:39,287 ay sa ito algorithm iba't-ibang mga hakbang na ito? 455 00:20:39,287 --> 00:20:41,620 Hatiin natin ito sa unang Ipaalam kaso at ang pangalawang kaso. 456 00:20:41,620 --> 00:20:46,280 Ang KUNG at ang Iba Pa Sa KUNG kaso, KUNG n ay mas mababa sa 2, bumalik lang. 457 00:20:46,280 --> 00:20:47,580 Nararamdaman tulad ng pare-pareho ang panahon. 458 00:20:47,580 --> 00:20:50,970 Ito ay, uri ng, tulad ng dalawang hakbang, KUNG n ay mas mababa sa 2, pagkatapos ay bumalik. 459 00:20:50,970 --> 00:20:54,580 Ngunit tulad ng sinabi namin sa Monday, pare-pareho ang oras, o malaki o ng 1, 460 00:20:54,580 --> 00:20:57,130 maaaring dalawang hakbang, tatlong hakbang na ito, kahit na sa 1,000 na mga hakbang. 461 00:20:57,130 --> 00:20:59,870 Ano ang mga bagay na ito ay ang tapat na bilang ng mga hakbang. 462 00:20:59,870 --> 00:21:03,240 Kaya ang dilaw na naka-highlight pseudocode dito ay tumatakbo sa, kami ay tumawag ito, 463 00:21:03,240 --> 00:21:04,490 pare-pareho ang panahon. 464 00:21:04,490 --> 00:21:06,780 Kaya mas pormal na, at kami ay pagpunta to-- ito 465 00:21:06,780 --> 00:21:09,910 ay ang lawak na kung saan namin gawing pormal ang karapatan na ito now-- T ng n, 466 00:21:09,910 --> 00:21:15,030 ang oras ng paggana ng isang problema na tumatagal n somethings bilang input, 467 00:21:15,030 --> 00:21:19,150 ay katumbas ng malaking o ng isa, KUNG n ay mas mababa sa 2. 468 00:21:19,150 --> 00:21:20,640 Kaya ito ay may kondisyon sa na. 469 00:21:20,640 --> 00:21:24,150 Kaya upang maging malinaw, KUNG n ay mas mababa sa 2, mayroon kaming isang maikling listahan, pagkatapos ay 470 00:21:24,150 --> 00:21:29,151 ang oras, T ng n, kung saan ang n ay 1 o 0, sa ito tunay tiyak na kaso, 471 00:21:29,151 --> 00:21:30,650 ito lamang ay magiging tapat na oras. 472 00:21:30,650 --> 00:21:32,691 Ito ay pagpunta sa tumagal ng isa hakbang, dalawang hakbang, kahit ano. 473 00:21:32,691 --> 00:21:33,950 Ito ay isang takdang bilang ng mga hakbang. 474 00:21:33,950 --> 00:21:38,840 >> Kaya ang juicy part dapat maging tiyak na sa sa iba pang mga kaso sa pseudocode. 475 00:21:38,840 --> 00:21:40,220 Ang Iba Pa kaso. 476 00:21:40,220 --> 00:21:44,870 Pagbukud-bukurin kaliwang kalahati ng mga elemento, uri ng karapatan kalahati ng mga elemento, sumanib inayos halves. 477 00:21:44,870 --> 00:21:46,800 Gaano katagal ang bawat isa sa mga hakbang na ginagawa? 478 00:21:46,800 --> 00:21:49,780 Well, kung ang tumatakbo oras upang ayusin n elemento 479 00:21:49,780 --> 00:21:53,010 ay, sabihin na tawag ito very generically, T ng n, 480 00:21:53,010 --> 00:21:55,500 pagkatapos ay pag-uuri sa kaliwa kalahati ng mga elemento 481 00:21:55,500 --> 00:21:59,720 ay, uri ng, tulad ng sinasabi, T ng n hinati sa 2, 482 00:21:59,720 --> 00:22:03,000 at parehas na pag-uuri ang kanang kalahati ng mga elemento ay, uri ng, tulad ng sinasabi, 483 00:22:03,000 --> 00:22:06,974 T ng n hinati sa 2, at pagkatapos ay pinagsasama ang pinagsunod-sunod halves. 484 00:22:06,974 --> 00:22:08,890 Well kung nakuha ko ang ilang mga bilang ng mga elemento dito, 485 00:22:08,890 --> 00:22:11,230 tulad ng apat, at ang ilang numero ng ng mga elemento dito, tulad ng apat, 486 00:22:11,230 --> 00:22:14,650 at ako ay may upang sumanib sa bawat isa sa mga apat na in, at bawat isa sa mga apat na sa, isang 487 00:22:14,650 --> 00:22:17,160 pagkatapos ng isa, upang ang sa huli mayroon akong walong elemento. 488 00:22:17,160 --> 00:22:20,230 Ito nararamdaman tulad na malaki o ng n hakbang? 489 00:22:20,230 --> 00:22:23,500 Kung Mayroon akong n daliri at ang bawat isa sa ang mga ito ay dapat na ipinagsama sa lugar, 490 00:22:23,500 --> 00:22:25,270 na tulad ng isa pang n hakbang. 491 00:22:25,270 --> 00:22:27,360 >> Kaya nga formulaically, maaari naming ipahayag ito, 492 00:22:27,360 --> 00:22:29,960 kahit na isang maliit scarily sa una sulyap, ngunit ito ay isang bagay na 493 00:22:29,960 --> 00:22:31,600 na kinukuha eksakto na lohika. 494 00:22:31,600 --> 00:22:35,710 Ang oras ng pagpapatakbo, T ng n, KUNG n ay mas malaki kaysa sa o katumbas ng 2. 495 00:22:35,710 --> 00:22:42,500 Sa kasong ito, ang Iba Pa kaso, ay T ng n hinati sa 2, plus T ng n hinati sa 2, 496 00:22:42,500 --> 00:22:45,320 plus malaki o ng n, ang ilang mga linear bilang ng mga hakbang, 497 00:22:45,320 --> 00:22:51,630 siguro eksakto n, siguro 2 beses n, ngunit ito ay halos, pagkakasunud-sunod ng n. 498 00:22:51,630 --> 00:22:54,060 Kaya na rin, ay kung paano namin Maaari ipahayag ito formulaically. 499 00:22:54,060 --> 00:22:56,809 Ngayon hindi mo nais na malaman na ito maliban kung na iyong narekord ito sa iyong isip, 500 00:22:56,809 --> 00:22:58,710 o hanapin ito sa likod ng isang aklat-aralin, na 501 00:22:58,710 --> 00:23:00,501 ay maaaring magkaroon ng isang maliit na cheat sheet sa dulo, 502 00:23:00,501 --> 00:23:03,940 ngunit ito ay, sa katunayan, pagpunta sa bigyan kami ng isang malaking o ng n log n, 503 00:23:03,940 --> 00:23:06,620 dahil iyon ang pag-ulit nakakakita ka dito sa screen, 504 00:23:06,620 --> 00:23:09,550 kung talagang ginawa ito, may isang walang-katapusang bilang ng mga halimbawa, 505 00:23:09,550 --> 00:23:13,000 o ginawa mo ito formulaically, gusto mo makita na ito, dahil ito formula 506 00:23:13,000 --> 00:23:17,100 mismo ay recursive, na may t ng n higit sa isang bagay sa kanan, 507 00:23:17,100 --> 00:23:21,680 at t of n higit sa sa kaliwa, ito ay maaaring aktwal na ipinahayag, sa huli, 508 00:23:21,680 --> 00:23:24,339 bilang malaking pumunta ng n log n. 509 00:23:24,339 --> 00:23:26,130 Kung hindi kumbinsido, na ang multa para sa ngayon, lamang 510 00:23:26,130 --> 00:23:28,960 kumuha sa pananampalataya, na na, sa katunayan, ano ang mga leads na pag-ulit sa, 511 00:23:28,960 --> 00:23:31,780 ngunit ito ay lamang ng isang bit higit pa sa isang matematiko sa naghahanap 512 00:23:31,780 --> 00:23:36,520 sa pagtakbo ng oras ng pagsasama-uuri batay sa pseudocode kanyang nag-iisa. 513 00:23:36,520 --> 00:23:39,030 >> Ngayon sabihin tumagal ng isang piraso ng isang hinay mula sa lahat ng mga iyon, 514 00:23:39,030 --> 00:23:41,710 at kumuha ng isang pagtingin sa isang tiyak na dating senador, na 515 00:23:41,710 --> 00:23:44,260 maaaring tumingin ng isang maliit na pamilyar, na nakaupo sa Eric Google 516 00:23:44,260 --> 00:23:48,410 Schmidt, ilang oras ang nakalipas, para sa isang interbyu sa entablado, sa harap ng isang buong grupo 517 00:23:48,410 --> 00:23:53,710 ng mga tao, pakikipag-usap sa huli tungkol sa isang paksa, na pamilyar pretty ngayon. 518 00:23:53,710 --> 00:23:54,575 Tignan natin. 519 00:23:54,575 --> 00:24:01,020 520 00:24:01,020 --> 00:24:03,890 >> ERIC Schmidt: Ngayon Senator, nandito ka sa Google, 521 00:24:03,890 --> 00:24:09,490 at gusto kong isipin ng panguluhan bilang isang pakikipanayam sa trabaho. 522 00:24:09,490 --> 00:24:11,712 Ngayon ito ay mahirap upang makakuha ng trabaho bilang presidente. 523 00:24:11,712 --> 00:24:12,670 Pangulo Obama: Karapatan. 524 00:24:12,670 --> 00:24:13,940 ERIC Schmidt: At ikaw ay pagpunta sa gawin [hindi marinig] ngayon. 525 00:24:13,940 --> 00:24:15,523 Ito ay mahirap din upang makakuha ng trabaho sa Google. 526 00:24:15,523 --> 00:24:17,700 Pangulo Obama: Karapatan. 527 00:24:17,700 --> 00:24:21,330 >> ERIC Schmidt: Mayroon kaming mga katanungan, at hinihiling namin sa aming mga katanungan sa mga kandidato, 528 00:24:21,330 --> 00:24:24,310 at ang isang ito ay mula sa Larry Schwimmer. 529 00:24:24,310 --> 00:24:25,890 >> Pangulo Obama: OK. 530 00:24:25,890 --> 00:24:27,005 >> ERIC Schmidt: Ano? 531 00:24:27,005 --> 00:24:28,130 Ikaw guys sa tingin ko na ata? 532 00:24:28,130 --> 00:24:30,590 Ito ay karapatan dito. 533 00:24:30,590 --> 00:24:33,490 Ano ang pinaka-mahusay na paraan upang pagbukud-bukurin isang milyong 32 bit integer? 534 00:24:33,490 --> 00:24:37,560 535 00:24:37,560 --> 00:24:38,979 >> Pangulo Obama: Well-- 536 00:24:38,979 --> 00:24:41,020 ERIC Schmidt: Minsan, siguro Sorry, maybe-- 537 00:24:41,020 --> 00:24:42,750 Pangulo Obama: Hindi, hindi, hindi, hindi, hindi, think-- ko 538 00:24:42,750 --> 00:24:43,240 ERIC Schmidt: Iyan ay hindi it-- 539 00:24:43,240 --> 00:24:45,430 Pangulo Obama: ko Sa tingin, tingin ko ang bubble 540 00:24:45,430 --> 00:24:46,875 uri ay ang maling paraan upang pumunta. 541 00:24:46,875 --> 00:24:49,619 542 00:24:49,619 --> 00:24:50,535 ERIC Schmidt: Sige na. 543 00:24:50,535 --> 00:24:52,200 Sino ang nagsabi sa kanya ito? 544 00:24:52,200 --> 00:24:54,020 SIGE. 545 00:24:54,020 --> 00:24:55,590 Hindi ko ang computer science on-- 546 00:24:55,590 --> 00:24:58,986 >> Pangulo Obama: Hindi namin nakuha ang aming mga espiya sa doon. 547 00:24:58,986 --> 00:24:59,860 PROFESSOR: Lahat ng karapatan. 548 00:24:59,860 --> 00:25:03,370 Ni iwan sa likod tayo ngayon sa Ipaalam panteorya mundo ng mga algorithm 549 00:25:03,370 --> 00:25:06,520 sa asymptotic analysis niyaon, at bumalik sa ilang mga paksa 550 00:25:06,520 --> 00:25:09,940 mula sa linggo zero at isa, at start upang alisin ang ilang mga gulong ng pagsasanay, 551 00:25:09,940 --> 00:25:10,450 kung gagawin mo. 552 00:25:10,450 --> 00:25:13,241 Kaya na talagang nauunawaan mo sa huli mula sa lupa up, kung ano ang 553 00:25:13,241 --> 00:25:16,805 nangyayari sa ilalim ng hood, kapag ikaw sumulat, sumulat ng libro, at maglalapat ng mga programa. 554 00:25:16,805 --> 00:25:19,680 Pagpapabalik sa partikular, na ito ay ang unang programa C namin tumingin, 555 00:25:19,680 --> 00:25:22,840 isang canonical, simple program ng masama, medyo pagsasalita, 556 00:25:22,840 --> 00:25:24,620 kung saan, ang mga kopya, Hello World. 557 00:25:24,620 --> 00:25:27,610 At pagpapabalik na ang sinabi ko, ang proseso na source code Dumadaan 558 00:25:27,610 --> 00:25:28,430 ay eksakto na ito. 559 00:25:28,430 --> 00:25:31,180 Dalhin mo ang iyong source code, ipasa ito sa pamamagitan ng isang tagatala, tulad Clang, 560 00:25:31,180 --> 00:25:34,650 at lumapit object code, na Maaaring ganito ang hitsura, zero at mga 561 00:25:34,650 --> 00:25:37,880 na CPU ng computer, central processing unit o utak, 562 00:25:37,880 --> 00:25:39,760 huli nauunawaan. 563 00:25:39,760 --> 00:25:42,460 >> Lumalabas na iyon ang isang bit ng isang oversimplification, 564 00:25:42,460 --> 00:25:44,480 na kami ngayon sa isang posisyon upang mang-ulol hiwalayin 565 00:25:44,480 --> 00:25:46,720 upang maunawaan kung ano talaga ang naging nangyayari sa ilalim ng hood 566 00:25:46,720 --> 00:25:48,600 sa bawat oras na patakbuhin mo Clang, o mas pangkalahatang paraan, 567 00:25:48,600 --> 00:25:53,040 sa bawat oras na gumawa ng isang program, paggamit ng Magsagawa at CF 50 IDE. 568 00:25:53,040 --> 00:25:56,760 Sa partikular, ang mga bagay-bagay tulad ng ito ay unang nabuo, 569 00:25:56,760 --> 00:25:58,684 noong una itala ang iyong programa. 570 00:25:58,684 --> 00:26:00,600 Sa ibang salita, kapag kayo kunin ang iyong source code 571 00:26:00,600 --> 00:26:04,390 at ilista ang mga ito, kung ano ang unang pagiging outputted sa pamamagitan Clang 572 00:26:04,390 --> 00:26:06,370 ay isang bagay na kilala bilang assembly code. 573 00:26:06,370 --> 00:26:08,990 At sa katunayan, mukhang eksakto tulad nito. 574 00:26:08,990 --> 00:26:11,170 >> Nagpatakbo ako ng isang utos sa command line mas maaga. 575 00:26:11,170 --> 00:26:16,260 Hello.c Clang dash capital s, at ito ay lumikha ng isang file 576 00:26:16,260 --> 00:26:19,490 para sa akin na tinatawag na hello.s, sa loob ng kung saan ay eksakto 577 00:26:19,490 --> 00:26:22,290 mga nilalaman, at ng kaunti pa sa itaas at ng kaunti pa sa ibaba, 578 00:26:22,290 --> 00:26:25,080 ngunit ko na ilagay ang juiciest impormasyon dito sa screen. 579 00:26:25,080 --> 00:26:29,190 At kung titingnan mo nang maigi, makikita mo ang hindi bababa sa ilang mga pamilyar na mga keyword. 580 00:26:29,190 --> 00:26:31,330 Mayroon kaming main sa itaas. 581 00:26:31,330 --> 00:26:35,140 May printf down na kami sa gitna. 582 00:26:35,140 --> 00:26:38,670 At mayroon din kaming hello world backslash n sa quotes down sa ibaba. 583 00:26:38,670 --> 00:26:42,450 >> At lahat ng iba pa sa dito ay napakababa tagubilin level 584 00:26:42,450 --> 00:26:45,500 na naiintindihan ng CPU ng computer. 585 00:26:45,500 --> 00:26:50,090 Mga tagubilin CPU na ilipat memory sa paligid, na load string mula sa memorya, 586 00:26:50,090 --> 00:26:52,750 at sa huli, i-print mga bagay-bagay sa screen. 587 00:26:52,750 --> 00:26:56,780 Ngayon kung ano ang mangyayari kahit na matapos ito assembly code ay nabuo? 588 00:26:56,780 --> 00:26:59,964 Sa huli, ang gagawin mo, sa katunayan, pa rin bumuo ng object code. 589 00:26:59,964 --> 00:27:02,630 Ngunit ang mga hakbang na mayroon talagang ay nangyayari sa ilalim ng hood 590 00:27:02,630 --> 00:27:04,180 tumingin ng kaunti pa tulad nito. 591 00:27:04,180 --> 00:27:08,390 Source code nagiging assembly code, na pagkatapos ay nagiging object code, 592 00:27:08,390 --> 00:27:11,930 at ang pinaiiral salita dito ang mga iyon, kapag itala ang iyong source code, 593 00:27:11,930 --> 00:27:16,300 out pagdating assembly code, at pagkatapos ay kapag ipon mo ang iyong code sa pagpupulong, 594 00:27:16,300 --> 00:27:17,800 out pagdating object code. 595 00:27:17,800 --> 00:27:20,360 >> Ngayon Clang ay sobrang sopistikadong, tulad ng isang pulutong ng mga compiler, 596 00:27:20,360 --> 00:27:23,151 at ito ay ang lahat ng mga hakbang na ito sama-sama, at ito ay hindi kinakailangang 597 00:27:23,151 --> 00:27:25,360 output anumang intermediate file na maaari mong kahit na makita. 598 00:27:25,360 --> 00:27:28,400 Compiles Ito lamang ang mga bagay-bagay, kung saan ay ang pangkalahatang kataga na 599 00:27:28,400 --> 00:27:30,000 Inilalarawan ang buong proseso. 600 00:27:30,000 --> 00:27:32,000 Ngunit kung gusto mo talagang upang maging partikular, mayroong 601 00:27:32,000 --> 00:27:34,330 isang pulutong ng higit sa pagpunta doon pati na rin. 602 00:27:34,330 --> 00:27:38,860 >> Ngunit sabihin ring isaalang-alang na ngayon na kahit na sobrang simple na programa, hello.c, 603 00:27:38,860 --> 00:27:40,540 tinatawag na isang function. 604 00:27:40,540 --> 00:27:41,870 Ito ay tinatawag na printf. 605 00:27:41,870 --> 00:27:46,900 Ngunit hindi ko isulat printf, sa katunayan, na nanggagaling sa c, kaya na magsalita. 606 00:27:46,900 --> 00:27:51,139 Ito ay isang function na recall na ipinahayag sa standard io.h, na 607 00:27:51,139 --> 00:27:53,180 ay isang header ng file, na ay isang paksa kami talaga 608 00:27:53,180 --> 00:27:55,780 sumisid sa mas malalim na bago ang haba. 609 00:27:55,780 --> 00:27:58,000 Ngunit ang isang header na file ay karaniwang sinamahan 610 00:27:58,000 --> 00:28:02,920 sa pamamagitan ng isang code na file, source code file, kaya marami tulad ng may umiiral na standard io.h. 611 00:28:02,920 --> 00:28:05,930 >> Minsan ang nakakaraan, ang isang tao, o someones, nagsulat din 612 00:28:05,930 --> 00:28:11,040 isang file na tinatawag na standard io.c, sa na kung saan ang aktwal na kahulugan, 613 00:28:11,040 --> 00:28:15,220 o mga pagpapatupad ng printf, at mga kumpol ng iba pang mga pag-andar, 614 00:28:15,220 --> 00:28:16,870 ay tunay na nakasulat. 615 00:28:16,870 --> 00:28:22,140 Kaya ibinigay na, kung isasaalang-alang namin ang pagkakaroon dito sa kaliwa, hello.c, na kapag 616 00:28:22,140 --> 00:28:26,250 pinagsama-sama, ay nagbibigay sa amin hello.s, kahit na Clang ay hindi abala sa pag-save sa isang lugar 617 00:28:26,250 --> 00:28:31,360 maaari naming makita ang mga ito, at na pagpupulong code makakakuha tipunin sa hello.o, na 618 00:28:31,360 --> 00:28:34,630 ay, sa katunayan, ang default na pangalan ibinigay kapag mong ilista ang pinagmulan 619 00:28:34,630 --> 00:28:39,350 code sa object code, ngunit hindi lubos na handa upang maisagawa ito pa, 620 00:28:39,350 --> 00:28:41,460 dahil ang isa pang hakbang may mangyari, at may 621 00:28:41,460 --> 00:28:44,440 ay nangyayari para sa nakalipas na ilang linggo, marahil walang anumang kaalaman sa iyo. 622 00:28:44,440 --> 00:28:47,290 >> Partikular sa tabi-tabi sa CS50 IDE, at ito, 623 00:28:47,290 --> 00:28:49,870 masyadong, ay isang piraso ng isang oversimplification para sa isang sandali, 624 00:28:49,870 --> 00:28:54,670 may, o ay sa isang oras, isang file na tinatawag na standard io.c, 625 00:28:54,670 --> 00:28:58,440 na ang isang tao naipon sa standard io.s o ang katumbas, 626 00:28:58,440 --> 00:29:02,010 na ang isang tao pagkatapos ay binuo sa standard io.o, 627 00:29:02,010 --> 00:29:04,600 o ito ay lumiliko out sa isang bahagyang naiiba file 628 00:29:04,600 --> 00:29:07,220 format na maaaring magkaroon ng iba't ibang maghain extension kabuuan, 629 00:29:07,220 --> 00:29:11,720 ngunit sa teorya at conceptually, eksakto ang mga hakbang ay mangyari sa ilang mga form. 630 00:29:11,720 --> 00:29:14,060 Alin sa mga sinasabi, na ngayon ako kapag ako ay pagsulat ng isang programa, 631 00:29:14,060 --> 00:29:17,870 hello.c, na nagsasabing lamang, hello mundo, at gumagamit ako ng code ng ibang tao 632 00:29:17,870 --> 00:29:22,480 tulad ng printf, na kung saan ay isang beses sa isang panahon, sa isang file na tinatawag na standard io.c, 633 00:29:22,480 --> 00:29:26,390 pagkatapos ay sa paanuman Mayroon akong gumawa ng aking object code, ang aking mga zero at mga, 634 00:29:26,390 --> 00:29:29,260 at object ng taong iyon code, o zero at mga, 635 00:29:29,260 --> 00:29:34,970 at sa anumang paraan link ang mga ito nang magkakasama sa ng isang pangwakas na file, na tinatawag na hello, na 636 00:29:34,970 --> 00:29:38,070 may lahat ng mga zero at iyan mula sa aking pangunahing pag-andar, 637 00:29:38,070 --> 00:29:40,830 at ang lahat ng mga zero at iyan para sa printf. 638 00:29:40,830 --> 00:29:44,900 >> At sa katunayan, na ang huling proseso ay tinatawag na, na nagli-link ang iyong mga object code. 639 00:29:44,900 --> 00:29:47,490 Ang output ng na ay isang executable file. 640 00:29:47,490 --> 00:29:49,780 Kaya sa pagkamakatarungan, sa pagtatapos ng araw, wala 641 00:29:49,780 --> 00:29:52,660 ay nagbago dahil sa isang linggo, kapag kami unang nagsimula pag-ipon ng mga programa. 642 00:29:52,660 --> 00:29:55,200 Sa katunayan, ang lahat ng mga ito ay nangyayari sa ilalim ng hood, 643 00:29:55,200 --> 00:29:57,241 ngunit ngayon ay hindi namin sa isang posisyon kung saan maaari naming aktwal 644 00:29:57,241 --> 00:29:58,794 manunudyo bukod ang mga iba't-ibang mga hakbang na ito. 645 00:29:58,794 --> 00:30:00,710 At sa katunayan, sa pagtatapos ng araw, hindi pa rin namin 646 00:30:00,710 --> 00:30:04,480 sa kaliwa na may mga zero at mga, na ay talagang isang mahusay na segue ngayon 647 00:30:04,480 --> 00:30:08,620 sa ibang kakayahan ng C, na Hindi namin nagkaroon sa pagkilos malamang 648 00:30:08,620 --> 00:30:11,250 sa petsa, na kilala bilang bitwise operator. 649 00:30:11,250 --> 00:30:15,220 Sa ibang salita, kaya sa ngayon, anumang oras na namin Aaksyunan data sa C o mga variable sa C, 650 00:30:15,220 --> 00:30:17,660 nagkaroon kami ng mga bagay tulad ng karakter at sa kamay at ins 651 00:30:17,660 --> 00:30:21,990 at longs at doble at ang gusto, ngunit lahat ng mga ito ay hindi bababa sa walong bits. 652 00:30:21,990 --> 00:30:25,550 Na hindi pa nagawa naming upang manipulahin indibidwal na mga piraso, 653 00:30:25,550 --> 00:30:28,970 kahit na ang isang indibidwal na bit, namin alam, maaari kumakatawan sa isang 0 at 1. 654 00:30:28,970 --> 00:30:32,640 Ngayon ito ay lumiliko out na sa C, mo ay maaaring makakuha ng access sa mga indibidwal na mga piraso, 655 00:30:32,640 --> 00:30:35,530 kung alam mo ang syntax, na kung saan upang makakuha sa kanila. 656 00:30:35,530 --> 00:30:38,010 >> Kaya sabihin tumagal ng isang pagtingin sa bitwise operator. 657 00:30:38,010 --> 00:30:41,700 Kaya nakalarawan dito ang ilang mga simbolo na na, uri ng, uri ng, nakita natin dati. 658 00:30:41,700 --> 00:30:45,580 Nakakakita ako ng isang ampersand, isang vertical bar, at ilang mga iba pati na rin, 659 00:30:45,580 --> 00:30:49,430 at isipin na ampersand ampersand ay isang bagay na nakita natin dati. 660 00:30:49,430 --> 00:30:54,060 Ang lohikal AND operator, kung saan mayroon kang dalawa sa kanila nang magkasama, o ang mga lohikal na OR 661 00:30:54,060 --> 00:30:56,300 operator, kung saan mo may dalawang vertical bar. 662 00:30:56,300 --> 00:31:00,550 Bitwise operator, kung saan ipapakita namin makita gumana sa bits isa-isa, 663 00:31:00,550 --> 00:31:03,810 gamitin lamang ang isang solong ampersand, isang single vertical bar, ang simbolo caret 664 00:31:03,810 --> 00:31:06,620 ang susunod na dumating, ang maliit na tilde, at pagkatapos ay iniwan 665 00:31:06,620 --> 00:31:08,990 bracket kaliwa bracket, o right bracket right bracket. 666 00:31:08,990 --> 00:31:10,770 Ang bawat isa sa mga ito ay may iba't-ibang kahulugan. 667 00:31:10,770 --> 00:31:11,950 >> Sa katunayan, sabihin kumuha ng isang hitsura. 668 00:31:11,950 --> 00:31:16,560 Sabihin pumunta lumang paaralan ngayon, at gamitin ang isang touch screen mula sa nakalipas na panahon, 669 00:31:16,560 --> 00:31:18,002 kilala bilang isang white board. 670 00:31:18,002 --> 00:31:19,710 At ito white board ay pagpunta sa-daan sa amin 671 00:31:19,710 --> 00:31:27,360 upang ipahayag ang ilang mga medyo simple simbolo, o sa halip ng ilang mga medyo simple formula, 672 00:31:27,360 --> 00:31:29,560 na pagkatapos ay maaari naming sa huli pagkilos, upang 673 00:31:29,560 --> 00:31:33,230 upang ma-access indibidwal bits loob ng isang programa C. 674 00:31:33,230 --> 00:31:34,480 Sa ibang salita, sabihin gawin ito ipaalam. 675 00:31:34,480 --> 00:31:37,080 Sabihin unang talk para sa isang sandali tungkol ampersand, 676 00:31:37,080 --> 00:31:39,560 kung saan ay ang bitwise AT operator. 677 00:31:39,560 --> 00:31:42,130 Sa ibang salita, ito ay isang operator na nagbibigay-daan 678 00:31:42,130 --> 00:31:45,930 sa akin upang magkaroon ng isang variable para sa kaliwang kamay kadalasan, at isang variable right-kamay, 679 00:31:45,930 --> 00:31:50,640 o isang indibidwal na halaga, na kung kami AT sama ang mga ito, ay nagbibigay sa akin ng isang huling resulta. 680 00:31:50,640 --> 00:31:51,560 Kaya kung ano ang ibig sabihin ko? 681 00:31:51,560 --> 00:31:54,840 Kung sa isang programa, ikaw ay may isang variable na ang mga tindahan ng isa sa mga halagang ito, 682 00:31:54,840 --> 00:31:58,000 o hayaan panatilihin ito simple, at lamang isulat ang mga zero at mga isa-isa, 683 00:31:58,000 --> 00:32:00,940 narito kung paano gumagana ang mga ampersand operator. 684 00:32:00,940 --> 00:32:06,400 0 ampersand 0 ay pagpunta sa pantay 0. 685 00:32:06,400 --> 00:32:07,210 Ngayon kung bakit ay na? 686 00:32:07,210 --> 00:32:09,291 >> Ito ay halos kapareho sa Boolean expression, 687 00:32:09,291 --> 00:32:10,540 na napag-usapan namin kaya sa ngayon. 688 00:32:10,540 --> 00:32:15,800 Kung sa tingin mo na matapos ang lahat, ang 0 ay false, 0 ay hindi totoo, hindi totoo at hindi totoo 689 00:32:15,800 --> 00:32:18,720 ay, bilang namin tinalakay lohikal, false din. 690 00:32:18,720 --> 00:32:20,270 Kaya makuha namin 0 dito rin. 691 00:32:20,270 --> 00:32:24,390 Kung ikaw ay kumuha 0 ampersand 1, mahusay na, masyadong, 692 00:32:24,390 --> 00:32:29,890 ay magiging 0, sapagkat sa dahilang ito kaliwang expression upang maging totoo o 1, 693 00:32:29,890 --> 00:32:32,360 ito ay kailangan upang maging totoo at tunay. 694 00:32:32,360 --> 00:32:36,320 Ngunit dito kami ay may mga maling at totoo, o 0 at 1. 695 00:32:36,320 --> 00:32:42,000 Muli Ngayon, kung kami ay may 1 ampersand 0, na, masyadong, ay magiging 0, 696 00:32:42,000 --> 00:32:47,240 at kung kami ay may 1 ampersand 1, sa wakas ang mayroon kami ng isang 1 bit. 697 00:32:47,240 --> 00:32:50,340 Kaya sa ibang salita, hindi namin ginagawa anumang bagay na interesante sa mga operator na ito 698 00:32:50,340 --> 00:32:51,850 pa lamang, ito ampersand operator. 699 00:32:51,850 --> 00:32:53,780 Ito ay ang bitwise AT operator. 700 00:32:53,780 --> 00:32:57,290 Ngunit ang mga ito ay ang mga sangkap sa pamamagitan ng kung saan maaari naming gawin 701 00:32:57,290 --> 00:32:59,240 kagiliw-giliw na mga bagay-bagay, tulad ng makikita sa lalong madaling panahon kami ay makita. 702 00:32:59,240 --> 00:33:02,790 >> Ngayon tingnan natin ang lang ang nag-iisang ipaalam vertical bar sa paglipas dito sa kanan. 703 00:33:02,790 --> 00:33:06,710 Kung mayroon akong isang 0 bit at ako O ito sa, ang bitwise 704 00:33:06,710 --> 00:33:11,030 OR operator, isa pang 0 bit, na ang pagpunta sa bigyan ako 0. 705 00:33:11,030 --> 00:33:17,540 Kung ako tumagal ng 0 bit at OR ito sa isang 1 bit, at pagkatapos ay ako pagpunta upang makakuha ng 1. 706 00:33:17,540 --> 00:33:19,830 At sa katunayan, para lamang sa kaliwanagan, hayaan mo akong bumalik, 707 00:33:19,830 --> 00:33:23,380 At ang aking mga vertical bar ay hindi mali para sa 1 ni. 708 00:33:23,380 --> 00:33:26,560 Hayaan akong muling isulat ang lahat ng aking 1 ng kaunti pa 709 00:33:26,560 --> 00:33:32,700 malinaw, kaya na namin sa susunod na makita, kung ako may isang 1 OR 0, na ang pagpunta sa maging isang 1, 710 00:33:32,700 --> 00:33:39,060 at kung mayroon isang 1 O 1 na ako, masyadong, ay magiging isang 1. 711 00:33:39,060 --> 00:33:42,900 Kaya maaari mong makita lohikal na ang OR operator behaves napaka naiiba. 712 00:33:42,900 --> 00:33:48,070 Nagbibigay sa akin ito 0 OR 0 ay nagbibigay sa akin 0, ngunit nagbibigay sa bawat iba pang mga kumbinasyon sa akin 1. 713 00:33:48,070 --> 00:33:52,480 Kaya hangga't mayroon akong isang 1 sa formula, ang mga resulta ay magiging 1. 714 00:33:52,480 --> 00:33:55,580 >> Sa pamamagitan ng kaibahan sa AND operator, ang ampersand, 715 00:33:55,580 --> 00:34:00,940 lamang kung mayroon akong dalawang 1 ni sa equation, ko talagang makakuha ng isang 1 out. 716 00:34:00,940 --> 00:34:02,850 Ngayon ay mayroong ilang mga iba pang operator pati na rin. 717 00:34:02,850 --> 00:34:04,810 Isa sa mga ito ay isang maliit na mas kasangkot. 718 00:34:04,810 --> 00:34:07,980 Kaya hayaan mo akong magpatuloy at burahin ito upang magbakante ng ilang espasyo. 719 00:34:07,980 --> 00:34:13,020 720 00:34:13,020 --> 00:34:16,460 At tumagal ng isang pagtingin sa ipaalam caret simbolo, para sa sandali lamang. 721 00:34:16,460 --> 00:34:18,210 Ito ay karaniwang isang karakter na maaari mong i-type 722 00:34:18,210 --> 00:34:21,420 sa iyong hawak na keyboard Shift at pagkatapos ay isa sa mga numero na nasa ibabaw ng iyong US 723 00:34:21,420 --> 00:34:22,250 keyboard. 724 00:34:22,250 --> 00:34:26,190 >> Kaya ito ay ang eksklusibong OR operator, eksklusibong OR. 725 00:34:26,190 --> 00:34:27,790 Kaya lang namin nakita ang OR operator. 726 00:34:27,790 --> 00:34:29,348 Ito ang eksklusibong OR operator. 727 00:34:29,348 --> 00:34:30,639 Ano ang aktwal na mga pagkakaiba? 728 00:34:30,639 --> 00:34:34,570 Tingnan lang natin ang mga formula Well ipaalam, at gamitin ito bilang sangkap sa huli. 729 00:34:34,570 --> 00:34:37,690 0 XOR 0. 730 00:34:37,690 --> 00:34:39,650 Pupunta ako sa sabihin ay palaging 0. 731 00:34:39,650 --> 00:34:41,400 Iyon ang kahulugan ng XOR. 732 00:34:41,400 --> 00:34:47,104 0 XOR 1 ay magiging 1. 733 00:34:47,104 --> 00:34:58,810 1 XOR 0 ay magiging 1, at 1 XOR 1 ay magiging? 734 00:34:58,810 --> 00:34:59,890 Maling? 735 00:34:59,890 --> 00:35:00,520 O di ba? 736 00:35:00,520 --> 00:35:01,860 Hindi ko alam. 737 00:35:01,860 --> 00:35:02,810 0. 738 00:35:02,810 --> 00:35:04,700 Ngayon kung ano ang nangyayari dito? 739 00:35:04,700 --> 00:35:06,630 Well isipin ang tungkol sa pangalan ng operator. 740 00:35:06,630 --> 00:35:09,980 Exclusive OR, sa gayon ay ang mga pangalan, uri ng, nagmumungkahi, 741 00:35:09,980 --> 00:35:13,940 ang sagot ay lamang ang pagpunta sa maging isang 1 kung ang input ay eksklusibo, 742 00:35:13,940 --> 00:35:15,560 eksklusibo naiiba. 743 00:35:15,560 --> 00:35:18,170 Kaya dito ang input ay ang parehong, kaya ang output ay 0. 744 00:35:18,170 --> 00:35:20,700 Narito ang mga input ay ang mga parehong, kaya ang output ay 0. 745 00:35:20,700 --> 00:35:25,640 Narito ang mga output ay naiiba, ang mga ito ay eksklusibo, at sa gayon ang output ay 1. 746 00:35:25,640 --> 00:35:28,190 Kaya ito ay lubos na katulad sa AT, ito ay halos katulad na, 747 00:35:28,190 --> 00:35:32,760 o sa halip ito ay lubos na katulad sa OR, ngunit lamang sa isang eksklusibong paraan. 748 00:35:32,760 --> 00:35:36,210 Isa na ito ay hindi na isang 1, dahil kami ay may dalawang 1 ni, 749 00:35:36,210 --> 00:35:38,621 at hindi eksklusibo, isa lamang sa kanila. 750 00:35:38,621 --> 00:35:39,120 Lahat tama. 751 00:35:39,120 --> 00:35:40,080 Paano naman ang iba? 752 00:35:40,080 --> 00:35:44,220 Well ang tilde naman ay talagang maganda at simpleng, thankfully. 753 00:35:44,220 --> 00:35:46,410 At ito ay isang unary operator, na nangangahulugan 754 00:35:46,410 --> 00:35:50,400 ito ay inilapat lamang sa isang input, isa operand, kaya na magsalita. 755 00:35:50,400 --> 00:35:51,800 Hindi sa isang kaliwa at isang kanan. 756 00:35:51,800 --> 00:35:56,050 Sa ibang salita, kung ikaw ay kumuha ng tilde 0, ang sagot ay ang kabaligtaran. 757 00:35:56,050 --> 00:35:59,710 At kung ikaw ay kumuha ng tilde ng 1, ang Ang sagot doon ay ang kabaligtaran. 758 00:35:59,710 --> 00:36:02,570 Kaya ang tilde operator ay isang paraan ng negating ng kaunti, 759 00:36:02,570 --> 00:36:06,000 o flipping ng kaunti mula sa 0 hanggang 1, o 1 sa 0. 760 00:36:06,000 --> 00:36:09,820 >> At na nag-iiwan sa amin sa wakas may final operator lamang ng dalawa, 761 00:36:09,820 --> 00:36:13,840 ang tinatawag na kaliwang shift, at ang tinatawag na karapatan shift operator. 762 00:36:13,840 --> 00:36:16,620 Tingnan natin ang isang pagtingin sa kung paano ang mga trabaho. 763 00:36:16,620 --> 00:36:20,780 Ang kaliwa shift operator, nakasulat may dalawang bracket anggulo mo na, 764 00:36:20,780 --> 00:36:22,110 nagpapatakbo ang mga sumusunod. 765 00:36:22,110 --> 00:36:27,390 Kung ang aking input, o ang aking operand, sa kaliwa shift operator ay lubos na lamang ng isang 1. 766 00:36:27,390 --> 00:36:33,750 At pagkatapos ay sasabihin ko sa mga computer upang kaliwa shift na 1, sabihin na pitong lugar, 767 00:36:33,750 --> 00:36:37,150 ang resulta ay parang ako kumuha na 1, at ilipat ito 768 00:36:37,150 --> 00:36:40,160 pitong mga lugar sa paglipas ng sa kaliwa, at sa pamamagitan ng default, 769 00:36:40,160 --> 00:36:42,270 kami ay pagpunta sa ipalagay na ang puwang sa kanan 770 00:36:42,270 --> 00:36:44,080 ay magiging may palaman sa zero. 771 00:36:44,080 --> 00:36:50,316 Sa ibang salita, 1 kaliwa shift 7 ay pagpunta upang bigyan ako na ang 1, sinusundan ng 1, 2, 3, 772 00:36:50,316 --> 00:36:54,060 4, 5, 6, 7 mga zero. 773 00:36:54,060 --> 00:36:57,380 Kaya sa isang paraan, ito ay nagpapahintulot sa inyo na kumuha ng isang maliit na bilang tulad ng 1, 774 00:36:57,380 --> 00:37:00,740 at malinaw na gawin itong mas magkano, magkano ang mas malaki sa ganitong paraan, 775 00:37:00,740 --> 00:37:06,460 ngunit ang tunay na kami ay pagpunta upang makita mas matalino approach para dito 776 00:37:06,460 --> 00:37:08,080 sa halip, pati na rin, 777 00:37:08,080 --> 00:37:08,720 >> Lahat tama. 778 00:37:08,720 --> 00:37:10,060 Iyan na ang lahat para sa tatlong linggo. 779 00:37:10,060 --> 00:37:11,400 Kami ay makita mo ang susunod na oras. 780 00:37:11,400 --> 00:37:12,770 Ito ay CS50. 781 00:37:12,770 --> 00:37:17,270 782 00:37:17,270 --> 00:37:22,243 >> [MUSIC nagpe-play] 783 00:37:22,243 --> 00:37:25,766 >> Tagapagsalita 1: Siya ay sa snack bar ng pagkain ng isang mainit na gawing kalokohan sorbetes. 784 00:37:25,766 --> 00:37:28,090 Siya ay ang lahat ng ito sa kanyang mukha. 785 00:37:28,090 --> 00:37:30,506 Siya ay may suot na tsokolate tulad ng isang balbas 786 00:37:30,506 --> 00:37:31,756 Tagapagsalita 2: Ano ang ginagawa mo? 787 00:37:31,756 --> 00:37:32,422 Tagapagsalita 3: Hmmm? 788 00:37:32,422 --> 00:37:33,500 Ano? 789 00:37:33,500 --> 00:37:36,800 >> Tagapagsalita 2: Ang ibig mo double lumangoy lamang? 790 00:37:36,800 --> 00:37:38,585 Ikaw double dipped ang chip. 791 00:37:38,585 --> 00:37:39,460 Tagapagsalita 3: Mawalang galang na. 792 00:37:39,460 --> 00:37:44,440 Tagapagsalita 2: nabasa mo ang chip, ikaw ay kinuha ng isang kagat, at ikaw nabasa muli. 793 00:37:44,440 --> 00:37:44,940 Tagapagsalita 3: 794 00:37:44,940 --> 00:37:48,440 Tagapagsalita 2: Kaya na tulad ng paglalagay ng ang iyong buong bibig karapatan sa lumangoy. 795 00:37:48,440 --> 00:37:52,400 Susunod na panahon na kayo ay kumuha ng isang maliit na tilad, isawsaw lamang ito nang isang beses, at tapusin ito. 796 00:37:52,400 --> 00:37:53,890 >> Tagapagsalita 3: Alam mo kung ano, Dan? 797 00:37:53,890 --> 00:37:58,006 Isawsaw mo ang paraan na gusto mo upang lumangoy. 798 00:37:58,006 --> 00:38:01,900 Kukunin ko lumangoy ang paraan na gusto ko na isawsaw. 799 00:38:01,900 --> 00:38:03,194