1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [القسم 3] [أقل راحة] 2 00:00:03,000 --> 00:00:05,000 >> [نيت Hardison] [جامعة هارفارد] 3 00:00:05,000 --> 00:00:08,000 >> [هذا CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:10,000 >> حسنا، دعونا نبدأ. 5 00:00:10,000 --> 00:00:13,000 مرحبا بكم في الأسبوع 4 من CS50. 6 00:00:13,000 --> 00:00:19,000 إذا يا رفاق فتح مستعرض ويب وفتح pset 3، 7 00:00:19,000 --> 00:00:23,000 يتبارى مع CS50، ونحن في طريقنا للبدء في الذهاب إليه 8 00:00:23,000 --> 00:00:26,000 من خلال قسم من الأسئلة هناك. 9 00:00:26,000 --> 00:00:32,000 تماما مثل الاسبوع الماضي، سنكون في العمل CS50 المسافات، 10 00:00:32,000 --> 00:00:35,000 إذا عليك سحب أيضا أن ما يصل أيضا، 11 00:00:35,000 --> 00:00:43,000 وإذا كنت تمضي قدما وزيارة هذا الرابط الذي أنا عندي هنا في الأعلى. 12 00:00:43,000 --> 00:00:45,000 حان الوقت للبدء. 13 00:00:45,000 --> 00:00:51,000 لدينا برنامجنا مرحبا قليلا هنا. مجنون لا شيء. 14 00:00:51,000 --> 00:00:55,000 واحد من أول الأشياء التي أريد القيام به مع رفاق اليوم هو الذهاب على بعض الحلول 15 00:00:55,000 --> 00:00:58,000 إلى المجموعة المشكلة 1، نوع من الحلول سبيل المثال، 16 00:00:58,000 --> 00:01:03,000 فقط حتى تتمكن من الحصول على ما نرى لأنواع من الموظفين ورمز الكتابة، 17 00:01:03,000 --> 00:01:07,000 ما هي أنواع الطلاب التعليمات البرمجية الأخرى والكتابة، 18 00:01:07,000 --> 00:01:10,000 ويكون لك نلقي نظرة على ذلك لأنني أعلم أنه غريب 19 00:01:10,000 --> 00:01:14,000 عند إرسال حل لمشكلة مجموعة والحصول على تعليقات 20 00:01:14,000 --> 00:01:18,000 على النسخة الخاصة بك، ولكن أحيانا يكون من المفيد أن نرى كيف يمكن للناس الآخرين فعل ذلك، 21 00:01:18,000 --> 00:01:22,000 وخاصة تلك التي هي لطيفة تبحث. 22 00:01:22,000 --> 00:01:27,000 بالنسبة للجزء الاكبر، وقد أعجب حقا مع الحلول التي أنتجت يا رفاق. 23 00:01:27,000 --> 00:01:31,000 أنا لم تبدأ بعد النظر في مجموعة 2S الخاص مشكلة، ولكن إذا كنت مثل أي شيء كانوا أول، 24 00:01:31,000 --> 00:01:34,000 وهذا يعني شيئا ولكن الأشياء الجيدة. 25 00:01:34,000 --> 00:01:40,000 >> اذا نظرتم الى التنقيحات بلدي، لنبدأ على طول الطريق في مراجعة 1، 26 00:01:40,000 --> 00:01:47,000 ونحن في طريقنا لإلقاء نظرة سريعة على حل ماريو. 27 00:01:47,000 --> 00:01:54,000 إذا كنت سحب هذا الأمر، وهذه البرامج التي نحن في طريقنا إلى تقديم صحيحة. 28 00:01:54,000 --> 00:01:56,000 لم تكن هناك قضايا صحة مع هذه المشاكل، ولكن بدلا من ذلك، 29 00:01:56,000 --> 00:01:59,000 نريد أن نتحدث قليلا عن القضايا تصميم مختلف 30 00:01:59,000 --> 00:02:03,000 كانت تستخدم ذلك هنا. 31 00:02:03,000 --> 00:02:08,000 واحدة من الأشياء التي كانت مثيرة للاهتمام حول حل 32 00:02:08,000 --> 00:02:11,000 هو أنه يستخدم هذا بناء جديد يسمى الجنيه تعريف، 33 00:02:11,000 --> 00:02:15,000 في بعض الأحيان كما يشار إلى تجزئة تعريف. 34 00:02:15,000 --> 00:02:18,000 اسمحوا لي أن التكبير في ذلك هنا. 35 00:02:18,000 --> 00:02:24,000 A # تعريف يسمح لك لإعطاء أسماء لهذه الأرقام في البرنامج. 36 00:02:24,000 --> 00:02:28,000 في هذه الحالة، من أقصى ارتفاع هرم في ماريو 37 00:02:28,000 --> 00:02:34,000 و23 و بدلا من وضع 23 في بلدي رمز 38 00:02:34,000 --> 00:02:37,000 نود أن نشير إلى أنه من الصعب الترميز 23 - 39 00:02:37,000 --> 00:02:43,000 وبدلا من ذلك يعطي MAX_HEIGHT اسم لهذا العدد، 40 00:02:43,000 --> 00:02:48,000 بحيث أسفل هنا في حلقة افعل حين بلدي 41 00:02:48,000 --> 00:02:51,000 يمكنك الرجوع إلى الواقع MAX_HEIGHT 42 00:02:51,000 --> 00:02:55,000 بدلا من وضع رقم 23 فيه. 43 00:02:55,000 --> 00:02:57,000 [طالب] ما هو الاستفادة من ذلك؟ 44 00:02:57,000 --> 00:02:59,000 هذا هو السؤال الكبير. 45 00:02:59,000 --> 00:03:03,000 واحد هو سهولة القراءة. 46 00:03:03,000 --> 00:03:08,000 وميزة استخدام هذا تعريف # هو سهولة القراءة. 47 00:03:08,000 --> 00:03:11,000 عندما أنا أقرأ هذا الرمز، أستطيع أن أرى ما يحدث. 48 00:03:11,000 --> 00:03:15,000 >> أستطيع أن أرى في هذه الحالة هنا أننا اختبار 49 00:03:15,000 --> 00:03:19,000 لارتفاع كونها <0، وهو ما كان يمكن أن يعرف أيضا 50 00:03:19,000 --> 00:03:22,000 أن تكون على ارتفاع الحد الأدنى أو الحد الأدنى على ارتفاع. 51 00:03:22,000 --> 00:03:25,000 ميزة أخرى هي أن أستطيع أن أقرأ ثم بقية خط لرؤية 52 00:03:25,000 --> 00:03:30,000 أننا أيضا فحص للتأكد من أن ارتفاع ليس أكبر من ارتفاع ماكس، 53 00:03:30,000 --> 00:03:35,000 لأننا في طريقنا للتواصل في حين أن ارتفاع أكبر من ارتفاع كحد أقصى. 54 00:03:35,000 --> 00:03:40,000 ميزة أخرى هي، إذا كنت تصغير قليلا هنا، 55 00:03:40,000 --> 00:03:49,000 إذا قمت بتشغيل هذا البرنامج وأنا تشغيله، ويقول، مع 23 في الوقت الراهن، 56 00:03:49,000 --> 00:03:52,000 فإنه سيتم طباعة كافة الصفوف 23 فقط من هذا القبيل. 57 00:03:52,000 --> 00:03:54,000 ولكن أردت أن أقول تغيير ارتفاع ماكس، 58 00:03:54,000 --> 00:03:57,000 والآن أريد أن يحد من أقصى ارتفاع من الأهرامات 59 00:03:57,000 --> 00:04:06,000 لتكون فقط أقول أنا، الذي كان غير تقليدي. 60 00:04:06,000 --> 00:04:14,000 # تشمل ، تعريف # MAX_HEIGHT، 61 00:04:14,000 --> 00:04:18,000 ودعونا نقول اننا نريد تعيين يساوي 10. 62 00:04:18,000 --> 00:04:22,000 الآن في هذه المرحلة، وكان كل ما كان علي القيام به هو تغيير في هذا الموقع واحد. 63 00:04:22,000 --> 00:04:27,000 لا أستطيع إعادة ترجمة التعليمات البرمجية، والآن إذا حاولت اكتب في و12، 64 00:04:27,000 --> 00:04:30,000 وسوف يدفع لي مرة أخرى. 65 00:04:30,000 --> 00:04:33,000 في هذه الحالة، نحن نستخدم فقط MAX_HEIGHT مرة واحدة. 66 00:04:33,000 --> 00:04:37,000 انها ليست بهذا الحجم من المتاعب للذهاب في 67 00:04:37,000 --> 00:04:40,000 وتغييره في حلقة بينما إذا كنت في حاجة إليها. 68 00:04:40,000 --> 00:04:44,000 ولكن في البرامج التي كنت الرجوع إلى نفس الرقم السحري 69 00:04:44,000 --> 00:04:47,000 مرارا وتكرارا، وهذا تعريف # آلية حقا هو مفيد 70 00:04:47,000 --> 00:04:52,000 لأنك مجرد تغيير مرة واحدة في الجزء العلوي من الملف-IT-لهم هذا عادة حيث يمكنك وضع 71 00:04:52,000 --> 00:04:57,000 ويتسرب التغيير من خلال ما تبقى من الملف. 72 00:04:57,000 --> 00:05:02,000 >> بدا أمور أخرى أردت أن نلاحظ في هذه المهمة التي اعتقدت لطيف، 73 00:05:02,000 --> 00:05:05,000 كان واحدا من تسمية المتغيرات. 74 00:05:05,000 --> 00:05:14,000 ترى هنا أن لدينا متغيرات صحيحا دعا صف ويسمى الارتفاع. 75 00:05:14,000 --> 00:05:20,000 مسافات، التجزئة، فإنه يساعد على جعل رمز قليلا أكثر قابلية للقراءة، 76 00:05:20,000 --> 00:05:25,000 يجعل من قليلا أكثر قابلية للفهم ما يجري في الواقع على. 77 00:05:25,000 --> 00:05:31,000 هذا هو على النقيض من استخدام، ويقول، رسائل عشوائية 78 00:05:31,000 --> 00:05:35,000 أو مجرد الهراء تماما. 79 00:05:35,000 --> 00:05:39,000 والشيء النهائي سوف نشير إلى أنه في لحلقات، 80 00:05:39,000 --> 00:05:45,000 في كثير من الأحيان هذه المتغيرات مكرر، هذه العدادات التي تستخدمها في عملك لحلقات، 81 00:05:45,000 --> 00:05:51,000 من المألوف والتقليدي لبدء لهم إما أنا وثم ي ثم ك 82 00:05:51,000 --> 00:05:54,000 ويجري من هناك إذا كنت بحاجة إلى المزيد من المتغيرات، 83 00:05:54,000 --> 00:05:56,000 وهذا هو مجرد اتفاقية. 84 00:05:56,000 --> 00:05:58,000 هناك الكثير من الاتفاقيات. 85 00:05:58,000 --> 00:06:00,000 ذلك يعتمد على لغة البرمجة التي تستخدمها. 86 00:06:00,000 --> 00:06:04,000 ولكن في C، ونحن نبدأ عادة مع ط. 87 00:06:04,000 --> 00:06:08,000 فإنه لا معنى لاستخدام، مثلا، أو ب 88 00:06:08,000 --> 00:06:13,000 تبعا للحالة. 89 00:06:13,000 --> 00:06:15,000 هذا كل شيء لهذا واحد. 90 00:06:15,000 --> 00:06:25,000 إذا كنت سحب الان مراجعة 2، سترى ماريو آخر، 91 00:06:25,000 --> 00:06:29,000 وهذا واحد يشبه الآخر الذي رأيناه للتو، 92 00:06:29,000 --> 00:06:32,000 ولكنه نوع من شيء بارد. 93 00:06:32,000 --> 00:06:38,000 إذا نظرنا إلى هذا القسم هنا داخل الداخلية للحلقة، 94 00:06:38,000 --> 00:06:44,000 الذي يستخدمونه بعض بناء الجملة مجنون يبحث هنا في هذا الخط. 95 00:06:44,000 --> 00:06:47,000 وهذا ما يسمى مشغل الثلاثي. 96 00:06:47,000 --> 00:06:53,000 وهو بيان والا اذا مكثفة في سطر واحد. 97 00:06:53,000 --> 00:06:57,000 الشرط هو هذا الجزء داخل أقواس. 98 00:06:57,000 --> 00:07:05,000 انها يتساوى مع من يقول إن ارتفاع <ي - ط - 1. 99 00:07:05,000 --> 00:07:10,000 ثم ما محتويات أنه إذا كتلة سيكون هي الفضاء 100 00:07:10,000 --> 00:07:16,000 ثم محتويات ما هي آخر سيكون هذا #. 101 00:07:16,000 --> 00:07:20,000 انها اساسا تعيين مساحة لهذا المتغير. 102 00:07:20,000 --> 00:07:24,000 انها تضع مسافة في محتويات متغير كتلة، 103 00:07:24,000 --> 00:07:29,000 إذا تم تحقيق هذا الشرط، وإذا لم يتحقق الشرط، 104 00:07:29,000 --> 00:07:32,000 ثم متغير كتلة يحصل على هذا #. 105 00:07:32,000 --> 00:07:37,000 وبعد ذلك، بالطبع، بدلا من بناء سلسلة كاملة 106 00:07:37,000 --> 00:07:43,000 وطباعة كل شيء في نهاية هذا الحل يطبع بها حرف واحد في كل مرة. 107 00:07:43,000 --> 00:07:48,000 رائع. 108 00:07:48,000 --> 00:07:53,000 >> آخر زوجين من الأشياء للنظر في. سوف ننتقل إلى الجشع. 109 00:07:53,000 --> 00:07:58,000 الآن إذا نظرنا إلى الجشع، وهذا الحل الأول 110 00:07:58,000 --> 00:08:00,000 # يستخدم هذه يعرف قليلا جدا. 111 00:08:00,000 --> 00:08:06,000 لدينا تعريف واحد ثابت لكل من أرقام مختلفة في هذا البرنامج. 112 00:08:06,000 --> 00:08:12,000 لدينا واحدة لسنتا لكل دولار، واحدة للأرباع، الدايمات، النيكل، والبنسات، 113 00:08:12,000 --> 00:08:15,000 والآن إذا كنا انتقل لأسفل وقراءة الرمز، 114 00:08:15,000 --> 00:08:22,000 يمكننا أن نرى مستوى الطباعة حلقة افعل كل شيء في حين. 115 00:08:22,000 --> 00:08:25,000 هو نوع من جوهر هذه المشكلة إدراك أن 116 00:08:25,000 --> 00:08:29,000 كنت في حاجة لتحويل تعويم أن تقرأ في من المستخدم إلى عدد صحيح 117 00:08:29,000 --> 00:08:32,000 للقيام بدقة الرياضيات، وذلك لأن 118 00:08:32,000 --> 00:08:36,000 مع أرقام الفاصلة العائمة، مثل تحدثنا عنها في محاضرة لفترة وجيزة، 119 00:08:36,000 --> 00:08:41,000 انها ليست ممكنة لتمثيل كل قيمة واحدة بدقة على خط الأعداد 120 00:08:41,000 --> 00:08:47,000 لأن هناك العديد من القيم ما لا نهاية بين 3 و، يقول، 3.1 حتى. 121 00:08:47,000 --> 00:08:54,000 هل يمكن أن يكون 3.01 و3،001 3،0001 و، ويمكنك الاستمرار. 122 00:08:54,000 --> 00:09:00,000 كلما اتضح كنت تعمل مع المال، وتريد في كثير من الأحيان لتحويله 123 00:09:00,000 --> 00:09:05,000 في شكل صحيح بحيث كنت لا تفقد أجر ضئيل وهذا النوع من الاشياء. 124 00:09:05,000 --> 00:09:09,000 يفعل ذلك وكان التقريب الرئيسية. 125 00:09:09,000 --> 00:09:14,000 استخدام هذا الحل واضحة تماما، خوارزمية كبيرة، 126 00:09:14,000 --> 00:09:17,000 التي decremented عدد سنتا المتبقية، أولا من قبل جهات، 127 00:09:17,000 --> 00:09:19,000 ثم الدايمات، ثم النيكل، ثم البنسات، 128 00:09:19,000 --> 00:09:24,000 وإضافة إلى عدد من القطع النقدية في كل مرة. 129 00:09:24,000 --> 00:09:31,000 >> حل آخر أن سنرى، وأنا التصغير والذهاب إلى التنقيح 4، 130 00:09:31,000 --> 00:09:40,000 كان له بداية ولكن مشابهة جدا DIV تستخدم بدلا زارة الدفاع و 131 00:09:40,000 --> 00:09:44,000 الحق أكثر من هنا لحساب عدد من سنتات. 132 00:09:44,000 --> 00:09:50,000 هذا، وعدد من الجهات يساوي عدد سنتا مقسوما على 25، 133 00:09:50,000 --> 00:09:53,000 والسبب هذا يعمل لأن نقوم به قسمة عدد صحيح، 134 00:09:53,000 --> 00:09:58,000 لذلك فمن نافين ما تبقى. 135 00:09:58,000 --> 00:10:02,000 [طالب] هل لدينا للتعليق على البحث؟ 136 00:10:02,000 --> 00:10:05,000 انها حقا يتوقف. 137 00:10:05,000 --> 00:10:08,000 [طالب] أنت أكثر من رمز التعليق هنا. 138 00:10:08,000 --> 00:10:16,000 نعم، وحتى أن هناك مجموعة من الفلسفات المختلفة في هذا الشأن. 139 00:10:16,000 --> 00:10:21,000 فلسفتي الشخصية هي أن التعليمات البرمجية في الحقيقة الحقيقة، 140 00:10:21,000 --> 00:10:24,000 مثل التعليمات البرمجية هو ما المنفذة فعليا على جهاز الكمبيوتر، 141 00:10:24,000 --> 00:10:29,000 وهكذا ينبغي أن تكون قابلة للقراءة التعليمات البرمجية ممكن للا تتطلب الكثير من التعليقات و. 142 00:10:29,000 --> 00:10:33,000 وقال أنه عندما تقومون به الأشياء التي هي نوع من صعبة رياضيا 143 00:10:33,000 --> 00:10:38,000 أو حسابيا، أنه من الجيد أن تلك التعليق بحيث يمكنك 144 00:10:38,000 --> 00:10:43,000 إضافة بعدا جديدا، طبقة إضافية لمن يقرأ التعليمات البرمجية. 145 00:10:43,000 --> 00:10:49,000 في هذه الحلول، وغالبا ما يتم بشكل أكبر أنها علقت لمجرد 146 00:10:49,000 --> 00:10:52,000 نريد أن نكون قادرين على توزيعها ويكون الناس اعتقالهما 147 00:10:52,000 --> 00:10:56,000 وقراءتها بسهولة جدا. 148 00:10:56,000 --> 00:11:05,000 ولكن بالتأكيد، أود أن نتفق على أن هذا هو الثقيلة. 149 00:11:05,000 --> 00:11:07,000 [طالب] ولكن عندما تكون في شك، انتقل أثقل؟ 150 00:11:07,000 --> 00:11:10,000 عندما تكون في شك، انتقل أثقل. 151 00:11:10,000 --> 00:11:17,000 سيقول بعض الناس في بعض الأحيان 0 العودة أو شيء من هذا القبيل. 152 00:11:17,000 --> 00:11:20,000 أعتقد أن هذا تعليق مثير للسخرية. 153 00:11:20,000 --> 00:11:22,000 بوضوح ما يحدث. 154 00:11:22,000 --> 00:11:25,000 أنا لست بحاجة إلى الإنجليزية ليقول لي ذلك. 155 00:11:25,000 --> 00:11:28,000 في بعض الأحيان سوف يكتبه الناس أشياء مثل "kthxbai!" 156 00:11:28,000 --> 00:11:32,000 وهذا النوع من لطيف ولكن أيضا، وليس 157 00:11:32,000 --> 00:11:35,000 هذا لا يجعل الفرق بين نقاط التعليق أم لا. 158 00:11:35,000 --> 00:11:41,000 تلك الأنواع من التعليقات ليست سوى ها، ها. 159 00:11:41,000 --> 00:11:43,000 بارد. 160 00:11:43,000 --> 00:11:48,000 >> في هذه المرحلة، لنبدأ العمل على حل المشكلة تعيين 3 القسم من الأسئلة. 161 00:11:48,000 --> 00:11:52,000 إذا يا رفاق سحب هذا الأمر مرة أخرى، 162 00:11:52,000 --> 00:11:55,000 كما هو الحال مع الاسبوع الماضي، ونحن لن لمشاهدة الأفلام القصيرة في هذا القسم. 163 00:11:55,000 --> 00:12:00,000 سنقوم تتيح لك القيام بذلك على اللاعبين الوقت الخاص بك والحديث عن الأسئلة. 164 00:12:00,000 --> 00:12:05,000 ولكن الآن في هذا القسم ونحن في طريقنا لقضاء بعض الوقت أكثر من ذلك بقليل 165 00:12:05,000 --> 00:12:11,000 نتحدث عن أقل من أساسيات الترميز 166 00:12:11,000 --> 00:12:15,000 كما فعلنا في الأسبوع الماضي، وبدلا من ذلك، نحن ذاهبون الى التركيز أكثر على 167 00:12:15,000 --> 00:12:22,000 أكثر قليلا من الناحية النظرية، لذلك نتحدث عن البحث الثنائية ومن ثم الفرز. 168 00:12:22,000 --> 00:12:27,000 من أولئك منكم الذين يتابعون مع المحاضرة، 169 00:12:27,000 --> 00:12:30,000 شخص ما يمكن أن تعطيني خلاصة ما هو الفرق 170 00:12:30,000 --> 00:12:35,000 البحث الثنائية بين خطي والبحث؟ 171 00:12:35,000 --> 00:12:37,000 ما الذي يحدث؟ بالتأكيد. 172 00:12:37,000 --> 00:12:42,000 البحث البحث من خلال خطي كل عنصر في قائمة مصنفة 173 00:12:42,000 --> 00:12:45,000 واحدا تلو الآخر من جانب واحد من قبل واحدا تلو الآخر، 174 00:12:45,000 --> 00:12:50,000 ويقسم البحث الثنائية القائمة إلى 2 الجماعات، 175 00:12:50,000 --> 00:12:57,000 إذا كانت قيمة الشيكات المفاتيح التي كنت تبحث عن أكبر من أو أقل من قيمة نقطة الوسط 176 00:12:57,000 --> 00:13:00,000 التي يمكنك العثور عليها فقط، وإذا كان أقل من، وغني مع انخفاض قائمة 177 00:13:00,000 --> 00:13:03,000 ويقسم بعد ذلك مرة أخرى، هل نفس الوظيفة 178 00:13:03,000 --> 00:13:07,000 على طول الطريق حتى يجدها نقطة الوسط ليكون مساويا لقيمة نفسه. 179 00:13:07,000 --> 00:13:10,000 الحق. 180 00:13:10,000 --> 00:13:12,000 >> لماذا نهتم؟ 181 00:13:12,000 --> 00:13:20,000 لماذا نتحدث عن البحث الثنائية مقابل البحث الخطي؟ 182 00:13:20,000 --> 00:13:22,000 نعم. 183 00:13:22,000 --> 00:13:24,000 ثنائي هو أسرع كثيرا، حتى إذا كنت مضاعفة حجم المشكلة 184 00:13:24,000 --> 00:13:27,000 فإنه يأخذ خطوة أخرى بدلا من يصل الى مرتين. 185 00:13:27,000 --> 00:13:29,000 بالضبط. 186 00:13:29,000 --> 00:13:31,000 هذا هو الجواب كبيرة. 187 00:13:31,000 --> 00:13:36,000 البحث الخطي وكثيرا التحقق عنصر واحد في كل مرة، 188 00:13:36,000 --> 00:13:39,000 وكما رأينا في اليوم الأول من المحاضرة 189 00:13:39,000 --> 00:13:42,000 عندما ذهب ديفيد من خلال هاتفه سبيل المثال كتاب 190 00:13:42,000 --> 00:13:45,000 وانفجرت من صفحة واحدة من دليل الهاتف في وقت 191 00:13:45,000 --> 00:13:47,000 وأبقى فعل ذلك مرارا وتكرارا وتكرارا، 192 00:13:47,000 --> 00:13:51,000 انها سوف تأخذ منه وقتا طويلا للعثور على أي شخص حقا في دليل الهاتف، 193 00:13:51,000 --> 00:13:55,000 ما لم يكن، بطبيعة الحال، كان يبحث عن شخص ما في بداية الأبجدية. 194 00:13:55,000 --> 00:14:00,000 البحث مع ثنائي، يمكنك الذهاب على نحو أسرع كثيرا، 195 00:14:00,000 --> 00:14:05,000 وانها ليست بنفس السرعة مرتين أو 3 مرات في أسرع أو 4 مرات في أسرع. 196 00:14:05,000 --> 00:14:13,000 ولكن المشكلة تحصل أصغر وأصغر وأصغر أسرع بكثير. 197 00:14:13,000 --> 00:14:17,000 لتوضيح هذا، سوف نبدأ الحديث عن ما يحدث 198 00:14:17,000 --> 00:14:21,000 عندما نكتب البحث الثنائية. 199 00:14:21,000 --> 00:14:27,000 المشكلة في متناول اليد هو أنه إذا كان لدي مجموعة من الأرقام، 200 00:14:27,000 --> 00:14:40,000 يقول، 1، 2، 3، 5، 7، 23، 45، 78، 12323، 201 00:14:40,000 --> 00:14:47,000 و 9 ثم مع من نصف طن من 0S بعد ذلك، 202 00:14:47,000 --> 00:14:52,000 نريد أن تكون قادرة على معرفة ما هو حقا بسرعة في 203 00:14:52,000 --> 00:14:57,000 هذه مجموعة من الأرقام. 204 00:14:57,000 --> 00:15:00,000 أعرف أن هذا يبدو قليلا سخيفة ومفتعلة قليلا، 205 00:15:00,000 --> 00:15:02,000 لأن في الوقت الحالي هو عليه. 206 00:15:02,000 --> 00:15:05,000 لدينا مجموعة ليس لديها عناصر كثيرة جدا في ذلك، 207 00:15:05,000 --> 00:15:08,000 وإذا كان لي أن أطلب واحد منكم لمعرفة ما إذا كان أو لا 208 00:15:08,000 --> 00:15:11,000 23 هو في الصفيف، يمكنك ان تفعل ذلك بسرعة كبيرة 209 00:15:11,000 --> 00:15:16,000 فقط من خلال نظرة عابرة في هذا وتقول لي نعم أو لا. 210 00:15:16,000 --> 00:15:20,000 وتخيل التناظرية للنظر لو كان هذا، كما يقول، 211 00:15:20,000 --> 00:15:27,000 جدول بيانات Excel مع 10،000 الصفوف، 20،000 الصفوف. 212 00:15:27,000 --> 00:15:31,000 بالطبع، يمكنك القيام بما F الأمر أو F السيطرة وتبدو شيء ما. 213 00:15:31,000 --> 00:15:33,000 يمكنك أيضا استخدام الفلاتر والاشياء البحث، 214 00:15:33,000 --> 00:15:37,000 ولكن إذا كان لديك لننظر من خلال هذا الخط من الملف سطرا سطرا، 215 00:15:37,000 --> 00:15:40,000 سوف يستغرق لك وقتا طويلا للعثور عليه. 216 00:15:40,000 --> 00:15:42,000 انه نوع من مثل في الهاتف سبيل المثال الكتاب، أيضا، حيث 217 00:15:42,000 --> 00:15:44,000 لا أحد يبدو من خلال صفحة واحدة دليل الهاتف في كل مرة. 218 00:15:44,000 --> 00:15:47,000 عادة، فإنها فتحه إلى المتوسطة، 219 00:15:47,000 --> 00:15:50,000 أو في حالة وجود الكثير من الكتب والقواميس الهاتف حيث 220 00:15:50,000 --> 00:15:54,000 كنت في الواقع أنها قد مرتبطا على الحرف الأول، 221 00:15:54,000 --> 00:16:01,000 كنت الوجه لأنه الحرف الأول وفتح وبدء تمر هناك. 222 00:16:01,000 --> 00:16:03,000 >> يذكرني اسمك مرة أخرى. >> سام. 223 00:16:03,000 --> 00:16:05,000 سام. 224 00:16:05,000 --> 00:16:11,000 وقال سام مثل، أن عملية البحث الخطي ستكون بطيئة حقا، 225 00:16:11,000 --> 00:16:15,000 وبدلا من ذلك مع بحث ثنائية، ويعمل هذا الطريق هو أن 226 00:16:15,000 --> 00:16:21,000 في كل مرة نذهب من خلال التكرار من أنظمتنا البحث، 227 00:16:21,000 --> 00:16:27,000 نحن ذاهبون الى تقسيم قائمة إلى النصف، أساسا، 228 00:16:27,000 --> 00:16:33,000 الى قسمين أصغر القوائم. 229 00:16:33,000 --> 00:16:39,000 ثم في التكرار التالي من حلقة، سوف نقسم مرة أخرى 230 00:16:39,000 --> 00:16:44,000 في قوائم أخرى أصغر. 231 00:16:44,000 --> 00:16:48,000 كما ترون، فإن المشكلة تزداد أصغر وأصغر 232 00:16:48,000 --> 00:16:55,000 لأننا حفاظ على التخلص من نصف قائمة واحدة كل مرة. 233 00:16:55,000 --> 00:16:59,000 كيف يعمل هذا تجاهل؟ 234 00:16:59,000 --> 00:17:05,000 فقط للتذكير، ما نحن في طريقنا للقيام إذا كنا كمبيوتر 235 00:17:05,000 --> 00:17:11,000 وكنا، مثلا، البحث عن رقم 5 في هذه القائمة 236 00:17:11,000 --> 00:17:15,000 هو أننا ما سيعاود رقم في الوسط. 237 00:17:15,000 --> 00:17:26,000 في منتصف هذه القائمة، لأن هناك 1، 2، 3، 4، 5، 6، 7، 8، 9، 10 أرقام، 238 00:17:26,000 --> 00:17:32,000 كنا اختيار عدد إما في موقف 4th أو في موقف 5، 239 00:17:32,000 --> 00:17:38,000 وكنا نسمي ذلك وسط قائمتنا. 240 00:17:38,000 --> 00:17:42,000 اختيار العدد في الوسط. 241 00:17:42,000 --> 00:17:51,000 ثم، تماما كما قال سام، سنقوم بإجراء اختبار لمعرفة ما إذا كان هذا العدد يساوي 242 00:17:51,000 --> 00:17:59,000 إلى الرقم الذي نريد الحصول على أو الرقم المطلوب. 243 00:17:59,000 --> 00:18:06,000 اذا كان على قدم المساواة، ثم وجدنا ذلك. فزنا. 244 00:18:06,000 --> 00:18:12,000 إذا لم تكن متساوية، ثم هناك زوجين من الحالات. 245 00:18:12,000 --> 00:18:15,000 الحالتين إما أن تكون عدد يجب أن يكون أكبر من عدد ونحن نبحث في، 246 00:18:15,000 --> 00:18:19,000 أو أنه أقل من. 247 00:18:19,000 --> 00:18:25,000 إذا كان أكبر، ونحن نتحرك إلى اليمين. 248 00:18:25,000 --> 00:18:33,000 وإذا كان أقل من ذلك، ونحن نتحرك إلى اليسار. 249 00:18:33,000 --> 00:18:41,000 ثم نكرر العملية برمتها مرة أخرى 250 00:18:41,000 --> 00:18:48,000 على نصف إما الحق أو النصف الأيسر من القائمة. 251 00:18:48,000 --> 00:18:51,000 >> المشكلة الأولى في القسم اليوم هو لمعرفة 252 00:18:51,000 --> 00:18:55,000 كيف يمكننا أن نبدأ فعلا للتعبير عن هذا في التعليمات البرمجية C. 253 00:18:55,000 --> 00:18:58,000 لدينا هنا في pseudocode. 254 00:18:58,000 --> 00:19:04,000 ما سنقوم به هو البدء في سحب ما يصل أنا العلامة التجارية الجديدة الفضاء، 255 00:19:04,000 --> 00:19:09,000 حفظ هذا التنقيح حتى يكون لدينا هذه الملاحظات في وقت لاحق، 256 00:19:09,000 --> 00:19:20,000 سوف نقوم بحذف كل هذا، ومن ثم نسخ ولصق من مجموعة مشكلة 257 00:19:20,000 --> 00:19:26,000 هذه المعلومات في مساحات لدينا، ونأمل أن هذا لا يفطر. 258 00:19:26,000 --> 00:19:28,000 الكمال. 259 00:19:28,000 --> 00:19:33,000 إذا يا رفاق تفعل كل ذلك، نسخ ولصق هذا الرمز إلى الفضاء الجديد الخاص بك، 260 00:19:33,000 --> 00:19:43,000 في واحدة فارغة. 261 00:19:43,000 --> 00:19:47,000 دعونا نحاول دانيال. إذا كنت ترجمة وتشغيل هذا البرنامج، وأنها لا تعمل؟ 262 00:19:47,000 --> 00:19:49,000 رقم >> ما هو عليه تقول؟ 263 00:19:49,000 --> 00:19:53,000 تقول لسيطرة يصل نهاية غير باطلة وظيفة. 264 00:19:53,000 --> 00:19:55,000 نعم، لذلك اسمحوا لي أن أحاول تشغيله. 265 00:19:55,000 --> 00:19:59,000 لقد شهدت يا رفاق هذا من قبل؟ هل تعرف ماذا يعني هذا؟ 266 00:19:59,000 --> 00:20:01,000 حسنا، دعونا تشريح هذه قليلا قليلا. 267 00:20:01,000 --> 00:20:10,000 قائلا انه في file.c على خط 9، العمود 1 لدينا خطأ، مثلما قلت، 268 00:20:10,000 --> 00:20:16,000 وتقول ان انها نابعة من الخطأ والتحذير التحذير نوع الإرجاع. 269 00:20:16,000 --> 00:20:18,000 يبدو وكأنه شيء يجري مع نوع الإرجاع، الأمر الذي يجعل الشعور. 270 00:20:18,000 --> 00:20:21,000 ونحن قد حصلت على وظيفة غير باطل، وهو ما يعني أننا قد حصلت على وظيفة 271 00:20:21,000 --> 00:20:24,000 الذي لا يرجع باطلة. 272 00:20:24,000 --> 00:20:27,000 وظيفة الفراغ واحد هو أن يبدو مثل هذا: 273 00:20:27,000 --> 00:20:35,000 الفراغ فو ()، وانها باطلة لأن نوع الإرجاع هو باطل، 274 00:20:35,000 --> 00:20:38,000 مما يعني أنه إذا كان لدينا شيء هنا في 275 00:20:38,000 --> 00:20:45,000 مثل عودة 1، نحصل على الخطأ البرمجي لهذا الغرض. 276 00:20:45,000 --> 00:20:49,000 ومع ذلك، لدينا وظيفة غير باطلة. 277 00:20:49,000 --> 00:20:51,000 لدينا وظيفة غير الفراغ في هذه الحالة هو وظيفة بحثنا 278 00:20:51,000 --> 00:20:56,000 لأنه يحتوي على نوع الإرجاع BOOL. 279 00:20:56,000 --> 00:20:59,000 عندما يكون القول إن التحكم تصل إلى نهاية وظيفة غير باطلة، 280 00:20:59,000 --> 00:21:02,000 انها لبحث لايوجد بيان العودة. 281 00:21:02,000 --> 00:21:04,000 انها ليست شيئا من العودة BOOL نوع. 282 00:21:04,000 --> 00:21:09,000 >> يمكننا تحديد ذلك، وماذا تعتقد يا رفاق 283 00:21:09,000 --> 00:21:13,000 يجب البحث بشكل افتراضي العودة؟ 284 00:21:13,000 --> 00:21:16,000 ماذا يجب أن تكون قيمة الإرجاع الافتراضي البحث؟ 285 00:21:16,000 --> 00:21:19,000 لأن هذا هو ما يمكننا ان نضع في نهاية المطاف. 286 00:21:19,000 --> 00:21:21,000 شارلوت، هل لديك أي-؟ 287 00:21:21,000 --> 00:21:23,000 صحيحة أو خاطئة؟ >> True أو False. 288 00:21:23,000 --> 00:21:26,000 أي واحد؟ 289 00:21:26,000 --> 00:21:28,000 كاذبة. لا أعرف. 290 00:21:28,000 --> 00:21:30,000 كاذبة؟ دعونا نحاول ذلك. 291 00:21:30,000 --> 00:21:32,000 لماذا تقولون عودة كاذبة؟ هذا الحدس كبيرة. 292 00:21:32,000 --> 00:21:35,000 [شارلوت] أنا لا أعرف. 293 00:21:35,000 --> 00:21:39,000 ونحن في طريقنا للعودة كاذبة في هذه الحالة لأن هذا سوف يكون لدينا الافتراضي 294 00:21:39,000 --> 00:21:44,000 إذا كان لسبب كانت القائمة فارغة أو إبرة 295 00:21:44,000 --> 00:21:46,000 أننا تبحث عنها غير موجودة. 296 00:21:46,000 --> 00:21:50,000 ثم في النهاية، إذا كنا لا العودة الحقيقية في وقت سابق من هذه الوظيفة، 297 00:21:50,000 --> 00:21:55,000 نحن نعرف دائما أن هذه الوظيفة سيقول كلا، انها ليست في الصفيف. 298 00:21:55,000 --> 00:21:58,000 انها ليست في كومة قش. 299 00:21:58,000 --> 00:22:03,000 الآن إذا كنا ترجمة وتشغيل IT-اسمحوا لي حفظ هذا حتى نتمكن من سحب عنه. 300 00:22:03,000 --> 00:22:08,000 الآن إذا كنا ترجمة وتشغيل برنامجنا، فإنه يبني. 301 00:22:08,000 --> 00:22:12,000 نحصل على موجه لدينا القليل. 302 00:22:12,000 --> 00:22:20,000 إذا كنت ضرب 4-أه أوه. 303 00:22:20,000 --> 00:22:25,000 إلا أنها لم تطبع أي شيء. يبدو كل شيء انتهى بخير. 304 00:22:25,000 --> 00:22:35,000 لدينا لملء هذا فيه 305 00:22:35,000 --> 00:22:39,000 تحدثنا عن خوارزمية في شبة الكود قليلا قبل. 306 00:22:39,000 --> 00:22:44,000 دعني أرى، ما عدا ذلك، 307 00:22:44,000 --> 00:22:49,000 وأنا سحب خوارزمية أن يعود مرة أخرى. 308 00:22:49,000 --> 00:22:51,000 دعونا ضرب هذا الرجل. كلا. 309 00:22:51,000 --> 00:22:58,000 هناك هو عليه. 310 00:22:58,000 --> 00:23:03,000 كيف نفعل ذلك؟ 311 00:23:03,000 --> 00:23:11,000 ماذا سيكون استراتيجية جيدة لبدء تشغيل هذا الرمز؟ 312 00:23:11,000 --> 00:23:16,000 لديك لاختيار رقم في الوسط. 313 00:23:16,000 --> 00:23:23,000 كيف يمكننا اختيار العدد في منتصف مجموعة؟ 314 00:23:23,000 --> 00:23:25,000 أي اقتراحات؟ 315 00:23:25,000 --> 00:23:27,000 [طالب] التوابع strlen مقسوما على 2. 316 00:23:27,000 --> 00:23:32,000 التوابع strlen مقسوما على 2. هذا واحدة كبيرة. 317 00:23:32,000 --> 00:23:35,000 التوابع strlen يعمل مع أنواع خاصة من المصفوفات. 318 00:23:35,000 --> 00:23:38,000 ما هي أنواع المصفوفات؟ 319 00:23:38,000 --> 00:23:44,000 صفائف السلسلة، صفائف حرف. 320 00:23:44,000 --> 00:23:48,000 فهو أن نفس النوع من مفهوم أننا نريد أن تطبق، 321 00:23:48,000 --> 00:23:52,000 ولكن لا يمكننا استخدام التوابع strlen لأننا لم يكن لديك مجموعة من الأحرف. 322 00:23:52,000 --> 00:23:55,000 لدينا مجموعة من رجات. 323 00:23:55,000 --> 00:23:58,000 ولكن ماذا بالنسبة لنا الحصول على التوابع strlen؟ 324 00:23:58,000 --> 00:24:01,000 هل تعرف ما الذي تحصل عليه لدينا؟ 325 00:24:01,000 --> 00:24:03,000 [طالب] التوابع strlen يحصل لنا على طول. 326 00:24:03,000 --> 00:24:05,000 بالضبط، فإنه يحصل لنا على طول. 327 00:24:05,000 --> 00:24:09,000 التوابع strlen يحصل على طول الصفيف بالنسبة لنا. 328 00:24:09,000 --> 00:24:14,000 >> كيف يمكننا الحصول على هذا البرنامج من خلال موقعنا ثنائي البحث؟ 329 00:24:14,000 --> 00:24:18,000 كيف تحصل على طول صفيف؟ 330 00:24:18,000 --> 00:24:20,000 [طالب] التوابع strlen؟ 331 00:24:20,000 --> 00:24:25,000 يمكنك الحصول على مجموعة وطول سلسلة C منسق بشكل صحيح مع التوابع strlen. 332 00:24:25,000 --> 00:24:31,000 المشكلة، مع ذلك، هو أننا لم يكن لديك صفيف سلسلة. 333 00:24:31,000 --> 00:24:36,000 إذا نظرنا إلى الوراء في هذا الرمز، لدينا هذه المجموعة عدد صحيح. 334 00:24:36,000 --> 00:24:38,000 كيف نعرف متى هو؟ 335 00:24:38,000 --> 00:24:44,000 [طالب] هل هناك واحد يعادل لنقطة النهاية، مثل L الباحث أو شيء؟ 336 00:24:44,000 --> 00:24:49,000 كما تبين وجود في الواقع لا، وذلك على نحو ما، هو هذا 337 00:24:49,000 --> 00:24:52,000 واحدة من تلك الأشياء التي فقط جيدة لمعرفة C، 338 00:24:52,000 --> 00:24:57,000 أنه لا يوجد طريقة للحصول على طول صفيف 339 00:24:57,000 --> 00:24:59,000 إذا كل ما أقدمه لكم الصفيف. 340 00:24:59,000 --> 00:25:02,000 السبب أنه يعمل مع السلاسل، والسبب التوابع strlen الأعمال، 341 00:25:02,000 --> 00:25:06,000 لأن إذا تم تنسيق صحيح سلسلة، 342 00:25:06,000 --> 00:25:12,000 فلا بد لها أن الخاصة \ 0 حرف في النهاية. 343 00:25:12,000 --> 00:25:16,000 >> يمكنك أن تتخيل أيضا إذا كان لديك سلسلة منسقة بشكل غير صحيح 344 00:25:16,000 --> 00:25:20,000 وليس هناك \ 0 حرف هناك، ثم كل شيء لا يعمل. 345 00:25:20,000 --> 00:25:22,000 [طالب] يمكنك إضافة \ 0؟ 346 00:25:22,000 --> 00:25:24,000 نحن يمكن في هذه الحالة. 347 00:25:24,000 --> 00:25:29,000 يمكن أن نضيف نوعا من \ 0 348 00:25:29,000 --> 00:25:33,000 أو نوعا من حرف يدل ثم استخدام ذلك. 349 00:25:33,000 --> 00:25:36,000 ولكن ذلك لن تماما للعمل 350 00:25:36,000 --> 00:25:40,000 لأن 0 \ هو لنوع شار، 351 00:25:40,000 --> 00:25:43,000 وهنا لدينا رجات. 352 00:25:43,000 --> 00:25:46,000 والشيء الآخر هو ما إذا كان لنا أن استخدام القيمة الخاصة 353 00:25:46,000 --> 00:25:49,000 مثل -1 إلى احتفال بانتهاء مجموعة 354 00:25:49,000 --> 00:25:54,000 ثم يمكننا أبدا تخزين -1 في صفائف لدينا عدد صحيح. 355 00:25:54,000 --> 00:25:56,000 تريد ان تكون عالقة نحن. 356 00:25:56,000 --> 00:26:00,000 كما تبين أن الطريقة الوحيدة للحصول على طول 357 00:26:00,000 --> 00:26:03,000 من صفيف في C هو أن نتذكر أنه في الواقع 358 00:26:03,000 --> 00:26:08,000 عند إعداده ومن ثم تمرير حولها مع مجموعة 359 00:26:08,000 --> 00:26:14,000 بحيث كلما لدي وظيفة التي يجري القيام ببعض الأعمال 360 00:26:14,000 --> 00:26:18,000 على مجموعة من الأعداد الصحيحة أو العوامات أو الزوجي أو ما إلى ذلك، 361 00:26:18,000 --> 00:26:22,000 ولست بحاجة أيضا إلى إعطاء وظيفة طول الصفيف، 362 00:26:22,000 --> 00:26:26,000 وهذا بالضبط ما فعلناه هنا في وظيفة البحث. 363 00:26:26,000 --> 00:26:30,000 اذا نظرتم، ما فعلناه عندما نعبر في مجموعتنا هنا، 364 00:26:30,000 --> 00:26:36,000 نحن نمر أيضا في الطول، والحجم. 365 00:26:36,000 --> 00:26:41,000 انه يحدث لمجرد أن لدينا يسمى هذا المتغير هنا، 366 00:26:41,000 --> 00:26:43,000 هذه المعلمة أو وسيطة. 367 00:26:43,000 --> 00:26:46,000 وهذا ما يسمى قائمة وظيفة في حجة أو قائمة المعلمة، 368 00:26:46,000 --> 00:26:51,000 وتسمى أيضا هذه الحجج أو المعلمات. 369 00:26:51,000 --> 00:26:53,000 الناس استخدام مصطلحات مختلفة في أوقات مختلفة. 370 00:26:53,000 --> 00:26:55,000 I مبادلة في بعض الأحيان لهم نفسي. 371 00:26:55,000 --> 00:27:00,000 انها مجرد أن ذلك يحدث يدعى هذا المتغير هنا بالمثل 372 00:27:00,000 --> 00:27:03,000 لهذا تعريف # هنا. 373 00:27:03,000 --> 00:27:06,000 لكنها ليست نفس الشيء. 374 00:27:06,000 --> 00:27:11,000 رسملة لا يهم. 375 00:27:11,000 --> 00:27:14,000 >> اذا نظرتم الى ما يحدث هنا، نعلن 376 00:27:14,000 --> 00:27:18,000 لدينا مجموعة الباحث، والتي تسمى لدينا أرقام. 377 00:27:18,000 --> 00:27:23,000 لقد أعطيت لنا من حجمنا، والتي تتطابق مع تعريف # لدينا حتى في الأعلى. 378 00:27:23,000 --> 00:27:27,000 انها ستكون 8. 379 00:27:27,000 --> 00:27:35,000 وبعد ذلك عندما ندعو ظيفة ثم بحثنا في الأسفل، 380 00:27:35,000 --> 00:27:40,000 نحن نمر في عدد نريد للبحث عن، والتي قمنا المطالبة، 381 00:27:40,000 --> 00:27:43,000 حصلت من قبل المستخدم. 382 00:27:43,000 --> 00:27:46,000 نحن نمر في الصفيف، وهذا أرقام، 383 00:27:46,000 --> 00:27:51,000 ثم لدينا أيضا لتمرير في حجم الصفيف، 384 00:27:51,000 --> 00:27:57,000 ومن ثم يحصل على تخزين قيمة حجم 8 385 00:27:57,000 --> 00:28:01,000 أو تمريرها إلى هذا الحجم متغير عدد صحيح يسمى. 386 00:28:01,000 --> 00:28:08,000 لدينا حجم الصفيف. 387 00:28:08,000 --> 00:28:11,000 الآن إذا عدنا إلى ما كنا نتحدث عنه في وقت سابق، 388 00:28:11,000 --> 00:28:14,000 أعتقد ميسي ترعرعت درجة أن ما يتعين علينا القيام به هو الحصول على طول الصفيف 389 00:28:14,000 --> 00:28:20,000 ونقسمه 2، والتي من شأنها أن تعطينا نقطة الوسط. 390 00:28:20,000 --> 00:28:22,000 دعونا نرى. 391 00:28:22,000 --> 00:28:25,000 الأول يمكن أن يكون شخص ما أكتب هذا وحفظه في حيزها؟ 392 00:28:25,000 --> 00:28:27,000 ماذا عن ليلى؟ 393 00:28:27,000 --> 00:28:31,000 الأول يمكن أن يكون هذا في الكتابة؟ 394 00:28:31,000 --> 00:28:35,000 كتابة السطر الأول حيث كنت تأخذ من طول الصفيف والحصول على نقطة الوسط 395 00:28:35,000 --> 00:28:41,000 وتخزينها في متغير جديد. 396 00:28:41,000 --> 00:28:44,000 سأعطيك بضع ثوان. هل أنت مستعد؟ 397 00:28:44,000 --> 00:28:46,000 [طالب غير مسموع] 398 00:28:46,000 --> 00:28:50,000 تأكد يمكن، لقد كنت تحسب نقطة الوسط 399 00:28:50,000 --> 00:28:55,000 من الصفيف كومة قش داخل وظيفة البحث 400 00:28:55,000 --> 00:29:03,000 باستخدام طول الصفيف كومة قش، والذي هو متغير الحجم؟ 401 00:29:03,000 --> 00:29:08,000 صعبة شيء هنا. 402 00:29:08,000 --> 00:29:12,000 [ليلى] حجم فقط / 2 و-فقط 403 00:29:12,000 --> 00:29:17,000 وحفظه، واضغط على زر حفظ هنا حتى في القمة، 404 00:29:17,000 --> 00:29:19,000 وسنقوم بسحب عنه. 405 00:29:19,000 --> 00:29:22,000 الكمال. 406 00:29:22,000 --> 00:29:28,000 هناك نذهب. رهيبة. 407 00:29:28,000 --> 00:29:30,000 >> وكما هو، وهذا تجميع؟ 408 00:29:30,000 --> 00:29:32,000 [ليلى] لا، فإنه يجب أن يكون أعلى من ذلك. 409 00:29:32,000 --> 00:29:34,000 [نيت] نعم، فما نحتاج أن تفعل؟ 410 00:29:34,000 --> 00:29:36,000 [ليلى] مثل نقطة الوسط الباحث أو شيء. 411 00:29:36,000 --> 00:29:41,000 رهيبة. نعم، دعونا نفعل ذلك، وكثافة العمليات = حجم نقطة الوسط. 412 00:29:41,000 --> 00:29:44,000 وهذا تجميع؟ 413 00:29:44,000 --> 00:29:47,000 دعونا حذف هذا التعليق وسهولة الحصول عليها للخروج من الطريق. 414 00:29:47,000 --> 00:29:50,000 سوف يتم ترجمة ما عن هذا؟ 415 00:29:50,000 --> 00:29:52,000 نحن لا نفعل أي شيء مع عدد صحيح، 416 00:29:52,000 --> 00:29:55,000 لذلك نحن بحاجة إلى طباعته أو شيء من هذا القبيل. 417 00:29:55,000 --> 00:29:58,000 نعم، بالضبط. 418 00:29:58,000 --> 00:30:00,000 سوف نحصل على متغير غير المستخدمة. 419 00:30:00,000 --> 00:30:02,000 ماذا لا يتم الذهاب إلى العمل حيال ذلك؟ 420 00:30:02,000 --> 00:30:06,000 أعتقد أنك قلت شيئا، وسام. منقوطة. 421 00:30:06,000 --> 00:30:08,000 نعم، أنا في عداد المفقودين تلك منقوطة. 422 00:30:08,000 --> 00:30:14,000 انها سوف تكون شيئا دائم طوال فترة هذا المصطلح. 423 00:30:14,000 --> 00:30:17,000 الشيء النهائي سأفعل هو أنني سوف أضع بعض المساحة البيضاء على جانبي 424 00:30:17,000 --> 00:30:23,000 هذا المشغل هنا، منذ ذلك عادة كيف نفعل ذلك 425 00:30:23,000 --> 00:30:26,000 وفقا لدليل أسلوبنا. 426 00:30:26,000 --> 00:30:29,000 لدينا مجموعة من نقطة الوسط لدينا. 427 00:30:29,000 --> 00:30:32,000 إذا علينا أن نتذكر الآن مرة أخرى إلى خوارزمية لدينا، 428 00:30:32,000 --> 00:30:37,000 ما هي الخطوة الثانية التي كان علينا أن نفعل مرة واحدة لدينا نقطة الوسط؟ 429 00:30:37,000 --> 00:30:42,000 [طالب] إذا كان أكبر [غير مسموع]. 430 00:30:42,000 --> 00:30:48,000 نعم، لذلك يتعين علينا القيام به نوعا من المقارنة، والمقارنة بين ما نحن هنا؟ 431 00:30:48,000 --> 00:30:53,000 وقال إذا كان أكبر من. ما هو في تلك الجملة اشارة الى؟ 432 00:30:53,000 --> 00:30:57,000 الرقم الذي يأتي، إذا كان هذا هو أكبر من نقطة الوسط، انتقل بعد ذلك إلى مجموعة؟ 433 00:30:57,000 --> 00:31:05,000 بالضبط، وبالتالي فإن العدد الذي يأتي عندما نكون- 434 00:31:05,000 --> 00:31:10,000 الإبرة، لذلك نحن مقارنة مع الإبرة، 435 00:31:10,000 --> 00:31:12,000 وماذا نحن ضد إبرة مقارنة؟ 436 00:31:12,000 --> 00:31:15,000 لأن الإبرة هو ما تبحث عنه. 437 00:31:15,000 --> 00:31:18,000 نحن مقارنتها للوصول إلى نقطة الوسط. 438 00:31:18,000 --> 00:31:21,000 >> لكن هل من المنطقي أن تحقق لمعرفة 439 00:31:21,000 --> 00:31:27,000 إذا إبرة = نقطة الوسط؟ 440 00:31:27,000 --> 00:31:32,000 هل هذا معقول؟ 441 00:31:32,000 --> 00:31:35,000 لا أحد يختلف؟ 442 00:31:35,000 --> 00:31:40,000 دعونا محاولة إعطائها، إذا (== إبرة نقطة الوسط). 443 00:31:40,000 --> 00:31:42,000 [طالب] هل وجدت لكم انه printf. 444 00:31:42,000 --> 00:31:51,000 [نيت] Printf ("وجدنا أنه \ N!")؛ 445 00:31:51,000 --> 00:31:56,000 خلاف ذلك-I صباحا سنبدأ القيام بشيء مختلف هنا. 446 00:31:56,000 --> 00:32:00,000 أنا ذاهب لبدء وضع الأقواس حول إذا كانت تصريحات كل الوقت 447 00:32:00,000 --> 00:32:05,000 لمجرد إذا أضفنا المزيد من الأشياء، ثم 448 00:32:05,000 --> 00:32:07,000 لم نحصل على المجمعين. 449 00:32:07,000 --> 00:32:09,000 نعم، سام. كنت قد حصلت على نقطة. 450 00:32:09,000 --> 00:32:12,000 المشكلة هي أن نقطة الوسط تمثل موقف في الصفيف، 451 00:32:12,000 --> 00:32:15,000 ولكن يمكنك الحصول عليه لتمثيل قيمة في هذا الموقف من الصفيف. 452 00:32:15,000 --> 00:32:17,000 وهذا هو نقطة كبيرة. 453 00:32:17,000 --> 00:32:19,000 لم الجميع يسمع ما قال سام؟ 454 00:32:19,000 --> 00:32:22,000 قال إن نقطة الوسط كما هو 455 00:32:22,000 --> 00:32:28,000 يمثل مجرد موقف في الصفيف، ولكنها ليست العنصر الفعلي في الصفيف. 456 00:32:28,000 --> 00:32:30,000 إذا كنت تفكر في كتابة الكود كما في الوقت الراهن، 457 00:32:30,000 --> 00:32:35,000 إذا نظرنا إلى هذه المجموعة هنا إلى أسفل، والذي يحتوي على 8 عناصر فيه، 458 00:32:35,000 --> 00:32:39,000 ما هي قيمة نقطة الوسط ستكون في هذه الوظيفة؟ 459 00:32:39,000 --> 00:32:41,000 [طالب] (4). 460 00:32:41,000 --> 00:32:45,000 [نيت] (4). 461 00:32:45,000 --> 00:32:51,000 إذا نظرنا لعدد 4 - 462 00:32:51,000 --> 00:32:54,000 ويمكننا فقط تشغيل هذا الرمز ووضع وجه حزين قليلا هنا 463 00:32:54,000 --> 00:32:58,000 لأننا لم نجد ذلك، إذا نحن تشغيل هذه التعليمات البرمجية 464 00:32:58,000 --> 00:33:04,000 كما هو في الوقت الراهن، تحميلها، وبناء، اسمحوا لي أن انتقل لأسفل، 465 00:33:04,000 --> 00:33:09,000 وإذا نظرنا لعدد 4، 466 00:33:09,000 --> 00:33:18,000 وجدنا ذلك، ولكن لم نحصل على هذا printf نعم. 467 00:33:18,000 --> 00:33:23,000 سبب واحد هو أننا لم يعودوا صحيح، 468 00:33:23,000 --> 00:33:26,000 ولكن لم نجد حقا الرقم 4؟ 469 00:33:26,000 --> 00:33:28,000 وسام هو قول لا. 470 00:33:28,000 --> 00:33:31,000 ماذا نجد؟ 471 00:33:31,000 --> 00:33:35,000 وجدنا حقا نقطة الوسط، والتي إذا ما نظرنا إلى مجموعة هنا إلى أسفل، 472 00:33:35,000 --> 00:33:38,000 انها سوف تكون عنصر في المؤشر 4 أن ننظر، 473 00:33:38,000 --> 00:33:42,000 التي تقع في 23. 474 00:33:42,000 --> 00:33:46,000 >> كيف يمكننا في الواقع الحصول على هذا العنصر في منتصف 475 00:33:46,000 --> 00:33:48,000 وليس فقط نقطة الوسط نفسه؟ 476 00:33:48,000 --> 00:33:52,000 [طالب] أن ندخل حرف أو شيء؟ 477 00:33:52,000 --> 00:33:55,000 ماذا تفعل ذلك، للفضول فقط؟ 478 00:33:55,000 --> 00:33:57,000 يمكنك وضع أكثر من ذلك بقليل؟ 479 00:33:57,000 --> 00:34:02,000 لديك لتحويل الموقف في العدد، 480 00:34:02,000 --> 00:34:05,000 لذلك كنت قد حصلت على إجراء بعض بالاتصال اعتقد انه من شار، ولكن قد يكون لا. 481 00:34:05,000 --> 00:34:07,000 نعم، وهذا هو نقطة جيدة. 482 00:34:07,000 --> 00:34:12,000 لقد كنا نفعل الكثير من هذه المواقف تحويلها إلى أحرف، وهذه الأحرف، 483 00:34:12,000 --> 00:34:14,000 في المجموعة الأولى المشكلة اثنين. 484 00:34:14,000 --> 00:34:18,000 تبين أن هنا، وهذا هو مماثل تقريبا ل 485 00:34:18,000 --> 00:34:24,000 الوصول إلى حرف إيث ضمن سلسلة، إذا كان هذا الأمر يبدو معقولا تماما. 486 00:34:24,000 --> 00:34:30,000 هنا نريد للوصول إلى نقطة الوسط عنصر. 487 00:34:30,000 --> 00:34:34,000 كيف نفعل ذلك؟ 488 00:34:34,000 --> 00:34:39,000 كيفن، هل لديك أي اقتراحات كيف يمكننا فعل ذلك؟ 489 00:34:39,000 --> 00:34:44,000 إغلاق قوس فتح، منتصف، هل يمكن أن تفعل كومة قش، قوس. 490 00:34:44,000 --> 00:34:46,000 يمكنك كتابة هذا بالنسبة لنا؟ 491 00:34:46,000 --> 00:34:51,000 حفظه هنا، وسنقوم سحب ما يصل. 492 00:34:51,000 --> 00:34:56,000 نحن نبحث في هذا الخط 9، 493 00:34:56,000 --> 00:34:59,000 ونحن مدركين أن نحن لا نريد لمقارنة الإبرة إلى نقطة الوسط، 494 00:34:59,000 --> 00:35:03,000 ولكن بدلا من ذلك، ونحن نريد لمقارنة إبرة 495 00:35:03,000 --> 00:35:07,000 إلى العنصر في منتصف الموقف داخل مجموعة كومة قش لدينا. 496 00:35:07,000 --> 00:35:10,000 بارد. 497 00:35:10,000 --> 00:35:12,000 هناك نذهب. 498 00:35:12,000 --> 00:35:15,000 نعم، هذا يبدو جيدا جدا، إذا كان (إبرة == كومة قش [نقطة الوسط]). 499 00:35:15,000 --> 00:35:18,000 وجدنا أنه. 500 00:35:18,000 --> 00:35:22,000 الآن إذا كنا تشغيل التعليمات البرمجية مرة أخرى we'll قليلا بت 501 00:35:22,000 --> 00:35:26,000 يقوم بإعداد، تشغيله، والآن إذا نظرنا لمدة 4، 502 00:35:26,000 --> 00:35:30,000 لم نجد ذلك لأننا الآن في الواقع الحصول على رقم 23. 503 00:35:30,000 --> 00:35:33,000 نحن نحصل على القيمة 23، وهذا ما نقوم بمقارنة لدينا إبرة. 504 00:35:33,000 --> 00:35:35,000 ولكن هذا امر جيد. هذا هو خطوة في الاتجاه الصحيح. 505 00:35:35,000 --> 00:35:37,000 >> هذا ما نحاول القيام به. 506 00:35:37,000 --> 00:35:40,000 نحن لا نسعى لمقارنة إبرة ضد مواقع في الصفيف 507 00:35:40,000 --> 00:35:44,000 بل ضد العناصر الفعلية في الصفيف. 508 00:35:44,000 --> 00:35:49,000 إذا نظرنا إلى الوراء مرة أخرى الآن في الخطوة التالية في أنظمتنا، 509 00:35:49,000 --> 00:35:51,000 ما هي الخطوة التالية؟ 510 00:35:51,000 --> 00:35:57,000 ليلى المذكورة بالفعل لفترة وجيزة. 511 00:35:57,000 --> 00:36:00,000 [طالب] تحقق لمعرفة ما اذا كان أكبر من أو أقل من ثم يقرر أي وسيلة للتحرك. 512 00:36:00,000 --> 00:36:03,000 [نيت] نعم، كيف ذلك ونحن نفعل ذلك؟ 513 00:36:03,000 --> 00:36:07,000 يمكنك وضع في بعض I'll-حفظ هذا التنقيح، 514 00:36:07,000 --> 00:36:13,000 ثم إذا كنت وضعت في بعض خطوط من شأنها أن تفعل ذلك. 515 00:36:13,000 --> 00:36:15,000 نعم، شارلوت. >> لدي سؤال. 516 00:36:15,000 --> 00:36:19,000 لا ينبغي أن يكون نقطة الوسط - 1 لأن أول شيء هو 517 00:36:19,000 --> 00:36:26,000 انها 0 فهرسته، لذلك إذا وضعنا 4، هذا ليس في الواقع الطابع نحن نبحث عنه؟ 518 00:36:26,000 --> 00:36:30,000 نعم، والمشكلة الأخرى مع هذا هو، 519 00:36:30,000 --> 00:36:35,000 وهذا هو الصيد الكبير، وذلك لأن ما يجري في نهاية المطاف ربما يحدث 520 00:36:35,000 --> 00:36:42,000 إذا كان لنا أن نواصل المضي ونحن لا تعديل من أي وقت مضى في البداية؟ 521 00:36:42,000 --> 00:36:46,000 أعتقد أن ما نحن قد ينتهي به هو محاولة للوصول إلى 522 00:36:46,000 --> 00:36:49,000 العنصر في الموضع 8 من الصفيف، 523 00:36:49,000 --> 00:36:53,000 وهو في هذه الحالة لا وجود لها. 524 00:36:53,000 --> 00:36:56,000 ونحن نريد أن نفعل نوعا من المحاسبة للحقيقة 525 00:36:56,000 --> 00:36:59,000 أن لدينا بعض الفهرسة صفر. 526 00:36:59,000 --> 00:37:05,000 [شارلوت] عذرا، قصدته منتصف - 1 في أقواس مربعة. 527 00:37:05,000 --> 00:37:08,000 يمكننا أن نفعل ذلك. 528 00:37:08,000 --> 00:37:10,000 سوف نعود إلى هذه المسألة في بت واحد فقط. 529 00:37:10,000 --> 00:37:13,000 نبدأ مرة واحدة للوصول الى حلقات الفعلية، 530 00:37:13,000 --> 00:37:16,000 وذلك عندما سنرى حقا هذا تدخل في الاعتبار. 531 00:37:16,000 --> 00:37:21,000 في الوقت الحاضر، يمكننا أن نفعل ذلك، ولكن كنت على حق تماما. 532 00:37:21,000 --> 00:37:28,000 التي من شأنها أن الفهرسة الصفر يكون لها تأثير أننا بحاجة إلى حساب ل. 533 00:37:28,000 --> 00:37:30,000 دعونا نرى. 534 00:37:30,000 --> 00:37:34,000 >> كيف هي أكبر من وأقل مما كان؟ 535 00:37:34,000 --> 00:37:36,000 [طالب] أحصل على كيفية القيام أكبر من وأقل من جزء. 536 00:37:36,000 --> 00:37:41,000 كنت فقط غير متأكد ما يمكن طباعة إذا وجدت أن ذلك أقل من نقطة الوسط كومة قش أو أكبر من. 537 00:37:41,000 --> 00:37:43,000 هنا يمكنني انقاذ ما I've- 538 00:37:43,000 --> 00:37:47,000 [نيت] نعم، إذا قمت بحفظ ما كنت قد حصلت، وسنقوم بسحب عنه. 539 00:37:47,000 --> 00:37:49,000 هناك نذهب. 540 00:37:49,000 --> 00:37:51,000 [طالب] وأضع علامات استفهام على ما لم أكن أعرف. 541 00:37:51,000 --> 00:37:54,000 [نيت] التي تبدو كبيرة. 542 00:37:54,000 --> 00:37:58,000 هنا نحن لدينا علامات استفهام لأننا ما زلنا لا نعرف 543 00:37:58,000 --> 00:38:06,000 ما نحن بصدد القيام به تماما حتى الآن. 544 00:38:06,000 --> 00:38:12,000 ماذا نريد أن نفعل، عفوا، لقد حصلت على بعض الأقواس غير تقليدي علينا جميعا. 545 00:38:12,000 --> 00:38:15,000 سنقوم تصحيح هذه الأقواس. 546 00:38:15,000 --> 00:38:19,000 هناك نذهب. 547 00:38:19,000 --> 00:38:22,000 وذلك ما نريد القيام به، وفقا لخوارزمية لدينا، 548 00:38:22,000 --> 00:38:27,000 إذا لم نجد الإبرة؟ 549 00:38:27,000 --> 00:38:32,000 ويقول في حالة أن الإبرة هي اقل مما نحن نبحث في. كيفن. 550 00:38:32,000 --> 00:38:34,000 ننظر فقط في النصف الأيسر. 551 00:38:34,000 --> 00:38:40,000 الحق، لذلك سوف نضع هنا في تعليق يقول "ننظر في النصف الأيسر". 552 00:38:40,000 --> 00:38:46,000 وإذا كان إبرة أكبر من كومة قش في منتصف، ماذا نريد أن نفعل؟ 553 00:38:46,000 --> 00:38:48,000 [طالب] ثم نظرتم الى النصف الأيمن. 554 00:38:48,000 --> 00:38:53,000 إلقاء نظرة على النصف الأيمن، "ننظر في النصف الأيمن." 555 00:38:53,000 --> 00:38:58,000 لا رث جدا. 556 00:38:58,000 --> 00:39:05,000 حسنا، لذلك في هذه المرحلة، الامور تبدو جيدة. 557 00:39:05,000 --> 00:39:13,000 مشكلة مع رمز كما هو مكتوب ما هو؟ 558 00:39:13,000 --> 00:39:15,000 [طالب] ليس لديك نقاط النهاية لنصفين. 559 00:39:15,000 --> 00:39:18,000 الحق، ونحن لم يكن لديك نقاط النهاية لنصفين. 560 00:39:18,000 --> 00:39:20,000 نحن أيضا لن يؤدي الا من خلال الذهاب الى هذا مرة واحدة. 561 00:39:20,000 --> 00:39:23,000 ونحن في طريقنا للبحث فقط في واحدة نقطة الوسط. 562 00:39:23,000 --> 00:39:27,000 إما العنصر هو هناك، أو أنه ليس كذلك. 563 00:39:27,000 --> 00:39:34,000 من أجل إتمام هذا، سوف يتعين علينا القيام به نوعا من التكرار. 564 00:39:34,000 --> 00:39:39,000 نحن بحاجة للحفاظ على تكرار حتى نجد أن 565 00:39:39,000 --> 00:39:43,000 إما العنصر هو في هناك لأننا يضيق الخناق وأخيرا وجدت ذلك، 566 00:39:43,000 --> 00:39:46,000 أو انها ليست في وجود لبحثنا من خلال جميع الأشياء 567 00:39:46,000 --> 00:39:52,000 في نصفي المناسبة للصفيف وجدت أن لا شيء هناك. 568 00:39:52,000 --> 00:39:56,000 >> كلما كنا قد حصلت على هذا التكرار يحدث، ما نحن ذاهبون للاستخدام؟ 569 00:39:56,000 --> 00:39:58,000 [طالب] حلقة. 570 00:39:58,000 --> 00:40:00,000 نوعا من الحلقة. نعم. 571 00:40:00,000 --> 00:40:03,000 [طالب] هل يمكن أن تفعل حلقة افعل حين، وأنها تفعل ذلك ثم حين 572 00:40:03,000 --> 00:40:10,000 الإبرة لا يساوي-أنا لست متأكدا من أين كنت ذاهبا في ذلك. 573 00:40:10,000 --> 00:40:18,000 ولكن نوع من مثل ذلك طالما أنه لا يساوي القيمة التي مدخلات المستخدم. 574 00:40:18,000 --> 00:40:21,000 نعم، لذلك دعونا نرى كيف يمكن هذه الكتابة نفسها؟ 575 00:40:21,000 --> 00:40:23,000 قلت دعونا استخدام حلقة افعل الوقت. 576 00:40:23,000 --> 00:40:26,000 أين القيام البداية؟ 577 00:40:26,000 --> 00:40:33,000 [طالب] مباشرة بعد حجم / 2. 578 00:40:33,000 --> 00:40:42,000 [نيت] حسنا، وماذا نحن فاعلون؟ 579 00:40:42,000 --> 00:40:44,000 سنقوم في حين ملء وقت لاحق. 580 00:40:44,000 --> 00:40:46,000 ما نحن فاعلون؟ 581 00:40:46,000 --> 00:40:49,000 [طالب] لا نريد أن نفعل كل الاشياء لدينا في الجزء إذا؟ 582 00:40:49,000 --> 00:40:52,000 [نيت] هل كل هذه الأشياء، عظيم. 583 00:40:52,000 --> 00:40:55,000 نسخ ولصق. 584 00:40:55,000 --> 00:40:59,000 أوه، رجل. 585 00:40:59,000 --> 00:41:03,000 دعونا نرى إذا كان هذا يعمل، إذا وسعنا هذا التبويب على. 586 00:41:03,000 --> 00:41:08,000 جميلة. 587 00:41:08,000 --> 00:41:16,000 حسنا، ونحن حتى حفظ هذا يا رفاق الحصول عليها. 588 00:41:16,000 --> 00:41:21,000 كل الحق، ونحن بصدد القيام بذلك في حين- 589 00:41:21,000 --> 00:41:25,000 ما هو الشرط بينما كنت بعد؟ 590 00:41:25,000 --> 00:41:31,000 [طالب] على الرغم من أن الإبرة لا يساوي، لذلك مثل علامة تعجب. 591 00:41:31,000 --> 00:41:37,000 ولكن لست متأكدا بالضبط ما هو حتى الان. 592 00:41:37,000 --> 00:41:39,000 [نيت] نعم، هذا هو واحد طريقة للقيام بذلك. 593 00:41:39,000 --> 00:41:41,000 سام، هل لديك تعليق؟ 594 00:41:41,000 --> 00:41:43,000 [سام] تذكرت عندما نظرت إلى أشرطة الفيديو، 595 00:41:43,000 --> 00:41:48,000 أخذت لقطة واحدة من مثل وعندما فعلنا في pseudocode لذلك، 596 00:41:48,000 --> 00:41:52,000 كان هناك بعض العلاقة بين ماكس ودقيقة. 597 00:41:52,000 --> 00:41:58,000 وأعتقد أنه كان شيء من هذا القبيل إذا الحد الأقصى هو أقل من أي وقت مضى من دقيقة. 598 00:41:58,000 --> 00:42:00,000 حصلت عليه. 599 00:42:00,000 --> 00:42:04,000 [سام] أو ما شابه إذا ماكس ليست أقل من دقيقة أو شيء من هذا القبيل، 600 00:42:04,000 --> 00:42:06,000 لأن ذلك يعني أن كنت قد بحثت كل شيء. 601 00:42:06,000 --> 00:42:13,000 >> نعم، وماذا في ذلك أنها لا تبدو دقيقة كحد أقصى وكانت اشارة الى؟ 602 00:42:13,000 --> 00:42:16,000 [سام]-القيم التي الأعداد الصحيحة التي تجري لتغيير 603 00:42:16,000 --> 00:42:18,000 نسبة إلى حيث وضعنا نقطة الوسط. 604 00:42:18,000 --> 00:42:20,000 بالضبط. 605 00:42:20,000 --> 00:42:24,000 [سام] وعند هذه النقطة، لانه سيكون [غير مسموع] حساب الحد الأقصى والحد الأدنى. 606 00:42:24,000 --> 00:42:29,000 منتصف هذا الحد الأقصى والحد الأدنى فكرة. 607 00:42:29,000 --> 00:42:35,000 هل هذا معقول إلى الناس؟ 608 00:42:35,000 --> 00:42:39,000 إذا كان لنا أن تبدأ في النظر في كيفية ونحن في طريقنا للقيام بذلك التكرار، 609 00:42:39,000 --> 00:42:43,000 أنت على حق تماما أننا نريد أن استخدام نوع من حين تفعل حلقة. 610 00:42:43,000 --> 00:42:49,000 ولكن أعتقد إذا كنا نتذكر ما يحدث في بقعة من هذه المجموعة 611 00:42:49,000 --> 00:42:53,000 وما يحدث في الواقع-I صباحا أريد أن أكتب أكثر من هنا، 612 00:42:53,000 --> 00:42:58,000 في التكرار الأول من البحث الثنائي، لدينا، 613 00:42:58,000 --> 00:43:05,000 انا ذاهب الى استخدام باء وهاء للدلالة على بداية. 614 00:43:05,000 --> 00:43:10,000 ومن ثم نهاية مجموعتنا. 615 00:43:10,000 --> 00:43:14,000 ونحن نعلم أن بداية هو الحق في 4 أكثر من هنا، 616 00:43:14,000 --> 00:43:18,000 ونحن نعلم أن النهاية هي في 108. 617 00:43:18,000 --> 00:43:23,000 نقول تبحث عن رقم 15. 618 00:43:23,000 --> 00:43:27,000 المرة الأولى التي تفعل ذلك، مثل رأينا في وقت سابق، 619 00:43:27,000 --> 00:43:30,000 نقطة الوسط يجري إما لتكون 16 أو 23 620 00:43:30,000 --> 00:43:34,000 اعتمادا على كيفية حساب الامور. 621 00:43:34,000 --> 00:43:37,000 ومنذ تقسيم بالتساوي في منتصف تعطينا هذه المساحة 622 00:43:37,000 --> 00:43:42,000 بين 16 و 23، لا يمكننا تقسيم بالتساوي ذلك 623 00:43:42,000 --> 00:43:47,000 أو تقسيمها والحصول على نقطة الوسط صحيح. 624 00:43:47,000 --> 00:43:49,000 سوف نبحث في 16. 625 00:43:49,000 --> 00:43:55,000 سوف ندرك "يا، 16> 15 بأننا تبحث عنه." 626 00:43:55,000 --> 00:43:59,000 للنظر بعد ذلك في النصف الأيسر من الصفيف 627 00:43:59,000 --> 00:44:03,000 ما سنقوم به هو في نهاية المطاف التخلص 628 00:44:03,000 --> 00:44:07,000 هذا الجزء العلوي بأكمله 629 00:44:07,000 --> 00:44:16,000 وقال: "حسنا، الآن لدينا نقطة النهاية ستكون هنا." 630 00:44:16,000 --> 00:44:22,000 التكرار التالي من حلقة دينا، ونحن الآن تبحث في هذه المجموعة، 631 00:44:22,000 --> 00:44:25,000 بعد أن تجاهل بشكل فعال لأن هذا الجزء الآن 632 00:44:25,000 --> 00:44:30,000 إذا نحن مع منتصف ليكون الفرق بين البداية والنهاية، 633 00:44:30,000 --> 00:44:34,000 نجد نقطة الوسط أن يكون لدينا 8، 634 00:44:34,000 --> 00:44:40,000 التي يمكننا اختبار ثم 8 لنرى أين هو بالنسبة لعدد نبحث عنه، 635 00:44:40,000 --> 00:44:44,000 15، وجدت أن 15 أكبر، 636 00:44:44,000 --> 00:44:49,000 لذلك لدينا للانتقال إلى الجزء الأيمن من القائمة، 637 00:44:49,000 --> 00:44:51,000 الذي نعرفه لأننا بشر، ويمكننا أن نرى ذلك. 638 00:44:51,000 --> 00:44:54,000 نحن نعلم أن الجزء الأيمن سيكون حيث نجدها، 639 00:44:54,000 --> 00:45:01,000 لكن الكمبيوتر لا يعرف ذلك، ولذلك ما سنقوم به هو في الواقع سنقوم 640 00:45:01,000 --> 00:45:04,000 وقد ترتفع هذه، والآن بداية ونهاية 641 00:45:04,000 --> 00:45:11,000 هي نفس المكان، وبالتالي فإن نقطة الوسط يصبح عدد فقط في القائمة عند هذا الحد، 642 00:45:11,000 --> 00:45:16,000 الذي هو 15، ولقد وجدت أنه. 643 00:45:16,000 --> 00:45:21,000 لا تسلط الضوء على أن بعض هذه حيث الحد الأقصى كله وتدوين دقيقة يجري، 644 00:45:21,000 --> 00:45:24,000 تتبع نقاط النهاية للمجموعة من أجل معرفة 645 00:45:24,000 --> 00:45:35,000 كيفية تضييق الأمور؟ 646 00:45:35,000 --> 00:45:42,000 >> ماذا سيحدث لو كان هذا لا يساوي 15 الآن؟ 647 00:45:42,000 --> 00:45:52,000 ماذا لو كنا نبحث عن 15 و، بدلا من ذلك، كانت هذه أيضا عدد 16؟ 648 00:45:52,000 --> 00:45:54,000 نستطيع أن نقول: "أوه، انها أكبر. 649 00:45:54,000 --> 00:45:57,000 نريد أن نعود إلى اليسار. " 650 00:45:57,000 --> 00:46:01,000 وكنا نقل البريد لدينا للحق، 651 00:46:01,000 --> 00:46:06,000 وعند هذه النقطة لدينا نقطة النهاية التي ستكون متضاربة. 652 00:46:06,000 --> 00:46:09,000 فإنه لن يكون قادرا على البحث عن عناصر أي أكثر 653 00:46:09,000 --> 00:46:13,000 لان لدينا الان لدينا نقطة النهاية وجهة نظرنا البداية، 654 00:46:13,000 --> 00:46:16,000 ماكس لدينا ويوجد لدينا، وانقلبت الآن. 655 00:46:16,000 --> 00:46:23,000 ونحن من خلال البحث مجموعة بأكملها. لا يمكننا العثور على أي شيء. 656 00:46:23,000 --> 00:46:27,000 هذا هو النقطة التي كنا نريد أن نقول، "حسنا، نحن ذاهبون لوقف هذه الخوارزمية. 657 00:46:27,000 --> 00:46:34,000 لم نعثر على أي شيء. ونحن نعلم انها ليست هنا. " 658 00:46:34,000 --> 00:46:36,000 وكيف يتم هذا في الذهاب إليه؟ 659 00:46:36,000 --> 00:46:40,000 [طالب] كيف بالضبط الكمبيوتر التبديل النهاية؟ 660 00:46:40,000 --> 00:46:45,000 كيف ينتهي نهاية قبل البداية؟ 661 00:46:45,000 --> 00:46:48,000 نهاية ينتهي قبل بداية 662 00:46:48,000 --> 00:46:54,000 بسبب الرياضيات أننا في طريقنا للقيام في كل مرة نفعل ذلك. 663 00:46:54,000 --> 00:47:00,000 الطريقة التي المبادلة إذا نظرتم أول مرة نفعل ذلك المبادلة 664 00:47:00,000 --> 00:47:03,000 حيث لدينا بداية في تمام الساعة 4 والنهاية 665 00:47:03,000 --> 00:47:13,000 على طول الطريق في نقطة الوسط لدينا 108 و، ويقول، في 16 - 666 00:47:13,000 --> 00:47:20,000 أنا ذاهب إلى إعادة تعيين هذه مرة أخرى إلى 15 إذا كنا نبحث عن ال 15، 667 00:47:20,000 --> 00:47:25,000 كنا نعرف أن ما نقوم به عند فحص 16 و رأى أنه أكبر 668 00:47:25,000 --> 00:47:28,000 وأراد أن يتخلص من جزء كامل الحق في القائمة، 669 00:47:28,000 --> 00:47:36,000 رأينا أن ما كنا نريد القيام به هو نقل هذا البريد هنا. 670 00:47:36,000 --> 00:47:44,000 على نحو فعال، وحصلت على نقل البريد إلى واحدة قبل منتصف. 671 00:47:44,000 --> 00:47:48,000 وبالمثل، عندما فعلنا هذا التكرار من الخوارزمية 672 00:47:48,000 --> 00:47:51,000 وكان في منتصف 8، 673 00:47:51,000 --> 00:47:55,000 وجدنا أن 8 <15، لذلك أردنا أن نقل ب 674 00:47:55,000 --> 00:48:00,000 الماضى منتصف. 675 00:48:00,000 --> 00:48:07,000 الآن، والبداية والنهاية معا على حد سواء في هذه 15. 676 00:48:07,000 --> 00:48:10,000 >> إذا كنا قد يحدث للبحث عن بعض قيمة أخرى، وليس 15، 677 00:48:10,000 --> 00:48:14,000 أو إذا كان هذا بدلا من ذلك كان 15 16، 678 00:48:14,000 --> 00:48:20,000 قد وجدنا أن ه نريد أن تتحرك واحدة قبل منتصف. 679 00:48:20,000 --> 00:48:33,000 الآن فإن ه يكون هناك انعكاس أقل من ب. 680 00:48:33,000 --> 00:48:39,000 دعونا المشي من خلال الطريقة التي فعلا في نهاية المطاف الترميز هذه الخوارزمية. 681 00:48:39,000 --> 00:48:44,000 نعرف أننا نريد أن يكون هذا الحساب منتصف. 682 00:48:44,000 --> 00:48:48,000 ونحن نعرف أيضا أننا نريد أن تتبع بداية ونهاية الصفيف 683 00:48:48,000 --> 00:48:51,000 من مجموعتنا الحالية حتى نتمكن من معرفة 684 00:48:51,000 --> 00:48:56,000 حيث هذا النصف الأيسر من القائمة وأين النصف الأيمن من القائمة. 685 00:48:56,000 --> 00:49:03,000 ونحن نفعل ذلك مع أي تبدأ وتنتهي، 686 00:49:03,000 --> 00:49:07,000 أو يمكننا أن نطلق عليهم Min و Max. 687 00:49:07,000 --> 00:49:10,000 سوف تستخدم تبدأ وتنتهي هذه المرة. 688 00:49:10,000 --> 00:49:15,000 عندما نبدأ، إذا نظرنا إلى الوراء في مثالنا هنا إلى أسفل، 689 00:49:15,000 --> 00:49:20,000 كان من المقرر بداية لدينا بداية من الصفيف، وكأنها أمر طبيعي. 690 00:49:20,000 --> 00:49:25,000 وكان مؤشر ما هذا؟ ماذا يجب أن تبدأ لدينا؟ 691 00:49:25,000 --> 00:49:27,000 دانيال. 692 00:49:27,000 --> 00:49:30,000 [دانيال] كومة التبن [0]. 693 00:49:30,000 --> 00:49:37,000 [نيت] نعم، حتى نتمكن من تعيين يساوي كومة قش [0]. 694 00:49:37,000 --> 00:49:40,000 المشكلة، مع ذلك، هو أن هذا لا يعطينا موقف العنصر الأول. 695 00:49:40,000 --> 00:49:45,000 هذا يعطينا مؤشر العنصر الأول أو القيمة الفعلية في ذلك المركز الأول. 696 00:49:45,000 --> 00:49:47,000 [طالب] التي سيتم تحويل إلى 0.20؟ 697 00:49:47,000 --> 00:49:52,000 [نيت] هذا ما سوف تفعله هو جيدا، فإنه لن تفعل أي تحويل. 698 00:49:52,000 --> 00:49:56,000 ما سوف تفعله هو أنها سوف تخزين 4 في البدء، 699 00:49:56,000 --> 00:49:59,000 وبعد ذلك سوف يكون من الصعب إجراء مقارنات ضد تبدأ 700 00:49:59,000 --> 00:50:03,000 لأن ستبدأ يكون عقد بلغت قيمتها 4، 701 00:50:03,000 --> 00:50:06,000 الذي هو بداية مجموعة لدينا، 702 00:50:06,000 --> 00:50:08,000 ولكننا نريد أن تتبع مؤشرات في الصفيف 703 00:50:08,000 --> 00:50:11,000 بدلا من القيم. 704 00:50:11,000 --> 00:50:17,000 سنستخدم في الواقع 0، من هذا القبيل. 705 00:50:17,000 --> 00:50:20,000 لنهاية شارلوت مصفوفة جلب هذا قليلا في وقت سابق. 706 00:50:20,000 --> 00:50:23,000 هذا هو المكان الذي سوف تأخذ في الاعتبار فهرسة صفر. 707 00:50:23,000 --> 00:50:25,000 >> شارلوت، ما هو نهاية الصفيف؟ 708 00:50:25,000 --> 00:50:28,000 ما هو مؤشر لنهاية؟ 709 00:50:28,000 --> 00:50:30,000 [شارلوت] الحجم - 1. 710 00:50:30,000 --> 00:50:32,000 نعم، والذي ينبغي لنا أن حجم استخدام؟ 711 00:50:32,000 --> 00:50:35,000 يجب أن نستخدم حجم رأس المال أو حجم صغيرة؟ 712 00:50:35,000 --> 00:50:37,000 العاصمة الحجم. 713 00:50:37,000 --> 00:50:42,000 في هذه الحالة، يمكن أن نستخدم حجم رأس المال. 714 00:50:42,000 --> 00:50:45,000 إذا أردنا أن تكون هذه الوظيفة المحمولة 715 00:50:45,000 --> 00:50:48,000 واستخدام هذه الوظيفة في برامج أخرى، 716 00:50:48,000 --> 00:50:50,000 في الواقع يمكننا استخدام حجم صغيرة. 717 00:50:50,000 --> 00:50:52,000 أنه بخير أيضا. 718 00:50:52,000 --> 00:51:01,000 ولكن شارلوت هو حق تماما أننا نريد أن يكون حجم - 1. 719 00:51:01,000 --> 00:51:03,000 في هذه نقطة 720 00:51:03,000 --> 00:51:05,000 [طالب] كيف يمكن أن يكون حجم يمكنك استخدام الأحرف الكبيرة؟ 721 00:51:05,000 --> 00:51:07,000 كيف يتم ذلك يمكننا استخدام الأحرف الكبيرة الحجم؟ 722 00:51:07,000 --> 00:51:13,000 اتضح أن هذه هي حقا يعرف #، 723 00:51:13,000 --> 00:51:19,000 تحت غطاء محرك السيارة، مثل نص البحث والاستبدال، إذا كان هذا الأمر يبدو معقولا تماما. 724 00:51:19,000 --> 00:51:24,000 عند ترجمة التعليمات البرمجية الخاصة بك، وتجهيزها المرحلة 725 00:51:24,000 --> 00:51:27,000 من المترجم يمر عبر الملف، 726 00:51:27,000 --> 00:51:31,000 ويبدو أن في كل مكان لكنت قد كتبت حجم رأس المال، 727 00:51:31,000 --> 00:51:39,000 وهذا النص فإنه يستبدل حرفيا مع 8، تماما مثل ذلك. 728 00:51:39,000 --> 00:51:42,000 وبهذا المعنى، وهذا يختلف كثيرا عن متغير. 729 00:51:42,000 --> 00:51:45,000 لأنها لا تأخذ أية مساحة في الذاكرة. 730 00:51:45,000 --> 00:51:52,000 انها استبدال نص بسيط خدعة. 731 00:51:52,000 --> 00:51:57,000 في هذه الحالة، ونحن في طريقنا لاستخدام الحجم. 732 00:51:57,000 --> 00:52:01,000 من هنا نحن لا نريد أن نفعل نوعا من التكرار، 733 00:52:01,000 --> 00:52:03,000 ونحن على الطريق الصحيح مع حلقة افعل بينما لدينا. 734 00:52:03,000 --> 00:52:08,000 نحن نريد أن نفعل شيئا حتى شرط لا تعقد بعد الآن، 735 00:52:08,000 --> 00:52:12,000 وكما رأينا في وقت سابق، رأينا أن هذا الشرط 736 00:52:12,000 --> 00:52:19,000 كان في الواقع أننا لا نريد نهاية 737 00:52:19,000 --> 00:52:24,000 أن تكون أقل من البدء. 738 00:52:24,000 --> 00:52:26,000 >> هذا هو وضعنا توقف. 739 00:52:26,000 --> 00:52:35,000 إذا حدث هذا، نحن نريد لوقف وتعلن مثل، "يا، ونحن لم نجد أي شيء." 740 00:52:35,000 --> 00:52:43,000 للتعبير عن هذا، ونحن لا ترغب في استخدام نوع من الحلقة. 741 00:52:43,000 --> 00:52:49,000 في هذه الحالة، يكون حلقة افعل حين، لحلقة، حلقة حين؟ 742 00:52:49,000 --> 00:52:51,000 لدينا حلقة افعل بينما هنا. 743 00:52:51,000 --> 00:52:53,000 هل الرجال مثل هذا النهج؟ 744 00:52:53,000 --> 00:52:59,000 هل تعتقد أننا يجب أن نحاول اتباع نهج مختلف؟ 745 00:52:59,000 --> 00:53:01,000 كيفن، أي أفكار؟ 746 00:53:01,000 --> 00:53:06,000 يمكن أن لدينا حلقة في حين أننا نعرف الحد الأقصى 747 00:53:06,000 --> 00:53:11,000 سيكون أكبر من الحد الأدنى في أي حال البداية. 748 00:53:11,000 --> 00:53:14,000 نعم، لذلك ليس هناك التهيئة الذي يجب أن يحدث. 749 00:53:14,000 --> 00:53:17,000 تلك الحلقات بينما تفعل كبيرة عندما يكون لديك شيء لتهيئة 750 00:53:17,000 --> 00:53:21,000 قبل اختبار ثم، في حين هنا 751 00:53:21,000 --> 00:53:26,000 ونحن نعلم أننا لن نبقى على إعادة تهيئة كلا تبدأ وتنتهي 752 00:53:26,000 --> 00:53:28,000 كل جولة من الحلقة. 753 00:53:28,000 --> 00:53:32,000 ونحن نعلم أننا نريد أن تهيئة لهم، ثم تحقق شرطنا. 754 00:53:32,000 --> 00:53:38,000 في هذه الحالة، سأذهب مع الواقع حلقة في حين بسيطة. 755 00:53:38,000 --> 00:53:44,000 اتضح أن تستخدم تفعل حين حلقات نادرا إلى حد ما. 756 00:53:44,000 --> 00:53:49,000 وهناك الكثير من الأماكن حتى لا تعلم ما في حين الحلقات. 757 00:53:49,000 --> 00:53:53,000 انهم جيدة للتعامل مع مدخلات المستخدم، لذلك شهدنا الكثير منهم حتى الآن. 758 00:53:53,000 --> 00:53:59,000 ولكن الطبيعي و. بينما الحلقات الكثير أكثر شيوعا 759 00:53:59,000 --> 00:54:03,000 وتبين أن هذا الشرط كما هو مكتوب 760 00:54:03,000 --> 00:54:09,000 لن تفعل حقا لنا خيرا كثيرا، والسبب في ذلك؟ 761 00:54:09,000 --> 00:54:11,000 أنا آسف، أنا لا أعرف اسمك. 762 00:54:11,000 --> 00:54:13,000 أنا جيري. >> عذرا؟ 763 00:54:13,000 --> 00:54:15,000 انها B-O-R-U-I. 764 00:54:15,000 --> 00:54:18,000 أوه، حسنا. 765 00:54:18,000 --> 00:54:23,000 أنا لا أراك على قائمتي. 766 00:54:23,000 --> 00:54:26,000 أوه، ذلك لأن أوه، أن من المنطقي. 767 00:54:26,000 --> 00:54:31,000 هل لديك فكرة لماذا هذه الحلقة في حين قد لا تعمل بالشكل المطلوب، 768 00:54:31,000 --> 00:54:38,000 كما هو مكتوب مع الشرط؟ 769 00:54:38,000 --> 00:54:43,000 [جيري] يعني كأنك تريد كل الاشياء بعد ان في،؟ 770 00:54:43,000 --> 00:54:46,000 نعم، حتى واحد. 771 00:54:46,000 --> 00:54:49,000 قد يكون لدينا لوضع كل من هذه الاشياء في حلقة من الوقت، وهو صحيح تماما. 772 00:54:49,000 --> 00:54:55,000 والشيء الآخر الذي قليلا أكثر صعوبة، رغم ذلك، هو أن هذا الشرط لا يعمل. 773 00:54:55,000 --> 00:54:57,000 [طالب] تحتاج إلى الوجه عليه. 774 00:54:57,000 --> 00:55:04,000 الحق، لذلك سوف لا يكون هذا الشرط صحيحا في البداية من أي وقت مضى الطريق تحدثنا عن ذلك. 775 00:55:04,000 --> 00:55:08,000 نحن نريد أن نفعل شيئا حتى <نهاية تبدأ، 776 00:55:08,000 --> 00:55:13,000 لكننا نريد أن نفعل شيئا بينما 777 00:55:13,000 --> 00:55:21,000 تبدأ ≤ نهاية. 778 00:55:21,000 --> 00:55:24,000 >> أن هناك عكس المنطق هناك. 779 00:55:24,000 --> 00:55:27,000 أنا مذنب لجعل تلك الأخطاء في كل وقت. 780 00:55:27,000 --> 00:55:31,000 [طالب] لماذا يجب أن تكون أقل من أو يساوي؟ 781 00:55:31,000 --> 00:55:33,000 لأن لا تتذكر الحالة التي وصلنا إلى 782 00:55:33,000 --> 00:55:36,000 حيث لم يكن هناك سوى عنصر واحد، وكنا أسفل، 783 00:55:36,000 --> 00:55:43,000 وكنا نبحث فقط في 15 في مجموعتنا؟ 784 00:55:43,000 --> 00:55:47,000 وكانت بدايتنا ونهايتنا نفس العنصر. 785 00:55:47,000 --> 00:55:50,000 نحن نريد أن نتأكد من أننا تعامل مع هذه الحالة. 786 00:55:50,000 --> 00:55:54,000 إذا فعلنا أقل مباشرة من، 787 00:55:54,000 --> 00:55:58,000 سنكون فقط قادرة على الحصول على وصولا الى مجموعة 2-العنصر. 788 00:55:58,000 --> 00:56:06,000 عندما وصلنا إلى أسفل إلى أن العنصر الأخير، إذا كان هذا العنصر كان لدينا، كنا أبدا العثور عليه. 789 00:56:06,000 --> 00:56:10,000 هنا الآن، يمكننا أن نفعل بالضبط مثلك كانوا يقولون. 790 00:56:10,000 --> 00:56:15,000 يمكننا أن نبدأ السقوط الاشياء الحق في منتصف حلقة في حين لدينا. 791 00:56:15,000 --> 00:56:20,000 يمكننا صوت نزول المطر في منتصف لدينا. 792 00:56:20,000 --> 00:56:24,000 يمكن أن نأخذ كل هذه إذا كانت تصريحات، 793 00:56:24,000 --> 00:56:30,000 سحبهم من هذه الحلقة افعل حين، 794 00:56:30,000 --> 00:56:34,000 صوت نزول المطر لهم في، 795 00:56:34,000 --> 00:56:39,000 تنظيف الامور قليلا، 796 00:56:39,000 --> 00:56:48,000 وسوف تمضي قدما وحفظ هذه النسخة. 797 00:56:48,000 --> 00:56:53,000 وعند هذه النقطة، ونحن نقترب كثيرا جدا. 798 00:56:53,000 --> 00:56:55,000 سام. 799 00:56:55,000 --> 00:56:58,000 اعتقد ان لديك أيضا أن يكون نقطة الوسط = حجم كثافة العمليات - 1/2. 800 00:56:58,000 --> 00:57:01,000 حصلت عليه، وحجم - 1/2. 801 00:57:01,000 --> 00:57:05,000 هل هناك أي شيء آخر ونحن بحاجة إلى تغيير هذا الخط حوالي؟ 802 00:57:05,000 --> 00:57:10,000 كان ذلك صيدا جيدا. 803 00:57:10,000 --> 00:57:14,000 >> ماذا تفعل حجم؟ نحن المتغيرة الحجم؟ 804 00:57:14,000 --> 00:57:17,000 من أجل الحفاظ على خط مثل هذا، لدينا لتغيير الحجم. 805 00:57:17,000 --> 00:57:21,000 لدينا لتغيير حجم كل مرة نذهب لحلقة حول. 806 00:57:21,000 --> 00:57:25,000 ولكن تذكر عندما كنا نمر مثالنا قليلا في وقت سابق، 807 00:57:25,000 --> 00:57:30,000 وكان لدينا بداية في تمام الساعة 4 808 00:57:30,000 --> 00:57:33,000 ونهاية كل وسيلة في أكثر من 108؟ 809 00:57:33,000 --> 00:57:35,000 كيف نحسب نقطة الوسط؟ 810 00:57:35,000 --> 00:57:38,000 كنا باستخدام حجم؟ 811 00:57:38,000 --> 00:57:40,000 أو كنا باستخدام تبدأ وتنتهي بدلا من ذلك؟ 812 00:57:40,000 --> 00:57:42,000 إنه الفرق بين النهاية والبداية. 813 00:57:42,000 --> 00:57:50,000 بالضبط، وكيف ينبغي أن أكتب بالضبط، شارلوت؟ 814 00:57:50,000 --> 00:57:52,000 فقط في نهاية - تبدأ. 815 00:57:52,000 --> 00:57:55,000 فإنك لن تحتاج إلى القيام بما - 1 816 00:57:55,000 --> 00:57:58,000 لأن - وقد أدرجت 1 في نهاية وتبدأ بالفعل. 817 00:57:58,000 --> 00:58:00,000 [نيت] رائع، أنت على حق تماما. 818 00:58:00,000 --> 00:58:03,000 ليس لدينا للقيام - 1 لأن ذلك - وقد أدرجت 1 819 00:58:03,000 --> 00:58:08,000 وشكلت عندما كنا تهيئة المتغير نهاية. 820 00:58:08,000 --> 00:58:11,000 >> هل هناك أي شيء آخر يجب أن أفعل لبناء جملة هذا الخط معنى؟ 821 00:58:11,000 --> 00:58:13,000 [طالب] زائد تبدأ. >> زائد نبدأ؟ 822 00:58:13,000 --> 00:58:15,000 [طالب] في نهاية المطاف. 823 00:58:15,000 --> 00:58:20,000 لأنه يحسب فقط نصف طول. 824 00:58:20,000 --> 00:58:26,000 تحتاج لإضافة تبدأ. 825 00:58:26,000 --> 00:58:31,000 [نيت] ماذا ستعمل هذه بالنسبة لنا حساب؟ 826 00:58:31,000 --> 00:58:35,000 إذا كنا نفكر في نهاية هذا التكرار على الأولى من الحلقة، 827 00:58:35,000 --> 00:58:40,000 نهاية ستكون في موقف المؤشر 7. 828 00:58:40,000 --> 00:58:43,000 تبدأ في الموضع 0. 829 00:58:43,000 --> 00:58:47,000 تذكر، نحن نبحث عن أي 830 00:58:47,000 --> 00:58:52,000 موقف 3 أو المركز 4. 831 00:58:52,000 --> 00:58:56,000 إذا نظرنا إلى هذه الرياضيات، فقط لجعله أكثر قليلا ملموسة، 832 00:58:56,000 --> 00:59:02,000 وضع بعض الأرقام هنا، لدينا 7، 0، 833 00:59:02,000 --> 00:59:10,000 7 حتى - 0، ثم 2 / 834 00:59:10,000 --> 00:59:19,000 هو 3 في قسمة عدد صحيح، وهذا هو. 835 00:59:19,000 --> 00:59:26,000 ثم هل نحن بحاجة إلى إضافة ثم تبدأ ظهورنا؟ 836 00:59:26,000 --> 00:59:28,000 نحن لا في هذه الحالة. 837 00:59:28,000 --> 00:59:31,000 على التكرار الأولى، وسوف يكون على ما يرام لأن بيغن هو 0. 838 00:59:31,000 --> 00:59:36,000 ولكن ونحن نتقدم، نحن حقا بحاجة فقط جميع 839 00:59:36,000 --> 00:59:42,000 نهاية - تبدأ / 2. 840 00:59:42,000 --> 00:59:46,000 هناك واحد خدعة أخرى هنا، وهذا هو واحد من هما الأسبقية. 841 00:59:46,000 --> 00:59:49,000 [طالب] هل نحن بحاجة قوسين؟ 842 00:59:49,000 --> 00:59:53,000 [نيت] بالضبط، وهذا لأنه إذا لم نضع هذه الأقواس، 843 00:59:53,000 --> 00:59:58,000 وعندئذ يمكن تفسير هذا الخط بدلا 844 00:59:58,000 --> 01:00:09,000 كما (النهاية) - (بداية / 2)، ونحن بالتأكيد لا نريد. 845 01:00:09,000 --> 01:00:11,000 احترس من تلك القواعد الأسبقية. 846 01:00:11,000 --> 01:00:15,000 [طالب] لماذا لا يكون في نهاية + نبدأ؟ 847 01:00:15,000 --> 01:00:17,000 لماذا لا يكون في نهاية + نبدأ؟ 848 01:00:17,000 --> 01:00:19,000 [طالب] لماذا هو ليس ذلك؟ 849 01:00:19,000 --> 01:00:24,000 لماذا يكون من +؟ 850 01:00:24,000 --> 01:00:26,000 أعتقد أنك على حق. 851 01:00:26,000 --> 01:00:28,000 [طالب] لأنه من العادي؟ 852 01:00:28,000 --> 01:00:31,000 [نيت] + تاريخ البدء، أنت على حق تماما. 853 01:00:31,000 --> 01:00:34,000 نجاح باهر، وأنا أخطأ تماما. أنت على حق. 854 01:00:34,000 --> 01:00:39,000 إذا كنا نفعل ناقص، ونحن نريد لإضافة تبدأ مرة أخرى. 855 01:00:39,000 --> 01:00:43,000 في هذه الحالة، أنت على حق تماما أننا نريد أن نأخذ من المتوسط ​​من اثنين، 856 01:00:43,000 --> 01:00:45,000 لذلك نحن لا نريد لإضافتها، بدلا من طرح عليهم. 857 01:00:45,000 --> 01:00:49,000 [طالب] وستعمل أيضا إذا فعلتم نهاية - تبدأ / 2 + تبدأ. 858 01:00:49,000 --> 01:00:55,000 سوف نفعل إذا، أعتقد ذلك. 859 01:00:55,000 --> 01:01:00,000 >> على سبيل المثال، إذا كنا نبحث في البدء، 860 01:01:00,000 --> 01:01:04,000 ونحن تحولت على مدى هنا 861 01:01:04,000 --> 01:01:08,000 إلى 15. 862 01:01:08,000 --> 01:01:12,000 الآن هو في موقف تبدأ 2. 863 01:01:12,000 --> 01:01:15,000 النهائية هي في الموقف 7. 864 01:01:15,000 --> 01:01:21,000 إذا طرحنا منها، وحصلنا على 5. 865 01:01:21,000 --> 01:01:24,000 بقسمة ذلك على 2 نحصل على 2. 866 01:01:24,000 --> 01:01:27,000 ثم نضيف 2 عودة في، 867 01:01:27,000 --> 01:01:30,000 وأن يحصل لنا على موقف 4th، 868 01:01:30,000 --> 01:01:33,000 وهو هنا الحق، الذي هو نقطة الوسط. 869 01:01:33,000 --> 01:01:36,000 [طالب] هل نحن بحاجة لرعاية التفاف؟ 870 01:01:36,000 --> 01:01:39,000 بأي معنى نحتاج لرعاية التفاف؟ 871 01:01:39,000 --> 01:01:43,000 إذا كان مجموع أو الفرق بين 872 01:01:43,000 --> 01:01:45,000 اعتمادا على كيفية ونحن نفعل ذلك ليس عدد زوجي. 873 01:01:45,000 --> 01:01:49,000 ثم يحصل الخلط ما إذا كان جهاز الكمبيوتر عندما يكون 2.5؛ 874 01:01:49,000 --> 01:01:52,000 هل الانتقال إلى اليسار أو إلى اليمين لتحديد أي هو نقطة الوسط؟ 875 01:01:52,000 --> 01:01:54,000 حصلت عليه. 876 01:01:54,000 --> 01:01:56,000 تبين أن قسمة عدد صحيح مع، 877 01:01:56,000 --> 01:01:59,000 لم نحصل على هذه الأرقام من أي وقت مضى النقطة العائمة. 878 01:01:59,000 --> 01:02:01,000 ونحن لم تحصل على العلامة العشرية. 879 01:02:01,000 --> 01:02:04,000 انها التخلص منها تماما. 880 01:02:04,000 --> 01:02:08,000 إذا كان لديك جهاز كمبيوتر تقسيم اثنين من المتغيرات الباحث، 881 01:02:08,000 --> 01:02:11,000 واحد هو 7، والآخر هو 2، 882 01:02:11,000 --> 01:02:13,000 فلن تحصل على 3،5 نتيجة لذلك. 883 01:02:13,000 --> 01:02:16,000 سوف تحصل على 3. 884 01:02:16,000 --> 01:02:19,000 سيتم تجاهل الباقي، لذلك فمن فعال التقريب- 885 01:02:19,000 --> 01:02:24,000 لا بل جولة أرضية، إذا كنت معتادا على اللاعبين أن في الرياضيات، 886 01:02:24,000 --> 01:02:27,000 حيث يمكنك تجاهل تماما عشري، 887 01:02:27,000 --> 01:02:31,000 وهكذا كنت مقطوعة أساسا من أسفل إلى أقرب 888 01:02:31,000 --> 01:02:33,000 المجموع، إلى أقرب عدد صحيح. 889 01:02:33,000 --> 01:02:38,000 [طالب] ولكن بعد ذلك هذه مشكلة لأنه إذا كان لديك مجموعة من 7 عناصر 890 01:02:38,000 --> 01:02:43,000 ثم يأخذ تلقائيا العنصر 3 من نقطة الوسط بدلا من 4. 891 01:02:43,000 --> 01:02:46,000 كيف نتعامل مع ذلك؟ 892 01:02:46,000 --> 01:02:49,000 انها مشكلة لأنه إذا كان لدينا مجموعة من 7، 893 01:02:49,000 --> 01:02:54,000 فإنه اختيار 3 بدلا من 4. 894 01:02:54,000 --> 01:02:56,000 هل يمكن أن توضح أكثر من ذلك بقليل؟ 895 01:02:56,000 --> 01:02:59,000 [طالب] لأنه إذا كان لديك 7 عناصر ثم العنصر 4 896 01:02:59,000 --> 01:03:04,000 سيكون نقطة الوسط، أليس كذلك؟ 897 01:03:04,000 --> 01:03:07,000 تذكر تعليقك عن كونها صفر فهرستها، وإن كان. 898 01:03:07,000 --> 01:03:10,000 [طالب] نعم، وذلك في موقف 3. من شأنها أن تكون نقطة الوسط. 899 01:03:10,000 --> 01:03:12,000 نعم. 900 01:03:12,000 --> 01:03:16,000 أوه، حسنا. أرى ما تعنيه. 901 01:03:16,000 --> 01:03:19,000 انها نوع من غريب، ونحن تعتاد على هذه الفكرة كاملة من 902 01:03:19,000 --> 01:03:22,000 التخلص من الكسور العشرية. 903 01:03:22,000 --> 01:03:26,000 وهذا هو نقطة كبيرة. 904 01:03:26,000 --> 01:03:30,000 دعونا إنهاء هذا الأمر. 905 01:03:30,000 --> 01:03:32,000 لقد قمنا بحساب نقطة الوسط لدينا. 906 01:03:32,000 --> 01:03:37,000 >> نحن اختبار لمعرفة ما اذا إبرة لدينا تساوي قيمة الأوسط. 907 01:03:37,000 --> 01:03:41,000 نحن الطباعة التي وجدنا أنها، ولكن في الحقيقة، ماذا نريد أن نفعل في هذه الحالة؟ 908 01:03:41,000 --> 01:03:46,000 لقد وجدنا أنه، لذلك نحن نريد السماح للطالب تعلم أن وجدنا أنه. 909 01:03:46,000 --> 01:03:49,000 ونحن قد حصلت على وظيفة وظيفة وهذا منطقي مكتوب. 910 01:03:49,000 --> 01:03:54,000 الطريقة التي يشير إلى الطالب من وظيفتنا أن نكون على استعداد للذهاب 911 01:03:54,000 --> 01:03:58,000 ونقول، "مهلا، هذا صحيح." 912 01:03:58,000 --> 01:04:00,000 كيف نفعل ذلك، كيفن؟ 913 01:04:00,000 --> 01:04:02,000 كنت الايماء رأسك. >> [كيفن] أضف العودة الحقيقية. 914 01:04:02,000 --> 01:04:06,000 [نيت] بالضبط، والعودة الحقيقية. 915 01:04:06,000 --> 01:04:12,000 الآن، إذا لم تكن متساوية، كيف ننظر إلى النصف الأيسر؟ 916 01:04:12,000 --> 01:04:16,000 أي أفكار؟ 917 01:04:16,000 --> 01:04:18,000 ستيلا، أي أفكار؟ 918 01:04:18,000 --> 01:04:21,000 تحتاج إلى تعيين وظيفة جديدة للنهاية. 919 01:04:21,000 --> 01:04:23,000 نعم. 920 01:04:23,000 --> 01:04:29,000 لذلك علينا أن نفعل موقف منتصف - نهاية. 921 01:04:29,000 --> 01:04:33,000 كبيرة. 922 01:04:33,000 --> 01:04:36,000 نحن بحاجة لتعيين وظيفة جديدة في نهاية 923 01:04:36,000 --> 01:04:38,000 للنظر في النصف الأيسر. 924 01:04:38,000 --> 01:04:41,000 كان هذا ما تحدثنا عنه قبل حيث 925 01:04:41,000 --> 01:04:44,000 وأظل العودة إلى هذا المثال. 926 01:04:44,000 --> 01:04:50,000 لدي هنا تبدأ، ومن ثم لدي نهاية كل وسيلة أكثر من هنا. 927 01:04:50,000 --> 01:04:53,000 >> مرة أخرى، إذا نحن نبحث عن 15، ونقطة الوسط لدينا في 16، 928 01:04:53,000 --> 01:04:56,000 ونحن ندرك، "عفوا، 16 هو أكبر. 929 01:04:56,000 --> 01:04:59,000 نريد للانتقال إلى النصف الأيسر ". 930 01:04:59,000 --> 01:05:02,000 وننتقل بعد ذلك إلى نهاية 15، 931 01:05:02,000 --> 01:05:06,000 ونحن نفعل ذلك من خلال اتخاذ واحد بعيدا عن نقطة الوسط 932 01:05:06,000 --> 01:05:09,000 ووضع نهاية لدينا كما أن الجديد. 933 01:05:09,000 --> 01:05:12,000 وبالمثل، إذا كنا نريد أن ننظر إلى النصف الأيمن، كيف نفعل ذلك؟ 934 01:05:12,000 --> 01:05:14,000 هل لديك فكرة؟ 935 01:05:14,000 --> 01:05:22,000 [طالب] ما عليك سوى تحديد البدء في منتصف + 1. 936 01:05:22,000 --> 01:05:24,000 [نيت] الكبرى. 937 01:05:24,000 --> 01:05:29,000 والآن في حالة أن لا نجد أي شيء، 938 01:05:29,000 --> 01:05:32,000 لا التي تحصل من العناية بالنسبة لنا؟ 939 01:05:32,000 --> 01:05:36,000 لا ان دانيال، والحصول على العناية بالنسبة لنا؟ 940 01:05:36,000 --> 01:05:38,000 [دانيال] رقم 941 01:05:38,000 --> 01:05:40,000 [نيت] وإذا كنا تجعل من خلال مجموعة كاملة ونحن لا نجد أي شيء، 942 01:05:40,000 --> 01:05:42,000 حيث سيتم اتخاذ رعاية، أو ينبغي أن نهتم به؟ 943 01:05:42,000 --> 01:05:44,000 [دانيال] الشرط الوقت. 944 01:05:44,000 --> 01:05:48,000 [نيت] نعم، شرط الوقت، بالضبط. 945 01:05:48,000 --> 01:05:51,000 سوف يستغرق الرعاية من الذهاب من خلال مجموعة كاملة إذا لم نجد أي شيء. 946 01:05:51,000 --> 01:05:53,000 وهذه الحلقة حين تنتهي. 947 01:05:53,000 --> 01:05:56,000 ونحن لن لقد واجهت هذه الحالة، 948 01:05:56,000 --> 01:06:03,000 ويمكن أن نعود كاذبة. 949 01:06:03,000 --> 01:06:10,000 يمكننا أيضا ترك هذا إذا كان في مثل هذا هنا 950 01:06:10,000 --> 01:06:14,000 لأنه إذا كان هذا البيان صحيحا إذا، 951 01:06:14,000 --> 01:06:16,000 وسوف يعود وظيفتنا، 952 01:06:16,000 --> 01:06:21,000 ولذا فإننا سوف أساسا إحباط هذه الوظيفة في هذه المرحلة 953 01:06:21,000 --> 01:06:24,000 عندما نعود صحيح. 954 01:06:24,000 --> 01:06:28,000 ولكن ما يحدث مع هذا الهيكل هنا؟ 955 01:06:28,000 --> 01:06:34,000 وهذا العمل تماما، أم أن هناك بعض الخلل المنطقي في هناك؟ 956 01:06:34,000 --> 01:06:37,000 >> هناك بعض الخلل المنطقي في هناك، مع الطريقة التي إعداده. 957 01:06:37,000 --> 01:06:40,000 قد يكون ما؟ 958 01:06:40,000 --> 01:06:43,000 [طالب] لماذا كنت في حاجة إلى - و+ 1S؟ 959 01:06:43,000 --> 01:06:47,000 لدينا مجموعة التي تقوم بتعيين حتى يكون نصف احتياجاتنا اليسار الجديد ونصف الحق. 960 01:06:47,000 --> 01:06:51,000 [طالب] ولكن لماذا لا يمكن أن تفعل ذلك دون - 1S 1S و+؟ 961 01:06:51,000 --> 01:06:53,000 [نيت] نحن يمكن تعيينها يساوي نقطة الوسط؟ 962 01:06:53,000 --> 01:07:04,000 قد يكون مشكلة ما عن ذلك؟ 963 01:07:04,000 --> 01:07:08,000 [طالب] أعتقد أن ذلك بسبب عدم كفاءة لأنك فحص قيمة بالفعل تم فحصها. 964 01:07:08,000 --> 01:07:11,000 [نيت] بالضبط، لذلك هو حق سام تماما. 965 01:07:11,000 --> 01:07:15,000 إذا قمت بتعيين نهاية وتبدأ يساوي نقطة الوسط 966 01:07:15,000 --> 01:07:18,000 بدلا من - 1 و + 1 عاكس، 967 01:07:18,000 --> 01:07:22,000 في مرحلة ما في المستقبل سنقوم في نهاية المطاف التحقق من نقطة الوسط مرة أخرى. 968 01:07:22,000 --> 01:07:26,000 [طالب] لقد بدأت pset، ومن ثم كان لي شيء من هذا القبيل 969 01:07:26,000 --> 01:07:30,000 حيث نسيت أن 1 +، وحصلت على تمسك في حلقة لا نهائية. 970 01:07:30,000 --> 01:07:34,000 الحق، لأنه في مرحلة ما كنت أبدا لتحصل تبدأ وتنتهي 971 01:07:34,000 --> 01:07:39,000 لتتداخل في الواقع. 972 01:07:39,000 --> 01:07:41,000 بارد. 973 01:07:41,000 --> 01:07:44,000 هناك عيب واحد أكثر منطقية، وهذا هو الذي ينبغي أن يكون هذا بالتأكيد 974 01:07:44,000 --> 01:07:48,000 والا اذا. 975 01:07:48,000 --> 01:07:55,000 لماذا قد يكون ذلك؟ 976 01:07:55,000 --> 01:07:59,000 >> والسبب هو ما اذا كان ليس الا اذا، هل تراه، كيفن؟ 977 01:07:59,000 --> 01:08:02,000 [كيفن] نعم، لأنك تغيير نقطة النهاية. 978 01:08:02,000 --> 01:08:05,000 [نيت] بالضبط. 979 01:08:05,000 --> 01:08:07,000 نحن بصدد تغيير نقطة النهاية، 980 01:08:07,000 --> 01:08:12,000 وإذا كان الذي كتبت عليه مثل هذه we'll-جعل مسافات بين- 981 01:08:12,000 --> 01:08:14,000 وسوف تحقق هذه الحالة. 982 01:08:14,000 --> 01:08:18,000 هذه الحالة، إذا نجحت صح التعبير، من إحباط وظيفة. 983 01:08:18,000 --> 01:08:21,000 بعد ذلك سوف تحقق هذه الحالة القادمة، 984 01:08:21,000 --> 01:08:24,000 وإذا كان هذا ينجح، فإنه سيتم ضبط نقطة النهاية، 985 01:08:24,000 --> 01:08:28,000 وبعد ذلك سوف يستمر على هذه الحالة وتحقق. 986 01:08:28,000 --> 01:08:31,000 ولكن في هذه المرحلة، ونحن لا نريد أن يستمر فحص. 987 01:08:31,000 --> 01:08:35,000 لحسن الحظ، لدينا لم يتم إعادة ضبط نقطة الوسط هنا، 988 01:08:35,000 --> 01:08:39,000 ونحن نعلم أن هذه الحالة لن تنجح. 989 01:08:39,000 --> 01:08:44,000 لكننا بالتأكيد نريد لوضع آخر إذا كان في هناك 990 01:08:44,000 --> 01:08:48,000 رغم أن الأمر في هذه الحالة 991 01:08:48,000 --> 01:08:52,000 منذ أننا لا تعديل نقطة الوسط، سوف نجعل من هذا الاختلاف؟ 992 01:08:52,000 --> 01:08:54,000 لا، لأن هذه الحالات كلها حصرية. 993 01:08:54,000 --> 01:08:58,000 مرة أخرى، بلدي سيئة. 994 01:08:58,000 --> 01:09:01,000 نحن لا، أعتقد، في حاجة الى ذلك الا اذا. 995 01:09:01,000 --> 01:09:05,000 يمكننا محاولة إعطائها وتشغيله ونرى ما سيحدث. 996 01:09:05,000 --> 01:09:08,000 بناء، حدث خطأ. 997 01:09:08,000 --> 01:09:12,000 انها على الارجح لأنني تركت هذه لب ه في لوهنا. 998 01:09:12,000 --> 01:09:14,000 لا بد لي أي أكثر من تلك التي تصل في أعلى؟ 999 01:09:14,000 --> 01:09:16,000 لا يبدو مثل ذلك. 1000 01:09:16,000 --> 01:09:20,000 نحن تصغير، بناء، 1001 01:09:20,000 --> 01:09:24,000 هناك يذهب، وحتى الآن إذا كنا بحث عن 15، 1002 01:09:24,000 --> 01:09:28,000 نعم. 1003 01:09:28,000 --> 01:09:30,000 اسمحوا لي تكبير. 1004 01:09:30,000 --> 01:09:33,000 15، نعم. يمكننا تشغيله مرة أخرى. 1005 01:09:33,000 --> 01:09:36,000 تحميل شفرة المصدر، وبناء، على التوالي. 1006 01:09:36,000 --> 01:09:41,000 يمكننا البحث عن شيء مثل 13، 1007 01:09:41,000 --> 01:09:45,000 ولم نحصل على أي شيء طبع، حتى انها ليست الحقائق التي بالنسبة لنا. 1008 01:09:45,000 --> 01:09:51,000 هذا أمر عظيم، لأنها ليست في قائمتنا. 1009 01:09:51,000 --> 01:09:53,000 >> نحن الآن خارج الوقت. 1010 01:09:53,000 --> 01:09:55,000 وهذا سوف يكون عليه لهذا الأسبوع. 1011 01:09:55,000 --> 01:10:00,000 شكرا للانضمام، ونراكم في وقت لاحق. 1012 01:10:00,000 --> 01:10:02,000 >> [CS50.TV]