1 00:00:00,000 --> 00:00:03,332 >> [موسیقی] 2 00:00:03,332 --> 00:00:06,490 >> ANDI PENG: به هفته 3 از بخش خوش آمدید. 3 00:00:06,490 --> 00:00:09,550 با تشکر از شما بچه ها، برای همه آینده این زمان شروع اوایل امروز. 4 00:00:09,550 --> 00:00:11,466 ما باید خوب، کمی گروه صمیمی امروز. 5 00:00:11,466 --> 00:00:14,570 پس امیدوارم ما به پایان، شاید، در اوایل، 6 00:00:14,570 --> 00:00:15,780 کمی اوایل امروز. 7 00:00:15,780 --> 00:00:22,057 بنابراین به سرعت، تنها برخی از اطلاعیه برای امروز در دستور کار. 8 00:00:22,057 --> 00:00:23,890 قبل از شروع، ما رفتن به فقط رفتن را 9 00:00:23,890 --> 00:00:28,910 برخی از مسائل تدارکات را تحت پوشش کوتاه، pset سوال، پرسش کردن، مانند آن. 10 00:00:28,910 --> 00:00:30,250 و سپس ما را بیاندیشید. 11 00:00:30,250 --> 00:00:34,710 ما یک دیباگر GDB به نام به از آن استفاده شروع رد کد ما، که دیوید 12 00:00:34,710 --> 00:00:36,550 روز دیگر در سخنرانی توضیح داد. 13 00:00:36,550 --> 00:00:39,420 ما بیش از چهار نوع از انواع است. 14 00:00:39,420 --> 00:00:42,310 ما بیش از آنها را به سرعت به از آنجایی که آنها بسیار فشرده است. 15 00:00:42,310 --> 00:00:45,710 اما می دانم که تمام اسلاید و کد منبع همیشه آنلاین. 16 00:00:45,710 --> 00:00:50,810 بنابراین احساس رایگان، در مطالعه خود، به رفتن به عقب و نگاهی که. 17 00:00:50,810 --> 00:00:53,930 >> ما را از طریق رفتن نماد مجانبی که 18 00:00:53,930 --> 00:00:55,944 فقط یک راه فانتزی است گفت: "زمان های اجرا" 19 00:00:55,944 --> 00:00:58,360 که در آن ما O بزرگ، که دیوید در سخنرانی توضیح داد. 20 00:00:58,360 --> 00:01:01,550 و ما نیز امگا، دارند که زمان اجرا پایین تر است. 21 00:01:01,550 --> 00:01:06,450 و ما کمی بیشتر صحبت در عمق در مورد چگونگی آن کار می کنند. 22 00:01:06,450 --> 00:01:10,160 و در آخر، ما بیش از جستجوی دودویی بروید، چرا که بسیاری از شما که در حال حاضر 23 00:01:10,160 --> 00:01:15,190 نگاه psets خود را احتمالا می دانید که این یک سوال که در pset شما است. 24 00:01:15,190 --> 00:01:17,470 بنابراین شما تمام خوشحال خواهید بود که ما امروز را پوشش میدهد. 25 00:01:17,470 --> 00:01:20,610 >> و در آخر، در خود بازخورد بخش، من در واقع 26 00:01:20,610 --> 00:01:23,000 حدود 15 دقیقه در سمت چپ پایان دادن به فقط رفتن را 27 00:01:23,000 --> 00:01:27,730 تدارکات از pset3، هر گونه سوال، شاید کمی از هدایت، اگر شما خواهد شد، 28 00:01:27,730 --> 00:01:28,990 قبل از ما شروع برنامه نویسی. 29 00:01:28,990 --> 00:01:30,890 بنابراین سعی کنید برای دریافت از طریق مواد خیلی سریع. 30 00:01:30,890 --> 00:01:33,880 و پس از آن ما می توانیم برخی از صرف زمان سوال های بیشتر برای pset. 31 00:01:33,880 --> 00:01:35,230 باشه. 32 00:01:35,230 --> 00:01:39,570 >> سرعت، به طوری که تنها چند اطلاعیه ها قبل از ما شروع به امروز. 33 00:01:39,570 --> 00:01:45,410 در مرحله اول، به ساخت خوش آمدید آن را از طریق دو نفر از psets خود را. 34 00:01:45,410 --> 00:01:49,432 من یک نگاه your-- آره، اجازه دهید در زمان یک دور از کف زدن برای آن یکی. 35 00:01:49,432 --> 00:01:51,140 در واقع، من واقعا بود، واقعا تحت تاثیر قرار. 36 00:01:51,140 --> 00:01:55,800 من برای اولین بار pset برای شما بچه ها درجه بندی هفته گذشته و شما بچه ها باور نکردنی بود. 37 00:01:55,800 --> 00:01:58,290 >> سبک در نقطه بود علاوه بر چند نظر. 38 00:01:58,290 --> 00:02:00,660 اطمینان حاصل کنید که شما همیشه اظهار نظر کد خود را. 39 00:02:00,660 --> 00:02:03,040 اما psets خود را در نقطه بود. 40 00:02:03,040 --> 00:02:05,549 و آن را نگه دارید تا. 41 00:02:05,549 --> 00:02:08,090 و آن را به خوبی برای حرفه ای به دید که شما بچه ها در حال قرار دادن 42 00:02:08,090 --> 00:02:10,704 در تلاش به همان اندازه در سبک خود را و طراحی خود را در کد خود را 43 00:02:10,704 --> 00:02:12,120 که ما دوست داریم برای شما برای دیدن. 44 00:02:12,120 --> 00:02:16,450 بنابراین من گذر از کنار قدردانی من برای بقیه از TAS. 45 00:02:16,450 --> 00:02:19,210 >> با این حال وجود دارد که چند سوال پرسش کردن 46 00:02:19,210 --> 00:02:22,010 من فقط می خواهم به بیش از که هر دو زندگی من را 47 00:02:22,010 --> 00:02:24,900 و بسیاری از دیگر استادیار "زندگی کمی آسان تر است. 48 00:02:24,900 --> 00:02:28,220 در مرحله اول، من متوجه شده ام این گذشته week-- چگونه بسیاری از شما 49 00:02:28,220 --> 00:02:32,301 در حال اجرا در check50 کد خود را قبل از شما را انتخاب؟ 50 00:02:32,301 --> 00:02:32,800 باشه. 51 00:02:32,800 --> 00:02:36,690 پس هر کس باید انجام check50، از آنجا که ما در واقع secret-- 52 00:02:36,690 --> 00:02:41,540 اجرا check50 به عنوان بخشی از صحت ما اسکریپت برای تست کد خود را. 53 00:02:41,540 --> 00:02:45,480 بنابراین اگر کد خود را شکست خورده check50، در تمام احتمال، 54 00:02:45,480 --> 00:02:47,570 آن را احتمالا رفتن به شکست چک ما نیز هست. 55 00:02:47,570 --> 00:02:49,320 گاهی اوقات شما بچه ها دارند پاسخ درست است. 56 00:02:49,320 --> 00:02:52,200 مانند، در حریص، برخی از شما باید اعداد سمت راست، 57 00:02:52,200 --> 00:02:53,960 شما فقط چاپ برخی چیزهای اضافی. 58 00:02:53,960 --> 00:02:55,940 و چیزهای اضافی در واقع با شکست مواجه چک، 59 00:02:55,940 --> 00:02:58,440 زیرا کامپیوتر نمی کند واقعا می دانیم چه آن را به دنبال. 60 00:02:58,440 --> 00:03:00,981 و پس از آن فقط از طریق اجرا شود، دید که خروجی خود را نمی کند 61 00:03:00,981 --> 00:03:03,810 مطابقت با آنچه ما انتظار پاسخ می شود، و علامت آن اشتباه است. 62 00:03:03,810 --> 00:03:06,560 >> و من می دانم که در اتفاق افتاد برخی از موارد خود را در این هفته. 63 00:03:06,560 --> 00:03:09,870 پس من رفتم و دستی کد همه regraded. 64 00:03:09,870 --> 00:03:12,780 در آینده هر چند، مدیر فروش، لطفا مطمئن شوید 65 00:03:12,780 --> 00:03:14,570 که شما در حال اجرا بررسی 50 در کد خود را. 66 00:03:14,570 --> 00:03:17,970 از آنجا که آن نوع درد برای TA به باید به عقب برگردید و دستی regrade 67 00:03:17,970 --> 00:03:21,197 هر pset برای هر تنها، به عنوان مثال کمی از دست رفته. 68 00:03:21,197 --> 00:03:22,530 بنابراین من را نمی کردن هر نقطه است. 69 00:03:22,530 --> 00:03:25,210 من فکر می کنم من در زمان خاموش شاید یک یا دو برای طراحی. 70 00:03:25,210 --> 00:03:27,710 در آینده هر چند، اگر شما در حال شکست check50، 71 00:03:27,710 --> 00:03:31,330 نقاط گرفته خواهد شد برای صحت. 72 00:03:31,330 --> 00:03:35,020 >> علاوه بر این، psets هستند علت جمعه در ظهر. 73 00:03:35,020 --> 00:03:38,990 من فکر می کنم هفت دقیقه وجود دارد مهلت اواخر که ما به شما. 74 00:03:38,990 --> 00:03:42,434 میانگین پستها در طول زمان هاروارد، آنها به اجازه هفت دقیقه دیر به همه چیز. 75 00:03:42,434 --> 00:03:44,350 بنابراین در اینجا در دانشگاه ییل، ما پایبندی به آن نیز هست. 76 00:03:44,350 --> 00:03:47,910 اما بسیار زیاد است، ساعت 12:07، اگر pset خود را در نیست، 77 00:03:47,910 --> 00:03:49,720 آن را به عنوان اواخر مشخص شده اند. 78 00:03:49,720 --> 00:03:53,160 و به این ترتیب در حالی که آن مشخص شده است به عنوان اواخر سال، TA-- من 79 00:03:53,160 --> 00:03:54,870 هنوز باید درجه بندی psets خود را. 80 00:03:54,870 --> 00:03:56,760 بنابراین شما هنوز هم یک درجه به نظر می رسد. 81 00:03:56,760 --> 00:03:58,820 با این حال، می دانیم که در پایان ترم، 82 00:03:58,820 --> 00:04:02,270 همه psets اواخر فقط می شود به صورت خودکار توسط کامپیوتر صفر. 83 00:04:02,270 --> 00:04:04,490 >> ما این کار را به دو دلیل. 84 00:04:04,490 --> 00:04:09,220 یکی، گاهی اوقات ما معاف است، مانند بهانه دین، 85 00:04:09,220 --> 00:04:10,762 بعد که من در مورد هنوز نمی دانند. 86 00:04:10,762 --> 00:04:13,761 بنابراین ما دوست داریم به مطمئن شوید که ما در حال درجه بندی همه چیز فقط در مورد، مانند، من 87 00:04:13,761 --> 00:04:15,080 از دست رفته بهانه ای جستجوی یک مدیر است. 88 00:04:15,080 --> 00:04:17,000 و در مرحله دوم، نگه داشتن در ذهن، شما هنوز هم می تواند 89 00:04:17,000 --> 00:04:19,370 رها کردن یک pset که دارای نقاط دامنه کامل. 90 00:04:19,370 --> 00:04:21,430 بنابراین، ما به کلاس دوست همه psets خود را فقط 91 00:04:21,430 --> 00:04:24,730 مطمئن شوید که دامنه خود را وجود دارد و شما در حال تلاش آنها. 92 00:04:24,730 --> 00:04:29,150 بنابراین حتی اگر آن اواخر، به شما هنوز اعتبار برای نقاط دامنه، من فکر می کنم. 93 00:04:29,150 --> 00:04:33,730 >> بنابراین اخلاقی داستان است، مطمئن مطمئن psets خود را در در زمان. 94 00:04:33,730 --> 00:04:38,350 و اگر آنها در زمان نیست، مطمئن شوید که آن را بزرگ نمی کند. 95 00:04:38,350 --> 00:04:41,678 آره، قبل از من در حرکت می کند، آیا کسی هرگونه سوال در مورد بازخورد pset؟ 96 00:04:41,678 --> 00:04:42,178 آره. 97 00:04:42,178 --> 00:04:43,630 >> مخاطبان: آیا ما می گویند می توانید یکی از psets رها؟ 98 00:04:43,630 --> 00:04:44,296 >> ANDI PENG: آره. 99 00:04:44,296 --> 00:04:47,050 بنابراین نه psets کلی وجود دارد در طول دوره از ترم. 100 00:04:47,050 --> 00:04:50,610 و اگر شما دامنه points-- بنابراین دامنه است که فقط، 101 00:04:50,610 --> 00:04:53,567 بسیار زیاد است، شما تلاش مشکل، شما را در زمان قرار دادن، 102 00:04:53,567 --> 00:04:56,150 شما نشان می دهد که شما ام نشان تنظیمات شما را خوانده ام. 103 00:04:56,150 --> 00:04:57,191 که دامنه بسیار است. 104 00:04:57,191 --> 00:04:59,370 و اگر شما در حال انجام امتیاز دامنه، ما 105 00:04:59,370 --> 00:05:03,360 می تواند کمترین رها یکی از دامنه کامل. 106 00:05:03,360 --> 00:05:06,790 به طوری که در نفع خود به تکمیل کنید و سعی کنید هر pset. 107 00:05:06,790 --> 00:05:10,320 >> حتی اگر هیچ کدام از upload-- آنها کار می کنند، آپلود همه آنها را. 108 00:05:10,320 --> 00:05:13,711 و پس از آن ما امیدواریم قادر به شما برخی از آن نقاط را به عقب. 109 00:05:13,711 --> 00:05:14,210 خنک. 110 00:05:14,210 --> 00:05:16,780 هر گونه سوال دیگر؟ 111 00:05:16,780 --> 00:05:17,840 عالی. 112 00:05:17,840 --> 00:05:21,960 >> در مرحله دوم، دفتر hours-- چند یادداشت سریع در مورد ساعات اداری. 113 00:05:21,960 --> 00:05:24,300 بنابراین برای اولین بار، در اوایل هفته می آیند. 114 00:05:24,300 --> 00:05:26,909 هیچ کس تا به حال در ساعات اداری در روزهای دوشنبه. 115 00:05:26,909 --> 00:05:28,700 Christabel به آمد ساعات اداری شب گذشته. 116 00:05:28,700 --> 00:05:29,691 آره، Christabel. 117 00:05:29,691 --> 00:05:32,190 و چه ما در دفتر ساعت شب گذشته، Christabel؟ 118 00:05:32,190 --> 00:05:33,020 >> مخاطبان: ما بستنی بود. 119 00:05:33,020 --> 00:05:36,160 >> ANDI PENG: به طوری که درست است، ما به حال بستنی در ساعات اداری شب گذشته. 120 00:05:36,160 --> 00:05:39,390 در حالی که من می تواند به شما قول می دهم که نمی ما بستنی در ساعات اداری باید 121 00:05:39,390 --> 00:05:43,230 هر هفته، چه می توانم به شما قول این است که وجود خواهد داشت به طور قابل توجهی 122 00:05:43,230 --> 00:05:45,380 دانش آموز بهتر نسبت به TA. 123 00:05:45,380 --> 00:05:47,650 مانند حلال، آن را مانند 3-1 است. 124 00:05:47,650 --> 00:05:50,350 در حالی که، آن را با پنجشنبه، شما را در مورد 150 اس ام اس 125 00:05:50,350 --> 00:05:52,830 واقعا بچه ها و بستنی تاکید کرد. 126 00:05:52,830 --> 00:05:55,360 و آن را فقط مولد برای هر کسی نیست. 127 00:05:55,360 --> 00:05:58,730 بنابراین اخلاقی داستان است، آمده است اوایل به ساعات اداری و چیزهای خوب 128 00:05:58,730 --> 00:06:00,310 اتفاق خواهد افتاد. 129 00:06:00,310 --> 00:06:02,110 >> همچنین، آماده به سوال بپرسید. 130 00:06:02,110 --> 00:06:03,200 میدونی؟ 131 00:06:03,200 --> 00:06:05,420 صرف نظر از آنچه TAS، من فکر می کنم، شده اند گفت، 132 00:06:05,420 --> 00:06:10,710 ما اخذ شده است که یک زن و شوهر دانشجویان که در روز پنج شنبه در آمده، مثل، 10:50 133 00:06:10,710 --> 00:06:15,100 پس از خواندن تنظیمات نیست که مثل من کمک کند، به من کمک کند. 134 00:06:15,100 --> 00:06:18,200 متاسفانه در آن نقطه، وجود دارد بسیار ما می توانیم انجام به شما کمک کند. 135 00:06:18,200 --> 00:06:19,590 پس لطفا در اوایل هفته آمده است. 136 00:06:19,590 --> 00:06:22,040 بیا زود به ساعات اداری. 137 00:06:22,040 --> 00:06:23,350 بیا آماده به سوال بپرسید. 138 00:06:23,350 --> 00:06:25,310 مطمئن شوید که شما، به عنوان یک دانش آموز، که در آن 139 00:06:25,310 --> 00:06:27,620 شما نیاز به به طوری که استادیار می تواند به شما همراه راهنمای، 140 00:06:27,620 --> 00:06:32,850 این چیزی است که از ساعات اداری باید برای اختصاص داده شده. 141 00:06:32,850 --> 00:06:37,380 >> در مرحله دوم، بنابراین من می دانم اساتید دوست دارید به ما را شگفت زده با آزمون. 142 00:06:37,380 --> 00:06:39,439 من تا به حال یک استاد آن مانند، یو، توسط راه، 143 00:06:39,439 --> 00:06:41,230 به یاد داشته باشید که میان دوره ای شما دوشنبه آینده. 144 00:06:41,230 --> 00:06:42,855 آره، من که میان دوره ای را نمی دانند. 145 00:06:42,855 --> 00:06:45,630 بنابراین من قصد دارم که به TA که به شما یادآوری که مسابقه 146 00:06:45,630 --> 00:06:47,270 0-- دلیل، شما می دانید، ما CS است. 147 00:06:47,270 --> 00:06:50,730 حالا که ما این آرایه انجام می شود، شما می توانید از به همین دلیل آن مسابقه 0، مسابقه 1، سوگند ملایمی؟ 148 00:06:50,730 --> 00:06:51,320 باشه. 149 00:06:51,320 --> 00:06:52,490 اوه، من مقداری آهسته میخندد در آن یکی است. 150 00:06:52,490 --> 00:06:53,120 باشه. 151 00:06:53,120 --> 00:06:59,710 >> بنابراین امتحان 0 خواهد بود اگر اکتبر 14 شما در بخش دوشنبه چهارشنبه هستید 152 00:06:59,710 --> 00:07:02,920 و اکتبر 15 اگر شما در آن هستید بخش سه شنبه پنج شنبه. 153 00:07:02,920 --> 00:07:05,630 این درخواست نمیدهد کسانی که از شما در دانشگاه هاروارد 154 00:07:05,630 --> 00:07:10,350 who-- من فکر می کنم همه شما باشد در نظر گرفتن آزمونها خود را در 14. 155 00:07:10,350 --> 00:07:13,560 >> پس بله، هفته آینده، اگر دیوید، در سخنرانی، می رود، 156 00:07:13,560 --> 00:07:15,747 بله، تا که مسابقه هفته آینده، شما همه 157 00:07:15,747 --> 00:07:17,580 خواهد شد به دلیل شوکه شما به بخش آمد 158 00:07:17,580 --> 00:07:19,664 و شما می دانید که خود را مسابقه 0 در دو هفته است. 159 00:07:19,664 --> 00:07:21,580 و ما برای بررسی جلسات و همه چیز. 160 00:07:21,580 --> 00:07:26,360 بنابراین هیچ نگرانی در مورد برای که می ترسم. 161 00:07:26,360 --> 00:07:29,890 هر گونه سوال هر گونه سوال before-- در همه مسائل در مورد تدارکات را تحت پوشش، 162 00:07:29,890 --> 00:07:32,591 درجه بندی، ساعت اداری، بخش؟ 163 00:07:32,591 --> 00:07:33,090 آره. 164 00:07:33,090 --> 00:07:35,100 >> رسید پس از مسابقه است رفتن در طول سخنرانی می شود؟ 165 00:07:35,100 --> 00:07:35,766 >> ANDI PENG: آره. 166 00:07:35,766 --> 00:07:39,460 بنابراین مسابقه، من فکر می کنم، 60 است دقیقه اختصاص داده شده که در بازه زمانی 167 00:07:39,460 --> 00:07:42,240 که شما فقط می خواهید را در سالن سخنرانی. 168 00:07:42,240 --> 00:07:44,810 بنابراین شما لازم نیست که به در آمده در، مانند، تصادفی 07:00. 169 00:07:44,810 --> 00:07:46,140 همه چیز خوبه. 170 00:07:46,140 --> 00:07:47,100 آره. 171 00:07:47,100 --> 00:07:50,060 خنک. 172 00:07:50,060 --> 00:07:50,840 >> خیلی خوب. 173 00:07:50,840 --> 00:07:54,330 بنابراین ما قصد داریم به معرفی یک مفهوم به شما 174 00:07:54,330 --> 00:08:00,760 این هفته که دیوید در حال حاضر نوع از در در سخنرانی لمس این هفته گذشته است. 175 00:08:00,760 --> 00:08:02,010 آن را به نام GDB. 176 00:08:02,010 --> 00:08:05,570 و چگونه بسیاری از شما، در حالی که در این دوره از نوشتن psets خود را، 177 00:08:05,570 --> 00:08:09,981 متوجه یک دکمه بزرگ است که می گوید "اشکال زدایی" در بالای IDE خود را؟ 178 00:08:09,981 --> 00:08:10,480 باشه. 179 00:08:10,480 --> 00:08:13,770 بنابراین در حال حاضر ما در واقع می خواهید به زیرخاک در اوردن رمز و راز از آنچه که در واقع دکمه 180 00:08:13,770 --> 00:08:14,270 می کند. 181 00:08:14,270 --> 00:08:16,790 و من به شما تضمین، آن است که زیبا، چیزی زیبا. 182 00:08:16,790 --> 00:08:20,740 >> بنابراین تا به حال، من فکر می کنم دو چیز وجود دارد 183 00:08:20,740 --> 00:08:23,320 دانش آموزان به طور معمول شده است انجام هنگام اشکال زدایی psets. 184 00:08:23,320 --> 00:08:27,635 یکی از آنها هم در اضافه تابع () printf () - به طوری که هر چند خط، 185 00:08:27,635 --> 00:08:29,760 آنها در یک تابع () printf () اضافه کنید - آه، چه این متغیر است؟ 186 00:08:29,760 --> 00:08:32,551 اوه، چه این متغیر است now-- و شما به نوعی از پیشرفت را ببینید 187 00:08:32,551 --> 00:08:33,940 کد خود را به عنوان آن را اجرا می کند. 188 00:08:33,940 --> 00:08:37,030 و یا از روش دوم بچه ها انجام دهید این است که آنها فقط ارسال همه چیز 189 00:08:37,030 --> 00:08:38,610 و پس از آن شبیه به این در پایان. 190 00:08:38,610 --> 00:08:39,970 امیدوارم آن کار می کند. 191 00:08:39,970 --> 00:08:44,851 من به شما تضمین، GDB بهتر است از هر دو این روش. 192 00:08:44,851 --> 00:08:45,350 آره. 193 00:08:45,350 --> 00:08:46,980 بنابراین این خواهد بود بهترین دوست جدید خود را. 194 00:08:46,980 --> 00:08:51,780 از آنجا که آن یک چیز زیبا که از لحاظ بصری نمایش هر دو 195 00:08:51,780 --> 00:08:54,850 چه کد خود را در حال انجام است در یک نقطه خاص 196 00:08:54,850 --> 00:08:57,486 و همچنین چه تمام خود را متغیرهای حمل، 197 00:08:57,486 --> 00:08:59,610 مانند آنچه ارزش خود هستند، در آن نقطه خاص. 198 00:08:59,610 --> 00:09:02,670 و در این راه، شما واقعا می توانید تعیین نقاط شکست در کد خود را. 199 00:09:02,670 --> 00:09:04,350 شما می توانید از طریق خط به خط اجرا کنید. 200 00:09:04,350 --> 00:09:07,324 و GDB فقط برای مجبور شما، نمایش داده را برای شما، 201 00:09:07,324 --> 00:09:09,490 آنچه که همه متغیرهای خود را هستند، چه آنها انجام می دهند، 202 00:09:09,490 --> 00:09:10,656 چه خبر است در در کد. 203 00:09:10,656 --> 00:09:13,240 و در چنین راهی، آن را خیلی آسان تر برای دیدن 204 00:09:13,240 --> 00:09:17,120 آنچه اتفاق می افتد به جای تابع () printf نشستند نوشتن بیانیه های خود را. 205 00:09:17,120 --> 00:09:19,160 >> بنابراین ما یک مثال از این بعد انجام دهد. 206 00:09:19,160 --> 00:09:20,660 بنابراین این به نظر می رسد کمی انتزاعی. 207 00:09:20,660 --> 00:09:23,490 بدون نگرانی، ما نمونه هایی را انجام دهد. 208 00:09:23,490 --> 00:09:29,170 و بنابراین اساسا، سه بزرگترین، بیشترین استفاده از توابع شما در GDB نیاز 209 00:09:29,170 --> 00:09:32,500 هستند در مرحله بعد، مرحله بیش از، و قدم به دکمه. 210 00:09:32,500 --> 00:09:34,860 من قصد دارم به سر وجود دارد، در واقع، در حال حاضر. 211 00:09:34,860 --> 00:09:40,930 >> بنابراین می تواند به شما بچه ها همه دید که و یا باید در یک بیت زوم کنم؟ 212 00:09:40,930 --> 00:09:43,220 213 00:09:43,220 --> 00:09:44,470 در پشت، می تواند شما را دید که؟ 214 00:09:44,470 --> 00:09:45,730 باید بزرگنمایی؟ 215 00:09:45,730 --> 00:09:46,480 فقط یک کمی؟ 216 00:09:46,480 --> 00:09:49,390 باشه خوبه. 217 00:09:49,390 --> 00:09:50,280 ما میرویم آنجا. 218 00:09:50,280 --> 00:09:50,960 باشه. 219 00:09:50,960 --> 00:09:57,000 >> بنابراین من، در اینجا، من پیاده سازی برای حریص. 220 00:09:57,000 --> 00:10:01,430 و در حالی که بسیاری از شما بچه ها نوشت حریص در حالی که حلقه form-- که 221 00:10:01,430 --> 00:10:04,890 یک راه کاملا قابل قبول است انجام دهید این است it-- راه دیگری برای انجام این کار را به سادگی به است 222 00:10:04,890 --> 00:10:06,280 تقسیم در باقی مانده است. 223 00:10:06,280 --> 00:10:09,290 از آنجا که پس شما می توانید خود را ارزش و پس از آن باقی مانده خود را. 224 00:10:09,290 --> 00:10:11,150 و سپس شما فقط می توانید با هم اضافه کنید آن همه است. 225 00:10:11,150 --> 00:10:13,390 آیا منطق آنچه من انجام در اینجا حس برای همه، 226 00:10:13,390 --> 00:10:14,117 قبل از شروع کنیم؟ 227 00:10:14,117 --> 00:10:16,760 228 00:10:16,760 --> 00:10:17,980 نوع؟ 229 00:10:17,980 --> 00:10:18,710 خنک. 230 00:10:18,710 --> 00:10:19,210 عالی. 231 00:10:19,210 --> 00:10:21,290 این قطعه زیبا سکسی است از کد، من می گویند. 232 00:10:21,290 --> 00:10:23,502 دوست من گفت، دیوید، در سخنرانی، پس از مدتی، 233 00:10:23,502 --> 00:10:25,960 از همه شما شروع به دیدن کد به عنوان چیزی که زیبا. 234 00:10:25,960 --> 00:10:29,950 و گاهی اوقات هنگامی که می بینید زیبا کد، آن را مانند یک احساس فوق العاده است. 235 00:10:29,950 --> 00:10:35,410 >> بنابراین با این حال، در حالی که این کد بسیار زیبا، آن را درست کار نمی کند. 236 00:10:35,410 --> 00:10:37,750 بنابراین اجازه دهید check50 اجرا در این. 237 00:10:37,750 --> 00:10:39,440 50 20-- OOP را بررسی کنید. 238 00:10:39,440 --> 00:10:43,221 239 00:10:43,221 --> 00:10:43,720 2؟ 240 00:10:43,720 --> 00:10:44,990 این است که pset2؟ 241 00:10:44,990 --> 00:10:46,870 آره. 242 00:10:46,870 --> 00:10:47,520 اوه، pset1. 243 00:10:47,520 --> 00:10:50,970 244 00:10:50,970 --> 00:10:52,890 باشه. 245 00:10:52,890 --> 00:10:53,900 بنابراین ما check50 را اجرا کنید. 246 00:10:53,900 --> 00:11:01,550 247 00:11:01,550 --> 00:11:07,170 >> و به عنوان شما بچه ها می توانید در اینجا ببینید، آن را شکست یک زن و شوهر از موارد. 248 00:11:07,170 --> 00:11:10,165 و برای بعضی از شما، در البته انجام مجموعه مشکل شما، 249 00:11:10,165 --> 00:11:11,110 دوست دارید، آه، چرا آن را کار نیست. 250 00:11:11,110 --> 00:11:13,318 چرا برای برخی کار ارزش اما نه برای دیگران؟ 251 00:11:13,318 --> 00:11:17,760 خب، GDB است که برای کمک به شما که چرا کسانی که ورودی کار نمی شد. 252 00:11:17,760 --> 00:11:18,320 >> باشه. 253 00:11:18,320 --> 00:11:21,640 بنابراین اجازه دهید که یکی از چک من شکست را در check50 254 00:11:21,640 --> 00:11:24,920 مقدار ورودی از 0.41 بود. 255 00:11:24,920 --> 00:11:27,830 بنابراین پاسخ صحیح که شما باید گرفتن 4 است. 256 00:11:27,830 --> 00:11:33,090 اما به جای آنچه من چاپ 3-N، است که نادرست است. 257 00:11:33,090 --> 00:11:36,190 بنابراین اجازه دهید فقط این کار را دستی اجرا شود، فقط مطمئن شوید که check50 حال کار است. 258 00:11:36,190 --> 00:11:36,940 اجازه دهید ./greedy. 259 00:11:36,940 --> 00:11:40,130 260 00:11:40,130 --> 00:11:43,340 اوه، من را به حریص. 261 00:11:43,340 --> 00:11:43,840 ما میرویم آنجا. 262 00:11:43,840 --> 00:11:44,381 در حال حاضر ./greedy. 263 00:11:44,381 --> 00:11:46,950 264 00:11:46,950 --> 00:11:47,670 >> چقدر بدهکار است؟ 265 00:11:47,670 --> 00:11:49,550 اجازه دهید 0.41. 266 00:11:49,550 --> 00:11:52,590 و بله، ما در اینجا مشاهده کنید که آن را از خروجی 3 267 00:11:52,590 --> 00:11:55,160 زمانی که پاسخ صحیح، در واقع، باید 4 باشد. 268 00:11:55,160 --> 00:12:01,460 بنابراین اجازه دهید وارد کنید GDB و ببینید که چگونه ما می توانید در مورد برطرف کردن این مشکل است. 269 00:12:01,460 --> 00:12:03,992 >> بنابراین اولین گام در همیشه اشکال زدایی کد شما 270 00:12:03,992 --> 00:12:05,950 است که به تنظیم نقطه انفصال، و یا یک نقطه که در آن شما 271 00:12:05,950 --> 00:12:09,079 خواهید کامپیوتر و یا دیباگر برای شروع به دنبال در. 272 00:12:09,079 --> 00:12:11,120 بنابراین اگر شما واقعا نمی مطمئن شوید مشکل شما چیست، 273 00:12:11,120 --> 00:12:14,670 معمولا، چیزی که ما می خواهیم معمولی انجام این است که مجموعه نقطه انفصال ما در اصلی. 274 00:12:14,670 --> 00:12:18,520 بنابراین اگر شما بچه توانید این را ببینید دکمه قرمز سمت راست وجود دارد، 275 00:12:18,520 --> 00:12:22,860 بله، من که تنظیم شد نقطه انفصال برای تابع اصلی است. 276 00:12:22,860 --> 00:12:24,130 من کلیک کنید که. 277 00:12:24,130 --> 00:12:26,130 >> و بعد من می تواند تا دکمه اشکال زدایی من برو. 278 00:12:26,130 --> 00:12:27,036 من ضربه آن را فشار دهید. 279 00:12:27,036 --> 00:12:31,710 280 00:12:31,710 --> 00:12:36,555 اجازه دهید من زوم به عقب اگر من می توانم. 281 00:12:36,555 --> 00:12:38,020 ما میرویم آنجا. 282 00:12:38,020 --> 00:12:40,730 بنابراین ما باید، در اینجا، یک پانل در سمت راست. 283 00:12:40,730 --> 00:12:43,680 من در تماس هستم، بچه ها، شما واقعا نمی تواند به خوبی ببینید. 284 00:12:43,680 --> 00:12:49,090 اما در اصل، تمام این پانل سمت راست در حال انجام است 285 00:12:49,090 --> 00:12:53,130 است پیگیری هر دو برجسته خط است، که خط از کد 286 00:12:53,130 --> 00:12:56,640 که کامپیوتر در حال حاضر در حال اجرا، و همچنین تمام متغیرهای خود را 287 00:12:56,640 --> 00:12:57,600 این پایین. 288 00:12:57,600 --> 00:13:00,487 >> بنابراین شما رو سنت، سکه ها، N، ام همه به چیزهای مختلف اعلام 289 00:13:00,487 --> 00:13:01,070 در این نقطه است. 290 00:13:01,070 --> 00:13:04,850 بدون نگرانی، چرا که ما در واقع آنها را به هر متغیر مقداردهی اولیه است. 291 00:13:04,850 --> 00:13:07,200 بنابراین در کامپیوتر شما، خود را کامپیوتر تنها با دیدن، 292 00:13:07,200 --> 00:13:14,376 آه، 32767 تابع مورد استفاده قرار گرفت آخرین که فضای حافظه در کامپیوتر من. 293 00:13:14,376 --> 00:13:16,000 و به طوری که در حال حاضر که در آن سنت است. 294 00:13:16,000 --> 00:13:19,360 اما هیچ که هنگامی که شما اجرای کد، باید آن را مقداردهی اولیه شده است. 295 00:13:19,360 --> 00:13:24,110 >> بنابراین اجازه دهید از طریق رفتن، خط خط، چه خبر است اینجا. 296 00:13:24,110 --> 00:13:25,350 باشه. 297 00:13:25,350 --> 00:13:29,400 بنابراین تا اینجا سه دکمه های که من فقط توضیح داد. 298 00:13:29,400 --> 00:13:34,090 شما باید این بازی، و یا تابع اجرا، را فشار دهید، شما باید مرحله بر روی دکمه، 299 00:13:34,090 --> 00:13:36,600 و همچنین شما گام به دکمه داشته باشد. 300 00:13:36,600 --> 00:13:41,260 و اساسا، هر سه از آنها فقط از طریق کد خود را 301 00:13:41,260 --> 00:13:42,690 و انجام کارهای مختلف. 302 00:13:42,690 --> 00:13:45,680 >> بنابراین به طور معمول، زمانی که شما اشکال زدایی، ما نمی خواهیم به بازی فقط ضربه، 303 00:13:45,680 --> 00:13:47,930 چون بازی فقط اجرا خواهد شد کد خود را به پایان آن است. 304 00:13:47,930 --> 00:13:49,070 و سپس شما در واقع نه مطمئن شوید که چه مشکل خود را 305 00:13:49,070 --> 00:13:51,432 است مگر اینکه شما تعیین نقاط شکست های متعدد. 306 00:13:51,432 --> 00:13:53,890 اگر شما تعیین نقاط شکست های متعدد، آن را فقط به طور خودکار 307 00:13:53,890 --> 00:13:56,030 اجرا از یک نقطه انفصال، به بعد، به بعدی. 308 00:13:56,030 --> 00:13:58,030 اما در این مورد ما باید فقط یک، چرا که ما 309 00:13:58,030 --> 00:13:59,970 می خواهید برای کار راه ما از بالا به پایین به پایین. 310 00:13:59,970 --> 00:14:04,830 بنابراین ما قصد داریم به چشم پوشی از آن دکمه در حال حاضر برای اهداف این برنامه است. 311 00:14:04,830 --> 00:14:08,230 >> بنابراین گام بر تابع فقط مراحل بیش از هر خط 312 00:14:08,230 --> 00:14:11,510 و شما می گوید چه کامپیوتر انجام شده است. 313 00:14:11,510 --> 00:14:14,630 گام به تابع می رود به عملکرد واقعی 314 00:14:14,630 --> 00:14:16,000 که در خط خود را از کد است. 315 00:14:16,000 --> 00:14:19,070 بنابراین برای مثال، مانند printf ()، که یک تابع است، درست است؟ 316 00:14:19,070 --> 00:14:21,980 اگر من می خواستم به مرحله فیزیکی به تابع printf ()، 317 00:14:21,980 --> 00:14:25,610 من در واقع به قطعه ای از رفتن کد که در آن تابع () printf () نوشته شده بود و ببینید 318 00:14:25,610 --> 00:14:26,730 اونجا چه خبره. 319 00:14:26,730 --> 00:14:29,924 >> اما به طور معمول، ما فرض کنیم که کدی که ما به شما کار می کند. 320 00:14:29,924 --> 00:14:31,340 فرض می کنیم که تابع () printf () در حال کار. 321 00:14:31,340 --> 00:14:33,170 ما فرض کنیم که GetInt () در حال کار. 322 00:14:33,170 --> 00:14:35,170 بنابراین بدون نیاز به وجود قدم به آن دسته از توابع. 323 00:14:35,170 --> 00:14:37,170 اما اگر توابع وجود دارد که شما خود را ارسال 324 00:14:37,170 --> 00:14:39,060 که شما می خواهید برای بررسی چه خبر است در، 325 00:14:39,060 --> 00:14:41,200 شما می خواهید به مرحله به آن تابع. 326 00:14:41,200 --> 00:14:43,940 >> بنابراین در حال حاضر ما فقط رفتن به بیش از این قطعه کد به گام. 327 00:14:43,940 --> 00:14:44,485 بنابراین اجازه دهید را ببینید. 328 00:14:44,485 --> 00:14:46,547 اوه، چاپ، "اوه چینگ های، چگونه تغییر چقدر بدهکار است؟ " 329 00:14:46,547 --> 00:14:47,130 برای ما مهم نیست. 330 00:14:47,130 --> 00:14:49,830 ما می دانیم که کار می کند، بنابراین ما بیش از آن گام. 331 00:14:49,830 --> 00:14:53,290 >> بنابراین نفر است که شناور ما که اس ام اس initialized-- یا declared-- 332 00:14:53,290 --> 00:14:56,810 تا در بالای صفحه، ما در حال حاضر برابری که به GetFloat (). 333 00:14:56,810 --> 00:14:57,810 بنابراین اجازه دهید بیش از آن گام. 334 00:14:57,810 --> 00:14:59,580 و ما در دید پایین در اینجا، این برنامه 335 00:14:59,580 --> 00:15:03,360 من باعث به ورودی یک ارزش است. 336 00:15:03,360 --> 00:15:08,580 بنابراین اجازه دهید ارزش ما می خواهیم ورودی برای آزمایش اینجا است که 0.41. 337 00:15:08,580 --> 00:15:09,160 عالی. 338 00:15:09,160 --> 00:15:12,780 >> بنابراین در حال حاضر n-- آیا شما بچه ها ببینید در اینجا، در bottom-- آن 339 00:15:12,780 --> 00:15:15,140 stored-- چون ما گرد نشده است، آن را 340 00:15:15,140 --> 00:15:19,540 ذخیره شده در این غول شناور است که 0.4099999996، 341 00:15:19,540 --> 00:15:22,550 نزدیک به اندازه کافی است که ما اهداف، در حال حاضر، به 0.41. 342 00:15:22,550 --> 00:15:26,090 و سپس ما بعد خواهید دید، به عنوان ما ادامه پله بر این برنامه، 343 00:15:26,090 --> 00:15:29,850 پس در اینجا، N تبدیل شده است گرد و سنت تبدیل شده است 41. 344 00:15:29,850 --> 00:15:30,350 عالی. 345 00:15:30,350 --> 00:15:32,230 بنابراین ما می دانیم که کار گرد کردن ما است. 346 00:15:32,230 --> 00:15:34,700 ما می دانیم که ما باید تعداد صحیح سنت، 347 00:15:34,700 --> 00:15:36,990 بنابراین ما می دانیم که که واقعا مشکل است. 348 00:15:36,990 --> 00:15:40,050 >> بنابراین ما همچنان پله در این برنامه است. 349 00:15:40,050 --> 00:15:40,900 ما به اینجا بروید. 350 00:15:40,900 --> 00:15:46,139 و به این ترتیب پس از این خط از کد، ما باید بدانید که چگونه بسیاری از محله های ما. 351 00:15:46,139 --> 00:15:46,680 ما مرحله بیش از. 352 00:15:46,680 --> 00:15:52,040 و شما می بینید که ما، در واقع، یک سه ماهه چون ما 25 ام کم 353 00:15:52,040 --> 00:15:53,790 از مقدار اولیه ما از 41. 354 00:15:53,790 --> 00:15:55,890 و ما باید 16 سنت چپ برای ما است. 355 00:15:55,890 --> 00:15:58,830 >> آیا همه درک کنند که چگونه این برنامه از طریق پله 356 00:15:58,830 --> 00:16:02,980 و به همین دلیل در حال حاضر 16 سنت تبدیل و به همین دلیل، در حال حاضر، سکه تبدیل شده است 1. 357 00:16:02,980 --> 00:16:04,610 آیا همه زیر که منطق؟ 358 00:16:04,610 --> 00:16:05,110 خنک. 359 00:16:05,110 --> 00:16:07,860 بنابراین از این نقطه، کار برنامه، درست است؟ 360 00:16:07,860 --> 00:16:09,797 ما می دانیم که آن را به انجام دقیقا آنچه که ما آن را می خواهم. 361 00:16:09,797 --> 00:16:11,880 و ما در واقع نه به چاپ کردن، آه، چه 362 00:16:11,880 --> 00:16:14,430 سنت در این نقطه است، چه سکه در این نقطه است. 363 00:16:14,430 --> 00:16:17,170 >> ما همچنان به رفتن را از طریق این برنامه است. 364 00:16:17,170 --> 00:16:18,100 مرحله بیش از. 365 00:16:18,100 --> 00:16:18,620 خنک. 366 00:16:18,620 --> 00:16:19,700 ما بیش از از dimes است. 367 00:16:19,700 --> 00:16:20,200 عالی. 368 00:16:20,200 --> 00:16:22,367 ما می بینیم که آن را گرفته خاموش 0.10 $ برای یک سکه. 369 00:16:22,367 --> 00:16:23,450 و در حال حاضر ما دو سکه ها. 370 00:16:23,450 --> 00:16:25,260 این درست است. 371 00:16:25,260 --> 00:16:31,555 >> ما بیش از سکه بروید و ما می بینیم که ما بیش از سنت را ترک کردم. 372 00:16:31,555 --> 00:16:32,680 هووم، این عجیب و غریب. 373 00:16:32,680 --> 00:16:37,540 تا اینجا در این برنامه، قرار بود من به سکه من کم کرده اند. 374 00:16:37,540 --> 00:16:39,400 شاید من فقط این بود انجام این کار راست خط. 375 00:16:39,400 --> 00:16:42,190 و افسوس، شما می توانید ببینید در اینجا، چون ما می دانیم 376 00:16:42,190 --> 00:16:44,360 که ما در حال پله از طریق خطوط 32 و 33، 377 00:16:44,360 --> 00:16:50,560 که در آن برنامه ما به طور نادرست به حال متغیر را اجرا کنید. 378 00:16:50,560 --> 00:16:55,136 بنابراین ما می توانیم نگاه کنید و ببینید، آه، من سنت کم کردن در اینجا، 379 00:16:55,136 --> 00:16:57,010 اما من در واقع نه اضافه کردن به ارزش سکه من. 380 00:16:57,010 --> 00:16:57,860 من اضافه کردن به سنت است. 381 00:16:57,860 --> 00:17:00,234 و من نمی خواهم برای اضافه کردن به سنت، من می خواهم برای اضافه کردن به سکه ها. 382 00:17:00,234 --> 00:17:05,420 بنابراین اگر ما تغییر که به سکه ها، ما یک برنامه کار کردم. 383 00:17:05,420 --> 00:17:06,730 من می توانم check50 را اجرا کنید. 384 00:17:06,730 --> 00:17:11,063 شما میتوانید خروج از سمت راست GDB در اینجا و سپس دوباره check50 را اجرا کنید. 385 00:17:11,063 --> 00:17:11,938 من فقط می تواند این کار را. 386 00:17:11,938 --> 00:17:14,822 387 00:17:14,822 --> 00:17:18,480 من را به حریص. 388 00:17:18,480 --> 00:17:19,940 0.41. 389 00:17:19,940 --> 00:17:22,819 و در اینجا، آن را چاپ کردن جواب درست. 390 00:17:22,819 --> 00:17:26,569 >> به طوری که شما می توانید ببینید بچه ها، GDB یک ابزار واقعا قدرتمند است 391 00:17:26,569 --> 00:17:29,940 برای زمانی که ما کد خیلی رفتن و بسیاری از متغیرها 392 00:17:29,940 --> 00:17:32,510 که آن را سخت برای ما، به عنوان یک انسان، برای پیگیری. 393 00:17:32,510 --> 00:17:35,360 کامپیوتر، در GDB دیباگر، است که توانایی 394 00:17:35,360 --> 00:17:37,020 برای پیگیری از همه چیز. 395 00:17:37,020 --> 00:17:40,480 من می دانم، در Visionaire به، شما بچه ها احتمالا ممکن است برخی از گسل تقسیم بندی ضربه 396 00:17:40,480 --> 00:17:43,150 دلیل این که شما در حال اجرا بودند خارج از مرزهای آرایه خود را. 397 00:17:43,150 --> 00:17:46,510 در مثال سزار، که دقیقا آنچه که من در اینجا اجرا کرده ام. 398 00:17:46,510 --> 00:17:50,060 >> بنابراین من را فراموش کرده برای بررسی اگر چه اتفاقی خواهد افتاد من 399 00:17:50,060 --> 00:17:52,510 او دو آرگومان های خط فرمان ندارد. 400 00:17:52,510 --> 00:17:53,880 من فقط در که چک قرار داده است. 401 00:17:53,880 --> 00:17:57,380 و بنابراین اگر من اجرا Debug-- من مجموعه ای نقطه انفصال من به سمت راست وجود دارد. 402 00:17:57,380 --> 00:17:58,055 من را اجرا اشکال زدایی. 403 00:17:58,055 --> 00:18:15,880 404 00:18:15,880 --> 00:18:16,550 >> باشه. 405 00:18:16,550 --> 00:18:17,050 آره. 406 00:18:17,050 --> 00:18:20,350 پس در واقع، قرار بود GDB به من گفت وجود دارد 407 00:18:20,350 --> 00:18:22,300 گسل تقسیم بندی وجود دارد. 408 00:18:22,300 --> 00:18:24,883 من نمی دانم چه می گذرد حق وجود دارد، اما زمانی که من آن را زد، 409 00:18:24,883 --> 00:18:25,590 آن را به کار شد. 410 00:18:25,590 --> 00:18:29,410 هنگامی که خط کد شما را اجرا و از طریق GDB فقط به طور ناگهانی ممکن است در شما را ترک، 411 00:18:29,410 --> 00:18:31,540 بالا و نگاه به آنچه خطا قرمز است. 412 00:18:31,540 --> 00:18:33,930 آن را به شما به شما بگویم، هی، حال گسل تقسیم بندی، 413 00:18:33,930 --> 00:18:38,550 که بدان معنی است که شما به آن دسترسی فضا در یک آرایه است که وجود نداشت. 414 00:18:38,550 --> 00:18:39,050 آره. 415 00:18:39,050 --> 00:18:43,280 >> بنابراین در مشکل بعدی مجموعه این هفته، شما بچه ها 416 00:18:43,280 --> 00:18:45,600 احتمالا بسیاری از متغیرهای شناور در اطراف. 417 00:18:45,600 --> 00:18:48,560 شما در حال رفتن به مطمئن شوید که آنچه همه آنها در یک نقطه خاص باشد. 418 00:18:48,560 --> 00:18:53,560 بنابراین GDB واقعا به شما کمک خواهد کرد تا بدانند در از چه همه آنها برابر با 419 00:18:53,560 --> 00:18:55,940 و قادر بودن به دید که در دید. 420 00:18:55,940 --> 00:19:01,995 کسی در مورد نحوه اشتباه هر یک از این کار شد؟ 421 00:19:01,995 --> 00:19:02,495 خنک. 422 00:19:02,495 --> 00:19:10,121 423 00:19:10,121 --> 00:19:10,620 خیلی خوب. 424 00:19:10,620 --> 00:19:14,260 بنابراین پس از آن، ما رفتن به شیرجه رفتن حق 425 00:19:14,260 --> 00:19:17,562 به چهار متفاوت هستند انواع از انواع برای این هفته است. 426 00:19:17,562 --> 00:19:19,520 چگونه بسیاری از شما، برای اولین بار از همه، قبل از ما شروع، 427 00:19:19,520 --> 00:19:23,020 کل تنظیمات برای pset3 را خوانده اند؟ 428 00:19:23,020 --> 00:19:23,824 باشه. 429 00:19:23,824 --> 00:19:24,740 من افتخار می کنم از شما بچه ها هستم. 430 00:19:24,740 --> 00:19:29,110 مثل این است که نیمی از کلاس، که به طور قابل توجهی بیش از زمان گذشته است. 431 00:19:29,110 --> 00:19:33,950 >> به طوری که فوق العاده است، چرا که وقتی ما در مورد محتوای صحبت 432 00:19:33,950 --> 00:19:36,170 در lecture-- و یا با عرض پوزش، در section-- من دوست دارم 433 00:19:36,170 --> 00:19:38,210 ارتباط بسیاری از این برگشت به چه pset است 434 00:19:38,210 --> 00:19:40,210 و چگونه می خواهید به پیاده سازی است که در pset خود را. 435 00:19:40,210 --> 00:19:42,400 بنابراین اگر شما می آیند داشتن خواندن مشخصات، آن را 436 00:19:42,400 --> 00:19:45,510 شد بسیار ساده تر برای شما به درک آنچه من صحبت کردن در مورد زمانی که من می گویم، 437 00:19:45,510 --> 00:19:48,720 آه هی، این ممکن است واقعا جای خوبی را برای اجرای این نوع است. 438 00:19:48,720 --> 00:19:52,870 بنابراین کسانی از شما که به عنوان خوانده شده اند تنظیمات می دانم که، به عنوان بخشی از pset خود را، 439 00:19:52,870 --> 00:19:54,900 شما در حال رفتن به به ارسال نامه نوع مرتب سازی بر. 440 00:19:54,900 --> 00:19:58,670 بنابراین این ممکن است بسیار مفید برای بسیاری از شما امروز. 441 00:19:58,670 --> 00:20:01,760 >> بنابراین ما شروع کردن با، در اصل، ساده ترین نوع 442 00:20:01,760 --> 00:20:04,580 مرتب کردن بر اساس مرتب کردن بر اساس انتخاب. 443 00:20:04,580 --> 00:20:06,800 الگوریتم نمونه برای چگونه ما می خواهم در این مورد 444 00:20:06,800 --> 00:20:10,460 is-- دیوید از طریق این همه در رفت سخنرانی، بنابراین من به سرعت خواهید حرکت در امتداد 445 00:20:10,460 --> 00:20:13,900 here-- است که در اصل، شما می یک آرایه از ارزش ها است. 446 00:20:13,900 --> 00:20:17,170 و سپس شما در پیدا کردن کوچکترین مقدار نامرتب 447 00:20:17,170 --> 00:20:20,200 و شما که ارزش مبادله با اولین ارزش نامرتب. 448 00:20:20,200 --> 00:20:22,700 و سپس شما فقط حفظ تکرار با بقیه لیست شما. 449 00:20:22,700 --> 00:20:25,740 >> و در اینجا یک توضیح بصری چگونه است که کار می کند. 450 00:20:25,740 --> 00:20:30,460 بنابراین برای مثال، اگر ما به شروع با مجموعه ای از پنج عنصر، شاخص 451 00:20:30,460 --> 00:20:35,910 0-4، با 3، 5، 2، 6، و 4 ارزش قرار داده شده در آرایه بنابراین در حال حاضر، 452 00:20:35,910 --> 00:20:38,530 ما فقط رفتن به فرض که همه آنها نامرتب هستید 453 00:20:38,530 --> 00:20:41,130 چرا که ما در غیر این صورت آزمایش نشده است. 454 00:20:41,130 --> 00:20:44,130 >> پس چگونه مرتب کردن بر اساس انتخاب می کار این است که آن را برای اولین بار 455 00:20:44,130 --> 00:20:46,800 اجرا از طریق تمامیت از آرایه نامرتب. 456 00:20:46,800 --> 00:20:49,120 آن را انتخاب کنید از کوچکترین مقدار است. 457 00:20:49,120 --> 00:20:51,750 در این مورد، 3، سمت راست در حال حاضر، کوچکترین است. 458 00:20:51,750 --> 00:20:52,680 آن را به 5 می شود. 459 00:20:52,680 --> 00:20:55,620 نه، 5 بزرگتر نیست than-- و یا با عرض پوزش، و نه کمتر than-- 3. 460 00:20:55,620 --> 00:20:57,779 به طوری که حداقل ارزش است که هنوز هم 3. 461 00:20:57,779 --> 00:20:58,695 و سپس شما را به 2 است. 462 00:20:58,695 --> 00:21:00,990 کامپیوتر می بیند، آه، 2 کمتر از 3 است. 463 00:21:00,990 --> 00:21:02,750 2 در حال حاضر باید حداقل مقدار باشد. 464 00:21:02,750 --> 00:21:06,630 و به این ترتیب 2 معاوضه با ارزش برای اولین بار است که. 465 00:21:06,630 --> 00:21:10,702 >> بنابراین پس از یک پاس، ما در واقع ببینید که 2 و 3 تعویض می شود. 466 00:21:10,702 --> 00:21:13,910 و ما فقط رفتن به ادامه انجام این کار را دوباره با بقیه آرایه. 467 00:21:13,910 --> 00:21:17,660 بنابراین ما قصد داریم فقط از طریق اجرا چهار شاخص آخرین آرایه است. 468 00:21:17,660 --> 00:21:20,670 خواهیم دید که 3 است حداقل مقدار بعدی. 469 00:21:20,670 --> 00:21:23,240 بنابراین ما قصد داریم به مبادله که با 4. 470 00:21:23,240 --> 00:21:26,900 و پس از آن ما فقط رفتن را به نگه داشتن در حال اجرا از طریق تا، در نهایت، شما 471 00:21:26,900 --> 00:21:33,730 رسیدن به یک آرایه مرتب شده که در آن 2، 3، 4، 5، و 6 همه طبقه بندی شده اند. 472 00:21:33,730 --> 00:21:37,530 آیا همه درک منطق چگونه مرتب کردن بر اساس انتخاب می کند؟ 473 00:21:37,530 --> 00:21:39,669 >> شما فقط باید نوعی از حداقل مقدار است. 474 00:21:39,669 --> 00:21:41,210 شما در حال پیگیری از چه چیزی است. 475 00:21:41,210 --> 00:21:45,170 و هر زمان که شما آن را پیدا کنید، شما آن را مبادله با ارزش برای اولین بار در آرایه 476 00:21:45,170 --> 00:21:48,740 و یا، نه value-- اول مقدار بعدی در آرایه. 477 00:21:48,740 --> 00:21:50,150 خنک. 478 00:21:50,150 --> 00:21:55,460 >> به طوری که شما بچه ها نوع دیدم از یک نگاه اجمالی مختصری، 479 00:21:55,460 --> 00:21:58,450 ما قصد داریم به شبه این است. 480 00:21:58,450 --> 00:22:02,510 بنابراین اگر شما در پشت بچه ها می خواهید به تشکیل یک گروه، هر کس در یک جدول 481 00:22:02,510 --> 00:22:06,170 می توانید یک شریک کمی تشکیل می دهند، من قصد دارم به شما بچه ها مانند سه دقیقه را 482 00:22:06,170 --> 00:22:08,190 فقط از طریق صحبت منطق، به زبان انگلیسی، 483 00:22:08,190 --> 00:22:14,161 ما از اینکه چگونه ممکن است قادر به اجرای شبه به ارسال مرتب سازی بر اساس انتخاب. 484 00:22:14,161 --> 00:22:14,910 و آب نبات وجود دارد. 485 00:22:14,910 --> 00:22:16,118 لطفا آمد و گرفتن آب نبات. 486 00:22:16,118 --> 00:22:19,520 اگر شما در تماس هستید و می خواهید آب نبات، آب نبات من می توانم به شما بزنند. 487 00:22:19,520 --> 00:22:22,850 در واقع، انجام سرد you--. 488 00:22:22,850 --> 00:22:23,552 آه ببخشید. 489 00:22:23,552 --> 00:22:26,751 490 00:22:26,751 --> 00:22:27,250 باشه. 491 00:22:27,250 --> 00:25:23,880 492 00:25:23,880 --> 00:25:27,140 >> بنابراین اگر ما می خواهم به عنوان یک کلاس، نوشتن شبه 493 00:25:27,140 --> 00:25:30,466 برای که چگونه ممکن است نزدیک این مشکل، فقط در صورت تمایل. 494 00:25:30,466 --> 00:25:32,340 من فقط در اطراف بروید و، در سفارش، گروه بپرسید 495 00:25:32,340 --> 00:25:35,065 برای خط بعدی از آنچه که ما باید انجام شود. 496 00:25:35,065 --> 00:25:37,840 بنابراین اگر شما بچه می خواهید برای شروع خاموش، اولین چیزی است 497 00:25:37,840 --> 00:25:40,600 به زمانی که شما در حال تلاش برای پیاده سازی یک راه برای حل این برنامه 498 00:25:40,600 --> 00:25:43,480 به صورت انتخابی یک لیست مرتب سازی بر اساس: 499 00:25:43,480 --> 00:25:46,349 اجازه دهید فقط فرض می کنیم یک آرایه، باشه؟ 500 00:25:46,349 --> 00:25:49,088 >> رسید شما می خواهید برای ایجاد برخی از مرتب کردن بر اساس [نامفهوم] است که شما 501 00:25:49,088 --> 00:25:50,420 حال اجرا از طریق کل آرایه خود را. 502 00:25:50,420 --> 00:25:51,128 >> ANDI PENG: درست است. 503 00:25:51,128 --> 00:25:54,100 بنابراین شما در حال رفتن به می خواهم به تکرار از طریق هر فضای، درست است؟ 504 00:25:54,100 --> 00:26:05,490 بسیار عالی. 505 00:26:05,490 --> 00:26:08,600 اگر شما بچه ها می خواهید به من می دهد بعدی line-- آره، در پشت. 506 00:26:08,600 --> 00:26:11,414 507 00:26:11,414 --> 00:26:13,290 >> مخاطبان: بررسی آنها برای کوچکترین. 508 00:26:13,290 --> 00:26:14,248 >> ANDI PENG: وجود ما بروید. 509 00:26:14,248 --> 00:26:17,438 بنابراین ما می خواهیم از طریق رفتن و بررسی کنید تا ببینید که چه مقدار حداقل است، درست است؟ 510 00:26:17,438 --> 00:26:22,110 511 00:26:22,110 --> 00:26:24,840 من قصد دارم تا مختصر که به «دقیقه." 512 00:26:24,840 --> 00:26:27,658 شما بچه ها چه می خواهند پس از به انجام شما در حداقل مقدار را پیدا کرده ام؟ 513 00:26:27,658 --> 00:26:28,533 >> مخاطبان: [نامفهوم] 514 00:26:28,533 --> 00:26:29,942 515 00:26:29,942 --> 00:26:33,150 ANDI PENG: بنابراین شما می خواهید به تغییر آن را با اولین بار از این آرایه، 516 00:26:33,150 --> 00:26:33,650 درست؟ 517 00:26:33,650 --> 00:26:45,120 518 00:26:45,120 --> 00:26:46,850 این آغاز است، من قصد دارم برای گفتن. 519 00:26:46,850 --> 00:26:47,220 خیلی خوب. 520 00:26:47,220 --> 00:26:50,386 پس اکنون که شما برای اولین بار عوض میکنه که یکی، چه چیزی می خواهید که کاری انجام دهید؟ 521 00:26:50,386 --> 00:26:54,840 بنابراین در حال حاضر ما می دانیم که این یکی در اینجا باید کوچکترین مقدار باشد، درست است؟ 522 00:26:54,840 --> 00:26:58,310 سپس شما باید استراحت اضافی از آرایه که نامرتب. 523 00:26:58,310 --> 00:27:01,569 پس چه می خواهید انجام دهید در اینجا، اگر شما بچه ها می خواهید به من خط بعدی می دهد؟ 524 00:27:01,569 --> 00:27:04,610 مخاطبان: بنابراین پس از آن شما می خواهم به تکرار از طریق باقی مانده از آرایه است. 525 00:27:04,610 --> 00:27:05,276 ANDI PENG: آره. 526 00:27:05,276 --> 00:27:09,857 و به این ترتیب چه از طریق تکرار نوع دلالت ما احتمالا نیاز دارید؟ 527 00:27:09,857 --> 00:27:10,440 چه نوعی-- 528 00:27:10,440 --> 00:27:12,057 >> مخاطبان: اوه، یک متغیر اضافی؟ 529 00:27:12,057 --> 00:27:13,890 ANDI PENG: احتمالا یکی دیگر از حلقه for، درست است؟ 530 00:27:13,890 --> 00:27:28,914 بنابراین ما در حال احتمالا می خواهید به تکرار through-- بزرگ است. 531 00:27:28,914 --> 00:27:31,830 و پس از آن شما در حال رفتن به عقب برگردید و احتمالا حداقل دوباره بررسی کنید، 532 00:27:31,830 --> 00:27:32,100 درست؟ 533 00:27:32,100 --> 00:27:34,975 و شما در حال رفتن به حفظ تکرار این، به دلیل حلقه فقط رفتن 534 00:27:34,975 --> 00:27:36,010 برای نگه داشتن در حال اجرا، درست است؟ 535 00:27:36,010 --> 00:27:39,190 >> به طوری که شما می توانید بچه ها، ما می بینیم فقط باید یک شبه کلی 536 00:27:39,190 --> 00:27:41,480 چگونه ما می خواهیم این برنامه را به نگاه. 537 00:27:41,480 --> 00:27:46,646 این تکرار در اینجا، آنچه که ما انجام به طور معمول نیاز به نوشتن کد ما در 538 00:27:46,646 --> 00:27:49,270 اگر ما می خواهیم از طریق یک تکرار آرایه، چه نوع از ساختار؟ 539 00:27:49,270 --> 00:27:51,030 من فکر می کنم Christabel در حال حاضر پیش از این گفته. 540 00:27:51,030 --> 00:27:51,500 >> رسید برای حلقه. 541 00:27:51,500 --> 00:27:52,160 >> ANDI PENG: برای حلقه؟ 542 00:27:52,160 --> 00:27:52,770 دقیقا. 543 00:27:52,770 --> 00:27:56,060 بنابراین این است که احتمالا برای رفتن به یک حلقه for. 544 00:27:56,060 --> 00:27:59,240 یک بررسی در اینجا رفتن به این مفهوم را میرسانند چیست؟ 545 00:27:59,240 --> 00:28:02,536 به طور معمول، اگر شما می خواهید برای بررسی اگر چیزی چیزی است else-- 546 00:28:02,536 --> 00:28:03,270 >> مخاطبان: اگر. 547 00:28:03,270 --> 00:28:06,790 >> ANDI PENG: یک اگر، درست است؟ 548 00:28:06,790 --> 00:28:10,790 و پس از آن مبادله اینجا، ما بیش از بعد، به دلیل دیوید 549 00:28:10,790 --> 00:28:12,770 از طریق این در سخنرانی و رفت. 550 00:28:12,770 --> 00:28:14,580 و پس از آن تکرار دوم implies-- 551 00:28:14,580 --> 00:28:15,120 >> مخاطبان: یکی دیگر از حلقه. 552 00:28:15,120 --> 00:28:16,745 >> ANDI PENG: --another برای حلقه، دقیقا. 553 00:28:16,745 --> 00:28:19,870 554 00:28:19,870 --> 00:28:22,000 بنابراین اگر ما به دنبال در این درست، ما 555 00:28:22,000 --> 00:28:24,680 می توانید ببینید که ما احتمالا رفتن به نیاز به یک حلقه تو در تو برای 556 00:28:24,680 --> 00:28:28,330 با یک دستور شرطی در آن وجود دارد و سپس یک قطعه واقعی از کد که 557 00:28:28,330 --> 00:28:31,360 رفتن به مبادله ارزش. 558 00:28:31,360 --> 00:28:35,980 بنابراین من فقط به طور کلی نوشته یک کد شبه اینجا. 559 00:28:35,980 --> 00:28:38,910 و سپس ما در واقع رفتن از لحاظ جسمی، به عنوان یک طبقه، 560 00:28:38,910 --> 00:28:40,700 سعی کنید برای اجرای این امروز. 561 00:28:40,700 --> 00:28:42,486 بیایید به بازگشت به این IDE. 562 00:28:42,486 --> 00:28:49,243 563 00:28:49,243 --> 00:28:50,230 >> آه اوه. 564 00:28:50,230 --> 00:28:51,754 چرا که not-- آن وجود دارد. 565 00:28:51,754 --> 00:28:52,253 باشه. 566 00:28:52,253 --> 00:28:55,834 567 00:28:55,834 --> 00:28:57,500 با عرض پوزش، اجازه دهید به زوم در کمی بیشتر. 568 00:28:57,500 --> 00:28:59,310 ما میرویم آنجا. 569 00:28:59,310 --> 00:29:05,060 همه من در اینجا انجام است من ایجاد کرده اید برنامه ای به نام "انتخاب / sort.c." 570 00:29:05,060 --> 00:29:10,860 من یک آرایه از نه ایجاد کرده اید ارزش، 4، 8، 2، 1، 6، 9، 7، 5، 3. 571 00:29:10,860 --> 00:29:14,370 در حال حاضر، که شما می توانید ببینید، آنها نامرتب هستند. 572 00:29:14,370 --> 00:29:17,880 N است برای رفتن به شماره ای که به شما می گوید میزان ارزش 573 00:29:17,880 --> 00:29:18,920 شما در آرایه خود را داشته باشد. 574 00:29:18,920 --> 00:29:20,670 در این مورد، ما باید نه ارزش ها. 575 00:29:20,670 --> 00:29:23,760 و من فقط یک حلقه for کردم اینجا که چاپ آرایه نامرتب. 576 00:29:23,760 --> 00:29:28,370 >> و در پایان، من هم یک برای اس ام اس حلقه است که فقط آن را چاپ کنید. 577 00:29:28,370 --> 00:29:32,070 بنابراین به لحاظ نظری، اگر این برنامه به درستی کار کند، در پایان، 578 00:29:32,070 --> 00:29:35,670 شما باید ببینید برای حلقه چاپ که در آن 1، 2، 3، 4، 5، 6، 7، 8، 579 00:29:35,670 --> 00:29:39,310 9 همه به درستی در جهت. 580 00:29:39,310 --> 00:29:43,410 >> بنابراین ما شبه ما را در اینجا. 581 00:29:43,410 --> 00:29:46,090 آیا کسی می خواهید to-- من فقط برای رفتن از آنها بخواهید برای volunteers-- 582 00:29:46,090 --> 00:29:49,540 من دقیقا چه نوع اگر ما می خواهیم به، برای اولین بار، فقط تکرار 583 00:29:49,540 --> 00:29:52,840 تا آغاز این آرایه؟ 584 00:29:52,840 --> 00:29:55,204 خط از کد من چه خبر احتمالا نیاز به رفتن به اینجا؟ 585 00:29:55,204 --> 00:29:56,990 >> مخاطبان: [نامفهوم] 586 00:29:56,990 --> 00:29:59,010 >> ANDI PENG: بله، احساس رایگان to-- با عرض پوزش، شما 587 00:29:59,010 --> 00:30:02,318 لازم نیست برای ایستادن احساس up-- رایگان به منظور بالا بردن صدای خود را کمی. 588 00:30:02,318 --> 00:30:08,190 >> مخاطبان: اینترنت من برابر با 0-- 589 00:30:08,190 --> 00:30:10,690 >> ANDI PENG: آره، خوب است. 590 00:30:10,690 --> 00:30:15,220 >> مخاطبان: من کمتر از طول آرایه است. 591 00:30:15,220 --> 00:30:19,630 >> ANDI PENG: بنابراین در حفظ ذهن در اینجا، چرا که ما 592 00:30:19,630 --> 00:30:23,060 یک تابع نیست که به ما می گوید طول یک آرایه، 593 00:30:23,060 --> 00:30:25,790 ما در حال حاضر ارزش است که از فروشگاه ها که. 594 00:30:25,790 --> 00:30:27,920 درست؟ 595 00:30:27,920 --> 00:30:31,010 چیز دیگری که به حفظ در mind-- در یک آرایه 596 00:30:31,010 --> 00:30:33,940 نه ارزش ها، چه شاخص ها؟ 597 00:30:33,940 --> 00:30:38,720 بیایید می گویند این آرایه 0-3 بود. 598 00:30:38,720 --> 00:30:41,500 شما می بینید که آخرین شاخص است که در واقع 3. 599 00:30:41,500 --> 00:30:45,530 این 4 نیست، حتی اگر وجود دارد چهار مقدار در آرایه. 600 00:30:45,530 --> 00:30:49,866 >> بنابراین در اینجا، ما باید بسیار مراقب باشید چه وضعیت ما برای طول 601 00:30:49,866 --> 00:30:50,490 در حال رفتن به. 602 00:30:50,490 --> 00:30:51,948 >> رسید آن را نمی شود N منهای 1؟ 603 00:30:51,948 --> 00:30:54,440 ANDI PENG: این خبر N منهای 1، دقیقا. 604 00:30:54,440 --> 00:30:57,379 آیا این را حس، چرا آن N منهای 1، همه؟ 605 00:30:57,379 --> 00:30:58,920 به این دلیل که آرایهها zero-نمایه میشود. 606 00:30:58,920 --> 00:31:02,010 آنها در 0 شروع و اجرا تا n منهای 1. 607 00:31:02,010 --> 00:31:03,210 آره، آن را کمی مشکل است. 608 00:31:03,210 --> 00:31:03,730 باشه. 609 00:31:03,730 --> 00:31:05,929 و بعد-- 610 00:31:05,929 --> 00:31:08,054 رسید که Isnt'1 در حال حاضر هر چند مراقبت از گرفته شده است، 611 00:31:08,054 --> 00:31:11,400 تنها با گفتن نیست "و یا کمتر از برابر با "و فقط گفت:" کمتر از؟ " 612 00:31:11,400 --> 00:31:13,108 >> ANDI PENG: این یک درخواست واقعا خوب است. 613 00:31:13,108 --> 00:31:13,630 درنتیجه بله. 614 00:31:13,630 --> 00:31:17,410 بلکه، راه است که ما اجرای حق چک کردن، 615 00:31:17,410 --> 00:31:19,120 شما نیاز به مقایسه دو مقدار است. 616 00:31:19,120 --> 00:31:21,009 بنابراین شما واقعا می خواهید ترک "را به" خالی است. 617 00:31:21,009 --> 00:31:23,050 چرا که اگر شما مقایسه این یکی، شما نمی 618 00:31:23,050 --> 00:31:25,530 هر چیزی پس از آن برای مقایسه، درست است؟ 619 00:31:25,530 --> 00:31:27,460 آره. 620 00:31:27,460 --> 00:31:29,297 بنابراین من + +. 621 00:31:29,297 --> 00:31:30,380 اجازه دهید اضافه کردن براکت ما در. 622 00:31:30,380 --> 00:31:30,880 متأسفیم. 623 00:31:30,880 --> 00:31:33,950 624 00:31:33,950 --> 00:31:34,710 عالی. 625 00:31:34,710 --> 00:31:39,117 بنابراین ما باید ابتدا حلقه بیرونی ما. 626 00:31:39,117 --> 00:31:41,450 بنابراین در حال حاضر ما احتمالا می خواهید ایجاد یک متغیر برای نگه داشتن 627 00:31:41,450 --> 00:31:43,085 آهنگ از کوچکترین ارزش، درست است؟ 628 00:31:43,085 --> 00:31:45,751 آیا کسی می خواهید به من می دهد خط از کد که انجام این کار؟ 629 00:31:45,751 --> 00:31:48,700 630 00:31:48,700 --> 00:31:53,570 چه ما نیاز اگر ما قصد داریم می خواهید به ذخیره چیزی؟ 631 00:31:53,570 --> 00:31:55,047 >> درست. 632 00:31:55,047 --> 00:31:57,630 شاید یک نام بهتر که می be-- "موقتی" کاملا works-- 633 00:31:57,630 --> 00:32:00,655 شاید به درستی تر به نام خواهد بود، اگر ما می خواهیم کوچکترین value-- 634 00:32:00,655 --> 00:32:01,624 >> مخاطبان: حداقل. 635 00:32:01,624 --> 00:32:02,790 ANDI PENG: دقیقه، در آنجا می رویم. 636 00:32:02,790 --> 00:32:05,230 دقیقه می تواند خوب باشد. 637 00:32:05,230 --> 00:32:08,340 و بنابراین در اینجا، آنچه که ما انجام می خواهم به آن را مقداردهی اولیه به؟ 638 00:32:08,340 --> 00:32:09,620 این کمی مشکل است. 639 00:32:09,620 --> 00:32:13,580 از آنجا که در حال حاضر در آغاز این آرایه، 640 00:32:13,580 --> 00:32:15,730 شما در هر چیزی نگاه، درست است؟ 641 00:32:15,730 --> 00:32:19,200 پس چه، به طور خودکار، اگر ما فقط در من برابر با 0 است، 642 00:32:19,200 --> 00:32:22,302 چه می خواهیم به مقداردهی اولیه برای اولین بار حداقل مقدار خود را به؟ 643 00:32:22,302 --> 00:32:22,802 مخاطبان: من. 644 00:32:22,802 --> 00:32:24,790 ANDI PENG: من، دقیقا. 645 00:32:24,790 --> 00:32:27,040 Christabel، چرا ما می خواهیم به آن را مقداردهی اولیه به من؟ 646 00:32:27,040 --> 00:32:28,510 >> رسید، زیرا خوب، ما با 0 شروع. 647 00:32:28,510 --> 00:32:31,660 بنابراین چون ما که چیزی برای مقایسه آن را به، حداقل به پایان خواهد رسید 0. 648 00:32:31,660 --> 00:32:32,451 >> ANDI PENG: دقیقا. 649 00:32:32,451 --> 00:32:34,400 بنابراین او دقیقا درست است. 650 00:32:34,400 --> 00:32:36,780 از آنجا که ما در واقع در هر چیزی نگاه نشده است، 651 00:32:36,780 --> 00:32:38,680 ما نمی دانیم که چه مقدار حداقل ما است. 652 00:32:38,680 --> 00:32:41,960 ما می خواهیم به آن را فقط به مقداردهی اولیه من که، در حال حاضر، در اینجا ببینید. 653 00:32:41,960 --> 00:32:44,750 و همانطور که ما به ادامه حرکت به پایین این آرایه، 654 00:32:44,750 --> 00:32:48,122 خواهیم دید که، با هر پاس اضافی، من افزایش یابد. 655 00:32:48,122 --> 00:32:49,830 و به این ترتیب در آن نقطه، من احتمالا 656 00:32:49,830 --> 00:32:52,329 می خواهید به حداقل، به دلیل آن را به هر آنچه که 657 00:32:52,329 --> 00:32:54,520 آغاز آرایه نامرتب است. 658 00:32:54,520 --> 00:32:55,270 خنک. 659 00:32:55,270 --> 00:32:58,720 >> بنابراین در حال حاضر ما می خواهیم به اضافه یک حلقه for در اینجا که 660 00:32:58,720 --> 00:33:03,225 رفتن به از طریق تکرار نامرتب، یا بقیه از این آرایه. 661 00:33:03,225 --> 00:33:05,808 آیا کسی می خواهید به من می دهد خط از کد که انجام این کار؟ 662 00:33:05,808 --> 00:33:08,870 663 00:33:08,870 --> 00:33:11,330 Hint-- چه ما نیاز را در اینجا؟ 664 00:33:11,330 --> 00:33:17,320 665 00:33:17,320 --> 00:33:18,820 چه خبر است به در این حلقه؟ 666 00:33:18,820 --> 00:33:19,465 آره. 667 00:33:19,465 --> 00:33:21,590 مخاطبان: بنابراین ما می خواهم می خواهم یک عدد صحیح مختلف، 668 00:33:21,590 --> 00:33:25,080 چرا که ما در حال اجرا را از طریق بقیه از آرایه به جای من، تا شاید 669 00:33:25,080 --> 00:33:25,760 J. 670 00:33:25,760 --> 00:33:27,301 >> ANDI PENG: بله، J برای تلفن های موبایل خوب به من. 671 00:33:27,301 --> 00:33:27,850 برابر؟ 672 00:33:27,850 --> 00:33:33,930 >> مخاطبان: بنابراین من می تواند به علاوه 1، به دلیل شما در مقدار بعدی شروع می شود. 673 00:33:33,930 --> 00:33:40,395 و سپس به end-- تا دوباره، j است کمتر از n منهای 1، و سپس J ++. 674 00:33:40,395 --> 00:33:41,103 ANDI PENG: بزرگ. 675 00:33:41,103 --> 00:33:48,510 676 00:33:48,510 --> 00:33:52,750 >> و سپس در اینجا، ما در حال رفتن به می خواهم به چک کنید اگر وضعیت ما ملاقات کرده است، 677 00:33:52,750 --> 00:33:53,250 درست؟ 678 00:33:53,250 --> 00:33:55,740 از آنجا که شما می خواهید حداقل مقدار را تغییر دهید 679 00:33:55,740 --> 00:33:58,700 اگر آن را در واقع کوچکتر از آنچه شما آن را نسبت به، درست است؟ 680 00:33:58,700 --> 00:34:01,146 بنابراین آنچه از ما می خواهید در اینجا؟ 681 00:34:01,146 --> 00:34:04,160 682 00:34:04,160 --> 00:34:04,897 بررسی کنید ببینید. 683 00:34:04,897 --> 00:34:06,730 چه نوع عبارت ما احتمالا 684 00:34:06,730 --> 00:34:08,389 TI خواهید به استفاده از اگر ما می خواهید برای بررسی چیزی؟ 685 00:34:08,389 --> 00:34:09,360 >> مخاطبان: عبارت if. 686 00:34:09,360 --> 00:34:10,485 >> ANDI PENG: عبارت if. 687 00:34:10,485 --> 00:34:13,155 بنابراین if-- و رفتن به شرایط که ما در داخل می خواهند 688 00:34:13,155 --> 00:34:13,988 از دستور if ما؟ 689 00:34:13,988 --> 00:34:18,255 690 00:34:18,255 --> 00:34:22,960 >> مخاطبان: اگر مقدار J کمتر از ارزش i-- است 691 00:34:22,960 --> 00:34:24,600 >> ANDI PENG: دقیقا. 692 00:34:24,600 --> 00:34:27,480 بنابراین if-- این آرایه است به نام "آرایه." 693 00:34:27,480 --> 00:34:27,980 عالی. 694 00:34:27,980 --> 00:34:30,465 بنابراین اگر آرایه اون چی بود؟ 695 00:34:30,465 --> 00:34:31,090 دوباره بگو. 696 00:34:31,090 --> 00:34:39,590 >> مخاطبان: اگر آرایه-J کمتر از آرایه-I، سپس ما را در دقیقه تغییر دهید. 697 00:34:39,590 --> 00:34:41,590 بنابراین دقیقه خواهد J. 698 00:34:41,590 --> 00:34:44,590 699 00:34:44,590 --> 00:34:47,249 >> ANDI PENG: آیا این را حس؟ 700 00:34:47,249 --> 00:34:48,670 باشه. 701 00:34:48,670 --> 00:34:52,929 و در حال حاضر در اینجا، ما در واقع می خواهید برای اجرای مبادله، درست است؟ 702 00:34:52,929 --> 00:34:58,285 پس به یاد آورید، در سخنرانی، که دیوید، هنگامی که او در تلاش بود به the-- چه بود مبادله 703 00:34:58,285 --> 00:34:59,996 آب پرتقال it-- و milk-- 704 00:34:59,996 --> 00:35:01,150 >> رسید که ناخالص بود. 705 00:35:01,150 --> 00:35:02,816 >> ANDI PENG: بله، این نوع از ناخالص بود. 706 00:35:02,816 --> 00:35:05,310 اما خوب زیبا بود مفهوم زمان نشان دادن. 707 00:35:05,310 --> 00:35:08,430 بنابراین از ارزش خود را اینجا فکر می کنم. 708 00:35:08,430 --> 00:35:10,794 شما یک آرایه را از دقیقه، آرایه ای از من، 709 00:35:10,794 --> 00:35:12,460 و یا هر آنچه ما در تلاش برای مبادله در اینجا. 710 00:35:12,460 --> 00:35:15,310 و شما احتمالا می توانید آنها را به پور هر یک از دیگر در همان زمان، درست است؟ 711 00:35:15,310 --> 00:35:17,180 بنابراین چه می خواهیم به نیاز به ایجاد در اینجا 712 00:35:17,180 --> 00:35:19,126 به منظور مبادله مقادیر درستی؟ 713 00:35:19,126 --> 00:35:19,820 >> مخاطبان: یک متغیر موقت. 714 00:35:19,820 --> 00:35:21,370 >> ANDI PENG: یک متغیر موقت است. 715 00:35:21,370 --> 00:35:22,570 بنابراین اجازه انجام موقتی نوع int است. 716 00:35:22,570 --> 00:35:25,681 ببینید، این امر می تواند یک بهتر زمان to-- ایست، اون چی بود؟ 717 00:35:25,681 --> 00:35:26,180 باشه. 718 00:35:26,180 --> 00:35:29,800 بنابراین این امر یک بهتر است زمان به نام متغیر "دما." 719 00:35:29,800 --> 00:35:30,730 بنابراین اجازه انجام موقتی نوع int است. 720 00:35:30,730 --> 00:35:32,563 چه هستند که ما را به رفتن مجموعه های موقتی برابر به اینجا؟ 721 00:35:32,563 --> 00:35:34,752 722 00:35:34,752 --> 00:35:35,335 مخاطبان: حداقل؟ 723 00:35:35,335 --> 00:35:38,508 724 00:35:38,508 --> 00:35:39,716 ANDI PENG: این کمی مشکل است. 725 00:35:39,716 --> 00:35:43,110 726 00:35:43,110 --> 00:35:44,880 آن را در واقع در پایان مهم نیست. 727 00:35:44,880 --> 00:35:47,690 مهم نیست که چه سفارش شما انتخاب می کنید به مبادله در 728 00:35:47,690 --> 00:35:50,862 تا زمانی که شما در حال مطمئن شوید که شما هستید پیگیری آنچه را که شما مبادله. 729 00:35:50,862 --> 00:35:52,250 >> مخاطبان: این می تواند آرایه-I. 730 00:35:52,250 --> 00:35:53,666 >> ANDI PENG: بله، اجازه دهید آرایه-I. 731 00:35:53,666 --> 00:35:55,950 732 00:35:55,950 --> 00:35:59,305 و پس از آن چه خط بعدی است کد ما می خواهیم به اینجا؟ 733 00:35:59,305 --> 00:36:00,680 مخاطبان: آرایه من برابر با آرایه-J. 734 00:36:00,680 --> 00:36:07,154 735 00:36:07,154 --> 00:36:08,070 ANDI PENG: و در آخر؟ 736 00:36:08,070 --> 00:36:12,070 مخاطبان: آرایه-j برابر آرایه-I. 737 00:36:12,070 --> 00:36:14,525 رسید و یا آرایه-j برابر آرایه temp-- یا، دما. 738 00:36:14,525 --> 00:36:17,135 739 00:36:17,135 --> 00:36:19,430 >> ANDI PENG: OK. 740 00:36:19,430 --> 00:36:21,510 بنابراین اجازه دهید این اجرا کنید و ببینید اگر آن را به کار است. 741 00:36:21,510 --> 00:36:37,520 742 00:36:37,520 --> 00:36:39,335 که در آن است که اتفاق می افتد؟ 743 00:36:39,335 --> 00:36:40,210 اوه، این یک مشکل است. 744 00:36:40,210 --> 00:36:44,320 ببینید، در خط 40، ما تلاش برای استفاده از آرایه-J؟ 745 00:36:44,320 --> 00:36:47,022 اما از کجا J تنها در وجود دارد؟ 746 00:36:47,022 --> 00:36:48,402 >> مخاطبان: در حلقه for. 747 00:36:48,402 --> 00:36:49,110 ANDI PENG: درست است. 748 00:36:49,110 --> 00:36:51,730 پس چه می خواهیم به باید انجام دهید؟ 749 00:36:51,730 --> 00:36:53,170 >> مخاطبان: تعریف آن را در خارج the-- 750 00:36:53,170 --> 00:36:57,777 751 00:36:57,777 --> 00:37:00,610 مخاطبان: آره، من حدس می زنم شما به استفاده از دیگر اگر بیانیه، درست است؟ 752 00:37:00,610 --> 00:37:05,230 بنابراین مانند، اگر minimum-- همه حق است، اجازه دهید من فکر می کنم. 753 00:37:05,230 --> 00:37:08,170 754 00:37:08,170 --> 00:37:09,990 >> ANDI PENG: بچه ها، سعی کنید را به یک نگاه بیایید 755 00:37:09,990 --> 00:37:11,270 ببینید، چه چیزی است که ما اینجا می توانید انجام؟ 756 00:37:11,270 --> 00:37:11,811 >> رسید OK. 757 00:37:11,811 --> 00:37:15,900 بنابراین اگر حداقل برابر نیست j-- بنابراین اگر حداقل هنوز i-- 758 00:37:15,900 --> 00:37:17,570 پس از آن ما نمی خواهد که به مبادله. 759 00:37:17,570 --> 00:37:22,450 760 00:37:22,450 --> 00:37:24,712 >> ANDI PENG: آیا مساوی کنم؟ 761 00:37:24,712 --> 00:37:25,920 چه چیزی شما را می خواهم بگویم که اینجا هستید؟ 762 00:37:25,920 --> 00:37:30,494 >> رسید یا آره، اگر حداقل برابر نیست من، آره. 763 00:37:30,494 --> 00:37:39,627 764 00:37:39,627 --> 00:37:40,210 ANDI PENG: OK. 765 00:37:40,210 --> 00:37:42,040 خوب است که حل میکند، نوع، مشکلات ما است. 766 00:37:42,040 --> 00:37:47,265 اما که هنوز حل نمی کند مشکل چه اتفاقی می افتد اگر از J j-- 767 00:37:47,265 --> 00:37:49,890 کند در خارج از آن وجود ندارد، چه آیا شما ما می خواهیم انجام با آن؟ 768 00:37:49,890 --> 00:37:50,698 اعلام آن را در خارج؟ 769 00:37:50,698 --> 00:37:59,410 770 00:37:59,410 --> 00:38:02,730 بیایید سعی کنید در حال اجرا است. 771 00:38:02,730 --> 00:38:04,435 آه اوه. 772 00:38:04,435 --> 00:38:06,200 مرتب سازی بر ما کار نمی کند. 773 00:38:06,200 --> 00:38:10,060 >> که شما می توانید، اولیه ما را ببینید آرایه کسانی که ارزش داشته است. 774 00:38:10,060 --> 00:38:14,800 و پس از آن باید در 1، 2، 3، 4، 5، 6، 7، 8، 9 بوده است. 775 00:38:14,800 --> 00:38:15,530 کار نمیکند. 776 00:38:15,530 --> 00:38:16,030 اه. 777 00:38:16,030 --> 00:38:17,184 چه کنیم؟ 778 00:38:17,184 --> 00:38:17,850 مخاطبان: اشکال زدایی. 779 00:38:17,850 --> 00:38:21,787 780 00:38:21,787 --> 00:38:23,370 ANDI PENG: همه درست است، ما می توانید سعی کنید که. 781 00:38:23,370 --> 00:38:25,030 ما می توانیم اشکال زدایی. 782 00:38:25,030 --> 00:38:26,042 زوم کردن کمی. 783 00:38:26,042 --> 00:38:31,177 784 00:38:31,177 --> 00:38:33,656 بیایید مجموعه ای نقطه انفصال است. 785 00:38:33,656 --> 00:38:37,280 اجازه دهید به OK like--. 786 00:38:37,280 --> 00:38:40,444 >> بنابراین از آنجا که ما می دانیم که این خطوط، 15 تا 22، 787 00:38:40,444 --> 00:38:43,610 می working-- چرا که همه من انجام فقط تکرار را از طریق و printing-- 788 00:38:43,610 --> 00:38:45,406 من می توانید پیش بروید و جست و خیز است. 789 00:38:45,406 --> 00:38:47,280 اجازه دهید در خط 25 شروع می شود. 790 00:38:47,280 --> 00:38:48,712 OOP، اجازه دهید من خلاص شدن از شر است. 791 00:38:48,712 --> 00:38:51,598 792 00:38:51,598 --> 00:38:54,057 >> مخاطبان: بنابراین نقطه انفصال است که در آن اشکال زدایی شروع می شود؟ 793 00:38:54,057 --> 00:38:54,890 ANDI PENG: یا متوقف می شود. 794 00:38:54,890 --> 00:38:55,670 رسید یا متوقف می شود. 795 00:38:55,670 --> 00:38:55,930 ANDI PENG: آره. 796 00:38:55,930 --> 00:38:58,640 شما می توانید نقاط شکست های متعدد تنظیم و آن را فقط می توانید از یکی به دیگری پرش. 797 00:38:58,640 --> 00:39:01,590 اما در این مورد ما نمی دانیم که در آن خطا اتفاق می افتد. 798 00:39:01,590 --> 00:39:03,780 بنابراین ما فقط می خواهید شروع از بالا به پایین. 799 00:39:03,780 --> 00:39:05,020 بله. 800 00:39:05,020 --> 00:39:05,550 باشه. 801 00:39:05,550 --> 00:39:08,460 >> بنابراین این خط در اینجا، ما می توانیم در گام. 802 00:39:08,460 --> 00:39:11,499 شما می توانید در اینجا مشاهده کنید پایین، ما یک آرایه کردم. 803 00:39:11,499 --> 00:39:13,290 کسانی که مقادیر که در آرایه می باشد. 804 00:39:13,290 --> 00:39:16,360 آیا شما می بینید که چگونه شاخص 0، آن مربوط به value-- آه، 805 00:39:16,360 --> 00:39:17,526 من قصد دارم به سعی کنید به زوم. 806 00:39:17,526 --> 00:39:20,650 با عرض پوزش، این واقعا سخت است به see-- در اندیس آرایه 0، 807 00:39:20,650 --> 00:39:24,090 ما یک مقدار 4 و پس از آن غیره و غیره. 808 00:39:24,090 --> 00:39:25,670 ما متغیرهای محلی ما است. 809 00:39:25,670 --> 00:39:28,570 در حال حاضر من برابر است با 0، که ما می خواهیم آن را به. 810 00:39:28,570 --> 00:39:31,540 811 00:39:31,540 --> 00:39:33,690 >> و بنابراین اجازه دهید در حفظ و پله را از طریق. 812 00:39:33,690 --> 00:39:36,850 حداقل ما برابر با 0 است، که ما نیز خواهید آن را به. 813 00:39:36,850 --> 00:39:39,470 814 00:39:39,470 --> 00:39:45,560 و سپس ما وارد دوم ما برای حلقه، اگر آرایه-J کمتر از آرایه من است، 815 00:39:45,560 --> 00:39:46,380 که در آن بود. 816 00:39:46,380 --> 00:39:48,130 به طوری که شما ببینید که چگونه که بیش از که قلم؟ 817 00:39:48,130 --> 00:39:52,430 >> مخاطبان: بنابراین باید اگر حداقل، تمام that-- باید که نه 818 00:39:52,430 --> 00:39:55,424 در داخل اولین حلقه for می شود؟ 819 00:39:55,424 --> 00:39:57,340 ANDI PENG: خیر، زیرا شما هنوز هم می خواهید به آزمون. 820 00:39:57,340 --> 00:40:00,329 شما می خواهید برای انجام یک مقایسه هر زمان، حتی پس شما را از طریق آن را اجرا کنید. 821 00:40:00,329 --> 00:40:02,620 شما نه تنها خواهید آن را انجام در اولین عبور از طریق. 822 00:40:02,620 --> 00:40:05,240 شما می خواهید به آن را با هر پاس اضافی دوباره. 823 00:40:05,240 --> 00:40:07,198 بنابراین شما می خواهید برای چک وضعیت خود را در داخل. 824 00:40:07,198 --> 00:40:11,610 825 00:40:11,610 --> 00:40:13,746 بنابراین ما فقط رفتن به در حال اجرا از طریق اینجا. 826 00:40:13,746 --> 00:40:17,337 827 00:40:17,337 --> 00:40:18,420 من به شما بچه تذکر بدهد. 828 00:40:18,420 --> 00:40:23,910 این است که با این واقعیت است که زمانی که شما در حال چک مشروط خود را، 829 00:40:23,910 --> 00:40:26,600 شما در حال چک نمی برای شاخص درست است. 830 00:40:26,600 --> 00:40:32,510 بنابراین در حال حاضر شما در حال چک برای صفحه اول آرایه ای از J کمتر از آرایه است 831 00:40:32,510 --> 00:40:33,970 شاخص من. 832 00:40:33,970 --> 00:40:36,580 اما آنچه از شما انجام تا در آغاز برای حلقه؟ 833 00:40:36,580 --> 00:40:38,260 آیا شما تنظیم نیست j به من برابر است؟ 834 00:40:38,260 --> 00:40:41,260 835 00:40:41,260 --> 00:40:45,415 >> آره، پس ما در واقع می توانید دیباگر اینجا خارج شوید. 836 00:40:45,415 --> 00:40:47,040 بنابراین اجازه دهید نگاهی به شبه ما. 837 00:40:47,040 --> 00:40:50,070 838 00:40:50,070 --> 00:40:52,580 For-- ما قصد داریم به شروع من برابر با 0. 839 00:40:52,580 --> 00:40:54,760 ما قصد داریم برای رفتن به N منهای 1. 840 00:40:54,760 --> 00:40:58,040 اجازه دهید به بررسی، آیا ما این حق را داشته باشد؟ 841 00:40:58,040 --> 00:40:59,580 آره، راست بود. 842 00:40:59,580 --> 00:41:02,080 >> بنابراین پس از آن در داخل در اینجا، ما برای ایجاد یک حداقل مقدار 843 00:41:02,080 --> 00:41:03,630 و مجموعه ای که به من برابر است. 844 00:41:03,630 --> 00:41:04,950 آیا ما به انجام این کار؟ 845 00:41:04,950 --> 00:41:06,270 بله، انجام دادیم. 846 00:41:06,270 --> 00:41:10,430 در حال حاضر در داخل حلقه ما، ما رفتن به انجام j برابر من به N منهای 1. 847 00:41:10,430 --> 00:41:11,950 آیا ما به انجام این کار؟ 848 00:41:11,950 --> 00:41:15,540 در واقع، ما را انجام دادیم. 849 00:41:15,540 --> 00:41:19,922 >> بنابراین با این حال، آنچه که ما مقایسه می کنید؟ 850 00:41:19,922 --> 00:41:20,925 >> مخاطبان: J به علاوه 1. 851 00:41:20,925 --> 00:41:21,716 ANDI PENG: دقیقا. 852 00:41:21,716 --> 00:41:24,184 853 00:41:24,184 --> 00:41:27,350 و پس از آن شما به خواهید به مجموعه حداقل خود را به J به همراه 1 و همچنین برابر است. 854 00:41:27,350 --> 00:41:31,057 855 00:41:31,057 --> 00:41:32,640 بنابراین من از طریق که واقعا به سرعت رفت. 856 00:41:32,640 --> 00:41:36,190 آیا شما بچه ها درک و چرا از آن J به علاوه 1؟ 857 00:41:36,190 --> 00:41:36,890 باشه. 858 00:41:36,890 --> 00:41:40,700 >> بنابراین در آرایه خود را، در در اولین گذر خود را از طریق، 859 00:41:40,700 --> 00:41:44,850 برای حلقه، برای خود را از نوع int من برابر با 0، بیا فقط 860 00:41:44,850 --> 00:41:46,740 فرض این هنوز تغییر نکرده است. 861 00:41:46,740 --> 00:41:53,180 862 00:41:53,180 --> 00:41:56,760 ما مجموعه ای از، به طور کامل، فقط چهار عنصر نامرتب، درست است؟ 863 00:41:56,760 --> 00:42:00,760 بنابراین ما می خواهیم به مقداردهی اولیه من برابر با 0. 864 00:42:00,760 --> 00:42:03,650 و من قصد دارم فقط از طریق این حلقه را اجرا کنید. 865 00:42:03,650 --> 00:42:08,560 و به این ترتیب در اولین گذر، ما قصد داریم به مقداردهی اولیه یک متغیر به نام "حداقل" 866 00:42:08,560 --> 00:42:11,245 که آن نیز برابر من است، چرا که ما حداقل ارزش ندارد. 867 00:42:11,245 --> 00:42:12,870 بنابراین که در حال حاضر برابر با 0 است. 868 00:42:12,870 --> 00:42:16,182 869 00:42:16,182 --> 00:42:17,640 و سپس ما در حال رفتن را از طریق رفتن. 870 00:42:17,640 --> 00:42:19,270 و ما می خواهیم به تکرار دوباره و دوباره. 871 00:42:19,270 --> 00:42:22,900 حالا که ما پیدا کرده ام آنچه حداقل ما است، ما می خواهیم به تکرار از طریق 872 00:42:22,900 --> 00:42:25,190 برای دیدن دوباره اگر آن را مقایسه، درست است؟ 873 00:42:25,190 --> 00:42:40,440 بنابراین J، در اینجا، در حال رفتن برابر من، 0 است. 874 00:42:40,440 --> 00:42:46,320 و پس از آن اگر آرایه J به علاوه من که یکی که بعدی بیش از، کمتر است 875 00:42:46,320 --> 00:42:49,270 از آنچه حداقل در حال حاضر خود را ارزش است، شما می خواهید به مبادله. 876 00:42:49,270 --> 00:42:56,850 >> بنابراین اجازه دهید فقط می گویند ما باید کردم، مانند، 2، 5، 1، 8. 877 00:42:56,850 --> 00:43:01,610 در حال حاضر، من برابر است با 0 و j برابر با 0 است. 878 00:43:01,610 --> 00:43:05,210 و حداقل ارزش ما است. 879 00:43:05,210 --> 00:43:09,950 اگر آرایه-J علاوه i-- بنابراین اگر یکی از که پس از یک ما به دنبال در این 880 00:43:09,950 --> 00:43:13,450 بیشتر از قبل از آن است، آن را به تبدیل شدن به حداقل برساند. 881 00:43:13,450 --> 00:43:18,120 >> بنابراین در اینجا ما دید که 5 کمتر از که. 882 00:43:18,120 --> 00:43:19,730 پس از آن را برای رفتن به 5 است. 883 00:43:19,730 --> 00:43:23,580 ما می بینیم که 1 است کمتر از 2، درست است؟ 884 00:43:23,580 --> 00:43:32,970 بنابراین در حال حاضر ما می دانیم که حداقل ما این است که رفتن به ارزش شاخص در 0، 1، 2. 885 00:43:32,970 --> 00:43:34,030 آره؟ 886 00:43:34,030 --> 00:43:39,170 و پس از آن هنگامی که شما را در اینجا، شما می توانید مقادیر صحیح مبادله. 887 00:43:39,170 --> 00:43:42,610 >> بنابراین، هنگامی که شما بچه ها فقط با داشتن شدند J قبل، شما شد به دنبال نه در یک 888 00:43:42,610 --> 00:43:43,260 بعد از آن. 889 00:43:43,260 --> 00:43:44,520 شما در دنبال ارزش همان است که 890 00:43:44,520 --> 00:43:46,290 به همین دلیل آن فقط هیچ کاری نمی کرد. 891 00:43:46,290 --> 00:43:49,721 آیا این را حس به همه، به همین دلیل ما مورد نیاز است که به علاوه 1 وجود دارد؟ 892 00:43:49,721 --> 00:43:50,220 باشه. 893 00:43:50,220 --> 00:43:53,345 حالا اجازه دهید فقط اجرا را از طریق آن را به مطمئن شوید که بقیه کد صحیح است. 894 00:43:53,345 --> 00:44:04,424 895 00:44:04,424 --> 00:44:05,340 چرا که اتفاق می افتد؟ 896 00:44:05,340 --> 00:44:14,780 897 00:44:14,780 --> 00:44:16,364 آه، آن را در اینجا دقیقه. 898 00:44:16,364 --> 00:44:17,780 ما مقایسه ارزش در اشتباه بودند. 899 00:44:17,780 --> 00:44:24,944 900 00:44:24,944 --> 00:44:25,906 وای نه. 901 00:44:25,906 --> 00:44:30,720 902 00:44:30,720 --> 00:44:33,482 >> آه، بله، در اینجا ما بودند انتقال ارزش های غلط است. 903 00:44:33,482 --> 00:44:34,940 از آنجا که ما در i و j دنبال شد. 904 00:44:34,940 --> 00:44:36,440 آنها هستند که ما چک شدند. 905 00:44:36,440 --> 00:44:39,160 ما در واقع می خواهم به مبادله حداقل، حداقل در حال حاضر، 906 00:44:39,160 --> 00:44:40,550 با هر یک خارج است. 907 00:44:40,550 --> 00:44:59,510 908 00:44:59,510 --> 00:45:05,402 و همانطور که شما بچه ها می توانید به پایین را ببینید در اینجا، ما باید یک آرایه مرتب شده است. 909 00:45:05,402 --> 00:45:07,110 این فقط تا به حال با این واقعیت است که وقتی 910 00:45:07,110 --> 00:45:09,350 ما چک کردن شد ارزش های ما مقایسه شد، 911 00:45:09,350 --> 00:45:11,226 ما در ارزش حق با تو بود به دنبال ندارد. 912 00:45:11,226 --> 00:45:13,850 ما در یکی از همان دنبال در اینجا، در واقع آن مبادله. 913 00:45:13,850 --> 00:45:17,135 شما باید در یک نگاه بعدی به آن و سپس شما می توانید مبادله. 914 00:45:17,135 --> 00:45:19,260 به طوری که چه نوع از بود شنود کد ما قبل از. 915 00:45:19,260 --> 00:45:22,460 و آنچه من در اینجا همه چیز است دیباگر می تواند برای شما انجام می 916 00:45:22,460 --> 00:45:23,810 من فقط آن را در انجام هیئت مدیره، به دلیل آن را آسان تر 917 00:45:23,810 --> 00:45:26,320 برای دیدن به جای تلاش به زوم بر روی دیباگر. 918 00:45:26,320 --> 00:45:29,391 آیا این را حس به همه؟ 919 00:45:29,391 --> 00:45:29,890 خنک. 920 00:45:29,890 --> 00:45:34,800 921 00:45:34,800 --> 00:45:35,410 >> خیلی خوب. 922 00:45:35,410 --> 00:45:41,070 ما می توانیم به صحبت کردن در مورد حرکت نماد مجانبی که 923 00:45:41,070 --> 00:45:44,580 فقط یک راه فانتزی گفتن است زمان های اجرا از همه از این نوع. 924 00:45:44,580 --> 00:45:47,650 بنابراین من می دانم دیوید، در سخنرانی، لمس بر زمان های اجرا. 925 00:45:47,650 --> 00:45:52,124 و او را از طریق طیف فرمول رفت چگونه برای محاسبه زمان اجرای. 926 00:45:52,124 --> 00:45:53,040 هیچ نگرانی در مورد آن است. 927 00:45:53,040 --> 00:45:54,660 اگر شما واقعا کنجکاو هستید در مورد چگونه است که کار می کند، 928 00:45:54,660 --> 00:45:55,810 احساس رایگان به صحبت به من بعد از. 929 00:45:55,810 --> 00:45:57,560 ما می توانیم از طریق راه رفتن فرمول با هم. 930 00:45:57,560 --> 00:46:00,689 اما همه شما بچه ها باید واقعا بدانید این است که بیش از 2 N مربع 931 00:46:00,689 --> 00:46:01,980 همان چیزی است که N مربع. 932 00:46:01,980 --> 00:46:04,710 از آنجا که بیشترین تعداد، توان، رشد می کند بیشتر است. 933 00:46:04,710 --> 00:46:06,590 و به همین ترتیب برای اهداف ما، همه ما در مورد مراقبت 934 00:46:06,590 --> 00:46:09,470 که تعداد غول پیکر است که در حال رشد است. 935 00:46:09,470 --> 00:46:13,340 >> بنابراین بهترین است زمان اجرا از مرتب سازی انتخابی؟ 936 00:46:13,340 --> 00:46:15,830 اگر شما در حال رفتن به از طریق یک لیست تکرار 937 00:46:15,830 --> 00:46:18,712 و سپس از طریق تکرار بقیه که لیست، 938 00:46:18,712 --> 00:46:20,420 چند بار شما را به رفتن احتمالا، 939 00:46:20,420 --> 00:46:24,612 در بدترین case-- در مورد بهترین، sorry-- از طریق اجرا شود؟ 940 00:46:24,612 --> 00:46:27,070 شاید این سوال بهتر است بپرسید، چه بدترین حالت این است 941 00:46:27,070 --> 00:46:28,153 زمان اجرا از مرتب سازی انتخابی. 942 00:46:28,153 --> 00:46:29,366 مخاطبان: N مربع. 943 00:46:29,366 --> 00:46:30,740 ANDI PENG: این N مربع، درست است. 944 00:46:30,740 --> 00:46:36,986 بنابراین یک راه آسان برای فکر می کنم این است، هر زمان شما دو حلقه تو در تو برای، 945 00:46:36,986 --> 00:46:38,110 آن را به N مربع. 946 00:46:38,110 --> 00:46:40,386 از آنجا که نه تنها شما حال اجرا از طریق یک بار دیگر، 947 00:46:40,386 --> 00:46:42,260 شما باید به عقب برگردید اطراف و از طریق آن را اجرا کنید 948 00:46:42,260 --> 00:46:44,980 یک بار دیگر در داخل برای هر مقدار. 949 00:46:44,980 --> 00:46:48,640 بنابراین در آن صورت، شما در حال اجرا N N بار مربع، که is-- با عرض پوزش، 950 00:46:48,640 --> 00:46:50,505 n بار n، که برابر با n مربع. 951 00:46:50,505 --> 00:46:53,230 952 00:46:53,230 --> 00:46:56,360 >> و مرتب کردن است نیز کمی در حس منحصر به فرد 953 00:46:56,360 --> 00:46:59,774 که آن را اگر این مهم نیست ارزش در حال حاضر به منظور. 954 00:46:59,774 --> 00:47:01,440 آن را هنوز هم به هر حال اجرا کنید. 955 00:47:01,440 --> 00:47:03,872 اجازه دهید فقط می گویند این 1، 2، 3، 4 بود. 956 00:47:03,872 --> 00:47:07,080 بدون در نظر گرفتن یا نه آن را در بود سفارش، آن را هنوز هم از طریق فرار 957 00:47:07,080 --> 00:47:08,620 و هنوز هم ارزش حداقل بررسی می شود. 958 00:47:08,620 --> 00:47:10,100 این را ساخته اند که به همان تعداد از چک 959 00:47:10,100 --> 00:47:12,780 در هر زمان تنها، حتی اگر آن در واقع هر چیزی را لمس کنید. 960 00:47:12,780 --> 00:47:16,940 >> بنابراین در این حالت، بهترین و بدترین زمان ها در واقع معادل آن. 961 00:47:16,940 --> 00:47:19,160 بنابراین انتظار می رود در زمان اجرا انتخاب نوع، 962 00:47:19,160 --> 00:47:23,790 که ما با نماد تعیین تتا، تتا، در این مورد، 963 00:47:23,790 --> 00:47:24,790 همچنین می تواند N مربع. 964 00:47:24,790 --> 00:47:26,480 هر سه این می شود N مربع. 965 00:47:26,480 --> 00:47:29,653 همه روشن است که چرا زمان اجرا N مربع؟ 966 00:47:29,653 --> 00:47:33,360 967 00:47:33,360 --> 00:47:33,980 >> خیلی خوب. 968 00:47:33,980 --> 00:47:39,120 بنابراین من فقط رفتن را به سرعت اجرا از طریق بقیه انواع. 969 00:47:39,120 --> 00:47:41,137 الگوریتم برای حباب sort-- به یاد داشته باشید، 970 00:47:41,137 --> 00:47:43,220 این یکی از اولین بود دیوید بیش از در سخنرانی رفت. 971 00:47:43,220 --> 00:47:46,000 اساسا، شما گام به گام از طریق لیست کل 972 00:47:46,000 --> 00:47:48,950 و شما می swap-- فقط مقایسه دو در یک زمان. 973 00:47:48,950 --> 00:47:51,350 و اگر یکی بیشتر، از شما فقط آنها مبادله. 974 00:47:51,350 --> 00:47:53,590 بنابراین اگر این بیشتر می باشد، شما می مبادله. 975 00:47:53,590 --> 00:47:56,180 من رسمی کردم در اینجا ببینید. 976 00:47:56,180 --> 00:47:59,100 >> بنابراین اجازه دهید فقط می گویند شما تا به حال 8، 6، 4، 2. 977 00:47:59,100 --> 00:48:00,571 شما می خواهم 8 و 6 مقایسه کنید. 978 00:48:00,571 --> 00:48:01,570 شما می باید به آنها مبادله. 979 00:48:01,570 --> 00:48:02,610 شما می توانید 8 و 4 مقایسه کنید. 980 00:48:02,610 --> 00:48:03,609 شما می باید به آنها مبادله. 981 00:48:03,609 --> 00:48:07,000 اگر شما به مبادله 8 و 2، آنها را تغییر دهید. 982 00:48:07,000 --> 00:48:10,760 بنابراین در چنین معنا، شما می توانید ببینید، بیش از یک دوره طولانی از زمان بازی، 983 00:48:10,760 --> 00:48:13,730 چه نوع ارزش های حباب به به پایان می رسد، همین دلیل است که ما آن را 984 00:48:13,730 --> 00:48:15,320 مرتب سازی بر حباب. 985 00:48:15,320 --> 00:48:19,950 >> ما فقط از طریق اجرای دوباره در پاس دوم ما، و پاس سوم ما، 986 00:48:19,950 --> 00:48:21,150 و چهارم پاس ما است. 987 00:48:21,150 --> 00:48:25,820 اساسا، حباب مرتب سازی بر فقط اجرا می شود تا زمانی که شما هر گونه معاوضه تر را ندارد. 988 00:48:25,820 --> 00:48:31,109 بنابراین در این معنا، این فقط شبه کلی برای آن است. 989 00:48:31,109 --> 00:48:32,650 بدون نگرانی، این همه آنلاین می باشد. 990 00:48:32,650 --> 00:48:34,990 ما لازم نیست که به واقع بیش از این است. 991 00:48:34,990 --> 00:48:38,134 >> ما فقط مقداردهی اولیه یک شمارنده متغیر است که در 0 شروع می شود. 992 00:48:38,134 --> 00:48:39,800 و ما را از طریق تمام آرایه تکرار. 993 00:48:39,800 --> 00:48:43,420 و اگر یک مقدار is-- اگر این ارزش بیشتر از ارزش است، 994 00:48:43,420 --> 00:48:44,610 شما در حال رفتن به آنها مبادله. 995 00:48:44,610 --> 00:48:46,860 و سپس شما فقط هستید رفتن به رفتن ادامه. 996 00:48:46,860 --> 00:48:47,970 و شما در حال رفتن به تعداد. 997 00:48:47,970 --> 00:48:50,845 و شما فقط رفتن به انجام این در حالی که مقابله بیشتر است 998 00:48:50,845 --> 00:48:53,345 از 0، که بدان معنی است که هر زمان که شما به مبادله، 999 00:48:53,345 --> 00:48:55,220 شما می دانید که شما می خواهید به تماس و دوباره چک کنید. 1000 00:48:55,220 --> 00:48:59,510 شما می خواهید به نگه داشتن چک کردن تا زمانی که شما می دانید که شما لازم نیست که به مبادله کند. 1001 00:48:59,510 --> 00:49:05,570 >> پس چه بهترین و بدترین هستند مورد زمان های اجرا برای مرتب سازی حبابی؟ 1002 00:49:05,570 --> 00:49:09,300 و این است که در واقع hint-- مختلف از مرتب سازی بر انتخاب در مفهوم 1003 00:49:09,300 --> 00:49:11,810 که این دو پاسخ ها یکسان نیست. 1004 00:49:11,810 --> 00:49:14,709 در مورد آنچه که در اتفاق می افتد فکر می کنم یک مورد آن در حال حاضر اگر طبقه بندی شده اند. 1005 00:49:14,709 --> 00:49:16,500 و فکر می کنم در مورد آنچه که اتفاقی می افتد اگر آن 1006 00:49:16,500 --> 00:49:18,372 در مورد که در آن طبقه بندی شده اند نمی شد. 1007 00:49:18,372 --> 00:49:20,580 و شما می توانید نوع اجرا از طریق همین دلیل است که اتفاق می افتد. 1008 00:49:20,580 --> 00:49:22,954 من به شما بچه را، مانند، 30 ثانیه به آن فکر کنیم. 1009 00:49:22,954 --> 00:49:52,330 1010 00:49:52,330 --> 00:49:53,540 >> باشه. 1011 00:49:53,540 --> 00:49:57,462 آیا کسی یک حدس در چه بدترین حالت زمان اجرا از مرتب سازی حبابی است؟ 1012 00:49:57,462 --> 00:49:57,962 آره. 1013 00:49:57,962 --> 00:50:07,810 >> رسید می شود آن را، مانند، n بار N منهای 1 و یا چیزی شبیه به آن؟ 1014 00:50:07,810 --> 00:50:10,650 مانند، هر زمان آن را اجرا می کند، آن را فقط، مانند، یک مبادله کمتر 1015 00:50:10,650 --> 00:50:10,960 که هر آنچه در آن بود. 1016 00:50:10,960 --> 00:50:12,668 >> ANDI PENG: آره، بنابراین شما کاملا حق با شماست. 1017 00:50:12,668 --> 00:50:15,940 و این یک مورد است که در آن خود را پاسخ در واقع پیچیده تر بود 1018 00:50:15,940 --> 00:50:17,240 از یکی از ما نیاز به دادن. 1019 00:50:17,240 --> 00:50:19,772 بنابراین آن را به run-- من رفتن به پاک کردن تمام در اینجا. 1020 00:50:19,772 --> 00:50:20,480 هر کس خوب است؟ 1021 00:50:20,480 --> 00:50:21,869 آیا من می توانم این را پاک کنید؟ 1022 00:50:21,869 --> 00:50:22,368 باشه. 1023 00:50:22,368 --> 00:50:27,904 1024 00:50:27,904 --> 00:50:30,320 شما در حال رفتن به N اجرا بار اولین بار، درست است؟ 1025 00:50:30,320 --> 00:50:33,200 و آنها در حال رفتن به از طریق اجرا N منهای 1 بار دوم، درست است؟ 1026 00:50:33,200 --> 00:50:37,130 و سپس شما قصد داریم برای حفظ رفتن، N 2 معدن، و غیره. 1027 00:50:37,130 --> 00:50:40,210 دیوید این در یک سخنرانی، که در آن، اگر شما اضافه تا تمام کسانی که ارزش ها، 1028 00:50:40,210 --> 00:50:48,080 شما چیزی است که گرفتن like-- yeah-- بیش از 2، که در اصل فقط کاهش می دهد 1029 00:50:48,080 --> 00:50:49,784 به N مربع. 1030 00:50:49,784 --> 00:50:51,700 شما در حال رفتن به یک بخش عجیب و غریب در آن وجود دارد. 1031 00:50:51,700 --> 00:50:53,892 و به این ترتیب فقط می دانم که از N مربع همیشه 1032 00:50:53,892 --> 00:50:55,350 تقدم بخش. 1033 00:50:55,350 --> 00:50:58,450 و بنابراین در این مورد، بدترین زمان اجرا می شود N مربع. 1034 00:50:58,450 --> 00:51:00,210 اگر آن را در نزولی بود سفارش، فکر می کنم، شما 1035 00:51:00,210 --> 00:51:02,530 را به یک مبادله هر زمان تنها. 1036 00:51:02,530 --> 00:51:05,170 >> چه خواهد بود، به طور بالقوه، بهترین حالت در زمان اجرا؟ 1037 00:51:05,170 --> 00:51:08,580 بیایید می گویند، اگر لیست در حال حاضر در، آنچه را که در زمان اجرا می شود؟ 1038 00:51:08,580 --> 00:51:09,565 >> مخاطبان: N. 1039 00:51:09,565 --> 00:51:10,690 ANDI PENG: این N، دقیقا. 1040 00:51:10,690 --> 00:51:11,600 و چرا از آن است N؟ 1041 00:51:11,600 --> 00:51:13,850 رسید آنجا که شما فقط باید در هر بار چک کنید. 1042 00:51:13,850 --> 00:51:14,770 ANDI PENG: دقیقا. 1043 00:51:14,770 --> 00:51:17,150 بنابراین در بهترین زمان اجرا ممکن است، اگر به این لیست در حال حاضر 1044 00:51:17,150 --> 00:51:20,270 sorted-- اجازه دهید بگویم 1، 2، 3، 4-- شما فقط از طریق رفتن، شما می توانید بررسی کنید، 1045 00:51:20,270 --> 00:51:21,720 شما می توانید ببینید، آه، همه آنها حرکت کند. 1046 00:51:21,720 --> 00:51:22,636 من مجبور به مبادله. 1047 00:51:22,636 --> 00:51:23,370 من انجام می شود. 1048 00:51:23,370 --> 00:51:26,500 بنابراین در آن صورت، آن را فقط N و یا تعدادی از مراحل شما فقط 1049 00:51:26,500 --> 00:51:29,870 تا به حال در لیست اول تیک بزنید. 1050 00:51:29,870 --> 00:51:33,990 >> و پس از، ما در حال حاضر ضربه مرتب سازی بر درج، که در آن 1051 00:51:33,990 --> 00:51:39,260 الگوریتم است که در اصل به تقسیم آن را به یک بخش طبقه بندی شده اند و نامرتب. 1052 00:51:39,260 --> 00:51:42,810 و پس از آن یک به یک، ارزش نامرتب هستند 1053 00:51:42,810 --> 00:51:46,880 قرار داده شده در مناسب خود موقعیت خود را در ابتدای فهرست. 1054 00:51:46,880 --> 00:51:52,120 >> بنابراین برای مثال، ما یک لیست 3، 5، 2، 6، 4 است. 1055 00:51:52,120 --> 00:51:54,750 ما می دانیم که آن را در حال حاضر نامرتب چون ما فقط این 1056 00:51:54,750 --> 00:51:57,030 آغاز شده نگاه کردن به آن. 1057 00:51:57,030 --> 00:52:00,610 ما را نگاه و ما می دانیم که ارزش اولین بار است که طبقه بندی شده اند، درست است؟ 1058 00:52:00,610 --> 00:52:04,190 اگر شما تنها به دنبال در یک آرایه از اندازه یک، شما می دانید که آن را طبقه بندی شده اند. 1059 00:52:04,190 --> 00:52:08,230 >> پس ما می دانیم که چهار دیگر نامرتب هستند. 1060 00:52:08,230 --> 00:52:10,980 ما از طریق رفتن و ما که ارزش را ببینید. 1061 00:52:10,980 --> 00:52:11,730 بیا برگردیم. 1062 00:52:11,730 --> 00:52:13,130 دید که مقدار 5؟ 1063 00:52:13,130 --> 00:52:14,110 ما نگاهی به آن است. 1064 00:52:14,110 --> 00:52:15,204 ما آن را نسبت به 3. 1065 00:52:15,204 --> 00:52:17,870 ما می دانیم که آن را بیشتر از 3، به طوری که ما می دانیم که که طبقه بندی شده اند. 1066 00:52:17,870 --> 00:52:22,940 بنابراین ما اکنون می دانیم که در دو مورد اول طبقه بندی شده اند و سه هستند. 1067 00:52:22,940 --> 00:52:24,270 >> ما نگاهی به 2. 1068 00:52:24,270 --> 00:52:25,720 ما برای اولین بار آن را با 5 تیک بزنید. 1069 00:52:25,720 --> 00:52:26,700 آیا کمتر از 5؟ 1070 00:52:26,700 --> 00:52:27,240 این نیست. 1071 00:52:27,240 --> 00:52:29,510 بنابراین ما باید به دنبال حفظ کرد. 1072 00:52:29,510 --> 00:52:30,940 سپس شما را بررسی کنید 2 خاموش 3. 1073 00:52:30,940 --> 00:52:31,850 است آن را کمتر از؟ 1074 00:52:31,850 --> 00:52:32,350 شماره 1075 00:52:32,350 --> 00:52:35,430 بنابراین شما می دانید 2 به قرار داده می شود به جلو و 3 و 5 1076 00:52:35,430 --> 00:52:38,200 هر دو باید تحت فشار قرار دادند شود. 1077 00:52:38,200 --> 00:52:42,190 آیا این را دوباره با 6 و 4. 1078 00:52:42,190 --> 00:52:48,962 و ما فقط نگه داشتن چک کردن اصل، که در آن ما فقط به بررسی، چک، چک. 1079 00:52:48,962 --> 00:52:51,170 و تا زمانی که آن را در سمت راست است جایگاه، ما نوع فقط 1080 00:52:51,170 --> 00:52:54,890 قرار دادن آن را به سمت راست، که است که که در آن نام آن را از آمد. 1081 00:52:54,890 --> 00:52:59,830 >> به طوری که فقط الگوریتم، شبه در هر سه، نوع، 1082 00:52:59,830 --> 00:53:04,990 در مورد ما چگونه می پیاده سازی مرتب کردن بر اساس درج. 1083 00:53:04,990 --> 00:53:05,954 شبه است در اینجا. 1084 00:53:05,954 --> 00:53:06,620 این همه آنلاین است. 1085 00:53:06,620 --> 00:53:10,720 هیچ نگرانی اگر شما بچه ها تلاش برای کپی کردن این پایین. 1086 00:53:10,720 --> 00:53:14,500 پس یک بار دیگر، همان question-- چه خواهد بود که بهترین و بدترین زمان های اجرا 1087 00:53:14,500 --> 00:53:16,120 برای مرتب سازی درجی؟ 1088 00:53:16,120 --> 00:53:17,750 آن را بسیار شبیه به آخرین سوال. 1089 00:53:17,750 --> 00:53:20,479 من به شما بچه را، مانند، 30 ثانیه در این باره فکر است. 1090 00:53:20,479 --> 00:53:47,150 1091 00:53:47,150 --> 00:53:50,071 >> OK آیا کسی می خواهید به من بدترین زمان اجرا به من بدهید؟ 1092 00:53:50,071 --> 00:53:50,570 آره. 1093 00:53:50,570 --> 00:53:51,490 >> مخاطبان: N مربع. 1094 00:53:51,490 --> 00:53:52,573 >> ANDI PENG: این N مربع. 1095 00:53:52,573 --> 00:53:53,730 و به همین دلیل است که آن را N مربع؟ 1096 00:53:53,730 --> 00:53:57,562 >> مخاطبان: از آنجا که در جهت معکوس، شما باید 1097 00:53:57,562 --> 00:54:02,619 را از طریق بار N GO n، که is-- 1098 00:54:02,619 --> 00:54:03,660 ANDI PENG: بله، دقیقا. 1099 00:54:03,660 --> 00:54:06,610 بنابراین همان در مرتب سازی بر حباب. 1100 00:54:06,610 --> 00:54:08,720 اگر به این لیست است در نزولی، شما 1101 00:54:08,720 --> 00:54:11,240 رفتن به بررسی کنید یک بار برای اولین بار. 1102 00:54:11,240 --> 00:54:13,470 و پس از آن با هر ارزش اضافی، شما 1103 00:54:13,470 --> 00:54:16,390 رفتن به آن را بررسی کنید در برابر هر ارزش واحد، درست است؟ 1104 00:54:16,390 --> 00:54:20,290 و به این ترتیب در دسترس نباشد، شما در حال رفتن به N بار پاس یکی دیگر از N عبور، که 1105 00:54:20,290 --> 00:54:21,750 است N مربع. 1106 00:54:21,750 --> 00:54:22,860 چه در مورد بهترین حالت؟ 1107 00:54:22,860 --> 00:54:24,360 آره. 1108 00:54:24,360 --> 00:54:28,840 >> مخاطبان: N منهای 1، به دلیل یکی از اولین در حال حاضر مربع. 1109 00:54:28,840 --> 00:54:30,270 >> ANDI PENG: بنابراین، نزدیک است. 1110 00:54:30,270 --> 00:54:31,850 پاسخ این است در واقع N. 1111 00:54:31,850 --> 00:54:37,189 زیرا در حالی که یکی از اولین طبقه بندی شده اند، ممکن است آن را actually-- نیست 1112 00:54:37,189 --> 00:54:38,980 ما فقط با خوش شانسی روبرو شد، در که به عنوان مثال، که 2 1113 00:54:38,980 --> 00:54:40,930 رخ داده است به کوچکترین عدد است. 1114 00:54:40,930 --> 00:54:43,680 اما این همیشه صدق نمی کند باشد. 1115 00:54:43,680 --> 00:54:48,040 اگر 2 در حال حاضر در آغاز طبقه بندی شده اند اما شما نگاه کنید و یک 1 در اینجا وجود دارد، 1116 00:54:48,040 --> 00:54:49,144 1 حال رفتن به آن دست انداز. 1117 00:54:49,144 --> 00:54:51,060 و آن را برای پایان دادن به تا اینکه به هر حال ضربه. 1118 00:54:51,060 --> 00:54:56,250 >> بنابراین در بهترین حالت، آن را در واقع فقط برای رفتن به N. 1119 00:54:56,250 --> 00:54:59,090 اگر شما 1، 2، 3، 4، 5، 6، 7، 8، شما 1120 00:54:59,090 --> 00:55:00,940 رفتن را از طریق اجرا که لیست کامل یک بار 1121 00:55:00,940 --> 00:55:03,430 به چک کنید اگر همه چیز روبراهه. 1122 00:55:03,430 --> 00:55:07,390 همه روشن است در حال اجرا زمان انتخاب به عنوان؟ 1123 00:55:07,390 --> 00:55:09,960 من می دانم من رفتن را از طریق این واقعا سریع است. 1124 00:55:09,960 --> 00:55:13,330 اما فقط می دانم که اگر شما می دانید مفاهیم کلی، شما باید خوب باشد. 1125 00:55:13,330 --> 00:55:16,070 باشه. 1126 00:55:16,070 --> 00:55:19,790 بنابراین من فقط شما بچه ها شاید به، مانند، یک دقیقه به صحبت به همسایگان خود 1127 00:55:19,790 --> 00:55:21,890 در چه تنها برخی از تفاوت های اصلی 1128 00:55:21,890 --> 00:55:23,540 بین این نوع از انواع. 1129 00:55:23,540 --> 00:56:24,571 1130 00:56:24,571 --> 00:56:25,570 ما بیش از آن که به زودی. 1131 00:56:25,570 --> 00:56:26,444 مخاطبان: آه، باشد. 1132 00:56:26,444 --> 00:56:27,320 ANDI PENG: آره. 1133 00:56:27,320 --> 00:56:28,380 باشه. 1134 00:56:28,380 --> 00:56:33,420 سرد، اجازه دهید به عنوان یک کلاس دوباره نشستی. 1135 00:56:33,420 --> 00:56:34,330 باشه. 1136 00:56:34,330 --> 00:56:37,579 بنابراین این نوع از سوال باز به این معنا 1137 00:56:37,579 --> 00:56:39,120 که بسیاری از پاسخ به آنها وجود دارد. 1138 00:56:39,120 --> 00:56:40,746 و ما بیش از برخی از آنها به طور خلاصه. 1139 00:56:40,746 --> 00:56:43,411 من فقط می خواستم به شما بچه فکر کردن در مورد آنچه متفاوت 1140 00:56:43,411 --> 00:56:44,530 هر سه نوع از انواع. 1141 00:56:44,530 --> 00:56:47,440 و من شنیده ام، همچنین، بزرگ question-- چه مرتبسازی ادغامی را انجام دهد؟ 1142 00:56:47,440 --> 00:56:50,110 سوال بزرگ، چرا که آنچه ما را پوشش بعدی. 1143 00:56:50,110 --> 00:56:52,850 >> بنابراین ادغام مرتب سازی بر است یک نوع که توابع 1144 00:56:52,850 --> 00:56:56,100 بسیار متفاوت از انواع دیگر. 1145 00:56:56,100 --> 00:56:58,180 همانطور که شما بچه ها می توانید see-- آیا دیوید که نسخه ی نمایشی 1146 00:56:58,180 --> 00:57:01,130 جایی که او تا به حال تمام سرد سر و صدا از دیدن چگونه ادغام 1147 00:57:01,130 --> 00:57:04,010 مرتب سازی بر زد، مانند، بی نهایت سریع تر از دو نوع دیگر؟ 1148 00:57:04,010 --> 00:57:04,510 باشه. 1149 00:57:04,510 --> 00:57:07,580 به طوری که به دلیل ادغام است مرتب سازی بر پیاده سازی است که تقسیم 1150 00:57:07,580 --> 00:57:11,020 و تسخیر مفهوم است که ما را در مورد بسیاری در سخنرانی صحبت کردیم. 1151 00:57:11,020 --> 00:57:14,550 در این معنا است که ما دوست داریم به کار دقیق، نه سخت تر است، هنگام تقسیم 1152 00:57:14,550 --> 00:57:18,120 و تسخیر مشکلات، و شکستن آنها پایین، و سپس آنها را با هم، 1153 00:57:18,120 --> 00:57:19,930 چیزهای خوب همیشه اتفاق می افتد. 1154 00:57:19,930 --> 00:57:21,960 >> پس راه که ادغام مرتب سازی بر اساس اصل کار می کند 1155 00:57:21,960 --> 00:57:24,660 این است که این تقسیم آرایه نامرتب در نیم. 1156 00:57:24,660 --> 00:57:26,500 و سپس آن را به دو نیمه آرایه ها. 1157 00:57:26,500 --> 00:57:28,220 و آن را فقط انواع آن دو نیمه. 1158 00:57:28,220 --> 00:57:31,750 این فقط نگه می تقسیم در نیم، در نیم، در نیمه تا همه چیز مرتب شده اند 1159 00:57:31,750 --> 00:57:33,680 پس از آن به صورت بازگشتی و آن همه را با هم. 1160 00:57:33,680 --> 00:57:36,550 >> به طوری که واقعا انتزاعی. 1161 00:57:36,550 --> 00:57:38,750 بنابراین این فقط یک کمی از شبه است. 1162 00:57:38,750 --> 00:57:41,040 آیا این را حس در راه آن را در حال اجرا؟ 1163 00:57:41,040 --> 00:57:43,870 بنابراین اجازه دهید فقط می گویند شما یک مجموعه ای از عناصر N، درست است؟ 1164 00:57:43,870 --> 00:57:45,450 اگر n کمتر از 2 است، شما می توانید بازگشت. 1165 00:57:45,450 --> 00:57:49,040 چون شما می دانید اگر وجود دارد که تنها یک چیز، باید آن را طبقه بندی شده اند. 1166 00:57:49,040 --> 00:57:52,600 دیگری، شما مرتب کردن بر اساس نیمه چپ، و سپس شما مرتب کردن بر اساس نیمه سمت راست، 1167 00:57:52,600 --> 00:57:54,140 و سپس شما ادغام خواهند شد. 1168 00:57:54,140 --> 00:57:56,979 >> بنابراین در حالی که به نظر می رسد که واقعا آسان است، در واقع، فکر کردن در مورد آن 1169 00:57:56,979 --> 00:58:00,270 نوع دشوار است. از آنجا که شما مانند، خب، این نوع از در حال اجرا در خود دارد. 1170 00:58:00,270 --> 00:58:00,769 درست؟ 1171 00:58:00,769 --> 00:58:02,430 آن در حال اجرا است. 1172 00:58:02,430 --> 00:58:05,479 بنابراین در این معنا، دیوید لمس بر بازگشت در کلاس. 1173 00:58:05,479 --> 00:58:07,270 و یک مفهوم ما در مورد بیشتر صحبت کنیم. 1174 00:58:07,270 --> 00:58:11,430 آن است که این، این دو خط در اینجا، در واقع فقط از این برنامه است 1175 00:58:11,430 --> 00:58:13,860 گفتن آن را به خود اجرا با ورودی های مختلف است. 1176 00:58:13,860 --> 00:58:17,230 بنابراین به جای خود را با اجرا به طور کامل از عناصر N، 1177 00:58:17,230 --> 00:58:20,530 شما می توانید آن را به شکستن نیمه چپ و نیمه سمت راست 1178 00:58:20,530 --> 00:58:22,680 و سپس آن را دوباره اجرا کنید. 1179 00:58:22,680 --> 00:58:26,050 >> و سپس ما را در آن بصری نگاه کنید، چون من یک یادگیرنده بصری است. 1180 00:58:26,050 --> 00:58:27,270 با این نسخهها کار برای من بهتر است. 1181 00:58:27,270 --> 00:58:29,890 بنابراین ما را با یک نمونه بصری اینجا نگاه کنید. 1182 00:58:29,890 --> 00:58:36,237 >> بیایید می گویند ما یک آرایه، شش عناصر، 3، 5، 2، 6، 4، 1، طبقه بندی شده اند. 1183 00:58:36,237 --> 00:58:37,820 همه حق است، در بسیاری در این صفحه وجود دارد. 1184 00:58:37,820 --> 00:58:43,179 بنابراین اگر شما بچه می توانید در فروم گام اول در اینجا، 3، 5، 2، 6، 4، 1، 1185 00:58:43,179 --> 00:58:44,220 شما می توانید آن را در نیم تقسیم می شود. 1186 00:58:44,220 --> 00:58:45,976 شما باید 3، 5، 2، 6، 4، 1. 1187 00:58:45,976 --> 00:58:48,850 شما می دانید که این شما aren't-- نمی دانم اگر آنها طبقه بندی شده اند یا نه، 1188 00:58:48,850 --> 00:58:52,517 بنابراین شما در حفظ و شکستن آنها، در نیم، در نیم، در نیمه، تا در نهایت، 1189 00:58:52,517 --> 00:58:53,600 شما تنها یک عنصر است. 1190 00:58:53,600 --> 00:58:56,790 و یک عنصر است که همیشه طبقه بندی شده اند، درست است؟ 1191 00:58:56,790 --> 00:59:01,560 >> بنابراین ما می دانیم که 3، 5، 2، 4، 6، 1، به خودی خود، طبقه بندی شده اند. 1192 00:59:01,560 --> 00:59:05,870 و در حال حاضر ما می توانیم آنها را با هم قرار داده است. 1193 00:59:05,870 --> 00:59:07,510 بنابراین ما می دانیم که 3، 5. 1194 00:59:07,510 --> 00:59:08,510 ما از کسانی را با هم. 1195 00:59:08,510 --> 00:59:09,617 ما می دانیم که مرتب شده است. 1196 00:59:09,617 --> 00:59:10,450 2 هنوز هم وجود دارد. 1197 00:59:10,450 --> 00:59:11,830 ما می توانیم 4 و 6 را با هم. 1198 00:59:11,830 --> 00:59:13,996 ما می دانیم که که طبقه بندی شده اند، بنابراین ما قرار داده است که با هم. 1199 00:59:13,996 --> 00:59:14,940 و 1 است. 1200 00:59:14,940 --> 00:59:18,720 >> و سپس شما فقط نگاه این دو نیمه در اینجا ببینید. 1201 00:59:18,720 --> 00:59:21,300 شما باید 3، 5، 2، 2، 3، 5. 1202 00:59:21,300 --> 00:59:23,465 شما می توانید فقط مقایسه آغاز همه چیز. 1203 00:59:23,465 --> 00:59:26,340 چون شما می دانید که این طبقه بندی شده اند و شما می دانید که که طبقه بندی شده اند. 1204 00:59:26,340 --> 00:59:29,360 پس شما حتی نمی دارند مقایسه 5، شما فقط مقایسه 3. 1205 00:59:29,360 --> 00:59:32,070 و 2 کمتر از 3 است، بنابراین شما می دانید 2 باید در پایان است. 1206 00:59:32,070 --> 00:59:33,120 >> همان چیزی که بیش از وجود دارد. 1207 00:59:33,120 --> 00:59:34,740 1 باید به اینجا بروید. 1208 00:59:34,740 --> 00:59:37,330 و پس از آن زمانی که شما به قرار دادن این دو ارزش با هم، 1209 00:59:37,330 --> 00:59:39,950 شما می دانید که این طبقه بندی شده اند و شما می دانید که که مرتب شده اند. 1210 00:59:39,950 --> 00:59:43,240 بنابراین پس از آن 1 و 2، 1 کمتر از 2 است. 1211 00:59:43,240 --> 00:59:45,570 که به شما می گوید که 1 باید در پایان این رفتن 1212 00:59:45,570 --> 00:59:47,480 حتی بدون نگاه کردن 3 یا 5. 1213 00:59:47,480 --> 00:59:50,100 و پس از آن 4، شما فقط می توانید بررسی کنید، آن را در اینجا راست می رود. 1214 00:59:50,100 --> 00:59:51,480 شما لازم نیست که در 5 نگاه کنید. 1215 00:59:51,480 --> 00:59:52,570 همان چیزی که با 6. 1216 00:59:52,570 --> 00:59:55,860 شما می دانید که آن را فقط به 6-- نیازی به نگاه شود. 1217 00:59:55,860 --> 00:59:57,870 >> و به این ترتیب در راه است که، شما فقط خود را صرفه جویی 1218 00:59:57,870 --> 00:59:59,526 بسیاری از مراحل زمانی که شما مقایسه. 1219 00:59:59,526 --> 01:00:02,150 شما لازم نیست که به مقایسه هر عنصر برابر عناصر دیگر. 1220 01:00:02,150 --> 01:00:05,230 شما فقط در برابر آنهایی که مقایسه که شما نیاز به مقایسه آن در برابر. 1221 01:00:05,230 --> 01:00:06,870 بنابراین این نوع از یک مفهوم انتزاعی است. 1222 01:00:06,870 --> 01:00:10,540 بدون نگرانی اگر آن را نمی کاملا هدف قرار دادن شما حق است. 1223 01:00:10,540 --> 01:00:14,740 اما به طور کلی، این است چگونه مرتب کردن بر اساس ادغام کار می کند. 1224 01:00:14,740 --> 01:00:17,750 سوالات، سوالات سریع، قبل از من در حرکت؟ 1225 01:00:17,750 --> 01:00:18,550 آره. 1226 01:00:18,550 --> 01:00:22,230 >> رسید بنابراین شما گفت که شما را 1، و سپس 4 و 6 1227 01:00:22,230 --> 01:00:23,860 و آنها را در. 1228 01:00:23,860 --> 01:00:26,800 بنابراین those-- نیستند شما در آنها به دنبال 1229 01:00:26,800 --> 01:00:28,544 به عنوان عناصر جداگانه، نه به عنوان طیف؟ 1230 01:00:28,544 --> 01:00:29,210 ANDI PENG: آره. 1231 01:00:29,210 --> 01:00:32,020 بنابراین آنچه اتفاق می افتد که شما اساسا 1232 01:00:32,020 --> 01:00:33,650 در حال ایجاد یک آرایه با نام تجاری جدید. 1233 01:00:33,650 --> 01:00:36,690 بنابراین شما می دانید که، در اینجا، من دو آرایه از اندازه 3، درست است؟ 1234 01:00:36,690 --> 01:00:39,600 بنابراین شما می دانید که آرایه مرتب شده من نیاز به شش عناصر. 1235 01:00:39,600 --> 01:00:42,270 بنابراین شما فقط ایجاد یک مقدار جدید از حافظه است. 1236 01:00:42,270 --> 01:00:44,270 بنابراین شما نوع مانند هستید بی فایده حافظه انسان، 1237 01:00:44,270 --> 01:00:46,186 اما این مهم نیست دلیل آن را بسیار کوچک است. 1238 01:00:46,186 --> 01:00:48,590 بنابراین شما در 1 نگاه و شما در 2 نگاه کنید. 1239 01:00:48,590 --> 01:00:50,770 و شما می دانید که کمتر از 1 2 است. 1240 01:00:50,770 --> 01:00:53,840 بنابراین شما می دانید که 1 باید در رفتن در آغاز همه از آن. 1241 01:00:53,840 --> 01:00:55,850 >> شما حتی نمی نیاز به در 3 و 5 است. 1242 01:00:55,850 --> 01:00:57,400 بنابراین شما می دانید 1 وجود دارد می رود. 1243 01:00:57,400 --> 01:00:59,300 سپس شما اساسا ریز ریز کردن. 1 1244 01:00:59,300 --> 01:01:00,370 آن را، مانند، مرده به ما. 1245 01:01:00,370 --> 01:01:03,690 پس از آن ما فقط باید 2، 3، 5، و سپس 4 و 6. 1246 01:01:03,690 --> 01:01:06,270 و پس از آن شما می دانید که، شما می مقایسه 4 و 2، 1247 01:01:06,270 --> 01:01:07,560 آه، 2 باید در وجود دارد. 1248 01:01:07,560 --> 01:01:09,685 بنابراین شما با صدای تلپ 2 پایین، شما آن را ریز ریز کردن. 1249 01:01:09,685 --> 01:01:12,060 بنابراین پس از آن شما فقط باید 3 و 5 در 4 و 6. 1250 01:01:12,060 --> 01:01:14,650 و شما فقط حفظ سفت آن را خاموش تا زمانی که شما آنها را در آرایه. 1251 01:01:14,650 --> 01:01:17,110 >> رسید بنابراین شما فقط همیشه مقایسه [نامفهوم]؟ 1252 01:01:17,110 --> 01:01:17,710 >> ANDI PENG: دقیقا. 1253 01:01:17,710 --> 01:01:19,590 بنابراین در این معنا، شما فقط مقایسه، در اصل، 1254 01:01:19,590 --> 01:01:21,240 یک عدد برابر عدد دیگر. 1255 01:01:21,240 --> 01:01:22,990 و چون شما می دانید که آن را طبقه بندی شده اند، شما می 1256 01:01:22,990 --> 01:01:24,350 لازم نیست از طریق نگاه تمام اعداد. 1257 01:01:24,350 --> 01:01:25,870 شما فقط باید به در یکی از اولین نگاه. 1258 01:01:25,870 --> 01:01:27,582 و سپس شما فقط می توانید با صدای تلپ آنها را، چون شما می دانید 1259 01:01:27,582 --> 01:01:29,640 که تعلق دارند که در آن آنها نیاز به تعلق دارند. 1260 01:01:29,640 --> 01:01:31,030 آره. 1261 01:01:31,030 --> 01:01:32,920 سوال خوبی بود. 1262 01:01:32,920 --> 01:01:35,290 >> و پس از آن اگر هر کدام از شما کمی بلند پروازانه، 1263 01:01:35,290 --> 01:01:38,660 در صورت تمایل به این کد نگاه کنید. 1264 01:01:38,660 --> 01:01:40,680 این است که در واقع پیاده سازی های فیزیکی 1265 01:01:40,680 --> 01:01:42,150 چگونه ما مرتب سازی بر ادغام ارسال. 1266 01:01:42,150 --> 01:01:44,070 و شما می توانید آن را ببینید، بسیار کوتاه است. 1267 01:01:44,070 --> 01:01:46,310 اما ایده پشت آن را بسیار پیچیده است. 1268 01:01:46,310 --> 01:01:50,865 بنابراین اگر شما مانند نقاشی احساس این در امشب مشق شب خود را، احساس رایگان برای. 1269 01:01:50,865 --> 01:01:54,050 1270 01:01:54,050 --> 01:01:54,740 >> باشه. 1271 01:01:54,740 --> 01:01:58,070 پس داود نیز بیش از این در سخنرانی رفت. 1272 01:01:58,070 --> 01:02:00,660 بهترین حالت چیست زمان های اجرا، بدترین زمان های اجرا مورد، 1273 01:02:00,660 --> 01:02:05,680 و انتظار می رود از زمان های اجرا مرتب سازی بر ادغام شوند؟ 1274 01:02:05,680 --> 01:02:07,260 چند ثانیه به فکر می کنم. 1275 01:02:07,260 --> 01:02:11,198 این بسیار سخت است، اما نوع بصری اگر شما فکر می کنم. 1276 01:02:11,198 --> 01:02:20,090 1277 01:02:20,090 --> 01:02:23,054 خیلی خوب. 1278 01:02:23,054 --> 01:02:25,269 >> مخاطبان: آیا بدترین حالت n log n استفاده؟ 1279 01:02:25,269 --> 01:02:26,060 ANDI PENG: دقیقا. 1280 01:02:26,060 --> 01:02:29,380 و به همین دلیل است که آن را N log n است. 1281 01:02:29,380 --> 01:02:32,230 >> مخاطبان: آیا نه به خاطر آن می شود به صورت تصاعدی سریعتر، 1282 01:02:32,230 --> 01:02:35,390 پس آن را مانند یک تابع از آن است به جای فقط به سادگی بودن N 1283 01:02:35,390 --> 01:02:37,529 مربع و یا چیزی؟ 1284 01:02:37,529 --> 01:02:38,320 ANDI PENG: دقیقا. 1285 01:02:38,320 --> 01:02:40,750 بنابراین به همین دلیل زمان اجرا در این N ورود به سیستم است 1286 01:02:40,750 --> 01:02:44,310 N است از آنجا که آنچه شما انجام این کار در تمام این مراحل؟ 1287 01:02:44,310 --> 01:02:46,190 شما فقط آن سفت در نیمه، درست است؟ 1288 01:02:46,190 --> 01:02:48,750 و تا زمانی که ما در حال انجام ورود به سیستم، که آن را به انجام 1289 01:02:48,750 --> 01:02:53,150 تقسیم یک مشکل در نیم، در نیم، در نیم، در نیمه تر است. 1290 01:02:53,150 --> 01:02:56,430 و در این معنی، شما می تواند به نوعی از بین بردن مدل خطی 1291 01:02:56,430 --> 01:02:57,510 که ما با استفاده از شده است. 1292 01:02:57,510 --> 01:03:00,254 زیرا هنگامی که شما را ریز ریز کردن همه چیز در نیم، آن را به یک وارد سیستم شود. 1293 01:03:00,254 --> 01:03:02,420 که فقط ریاضی راهی است برای نشان آن است. 1294 01:03:02,420 --> 01:03:06,310 >> و سپس در نهایت، در پایان، شما فقط یکی از آخرین عبور 1295 01:03:06,310 --> 01:03:07,930 برای قرار دادن تمام آنها را در جهت، درست است؟ 1296 01:03:07,930 --> 01:03:10,330 و بنابراین اگر شما فقط به بررسی یک چیز، که N. 1297 01:03:10,330 --> 01:03:13,420 و بنابراین شما نوع هستید ضرب دو با هم. 1298 01:03:13,420 --> 01:03:17,660 بنابراین آن را مانند شما که نهایی کردم برای n در اینجا با ورود به سیستم از n را بررسی کنید 1299 01:03:17,660 --> 01:03:18,390 این بالا. 1300 01:03:18,390 --> 01:03:21,060 و اگر شما چند برابر آنها، که N log n است. 1301 01:03:21,060 --> 01:03:26,100 >> و به این ترتیب بهترین و بدترین مورد مورد و انتظار می رود که تمام n log n است. 1302 01:03:26,100 --> 01:03:27,943 آن را نیز مانند نوع دیگری. 1303 01:03:27,943 --> 01:03:30,090 آن را مانند مرتب سازی انتخابی است به این معنا که آن را 1304 01:03:30,090 --> 01:03:32,131 مهم نیست که چه خود را لیست است، آن را فقط 1305 01:03:32,131 --> 01:03:34,801 به همین کار را در هر زمان تنها. 1306 01:03:34,801 --> 01:03:35,300 باشه. 1307 01:03:35,300 --> 01:03:39,950 به طوری که شما بچه ها می توانید ببینید، حتی اگر انواع که ما through-- N رفته 1308 01:03:39,950 --> 01:03:41,660 مربع، آن را بسیار موثر است. 1309 01:03:41,660 --> 01:03:47,060 و حتی این n log n استفاده است نه کارآمد ترین. 1310 01:03:47,060 --> 01:03:49,720 اگر شما بچه ها کنجکاو هستند، مرتب سازی بر اساس مکانیسم وجود دارد 1311 01:03:49,720 --> 01:03:54,310 که تا کارآمد است که آنها تقریبا ثابت در زمان اجرا. 1312 01:03:54,310 --> 01:03:55,420 >> شما برخی از log n است شده ام. 1313 01:03:55,420 --> 01:03:58,190 شما برخی از ورود به سیستم ورود به سیستم N شده ام. 1314 01:03:58,190 --> 01:04:00,330 ما بر آنها را لمس نمی در این کلاس در حال حاضر. 1315 01:04:00,330 --> 01:04:02,663 اما اگر شما بچه ها کنجکاو هستند، احساس رایگان گوگل، چه 1316 01:04:02,663 --> 01:04:04,392 مکانیسم مرتب سازی کارآمد ترین. 1317 01:04:04,392 --> 01:04:06,350 من نمی دانم، وجود دارد برخی از آنهایی که واقعا خنده دار، 1318 01:04:06,350 --> 01:04:09,860 like-- برخی واقعا وجود دارد آنهایی که خنده دار که مردم را. 1319 01:04:09,860 --> 01:04:12,210 و شما تعجب که چگونه آنها تا به حال فکر نمی کردم. 1320 01:04:12,210 --> 01:04:15,730 به طوری که گوگل، اگر شما برخی از قطعات یدکی زمان، در، چه برخی از راه های خنده دار 1321 01:04:15,730 --> 01:04:17,730 که people-- و همچنین مردم ways-- کارآمد 1322 01:04:17,730 --> 01:04:20,371 اند قادر به پیاده سازی انواع بوده است. 1323 01:04:20,371 --> 01:04:20,870 باشه. 1324 01:04:20,870 --> 01:04:22,880 و اینجا فقط یک نمودار کوچک دستی است. 1325 01:04:22,880 --> 01:04:26,850 من می دانم که همه شما، قبل از آن مسابقه، 0، در اتاق خود را احتمالا در تلاش 1326 01:04:26,850 --> 01:04:27,960 به خاطر سپردن است. 1327 01:04:27,960 --> 01:04:30,940 به طوری که به خوبی در آن وجود دارد برای شما بچه ها. 1328 01:04:30,940 --> 01:04:37,120 فقط منطق است که made-- فراموش نکنید چرا تعداد کسانی که رخ داده است. 1329 01:04:37,120 --> 01:04:39,870 اگر شما همیشه از دست داده، فقط مطمئن مطمئن شوید که شما می دانید چه نوع هستند. 1330 01:04:39,870 --> 01:04:40,820 و شما می توانید از طریق اجرا آنها را در ذهن خود 1331 01:04:40,820 --> 01:04:42,903 به کشف کردن که چرا آن پاسخ آن پاسخ می باشد. 1332 01:04:42,903 --> 01:04:46,250 1333 01:04:46,250 --> 01:04:47,600 >> خیلی خوب. 1334 01:04:47,600 --> 01:04:49,680 بنابراین ما قصد داریم به حرکت در نهایت، به جستجو. 1335 01:04:49,680 --> 01:04:51,638 چرا که به عنوان کسانی که از شما که pset کرده اند، 1336 01:04:51,638 --> 01:04:55,175 جستجو نیز بخشی از مشکل این هفته مجموعه. 1337 01:04:55,175 --> 01:04:57,300 شما خواسته می شود به پیاده سازی دو نوع از جستجو. 1338 01:04:57,300 --> 01:05:00,070 یک جستجوی خطی است و یک جستجوی دودویی است. 1339 01:05:00,070 --> 01:05:01,760 >> بنابراین جستجوی خطی نسبتا آسان است. 1340 01:05:01,760 --> 01:05:04,070 شما فقط می خواهید برای جستجو عنصر یک لیست برای دیدن اگر شما آن را دریافت کنید. 1341 01:05:04,070 --> 01:05:05,444 شما فقط باید به تکرار از طریق. 1342 01:05:05,444 --> 01:05:08,170 و اگر آن را برابر است با چیزی، شما فقط می توانید آن را بازگشت، درست است؟ 1343 01:05:08,170 --> 01:05:10,890 اما یکی که ما بیشتر هستید علاقه مند در صحبت کردن در مورد 1344 01:05:10,890 --> 01:05:14,550 جستجوی دودویی است، درست است، که تقسیم و تسخیر مکانیسم که 1345 01:05:14,550 --> 01:05:18,190 دیوید در سخنرانی نشان دادن شد. 1346 01:05:18,190 --> 01:05:20,810 >> به یاد داشته باشید به عنوان مثال دفترچه تلفن که او را نگه می دارد آوردن، 1347 01:05:20,810 --> 01:05:23,960 یکی که او بود که به تلاش کمی در این سال گذشته، 1348 01:05:23,960 --> 01:05:27,530 که در آن شما مشکل در نیمه تقسیم می شوند، در نیم، در نیمه، دوباره و دوباره، 1349 01:05:27,530 --> 01:05:30,730 تا زمانی که شما پیدا کردن آنچه شما دنبال آن هستید؟ 1350 01:05:30,730 --> 01:05:33,727 و شما رو زمان اجرا از آن نیز هست. 1351 01:05:33,727 --> 01:05:35,810 و شما می توانید آن را ببینید، به طور قابل توجهی کارآمد تر 1352 01:05:35,810 --> 01:05:39,080 از هر نوع دیگری از جستجو. 1353 01:05:39,080 --> 01:05:41,880 >> پس راه است که ما را در مورد رفتن اجرای یک جستجوی دودویی 1354 01:05:41,880 --> 01:05:46,510 است، اگر ما یک آرایه حال، صفحه اول 0-6، هفت عنصر، 1355 01:05:46,510 --> 01:05:49,790 ما می توانیم در وسط نگاه کنید، right-- با عرض پوزش، در صورت درخواست ما first-- 1356 01:05:49,790 --> 01:05:53,840 اگر ما می خواهیم به این سوال که بپرسم، آیا آرایه حاوی عنصر 7، 1357 01:05:53,840 --> 01:05:56,840 بدیهی است، بودن انسان، و داشتن چنین آرایه کوچک، آن را برای ما آسان 1358 01:05:56,840 --> 01:05:58,210 می گویند بله. 1359 01:05:58,210 --> 01:06:05,750 اما راه را برای پیاده سازی یک فایل باینری جستجو خواهد بود که در وسط است. 1360 01:06:05,750 --> 01:06:08,020 >> ما می دانیم که شاخص 3 وسط، چرا که ما 1361 01:06:08,020 --> 01:06:09,270 مطمئن شوید هفت عناصر وجود دارد. 1362 01:06:09,270 --> 01:06:10,670 چه 7 تقسیم بر 2. 1363 01:06:10,670 --> 01:06:12,850 شما می توانید ریز ریز کردن که فوق العاده 1. 1364 01:06:12,850 --> 01:06:14,850 شما 3 در وسط کردم. 1365 01:06:14,850 --> 01:06:17,590 بنابراین مجموعه ای از 3 تا 7 برابر است با؟ 1366 01:06:17,590 --> 01:06:18,900 آن است، درست است؟ 1367 01:06:18,900 --> 01:06:21,050 اما ما می توانیم یک زن و شوهر از چک است. 1368 01:06:21,050 --> 01:06:25,380 است مجموعه ای از 3 کمتر از 7 یا مجموعه ای از 3 بزرگتر از 7 است؟ 1369 01:06:25,380 --> 01:06:27,240 >> و ما می دانیم که آن را کمتر از 7. 1370 01:06:27,240 --> 01:06:30,259 بنابراین ما می دانیم که، آه، آن را باید در نیمه ترک نمی شود. 1371 01:06:30,259 --> 01:06:32,300 ما می دانیم که باید آن را در نیمه سمت راست، درست است؟ 1372 01:06:32,300 --> 01:06:34,662 بنابراین ما فقط می توانید ریز ریز کردن نیمی از آرایه است. 1373 01:06:34,662 --> 01:06:36,370 ما حتی نمی دارند در آن نگاه کنم. 1374 01:06:36,370 --> 01:06:38,711 از آنجا که ما می دانیم که نیمی از problem-- ما 1375 01:06:38,711 --> 01:06:41,210 ما می دانیم که پاسخ در است نیمه راست مشکل ما است. 1376 01:06:41,210 --> 01:06:42,580 بنابراین ما فقط در آن در حال حاضر نگاه. 1377 01:06:42,580 --> 01:06:44,860 >> بنابراین در حال حاضر ما در نگاه وسط از آنچه باقی مانده است. 1378 01:06:44,860 --> 01:06:46,880 که شاخص 5. 1379 01:06:46,880 --> 01:06:50,200 ما از همان دوباره چک و ما می بینیم که آن را کوچکتر است. 1380 01:06:50,200 --> 01:06:52,050 بنابراین ما به سمت چپ از آن نگاه کنید. 1381 01:06:52,050 --> 01:06:53,430 و سپس ما که چک را ببینید. 1382 01:06:53,430 --> 01:06:57,600 آیا ارزش آرایه در صفحه اول 4-7 برابر است؟ 1383 01:06:57,600 --> 01:06:58,260 این است. 1384 01:06:58,260 --> 01:07:03,580 بنابراین ما می توانیم بازگشت درست است، زیرا ما در بر داشت ارزش در لیست ما است. 1385 01:07:03,580 --> 01:07:06,738 آیا راه من از طریق رفت این را حس به همه؟ 1386 01:07:06,738 --> 01:07:08,760 باشه. 1387 01:07:08,760 --> 01:07:11,670 من به شما بچه شاید به، مانند، سه، چهار دقیقه به شکل 1388 01:07:11,670 --> 01:07:13,270 چگونه به شبه این در. 1389 01:07:13,270 --> 01:07:18,070 >> بنابراین تصور من از شما خواسته ارسال نامه تابع به نام جستجو () که بازگشت 1390 01:07:18,070 --> 01:07:20,640 یک ارزش، یک مقدار بولی، که درست بود یا false-- مانند، 1391 01:07:20,640 --> 01:07:22,970 درست است اگر شما یافت ارزش، نادرست اگر شما نمی. 1392 01:07:22,970 --> 01:07:25,230 و سپس شما گذشت در ارزش شما 1393 01:07:25,230 --> 01:07:28,410 برای به دنبال ارزش ها، که شد است که آرایه آه، من قطعا قرار داده است 1394 01:07:28,410 --> 01:07:29,410 که در محل اشتباه است. 1395 01:07:29,410 --> 01:07:29,580 باشه. 1396 01:07:29,580 --> 01:07:31,829 به هر حال، که باید به سمت راست از ارزش بوده است. 1397 01:07:31,829 --> 01:07:36,280 و پس از آن اعضای هیات n تعداد است از عناصر در آن آرایه. 1398 01:07:36,280 --> 01:07:39,430 چگونه شما در مورد تلاش رفتن به شبه که مشکل در؟ 1399 01:07:39,430 --> 01:07:41,630 من به شما بچه دوست دارم سه دقیقه به انجام این کار. 1400 01:07:41,630 --> 01:08:00,137 1401 01:08:00,137 --> 01:08:02,595 نه، من فکر می کنم only-- وجود دارد آره، یکی از سمت راست تا اینجا وجود دارد. 1402 01:08:02,595 --> 01:08:03,261 مخاطبان: می توانم؟ 1403 01:08:03,261 --> 01:08:04,388 ANDI PENG: آره، من به شما کردم. 1404 01:08:04,388 --> 01:08:09,410 1405 01:08:09,410 --> 01:08:11,050 است که کار؟ 1406 01:08:11,050 --> 01:08:12,290 باشه خوبه. 1407 01:08:12,290 --> 01:10:43,590 1408 01:10:43,590 --> 01:10:44,720 >> باشه. 1409 01:10:44,720 --> 01:10:47,630 همه بچه ها حق، ما رفتن به آن را مهار. 1410 01:10:47,630 --> 01:10:49,730 باشه. 1411 01:10:49,730 --> 01:10:54,020 بنابراین فرض ما این دوست داشتنی ام آرایه کمی با ارزش N در آن است. 1412 01:10:54,020 --> 01:10:55,170 من خطوط قرعه کشی نیست. 1413 01:10:55,170 --> 01:10:58,649 ولی چگونه باید می رفت در مورد تلاش برای نوشتن این؟ 1414 01:10:58,649 --> 01:11:00,440 آیا کسی می خواهید به من خط اول به من بدهید؟ 1415 01:11:00,440 --> 01:11:02,814 اگر می خواهید به من می دهد خط اول از این شبه. 1416 01:11:02,814 --> 01:11:06,563 1417 01:11:06,563 --> 01:11:08,430 >> مخاطبان: [نامفهوم] 1418 01:11:08,430 --> 01:11:10,138 رسید شما می خواهم می خواهم به تکرار through-- 1419 01:11:10,138 --> 01:11:11,094 مخاطبان: فقط یکی دیگر از حلقه for؟ 1420 01:11:11,094 --> 01:11:11,760 مخاطبان: --for. 1421 01:11:11,760 --> 01:11:15,880 1422 01:11:15,880 --> 01:11:17,780 >> ANDI PENG: پس این یکی کمی مشکل است. 1423 01:11:17,780 --> 01:11:23,130 فکر می کنم شما می خواهید about-- برای نگه داشتن این حلقه در حال اجرا 1424 01:11:23,130 --> 01:11:27,950 دوباره و دوباره تا زمانی که؟ 1425 01:11:27,950 --> 01:11:30,819 >> رسید تا [نامفهوم] ارزش به آن مقدار برابر است. 1426 01:11:30,819 --> 01:11:31,610 ANDI PENG: دقیقا. 1427 01:11:31,610 --> 01:11:33,900 بنابراین شما می توانید در واقع فقط write-- ما حتی می توانید آن را بیشتر را ساده کنید. 1428 01:11:33,900 --> 01:11:35,630 ما فقط می توانید یک حلقه در حالی که، درست است؟ 1429 01:11:35,630 --> 01:11:39,380 بنابراین شما فقط می توانید loop-- ما می دانیم که آن را در حالی است. 1430 01:11:39,380 --> 01:11:42,850 اما در حال حاضر، من قصد دارم به "حلقه" - از طریق چه؟ 1431 01:11:42,850 --> 01:11:46,640 حلقه until-- چه چیزی است شرایط پایان دادن به ما؟ 1432 01:11:46,640 --> 01:11:47,510 من فکر می کنم من آن را شنیده. 1433 01:11:47,510 --> 01:11:48,530 من شنیده ام کسی آن را می گویند. 1434 01:11:48,530 --> 01:11:51,255 >> مخاطبان: ارزش برابر وسط. 1435 01:11:51,255 --> 01:11:52,255 ANDI PENG: بگو دوباره آن را. 1436 01:11:52,255 --> 01:11:54,470 رسید یا، تا زمانی که ارزش شما در جستجوی 1437 01:11:54,470 --> 01:11:58,470 برای به مقدار متوسط ​​برابر است. 1438 01:11:58,470 --> 01:12:00,280 >> ANDI PENG: چه اگر آن را در وجود ندارد؟ 1439 01:12:00,280 --> 01:12:03,113 اگر ارزش شما در جستجوی برای است که در واقع در این آرایه نیست؟ 1440 01:12:03,113 --> 01:12:05,890 رسید شما بازگشت 1. 1441 01:12:05,890 --> 01:12:08,850 >> ANDI PENG: اما چه چیزی ما می خواهیم حلقه تا زمانی که اگر ما یک شرایط؟ 1442 01:12:08,850 --> 01:12:09,350 آره. 1443 01:12:09,350 --> 01:12:11,239 >> رسید تا تنها یک ارزش وجود دارد؟ 1444 01:12:11,239 --> 01:12:13,530 ANDI PENG: شما می توانید حلقه until-- بنابراین شما می دانید که شما هستید 1445 01:12:13,530 --> 01:12:15,714 رفتن به یک مقدار حداکثر، درست است؟ 1446 01:12:15,714 --> 01:12:18,130 و شما می دانید که شما در حال رفتن به مقدار دقیقه، درست است؟ 1447 01:12:18,130 --> 01:12:20,379 از آنجا همچنین، این چیزی است که من را فراموش می گویند قبل، 1448 01:12:20,379 --> 01:12:22,640 این چیزی است که درباره جستجوی دودویی مهم 1449 01:12:22,640 --> 01:12:24,182 این است که آرایه شما در حال حاضر طبقه بندی شده اند. 1450 01:12:24,182 --> 01:12:26,973 از آنجا که هیچ راهی برای انجام وجود دارد این اگر ارزشهای فقط تصادفی است. 1451 01:12:26,973 --> 01:12:29,190 شما نمی دانید که اگر یکی بزرگتر از دیگری، درست است؟ 1452 01:12:29,190 --> 01:12:32,720 >> بنابراین شما می دانید که خود را حداکثر دقیقه خود را اینجا، درست است؟ 1453 01:12:32,720 --> 01:12:35,590 اگر شما در حال رفتن به راه اندازی شود حداکثر خود را در دقیقه شما و mid-- 1454 01:12:35,590 --> 01:12:38,470 اجازه دهید فقط فرض خود را اواسط ارزش here-- است 1455 01:12:38,470 --> 01:12:43,910 شما در حال رفتن به اساسا حلقه تا زمانی که حداقل خود است 1456 01:12:43,910 --> 01:12:47,510 در مورد همان حداکثر خود را، راست، و یا اگر حداکثر خود است همان دقیقه شما نیست. 1457 01:12:47,510 --> 01:12:48,040 درست؟ 1458 01:12:48,040 --> 01:12:51,340 چرا که وقتی که اتفاق می افتد، شما می دانید که شما در نهایت ضربه به همان مقدار است. 1459 01:12:51,340 --> 01:12:59,135 بنابراین شما به حلقه تا زمانی که می خواهید خود را در دقیقه کمتر یا to-- اوه برابر است، 1460 01:12:59,135 --> 01:13:01,510 کمتر از یا برابر با، راه دیگر around-- حداکثر است. 1461 01:13:01,510 --> 01:13:15,110 1462 01:13:15,110 --> 01:13:16,160 >> آیا این را حس؟ 1463 01:13:16,160 --> 01:13:18,810 من در زمان چند تلاش می کند تا که حق است. 1464 01:13:18,810 --> 01:13:21,869 اما حلقه تا زمانی که مقدار حداکثر خود اساسا تقریبا کمتر 1465 01:13:21,869 --> 01:13:23,410 از یا به حداقل خود را برابر، درست است؟ 1466 01:13:23,410 --> 01:13:25,201 این زمانی است که شما می دانید که شما همگرا است. 1467 01:13:25,201 --> 01:13:29,290 مخاطبان: هنگامی که حداکثر خود مقدار کمتر از حداقل باشد؟ 1468 01:13:29,290 --> 01:13:31,040 ANDI PENG: اگر شما در حفظ راه اندازی آن، که 1469 01:13:31,040 --> 01:13:32,380 چیزی است که ما می رویم در این انجام می شود. 1470 01:13:32,380 --> 01:13:33,460 فرقی میکنه؟ 1471 01:13:33,460 --> 01:13:35,750 حداقل و حداکثر فقط اعداد صحیح است که ما احتمالا 1472 01:13:35,750 --> 01:13:39,260 رفتن به خواهید برای ایجاد به نگه داشتن پیگیری که در آن ما به دنبال. 1473 01:13:39,260 --> 01:13:41,790 از آنجا که آرایه وجود دارد صرف نظر از آنچه ما انجام می دهیم. 1474 01:13:41,790 --> 01:13:45,030 مانند، ما در واقع از لحاظ جسمی نمی سفت کردن آرایه، درست است؟ 1475 01:13:45,030 --> 01:13:47,261 ما فقط تنظیم که در آن ما به دنبال. 1476 01:13:47,261 --> 01:13:48,136 فرقی میکنه؟ 1477 01:13:48,136 --> 01:13:48,472 >> مخاطبان: آره. 1478 01:13:48,472 --> 01:13:49,110 >> ANDI PENG: OK. 1479 01:13:49,110 --> 01:13:57,090 بنابراین اگر که شرایط برای حلقه ما است، چه چیزی ما را در داخل از این حلقه می خواهید؟ 1480 01:13:57,090 --> 01:13:58,700 چه می خواهیم به مایل به انجام؟ 1481 01:13:58,700 --> 01:14:02,390 بنابراین در حال حاضر، ما باید حداکثر و یک دقیقه، راست، 1482 01:14:02,390 --> 01:14:04,962 احتمالا ایجاد تا جایی. 1483 01:14:04,962 --> 01:14:07,170 ما قصد داریم به احتمالا می خواهید برای پیدا کردن یک میانه، درست است؟ 1484 01:14:07,170 --> 01:14:08,450 چگونه می خواهیم به قادر به پیدا کردن وسط؟ 1485 01:14:08,450 --> 01:14:09,491 mathematical-- چه خبر 1486 01:14:09,491 --> 01:14:11,079 مخاطبان: حداکثر به علاوه دقیقه تقسیم بر 2. 1487 01:14:11,079 --> 01:14:11,870 ANDI PENG: دقیقا. 1488 01:14:11,870 --> 01:14:20,300 1489 01:14:20,300 --> 01:14:21,620 فرقی میکنه؟ 1490 01:14:21,620 --> 01:14:25,780 و شما بچه ها ببینید که چرا ما نه تنها use-- چرا ما این کار را 1491 01:14:25,780 --> 01:14:27,850 به جای انجام فقط N 2 تقسیم شده است؟ 1492 01:14:27,850 --> 01:14:30,310 به این دلیل N یک ارزش است که رفتن به همان باقی بماند. 1493 01:14:30,310 --> 01:14:30,979 درست؟ 1494 01:14:30,979 --> 01:14:34,020 اما همانطور که ما حداقل ما تنظیم و حداکثر ارزش ها، آنها در حال رفتن را تغییر دهید. 1495 01:14:34,020 --> 01:14:36,040 و به عنوان یک نتیجه، متوسط ​​ما است که برای تغییر بیش از حد. 1496 01:14:36,040 --> 01:14:37,873 به همین دلیل ما می خواهیم برای انجام این کار در اینجا ببینید. 1497 01:14:37,873 --> 01:14:38,510 باشه. 1498 01:14:38,510 --> 01:14:41,600 >> و پس از آن، در حال حاضر که ما our-- پیدا کرده ام آره. 1499 01:14:41,600 --> 01:14:44,270 >> مخاطبان: فقط یک question-- سریع وقتی به شما می گویند حداقل و حداکثر، 1500 01:14:44,270 --> 01:14:46,410 فرض می کنیم که که در حال حاضر مرتب شده اند؟ 1501 01:14:46,410 --> 01:14:48,400 >> ANDI PENG: آره، که در واقع یک پیش شرط برای یک جستجوی دودویی، 1502 01:14:48,400 --> 01:14:49,816 که شما باید بدانید که آن را طبقه بندی شده اند. 1503 01:14:49,816 --> 01:14:53,660 همین دلیل است که مرتب سازی بر اساس، شما را در ارسال خود را مجموعه ای مشکل قبل از جستجوی دودویی خود را. 1504 01:14:53,660 --> 01:14:55,910 باشه. 1505 01:14:55,910 --> 01:14:58,876 بنابراین در حال حاضر ما می دانیم که در آن است که نقطه میانی ما است، چه چیزی می خواهید برای انجام در اینجا؟ 1506 01:14:58,876 --> 01:15:01,789 1507 01:15:01,789 --> 01:15:04,319 >> مخاطبان: ما می خواهیم به مقایسه که به یک دیگر. 1508 01:15:04,319 --> 01:15:05,110 ANDI PENG: دقیقا. 1509 01:15:05,110 --> 01:15:12,280 بنابراین شما در حال رفتن به مقایسه اواسط تا ارزش، درست است؟ 1510 01:15:12,280 --> 01:15:14,900 1511 01:15:14,900 --> 01:15:18,670 و چه می کند که به ما زمانی که ما مقایسه می کنید؟ 1512 01:15:18,670 --> 01:15:22,226 ما چه می خواهیم به انجام پس از آن؟ 1513 01:15:22,226 --> 01:15:25,389 >> مخاطبان: اگر مقدار بزرگتر است از اواسط، ما می خواهیم به آن را قطع کند. 1514 01:15:25,389 --> 01:15:26,180 ANDI PENG: دقیقا. 1515 01:15:26,180 --> 01:15:33,940 بنابراین اگر مقدار بزرگتر است از اواسط، ما 1516 01:15:33,940 --> 01:15:36,550 رفتن به می خواهم برای تغییر این حداقل و مکسز، درست است؟ 1517 01:15:36,550 --> 01:15:38,980 ما چه می خواهیم را تغییر دهید؟ 1518 01:15:38,980 --> 01:15:42,145 بنابراین اگر ما که ارزش است که در جایی در اینجا، آنچه شما ما را به تغییر دهید؟ 1519 01:15:42,145 --> 01:15:44,758 ما می خواهیم به ما تغییر حداقل به اواسط، درست است؟ 1520 01:15:44,758 --> 01:15:49,420 1521 01:15:49,420 --> 01:15:54,292 و پس از آن دیگری، اگر آن را در این است نیم، چه می خواهیم را تغییر دهید؟ 1522 01:15:54,292 --> 01:15:55,306 >> مخاطبان: حداکثر شما. 1523 01:15:55,306 --> 01:15:55,972 ANDI PENG: آره. 1524 01:15:55,972 --> 01:16:02,597 1525 01:16:02,597 --> 01:16:04,680 و سپس شما فقط رفتن برای نگه داشتن حلقه، درست است؟ 1526 01:16:04,680 --> 01:16:08,920 چون در حال حاضر، بعد از یک تکرار از طریق، شما حداکثر کردم اینجا. 1527 01:16:08,920 --> 01:16:10,760 و پس از آن شما می توانید یک اواسط دوباره حساب. 1528 01:16:10,760 --> 01:16:11,990 و پس از آن شما می توانید مقایسه کنید. 1529 01:16:11,990 --> 01:16:14,766 و شما در حال رفتن به رفتن ادامه تا دقیقه و مکسز 1530 01:16:14,766 --> 01:16:15,890 اساسا همگرا. 1531 01:16:15,890 --> 01:16:17,890 و این زمانی که شما می دانید که شما در پایان از آن ضربه. 1532 01:16:17,890 --> 01:16:20,280 و یا شما آن را پیدا کرده ام یا شما در آن نقطه ندارد. 1533 01:16:20,280 --> 01:16:23,170 >> آیا این حس را به همه؟ 1534 01:16:23,170 --> 01:16:26,020 1535 01:16:26,020 --> 01:16:26,770 باشه. 1536 01:16:26,770 --> 01:16:27,900 این بسیار مهم است، چرا که شما باید 1537 01:16:27,900 --> 01:16:29,760 را به نوشتن این کد در امشب خود را. 1538 01:16:29,760 --> 01:16:32,660 اما شما از بچه ها یک خیلی خوب از چیزی که باید انجام بدهند، 1539 01:16:32,660 --> 01:16:34,051 کدام خوب است. 1540 01:16:34,051 --> 01:16:34,550 باشه. 1541 01:16:34,550 --> 01:16:38,840 بنابراین ما در مورد هفت کردم بخش دقیقه باقی مانده است. 1542 01:16:38,840 --> 01:16:43,170 بنابراین ما قصد داریم به بحث در مورد این pset که ما انجام خواهد داد. 1543 01:16:43,170 --> 01:16:46,410 بنابراین pset به دو نیمه تقسیم شده است. 1544 01:16:46,410 --> 01:16:50,230 نیمه اول شامل اجرای پیدا 1545 01:16:50,230 --> 01:16:54,210 که در آن شما ارسال نامه جستجو خطی، جستجوی دودویی، و یک الگوریتم مرتب سازی. 1546 01:16:54,210 --> 01:16:56,690 >> پس این است که اولین زمان در یک pset که در آن 1547 01:16:56,690 --> 01:17:00,050 ما خواهید بود به شما بچه ها آنچه به نام کد توزیع است که کد 1548 01:17:00,050 --> 01:17:02,740 که ما از پیش نوشته شده، اما فقط برخی از قطعات را ترک کردن 1549 01:17:02,740 --> 01:17:04,635 برای شما به پایان نوشتن. 1550 01:17:04,635 --> 01:17:07,510 پس شما بچه ها، هنگامی که شما در این نگاه کد، شما ممکن است واقعا می ترسم. 1551 01:17:07,510 --> 01:17:08,630 اگر شما فقط دوست دارید، اه، من نمی دانم چه که انجام می دهند، 1552 01:17:08,630 --> 01:17:11,670 من نمی دانم، مانند، که به نظر می رسد خیلی پیچیده است، اه، استراحت. 1553 01:17:11,670 --> 01:17:12,170 مشکلی نیست. 1554 01:17:12,170 --> 01:17:12,930 دفعات بازدید: تنظیمات. 1555 01:17:12,930 --> 01:17:16,920 تنظیمات را به شما دقیقا توضیح آنچه را که همه از این برنامه ها انجام می دهند. 1556 01:17:16,920 --> 01:17:20,560 >> به عنوان مثال، یک برنامه است generate.c که با pset شما آمده است. 1557 01:17:20,560 --> 01:17:24,060 شما در واقع باید آن را لمس است، اما شما باید درک آنچه در آن انجام می دهند. 1558 01:17:24,060 --> 01:17:28,550 و generate.c، تمام آن را به انجام است هم تولید اعداد تصادفی 1559 01:17:28,550 --> 01:17:32,400 و یا شما می توانید آن یک دانه را، مانند یک تعداد پیش تعیین شده که طول می کشد، 1560 01:17:32,400 --> 01:17:34,140 و آن را تولید اعداد است. 1561 01:17:34,140 --> 01:17:37,170 بنابراین یک راه خاص به وجود پیاده سازی generate.c که در آن 1562 01:17:37,170 --> 01:17:42,760 شما فقط می توانید یک دسته از اعداد را برای شما برای تست روش های دیگر خود را در. 1563 01:17:42,760 --> 01:17:45,900 >> بنابراین اگر شما می خواهید برای به عنوان مثال، تست خود را پیدا کنید، 1564 01:17:45,900 --> 01:17:48,970 شما می خواهید برای اجرای generate.c، تولید یک دسته از اعداد، 1565 01:17:48,970 --> 01:17:50,880 و پس از آن اجرا تابع یاران خود را. 1566 01:17:50,880 --> 01:17:53,930 عملکرد یاران خود را است که در آن شما در واقع از نظر فیزیکی به نوشتن کد. 1567 01:17:53,930 --> 01:17:59,330 و از یاران فکر می کنم به عنوان یک فایل کتابخانه شما در حال نوشتن است که پیدا کردن که خواستار. 1568 01:17:59,330 --> 01:18:02,950 و به این ترتیب در helpers.c، شما انجام جستجو و مرتب سازی. 1569 01:18:02,950 --> 01:18:06,500 >> و پس از آن شما به اصل فقط همه آنها را با هم. 1570 01:18:06,500 --> 01:18:10,350 تنظیمات به شما خواهد گفت که چگونه به قرار داده است که در خط فرمان. 1571 01:18:10,350 --> 01:18:14,880 و شما قادر خواهید بود برای تست اینکه آیا یا نمی مرتب کردن و جستجوی خود را در حال کار. 1572 01:18:14,880 --> 01:18:15,870 خنک. 1573 01:18:15,870 --> 01:18:18,720 و آیا کسی در حال حاضر آغاز شده مشکل یا سوال مواجه می شوند 1574 01:18:18,720 --> 01:18:20,520 آنها در حال حاضر با این؟ 1575 01:18:20,520 --> 01:18:21,020 باشه. 1576 01:18:21,020 --> 01:18:21,476 >> مخاطبان: صبر کنید. 1577 01:18:21,476 --> 01:18:21,932 من یک سوال دارم. 1578 01:18:21,932 --> 01:18:22,844 >> ANDI PENG: آره. 1579 01:18:22,844 --> 01:18:28,390 >> مخاطبان: بنابراین من شروع به انجام جستجو خطی در helpers.c 1580 01:18:28,390 --> 01:18:29,670 و آن را واقعا نمی کند. 1581 01:18:29,670 --> 01:18:34,590 اما پس از آن بعد، متوجه شدم ما فقط باید آن را حذف کنید و انجام جستجوی دودویی. 1582 01:18:34,590 --> 01:18:36,991 بنابراین تفاوتی می کند اگر آن کار نمی کند؟ 1583 01:18:36,991 --> 01:18:39,700 1584 01:18:39,700 --> 01:18:41,510 >> ANDI PENG: پاسخ کوتاه این است که هیچ. 1585 01:18:41,510 --> 01:18:42,642 اما از آنجایی که ما not-- هستید 1586 01:18:42,642 --> 01:18:44,350 رسید اما هیچ کس در واقع چک کردن. 1587 01:18:44,350 --> 01:18:46,058 ANDI PENG: ما هرگز هستید رفتن به دید که. 1588 01:18:46,058 --> 01:18:49,590 اما شما احتمالا خواهید مطمئن مطمئن جستجوی خود را به کار است. 1589 01:18:49,590 --> 01:18:51,700 از آنجا که اگر خطی خود را جستجو کار نمی کند، 1590 01:18:51,700 --> 01:18:54,410 سپس شانس هستند باینری خود را جستجو است که به کار و همچنین. 1591 01:18:54,410 --> 01:18:56,646 از آنجا که شما مشابه منطق در هر دو آنها. 1592 01:18:56,646 --> 01:18:58,020 و نه، آن واقعا مهم نیست. 1593 01:18:58,020 --> 01:19:01,300 بنابراین تنها آنهایی که شما به نوبه خود در مرتب کردن و جستجوی دودویی. 1594 01:19:01,300 --> 01:19:02,490 آره. 1595 01:19:02,490 --> 01:19:06,610 >> و همچنین، بسیاری از بچه ها تلاش برای کامپایل helpers.c. 1596 01:19:06,610 --> 01:19:09,550 شما در واقع اجازه برای انجام این کار، به دلیل helpers.c 1597 01:19:09,550 --> 01:19:11,200 یک تابع اصلی ندارد. 1598 01:19:11,200 --> 01:19:13,550 و بنابراین فقط باید در واقع تدوین 1599 01:19:13,550 --> 01:19:18,670 تولید و پیدا کنید، چرا پیدا کردن تماس ها helpers.c و توابع درون آن. 1600 01:19:18,670 --> 01:19:20,790 به طوری که باعث اشکال زدایی درد در لب به لب. 1601 01:19:20,790 --> 01:19:22,422 اما این چیزی است که ما باید انجام دهیم. 1602 01:19:22,422 --> 01:19:23,880 رسید شما فقط همه را، درست است؟ 1603 01:19:23,880 --> 01:19:27,290 ANDI PENG: شما فقط می توانید همه به خوبی، آره. 1604 01:19:27,290 --> 01:19:28,060 باشه. 1605 01:19:28,060 --> 01:19:32,570 به طوری که آن را در شرایط از آنچه pset است از همه شما را به انجام. 1606 01:19:32,570 --> 01:19:35,160 اگر شما هر گونه سوال، احساس رایگان به من پس بخش بپرسید. 1607 01:19:35,160 --> 01:19:37,580 من برای، مانند، 20 دقیقه اینجا باشد. 1608 01:19:37,580 --> 01:19:40,500 >> و آره، pset است واقعا که بد نیست. 1609 01:19:40,500 --> 01:19:41,680 شما بچه ها باید باشه. 1610 01:19:41,680 --> 01:19:43,250 این، فقط به دنبال دستورالعمل. 1611 01:19:43,250 --> 01:19:47,840 نوع یک حس، منطقی، چه باید اتفاق می افتد و شما خوب باشد. 1612 01:19:47,840 --> 01:19:48,690 آیا بیش از حد می ترسم. 1613 01:19:48,690 --> 01:19:50,220 در بسیاری از کد وجود دارد در حال حاضر نوشته شده است. 1614 01:19:50,220 --> 01:19:53,011 آیا بیش از حد می ترسم اگر شما نمی درک آنچه همه از معناست. 1615 01:19:53,011 --> 01:19:54,749 اگر آن را در بسیاری، آن را کاملا خوب است. 1616 01:19:54,749 --> 01:19:55,790 و به ساعات اداری آمده است. 1617 01:19:55,790 --> 01:19:57,520 ما به شما کمک نگاهی به. 1618 01:19:57,520 --> 01:20:00,810 >> رسید با اضافی توابع، ما آن نگاه کردن؟ 1619 01:20:00,810 --> 01:20:03,417 >> ANDI PENG: بله، کسانی که در کد می باشد. 1620 01:20:03,417 --> 01:20:05,750 در این بازی از 15، نیمی از که در حال حاضر برای شما نوشته شده است. 1621 01:20:05,750 --> 01:20:09,310 بنابراین آن دسته از توابع هستند در حال حاضر در کد. 1622 01:20:09,310 --> 01:20:12,020 بله. 1623 01:20:12,020 --> 01:20:12,520 خیلی خوب. 1624 01:20:12,520 --> 01:20:14,000 خوب، بهترین شانس. 1625 01:20:14,000 --> 01:20:15,180 این یک روز نفرت انگیز است. 1626 01:20:15,180 --> 01:20:19,370 پس امیدوارم شما بچه ها احساس خیلی بد در مورد اقامت در داخل و برنامه نویسی. 1627 01:20:19,370 --> 01:20:22,133