1 00:00:00,000 --> 00:00:03,332 >> [عزف الموسيقى] 2 00:00:03,332 --> 00:00:06,490 >> ANDI بنغ: مرحبا بكم في الأسبوع 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 I متدرج في 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 لذلك أنا يمر على طول امتناني لبقية المشرفون الدوليون. 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، because-- على 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 بنغ: نعم. 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 بنغ: هذا صحيح، كان لدينا الآيس كريم في ساعات العمل الليلة الماضية. 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 بغض النظر عن ما المشرفون الدوليون، I أعتقد، وقد قائلا: 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 بنغ: نعم. 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 OK، بارد. 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-- صافية. 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، وهو غير صحيح. 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 >> لذلك كنت قد حصلت سنتا، والنقود المعدنية، ن، أعلن كل لأشياء مختلفة 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 بعد هنا، أصبح ن تقريب وسنت أصبح 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 نذهب أكثر من الدايمات. 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 القيم وضعت في array-- الآن الحق في ذلك، 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 وكلما تجد ذلك، لأنه مبادلة مع القيمة الأولى في array-- 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 بنغ: الحق. 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 بنغ: هناك نذهب. 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 بنغ: إذن أنت تريد الذهاب الى التبديل مع أول تلك المصفوفة، 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 بنغ: نعم. 526 00:27:05,276 --> 00:27:09,857 وذلك ما لا بالتكرار عبر نوع من يعني أننا ربما ستحتاج؟ 527 00:27:09,857 --> 00:27:10,440 ما نوع of-- 528 00:27:10,440 --> 00:27:12,057 >> الحضور: أوه، متغير إضافي؟ 529 00:27:12,057 --> 00:27:13,890 ANDI بنغ: ربما آخر للحلقة، أليس كذلك؟ 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 >> الحضور: A للحلقة. 541 00:27:51,500 --> 00:27:52,160 >> ANDI بنغ: A لحلقة؟ 542 00:27:52,160 --> 00:27:52,770 بالضبط. 543 00:27:52,770 --> 00:27:56,060 لذلك هذا هو على الارجح سيكون للحلقة. 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 بنغ: وإذا، أليس كذلك؟ 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 بنغ: --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 ن سيكون الرقم الذي يخبرك كمية من القيم 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 ولقد حصلت للتو على لحلقة هنا أن بطباعة مجموعة غير مصنفة. 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 بنغ: نعم، ويشعر مجانا 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 بنغ: نعم، جيد. 590 00:30:10,690 --> 00:30:15,220 >> الحضور: أنا أقل من طول المصفوفة. 591 00:30:15,220 --> 00:30:19,630 >> ANDI بنغ: حتى تبقي في مانع هنا، لأننا 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 >> الحضور: أليس يكون ن ناقص 1؟ 603 00:30:51,948 --> 00:30:54,440 ANDI بنغ: انها تسير ن ناقص 1، بالضبط. 604 00:30:54,440 --> 00:30:57,379 هل هذا معقول، لماذا انها ن ناقص 1، الجميع؟ 605 00:30:57,379 --> 00:30:58,920 انها لصفائف المفهرسة الصفر. 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 بنغ: هذا هو سؤال جيد حقا. 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 بنغ: الحد الأدنى، هناك نذهب. 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 بنغ: ط، بالضبط. 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 بنغ: بالضبط. 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 >> وحتى الآن نريد أن نضيف لحلقة هنا هذا 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 ي. 670 00:33:25,760 --> 00:33:27,301 >> ANDI بنغ: نعم، ي يبدو جيدا بالنسبة لي. 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-- ذلك مرة أخرى، ي هو أقل من ن ناقص 1، ثم ي ++. 674 00:33:40,395 --> 00:33:41,103 ANDI بنغ: العظمى. 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 منظمة الشفافية الدولية تريد استخدامها إذا كنا تريد أن تحقق شيئا؟ 685 00:34:08,389 --> 00:34:09,360 >> الحضور: تعليمة if. 686 00:34:09,360 --> 00:34:10,485 >> ANDI بنغ: تعليمة if. 687 00:34:10,485 --> 00:34:13,155 if-- ذلك وماذا سيكون الشرط الذي نريده داخل 688 00:34:13,155 --> 00:34:13,988 من إذا بياننا؟ 689 00:34:13,988 --> 00:34:18,255 690 00:34:18,255 --> 00:34:22,960 >> الجمهور: إذا كانت قيمة ي أقل من قيمة i-- 691 00:34:22,960 --> 00:34:24,600 >> ANDI بنغ: بالضبط. 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 حتى إذا array-- ما كان ذلك؟ 695 00:34:30,465 --> 00:34:31,090 قل ذلك مجددا. 696 00:34:31,090 --> 00:34:39,590 >> الحضور: إذا كان صفيف ي أقل من مجموعة ط، ثم فإننا تغيير دقيقة. 697 00:34:39,590 --> 00:34:41,590 وبالتالي فإن الحد الأدنى سيكون ي. 698 00:34:41,590 --> 00:34:44,590 699 00:34:44,590 --> 00:34:47,249 >> ANDI بنغ: هل هذا معقول؟ 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 بنغ: نعم، هذا كان إجمالي من نوعها. 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 بنغ: متغير مؤقت. 715 00:35:21,370 --> 00:35:22,570 لذلك دعونا نفعل مؤقت الباحث. 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 لذلك دعونا نفعل مؤقت الباحث. 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 بنغ: انها صعبة بعض الشيء. 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 >> الحضور: ويمكن أن يكون مجموعة ط. 730 00:35:52,250 --> 00:35:53,666 >> ANDI بنغ: نعم، دعونا نفعل مجموعة ط. 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 الحضور: مجموعة ط يساوي صفيف ي. 734 00:36:00,680 --> 00:36:07,154 735 00:36:07,154 --> 00:36:08,070 ANDI بنغ: وأخيرا؟ 736 00:36:08,070 --> 00:36:12,070 الحضور: مجموعة-ي يساوي مجموعة ط. 737 00:36:12,070 --> 00:36:14,525 الحضور: أو صفيف ي متساوين مصفوفة temp-- أو مؤقت. 738 00:36:14,525 --> 00:36:17,135 739 00:36:17,135 --> 00:36:19,430 >> ANDI بنغ: 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، ونحن محاولة استخدام صفيف ي؟ 745 00:36:44,320 --> 00:36:47,022 ولكن حيث لا وجود لها إلا في ي؟ 746 00:36:47,022 --> 00:36:48,402 >> الحضور: في لحلقة. 747 00:36:48,402 --> 00:36:49,110 ANDI بنغ: الحق. 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 بنغ: الرجال، ومحاولة لنلقي نظرة دعنا 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 بنغ: هل هذا يساوي أنا؟ 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 بنغ: OK. 765 00:37:40,210 --> 00:37:42,040 جيدا أن يحل، نوع من، مشاكلنا. 766 00:37:42,040 --> 00:37:47,265 ولكن هذا لا يزال لا يحل مشكلة ماذا يحدث إذا 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 بنغ: حسنا، يمكننا أن نحاول ذلك. 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 مكتب الرئيس، اسمحوا لي أن نتخلص من ذلك. 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 بنغ: أو توقف. 794 00:38:54,890 --> 00:38:55,670 الحضور: أو توقف. 795 00:38:55,670 --> 00:38:55,930 ANDI بنغ: نعم. 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 ثم ندخل الثانية لدينا ل حلقة، إذا صفيف ي أقل من صفيف ط، 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 >> الحضور: لذلك ينبغي أن إذا الحد الأدنى، كل هكذا- يضرب لا ينبغي أن 818 00:39:52,430 --> 00:39:55,424 تكون داخل لأول مرة للحلقة؟ 819 00:39:55,424 --> 00:39:57,340 ANDI بنغ: لا، لأن كنت لا تزال ترغب في اختبار. 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 حتى الآن كنت التحقق من وجود مؤشر مجموعة من ي أقل من مجموعة 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 لا يمكنك وضع ي يساوي أنا؟ 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 ونحن في طريقنا للذهاب إلى ن ناقص 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 الآن لدينا في الداخلية للحلقة، ونحن تنوي القيام به ي ط يساوي إلى 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 >> الحضور: ي زائد 1. 851 00:41:20,925 --> 00:41:21,716 ANDI بنغ: بالضبط. 852 00:41:21,716 --> 00:41:24,184 853 00:41:24,184 --> 00:41:27,350 ثم كنت تريد الذهاب الى مجموعة الحد الأدنى بك يساوي ي زائد 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 هل الرجال فهم لماذا هو زائد 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 للحصول على حلقة، لكثافة العمليات ط يساوي 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 لذلك ي، هنا، هو الذهاب إلى i قدم المساواة، والتي هي 0. 874 00:42:40,440 --> 00:42:46,320 ثم إذا مجموعة ي بالاضافة الى انني، التي هو الذي انتهى المقبل، كما أقل 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 و ي يساوي 0. 878 00:43:01,610 --> 00:43:05,210 وهذا هو الحد الأدنى لقيمة لدينا. 879 00:43:05,210 --> 00:43:09,950 إذا صفيف ي بالإضافة إلى 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 >> وذلك عند الرجال كانوا مجرد وجود ي من قبل، وكنت لا تبحث في واحد 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 931 00:46:00,689 --> 00:46:01,980 هو نفس الشيء كما ن تربيع. 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 الحضور: ن المربعة. 943 00:46:29,366 --> 00:46:30,740 ANDI بنغ: هو مربع ون، والحق. 944 00:46:30,740 --> 00:46:36,986 حتى طريقة سهلة للتفكير في هذا هو مثل، أي وقت لديك اثنين من تداخل للحلقات، 945 00:46:36,986 --> 00:46:38,110 انها ستكون مربع ن. 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 حتى في هذه الحالة، كنت تشغل ن ن مرات مربع، والتي is-- آسف، 950 00:46:48,640 --> 00:46:50,505 ن ن مرات، والذي يساوي مربع ن. 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 كما سيتم مربع ن. 964 00:47:24,790 --> 00:47:26,480 كل ثلاثة من هذه سوف المربعة ن. 965 00:47:26,480 --> 00:47:29,653 هل الجميع واضحة عن السبب وتربيع وقت ن؟ 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 مرة ن ناقص 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 بنغ: نعم، حتى أنت محق تماما. 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 وأنت تسير لتشغيل من خلال ن مرات أول مرة، أليس كذلك؟ 1025 00:50:30,320 --> 00:50:33,200 وانهم ذاهبون لتشغيل من خلال ن ناقص 1 للمرة الثانية، أليس كذلك؟ 1026 00:50:33,200 --> 00:50:37,130 ثم كنت تريد الذهاب للحفاظ على الذهاب، ن الألغام 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 وصولا الى ن المربعة. 1030 00:50:49,784 --> 00:50:51,700 كنت ذاهب للحصول على جزء غريب هناك. 1031 00:50:51,700 --> 00:50:53,892 وهكذا نعرف تماما أن ن تربيع دائما 1032 00:50:53,892 --> 00:50:55,350 الأسبقية على الكسر. 1033 00:50:55,350 --> 00:50:58,450 وحتى في هذه الحالة، والأسوأ سيكون وقت يتم تربيع ن. 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 >> الحضور: ن. 1039 00:51:09,565 --> 00:51:10,690 ANDI بنغ: انها ن، بالضبط. 1040 00:51:10,690 --> 00:51:11,600 ولماذا هو ن؟ 1041 00:51:11,600 --> 00:51:13,850 الحضور: لأنك فقط يجب أن تحقق في كل مرة. 1042 00:51:13,850 --> 00:51:14,770 ANDI بنغ: بالضبط. 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 حتى في هذه الحالة، انها مجرد ن أو عدد من الخطوات التي فقط 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 >> الحضور: ن المربعة. 1094 00:53:51,490 --> 00:53:52,573 >> ANDI بنغ: هو مربع ن و. 1095 00:53:52,573 --> 00:53:53,730 ولماذا المربعة ن؟ 1096 00:53:53,730 --> 00:53:57,562 >> الحضور: لأنه في ترتيب عكسي، لديك 1097 00:53:57,562 --> 00:54:02,619 للذهاب من خلال الأوقات ن، ن الذي is-- 1098 00:54:02,619 --> 00:54:03,660 ANDI بنغ: نعم، بالضبط. 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 وهكذا تماما، وأنت تسير لجعل ون مرات تمريرة أخرى ن تمر، التي 1105 00:54:20,290 --> 00:54:21,750 ون المربعة. 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 >> الحضور: ن ناقص 1، وذلك لأن وتربيع بالفعل أول واحد. 1109 00:54:28,840 --> 00:54:30,270 >> ANDI بنغ: لذا، على مقربة. 1110 00:54:30,270 --> 00:54:31,850 الجواب هو في الواقع ن. 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 >> حتى في أفضل السيناريوهات، انها في الواقع مجرد ستكون ن. 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 بنغ: نعم. 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 لذلك دعونا نقول فقط أن يكون لديك مجموعة من العناصر ن، أليس كذلك؟ 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 وذلك بدلا من تشغيل نفسه مع مجمل عناصر ن، 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 بنغ: نعم. 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 بنغ: بالضبط. 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 >> الحضور: هو أسوأ حالة ن سجل ن؟ 1279 01:02:25,269 --> 01:02:26,060 ANDI بنغ: بالضبط. 1280 01:02:26,060 --> 01:02:29,380 ولماذا ن ن تسجيل. 1281 01:02:29,380 --> 01:02:32,230 >> الحضور: أليس لأنه يصبح أضعافا مضاعفة بشكل أسرع، 1282 01:02:32,230 --> 01:02:35,390 لذلك مثل وظيفة من أن بدلا من مجرد كونها ببساطة ن 1283 01:02:35,390 --> 01:02:37,529 المربعة أو شيء من هذا؟ 1284 01:02:37,529 --> 01:02:38,320 ANDI بنغ: بالضبط. 1285 01:02:38,320 --> 01:02:40,750 ذلك هو السبب في أن وقت التشغيل على هذا السجل ن 1286 01:02:40,750 --> 01:02:44,310 n غير because-- ما أنت به في كل خطوة من هذه الخطوات؟ 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 وحتى إذا كان لديك فقط ل تحقق شيء واحد، وهذا ن. 1297 01:03:10,330 --> 01:03:13,420 وهكذا كنت نوع من ضرب اثنين معا. 1298 01:03:13,420 --> 01:03:17,660 لذلك فمن وكأنك حصلت على هذا النهائي تحقق من N إلى هنا مع سجل ن 1299 01:03:17,660 --> 01:03:18,390 حتى هنا. 1300 01:03:18,390 --> 01:03:21,060 وإذا ضرب لهم، وهذا ن ن تسجيل. 1301 01:03:21,060 --> 01:03:26,100 >> وحتى أفضل الأحوال والأسوأ حالة والمتوقع كلها ن ن تسجيل. 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-- ن 1308 01:03:39,950 --> 01:03:41,660 مربع، انها ليست فعالة جدا. 1309 01:03:41,660 --> 01:03:47,060 وحتى هذا ن سجل 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 >> كنت قد حصلت على بعض السجل ن ل. 1313 01:03:55,420 --> 01:03:58,190 كنت قد حصلت على بعض السجل سجل ن ل. 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 كانوا يبحثون عن إلى قيم، والتي هو array-- أوه، أنا بالتأكيد وضع 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 بنغ: نعم، حصلت لك. 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 OK، بارد. 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 لذلك نفترض أننا قد حصلت على هذا جميل مجموعة صغيرة مع القيم ن في ذلك. 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 الحضور: مجرد آخر للحلقة؟ 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 بنغ: هذا واحد هو صعبة بعض الشيء. 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 بنغ: بالضبط. 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 بنغ: قل ذلك مرة أخرى. 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 بنغ: ماذا لو انها ليست في وجود؟ 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 بنغ: ولكن ما نريد حلقة حتى لو كان لدينا حالة؟ 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 بنغ: يمكنك حلقة 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 بنغ: اذا واصلتم تعديله، التي 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 بنغ: 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 بنغ: بالضبط. 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 بدلا من مجرد القيام مقسمة ن بنسبة 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 بنغ: نعم، هذا الواقع شرط مسبق لبحث ثنائي، 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 بنغ: بالضبط. 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 بنغ: بالضبط. 1515 01:15:26,180 --> 01:15:33,940 حتى إذا كانت قيمة أكبر من منتصف، ونحن 1516 01:15:33,940 --> 01:15:36,550 تريد الذهاب الى تغيير هذه الحد الأدنى وmaxes، أليس كذلك؟ 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 بنغ: نعم. 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 وأنت تسير على الاستمرار حتى دقيقة وmaxes 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 إذا كنت ترغب فقط، آه، I لا أعرف ما الذي يفعل، 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 >> لذلك إذا أردت، ل سبيل المثال، test البحث الخاص بك، 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 بنغ: نعم. 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 بنغ: الجواب باختصار هو لا. 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 بنغ: نحن أبدا سنرى ذلك. 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 بنغ: يمكنك فقط جعل جميع أيضا، نعم. 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 بنغ: نعم، تلك هي في التعليمات البرمجية. 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