1 00:00:00,000 --> 00:00:11,904 >> [عزف الموسيقى] 2 00:00:11,904 --> 00:00:12,910 >> أستاذ: حسنا. 3 00:00:12,910 --> 00:00:16,730 هذا هو CS50 وهذا هو نهاية الأسبوع الثلاثة. 4 00:00:16,730 --> 00:00:20,230 لذلك نحن هنا اليوم، وليس في ساندرز المسرح، بدلا من ذلك في مكتبة فايدنر. 5 00:00:20,230 --> 00:00:23,170 داخل وهو الاستوديو المعروفة باسم هاوزر ستوديو، 6 00:00:23,170 --> 00:00:28,310 أو نقول ستوديو H، أو بما يلي نحن say-- إذا كنت تتمتع تلك النكتة، 7 00:00:28,310 --> 00:00:30,540 انها في الواقع من زميل، مارك، على شبكة الإنترنت، 8 00:00:30,540 --> 00:00:32,420 الذي اقترح بقدر عبر تويتر. 9 00:00:32,420 --> 00:00:34,270 الآن ما هو بارد حول ويجري هنا في الاستوديو 10 00:00:34,270 --> 00:00:38,410 وأنني محاط هذه الأخضر الجدران، شاشة خضراء أو chromakey، 11 00:00:38,410 --> 00:00:43,290 إذا جاز التعبير، وهو ما يعني أن لCS50 فريق الإنتاج، دون علم مني 12 00:00:43,290 --> 00:00:47,380 الآن، يمكن أن يكون وضع لي أكثر في أي مكان في العالم، 13 00:00:47,380 --> 00:00:48,660 للأفضل أو للأسوأ. 14 00:00:48,660 --> 00:00:51,800 >> الآن ما ينتظرنا في المستقبل، مشكلة مجموعة اثنين في يديك لهذا الأسبوع، 15 00:00:51,800 --> 00:00:53,830 ولكن مع مشكلة تعيين ثلاثة في الأسبوع المقبل، 16 00:00:53,830 --> 00:00:56,600 سوف تحدى مع ما يسمى عبة 15، 17 00:00:56,600 --> 00:00:58,960 لصالح الحزب القديم الذي تذكرون تلقي 18 00:00:58,960 --> 00:01:02,030 كطفل لديه مجموعة كاملة من الأرقام التي يمكن أن تنزلق إلى أعلى أو أسفل، 19 00:01:02,030 --> 00:01:05,790 اليسار واليمين، وهناك فجوة واحدة ضمن اللغز، الذي قمت 20 00:01:05,790 --> 00:01:07,840 في الواقع يمكن أن تنزلق تلك القطع اللغز. 21 00:01:07,840 --> 00:01:11,150 في نهاية المطاف ظهور هذه لغز في بعض الأمر شبه عشوائي، 22 00:01:11,150 --> 00:01:12,940 والهدف من ذلك هو ترتيب هذا الامر، أعلى إلى أسفل، 23 00:01:12,940 --> 00:01:16,310 من اليسار إلى اليمين، من واحدة كل وسيلة تصل إلى 15. 24 00:01:16,310 --> 00:01:19,360 >> للأسف، وتنفيذ سيكون لديك في متناول اليد 25 00:01:19,360 --> 00:01:21,590 سيكون البرنامج مقرها، وليس جسديا. 26 00:01:21,590 --> 00:01:25,280 وأنت تسير في الواقع لدينا لإرسال كود الذي طالب أو يمكن للمستخدم 27 00:01:25,280 --> 00:01:26,760 تلعب لعبة 15. 28 00:01:26,760 --> 00:01:29,030 في واقع الأمر، في هاكر طبعة من لعبة ال 15، 29 00:01:29,030 --> 00:01:32,155 عليك أن تكون تحديا لتنفيذ، وليس فقط اللعب في هذه المدرسة القديمة 30 00:01:32,155 --> 00:01:35,010 اللعبة، ولكن بدلا من حل من ذلك، تنفيذ وضع الله، 31 00:01:35,010 --> 00:01:38,280 إذا جاز التعبير، وهذا في الواقع يحل اللغز للإنسان، 32 00:01:38,280 --> 00:01:41,080 من خلال تزويدهم التلميح، بعد التلميح، بعد تلميح. 33 00:01:41,080 --> 00:01:42,280 أكثر من ذلك على ان الاسبوع المقبل. 34 00:01:42,280 --> 00:01:43,720 ولكن هذا ما ينتظرنا في المستقبل. 35 00:01:43,720 --> 00:01:47,610 >> في الوقت الراهن أذكر أنه في وقت سابق هذا الاسبوع كان لدينا هذا التشويق، اذا صح التعبير، 36 00:01:47,610 --> 00:01:52,560 حيث أفضل ما كانوا يفعلون الفرز كان من الحكمة الحد الأعلى من كبير س ن 37 00:01:52,560 --> 00:01:53,210 المربعة. 38 00:01:53,210 --> 00:01:56,520 وبعبارة أخرى، فقاعة النوع، نوع الاختيار، والإدراج النوع، 39 00:01:56,520 --> 00:01:59,120 كل منهم، في حين مختلفة في تنفيذها، 40 00:01:59,120 --> 00:02:03,480 تؤول إلى ن مربع تشغيل الوقت في أسوأ جدا القضية. 41 00:02:03,480 --> 00:02:06,010 ونحن نفترض عموما أن أسوأ جدا حالة لفرز 42 00:02:06,010 --> 00:02:08,814 واحد هو أن المدخلات الخاصة بك هي الوراء تماما. 43 00:02:08,814 --> 00:02:11,980 وبالفعل، اتخذ خطوات قليلة جدا لتنفيذ كل تلك الخوارزميات. 44 00:02:11,980 --> 00:02:15,110 >> الآن في النهاية من الدرجة أذكر، قارنا فقاعة الفرز 45 00:02:15,110 --> 00:02:19,390 ضد اختيار نوع ضد الآخر التي كنا نسميها دمج النوع في ذلك الوقت، 46 00:02:19,390 --> 00:02:22,120 وأقترح أن انه أخذ الاستفادة من الدرس من أسبوع 47 00:02:22,120 --> 00:02:24,060 صفر، فرق تسد. 48 00:02:24,060 --> 00:02:28,810 وتحقيق حد ما نوعا من وغاريتمي إدارة الوقت في نهاية المطاف، 49 00:02:28,810 --> 00:02:31,024 بدلا من شيء هذا التربيعية بحتة. 50 00:02:31,024 --> 00:02:33,440 وانها ليست لوغاريتمي جدا، إنها أكثر من ذلك قليلا. 51 00:02:33,440 --> 00:02:36,520 ولكن إذا كنت أذكر من الدرجة، كان من ذلك بكثير، أسرع بكثير. 52 00:02:36,520 --> 00:02:38,210 دعونا نلقي نظرة على النقطة التي توقفنا عندها. 53 00:02:38,210 --> 00:02:41,880 54 00:02:41,880 --> 00:02:45,370 >> فقاعة نوع مقابل اختيار نوع مقابل دمج النوع. 55 00:02:45,370 --> 00:02:47,700 الآن انهم جميعا على التوالي، في نظريا، في نفس الوقت. 56 00:02:47,700 --> 00:02:50,510 هو وحدة المعالجة المركزية تشغيل في نفس السرعة. 57 00:02:50,510 --> 00:02:54,990 ولكن يمكنك أن تشعر كيف مملة هذا وبسرعة جدا سوف تصبح، 58 00:02:54,990 --> 00:02:58,790 ومدى سرعة، ونحن عندما حقن قليلا من خوارزميات الأسبوع الصفر، و 59 00:02:58,790 --> 00:03:00,080 يمكننا تسريع الامور. 60 00:03:00,080 --> 00:03:01,630 >> ذلك النوع علامة تبدو مدهشة. 61 00:03:01,630 --> 00:03:05,220 كيف يمكننا الاستفادة منه، من أجل لفرز الأرقام بسرعة أكبر. 62 00:03:05,220 --> 00:03:07,140 حسنا دعونا نفكر مرة أخرى إلى المقومات التي نحن 63 00:03:07,140 --> 00:03:10,380 كان مرة أخرى في الأسبوع الصفر، وذلك من البحث عن شخص ما في دفتر الهاتف، 64 00:03:10,380 --> 00:03:12,380 وأذكر أن شبة الكود أننا المقترحة، 65 00:03:12,380 --> 00:03:14,560 عبر التي يمكن أن نجد شخص مثل مايك سميث، 66 00:03:14,560 --> 00:03:16,310 بدا شيئا قليلا من هذا القبيل. 67 00:03:16,310 --> 00:03:20,820 >> الآن نلقي نظرة على وجه الخصوص في السطر 7 و 8 و 10 و 11، 68 00:03:20,820 --> 00:03:25,240 الذي حمل هذه الحلقة، حيث حافظنا العودة إلى خط 3 مرة أخرى، ومرة ​​أخرى، 69 00:03:25,240 --> 00:03:26,520 ومره اخرى. 70 00:03:26,520 --> 00:03:31,790 ولكن اتضح أن نتمكن من عرض هذه الخوارزمية، هنا في شبة الكود، 71 00:03:31,790 --> 00:03:33,620 قليلا أكثر شمولية. 72 00:03:33,620 --> 00:03:35,960 في الواقع، ما أنا أبحث في هنا على الشاشة، 73 00:03:35,960 --> 00:03:41,180 هي خوارزمية للبحث عن مايك سميث بين بعض مجموعة من الصفحات. 74 00:03:41,180 --> 00:03:45,520 وبالفعل، فإننا لا يمكن تبسيط هذه الخوارزمية في تلك الخطوط 7 و 8، 75 00:03:45,520 --> 00:03:49,860 و 10 و 11 أن أقول هذا، ولقد قدمت هنا باللون الأصفر. 76 00:03:49,860 --> 00:03:52,210 وبعبارة أخرى، إذا كان مايك سميث في وقت سابق من الكتاب، 77 00:03:52,210 --> 00:03:55,004 نحن لسنا بحاجة لتحديد الخطوة خطوة الآن كيف أن يذهب العثور عليه. 78 00:03:55,004 --> 00:03:56,920 ليس لدينا لتحديد العودة إلى السطر 3، 79 00:03:56,920 --> 00:03:58,960 لماذا لا نحن فقط بدلا من ذلك، مثلا، بشكل عام، 80 00:03:58,960 --> 00:04:01,500 البحث عن مايك في النصف الأيسر من الكتاب. 81 00:04:01,500 --> 00:04:03,960 >> على العكس من ذلك، إذا مايك في الواقع في وقت لاحق في الكتاب، 82 00:04:03,960 --> 00:04:07,540 لماذا لا يمكننا أن أقتبس بحث نهاية الاقتباس لمايك في النصف الأيمن من الكتاب. 83 00:04:07,540 --> 00:04:11,030 وبعبارة أخرى، لماذا لا يمكننا فقط نوع من البونت لأنفسنا قائلين: 84 00:04:11,030 --> 00:04:13,130 البحث عن مايك في هذا فرعية من الكتاب، 85 00:04:13,130 --> 00:04:16,279 وترك الأمر لعملائنا الحاليين خوارزمية ليقول لنا 86 00:04:16,279 --> 00:04:18,750 كيفية البحث عن مايك في أن النصف الأيسر من الكتاب. 87 00:04:18,750 --> 00:04:20,750 وبعبارة أخرى، لدينا الخوارزمية يعمل سواء كان ذلك 88 00:04:20,750 --> 00:04:24,670 دفتر الهاتف من هذا السمك، وهذا سمك، أو أي سمك على الإطلاق. 89 00:04:24,670 --> 00:04:27,826 لذلك يمكننا متكرر تحدد هذه الخوارزمية. 90 00:04:27,826 --> 00:04:29,950 وبعبارة أخرى، على الشاشة هنا، هو خوارزمية 91 00:04:29,950 --> 00:04:33,130 للبحث عن مايك سميث بين صفحات الكتاب الهاتف. 92 00:04:33,130 --> 00:04:37,410 وذلك في السطر 7 و 10، دعنا نقول فقط أن بالضبط. 93 00:04:37,410 --> 00:04:40,250 وأنا استخدم هذا المصطلح لحظة قبل، وبالفعل، العودية 94 00:04:40,250 --> 00:04:42,450 هي الكلمة الطنانة في الوقت الراهن، وانها هذه العملية 95 00:04:42,450 --> 00:04:47,210 القيام بشيء الدورية التي بطريقة أو بأخرى استخدام التعليمات البرمجية التي لديك بالفعل، 96 00:04:47,210 --> 00:04:49,722 واصفا إياه مرة أخرى، ومرة أخرى، ومرة ​​أخرى. 97 00:04:49,722 --> 00:04:51,930 الآن انها سوف تكون مهمة أننا أسفل بطريقة أو بأخرى 98 00:04:51,930 --> 00:04:53,821 بها، ولا تفعل ذلك بلا حدود طويلة. 99 00:04:53,821 --> 00:04:56,070 وإلا فإننا ذاهبون الى لدينا بالفعل حلقة لا نهائية. 100 00:04:56,070 --> 00:04:59,810 ولكن دعونا نرى ما اذا كنا نستطيع استعارة هذه الفكرة من العودية، القيام بشيء جديد 101 00:04:59,810 --> 00:05:03,600 ومرة أخرى، ومرة ​​أخرى، من أجل حل المشكلة الفرز عن طريق دمج 102 00:05:03,600 --> 00:05:05,900 النوع، ومما يزيد من كفاءة. 103 00:05:05,900 --> 00:05:06,970 >> لذلك أنا أعطيك دمج النوع. 104 00:05:06,970 --> 00:05:07,920 لنلقي نظرة. 105 00:05:07,920 --> 00:05:10,850 حتى هنا هو شبة الكود، مع وهو ما يمكن أن تنفذ الفرز، 106 00:05:10,850 --> 00:05:12,640 باستخدام هذه الخوارزمية دعا دمج الفرز. 107 00:05:12,640 --> 00:05:13,880 وانها بكل بساطة هذا. 108 00:05:13,880 --> 00:05:15,940 على إدخال عناصر ن، وبعبارة أخرى، إذا كنت 109 00:05:15,940 --> 00:05:18,830 نظرا ن العناصر والأرقام و خطابات أو أيا كان المدخل هو، 110 00:05:18,830 --> 00:05:22,430 إذا كنت في ضوء العناصر ن، إذا ن أقل من 2، والعودة فقط. 111 00:05:22,430 --> 00:05:22,930 الصحيح؟ 112 00:05:22,930 --> 00:05:26,430 لأنه إذا كان n هو أقل من 2، أن يعني أن قائمتي العناصر 113 00:05:26,430 --> 00:05:30,446 اما حجم 0 أو 1، و في كل من هذه الحالات تافهة، 114 00:05:30,446 --> 00:05:31,570 يتم فرز بالفعل القائمة. 115 00:05:31,570 --> 00:05:32,810 إذا لم يكن هناك قائمة، انها فرزها. 116 00:05:32,810 --> 00:05:35,185 وإذا كان هناك قائمة من طول 1، انها مرتبة من الواضح أنه. 117 00:05:35,185 --> 00:05:38,280 لذلك الخوارزمية يحتاج فقط ل حقا شيء مثير للاهتمام، 118 00:05:38,280 --> 00:05:40,870 اذا كان لدينا اثنين أو أكثر العناصر التي أعطيت لنا. 119 00:05:40,870 --> 00:05:42,440 لذلك دعونا ننظر إلى السحر ثم. 120 00:05:42,440 --> 00:05:47,500 آخر فرز النصف الأيسر من العناصر، ثم فرز النصف الأيمن من العناصر، 121 00:05:47,500 --> 00:05:49,640 ثم دمج شطري فرزها. 122 00:05:49,640 --> 00:05:52,440 وما هو نوع من العقل والانحناء هنا، هو أنني لا حقا 123 00:05:52,440 --> 00:05:56,190 ويبدو أن قد قلت لكم أي شيء فقط حتى الآن، أليس كذلك؟ 124 00:05:56,190 --> 00:05:59,560 كل ما قلته هو، نظرا لائحة ن العناصر، فرز النصف الأيسر، 125 00:05:59,560 --> 00:06:01,800 ثم النصف الأيمن، ثم دمج شطري فرزها، 126 00:06:01,800 --> 00:06:03,840 ولكن أين هي الخلطة السرية الفعلية؟ 127 00:06:03,840 --> 00:06:05,260 أين هو خوارزمية؟ 128 00:06:05,260 --> 00:06:09,150 كذلك اتضح أن هذين الخطين أولا، نصف تركت نوعا من العناصر، 129 00:06:09,150 --> 00:06:13,970 والنوع النصف الأيمن من العناصر، هي دعوات متكررة، إذا جاز التعبير. 130 00:06:13,970 --> 00:06:16,120 >> بعد كل شيء، في هذا نقطة في الوقت المناسب، لا بد لي 131 00:06:16,120 --> 00:06:18,950 خوارزمية التي ل فرز مجموعة كاملة من العناصر؟ 132 00:06:18,950 --> 00:06:19,450 نعم. 133 00:06:19,450 --> 00:06:20,620 انها هنا. 134 00:06:20,620 --> 00:06:25,180 انها هنا على الشاشة، و حتى أتمكن من استخدام نفس ذلك مجموعة من الخطوات 135 00:06:25,180 --> 00:06:28,500 لفرز النصف الأيسر، ما أستطيع النصف الأيمن. 136 00:06:28,500 --> 00:06:30,420 وبالفعل، مرة أخرى، ومرة ​​أخرى. 137 00:06:30,420 --> 00:06:34,210 لذلك بطريقة أو بأخرى، وسنقوم قريبا نرى هذا، والسحر من دمج النوع 138 00:06:34,210 --> 00:06:37,967 مضمن في المباراة النهائية جدا خط، ودمج شطري فرزها. 139 00:06:37,967 --> 00:06:39,300 والذي يبدو بديهية إلى حد ما. 140 00:06:39,300 --> 00:06:41,050 كنت تأخذ نصفين، ولكم، بطريقة أو بأخرى، دمجها معا، 141 00:06:41,050 --> 00:06:43,260 وسنرى هذا بشكل ملموس في لحظة. 142 00:06:43,260 --> 00:06:45,080 >> ولكن هذا هو خوارزمية كاملة. 143 00:06:45,080 --> 00:06:46,640 ودعونا نرى ماذا بالضبط. 144 00:06:46,640 --> 00:06:50,912 حسنا لنفترض أننا بالنظر إلى هذه نفسها ثمانية عناصر هنا على الشاشة، واحد 145 00:06:50,912 --> 00:06:53,120 من خلال ثمانية، ولكنهم من أجل تبدو عشوائية. 146 00:06:53,120 --> 00:06:55,320 والهدف هو في متناول اليد لفرز هذه العناصر. 147 00:06:55,320 --> 00:06:58,280 حسنا كيف يمكنني التوجه نحو يفعل ذلك باستخدام، مرة أخرى، 148 00:06:58,280 --> 00:07:00,407 دمج النوع، كما في هذا شبة الكود؟ 149 00:07:00,407 --> 00:07:02,740 ومرة أخرى، غرس ذلك في عقلك، لمجرد لحظة. 150 00:07:02,740 --> 00:07:05,270 الحالة الأولى هي جميلة تافهة، إذا كان أقل من 2، 151 00:07:05,270 --> 00:07:07,060 العودة فقط، وليس هناك عمل ينبغي القيام به. 152 00:07:07,060 --> 00:07:09,290 ذلك حقا هناك ثلاثة فقط خطوات لإبقاء حقا في الاعتبار. 153 00:07:09,290 --> 00:07:11,081 مرة أخرى، ومرة ​​أخرى، وأنا تريد الذهاب الى ل 154 00:07:11,081 --> 00:07:13,980 لفرز النصف الأيسر، فرز النصف الأيمن، 155 00:07:13,980 --> 00:07:15,890 ثم مرة واحدة على يتم فرز نصفين، 156 00:07:15,890 --> 00:07:18,710 أريد أن دمجها معا في قائمة فرزها واحدة. 157 00:07:18,710 --> 00:07:19,940 حتى أن تبقي في الاعتبار. 158 00:07:19,940 --> 00:07:21,310 >> حتى هنا في القائمة الأصلية. 159 00:07:21,310 --> 00:07:23,510 دعونا نتعامل مع هذا باعتباره مجموعة، كما بدأنا ل 160 00:07:23,510 --> 00:07:25,800 في أسبوعين، وهو كتلة قريبة من الذاكرة. 161 00:07:25,800 --> 00:07:28,480 في هذه الحالة، التي تحتوي على ثمانية أرقام، والعودة إلى العودة إلى الوراء. 162 00:07:28,480 --> 00:07:30,700 ودعونا الآن تطبيق دمج النوع. 163 00:07:30,700 --> 00:07:33,300 لذلك أود أولا أن فرز النصف الأيسر من هذه القائمة، 164 00:07:33,300 --> 00:07:37,370 ودعونا، لذلك، التركيز على 4 و 8 و 6 و 2. 165 00:07:37,370 --> 00:07:41,000 >> الآن كيف أذهب حول فرز قائمة حجم 4؟ 166 00:07:41,000 --> 00:07:45,990 حسنا لدي للنظر الآن فرز اليسار في النصف الأيسر. 167 00:07:45,990 --> 00:07:47,720 مرة أخرى، دعونا الترجيع لمجرد لحظة. 168 00:07:47,720 --> 00:07:51,010 إذا كانت شبة الكود هو هذا، وأنا أعطيت ثمانية عناصر، 169 00:07:51,010 --> 00:07:53,230 8 أكبر من الواضح من أو يساوي 2. 170 00:07:53,230 --> 00:07:54,980 حتى مع لا ينطبق على الحالة الأولى. 171 00:07:54,980 --> 00:07:58,120 لذلك لفرز العناصر الثمانية، وأنا أول فرز النصف الأيسر من العناصر، 172 00:07:58,120 --> 00:08:01,930 بعد ذلك فرز النصف الأيمن، ثم يمكنني دمج نصفي فرزها، كل من حجم 4. 173 00:08:01,930 --> 00:08:02,470 حسنا. 174 00:08:02,470 --> 00:08:07,480 >> ولكن إذا كنت قد قال لي فقط، فرز النصف الأيسر، وهو الآن من حجم 4، 175 00:08:07,480 --> 00:08:09,350 كيف يمكنني فرز نصف اليسار؟ 176 00:08:09,350 --> 00:08:11,430 حسنا إذا كان لدي المدخلات من أربعة عناصر، 177 00:08:11,430 --> 00:08:14,590 أنا أولا فرز اليسار اثنين، ثم انقر بزر الماوس اثنين، 178 00:08:14,590 --> 00:08:16,210 وبعد ذلك دمجها معا. 179 00:08:16,210 --> 00:08:18,700 ذلك مرة أخرى، فإنه يصبح قليلا من عقل الانحناء لعبة هنا، 180 00:08:18,700 --> 00:08:21,450 لأنك، من نوع، أن أتذكر أين كنت في هذه القصة، 181 00:08:21,450 --> 00:08:23,620 ولكن في نهاية اليوم، يحصل على أي عدد من العناصر، 182 00:08:23,620 --> 00:08:25,620 تريد أولا لفرز النصف الأيسر، ثم النصف الأيمن، 183 00:08:25,620 --> 00:08:26,661 ثم دمجها معا. 184 00:08:26,661 --> 00:08:28,630 دعونا نبدأ لذلك تماما. 185 00:08:28,630 --> 00:08:30,170 وهنا دخل ثمانية عناصر. 186 00:08:30,170 --> 00:08:31,910 الآن نحن نبحث في النصف الأيسر هنا. 187 00:08:31,910 --> 00:08:33,720 كيف يمكنني فرز العناصر الأربعة؟ 188 00:08:33,720 --> 00:08:35,610 حسنا أنا أول فرز نصف نقاط. 189 00:08:35,610 --> 00:08:37,720 الآن كيف يمكنني فرز نصف اليسار؟ 190 00:08:37,720 --> 00:08:39,419 حسنا لقد أعطيت عنصرين. 191 00:08:39,419 --> 00:08:41,240 لذلك دعونا فرز هذين العنصرين. 192 00:08:41,240 --> 00:08:44,540 2 أكبر من أو تساوي 2، بطبيعة الحال. 193 00:08:44,540 --> 00:08:46,170 لذلك لا تنطبق هذه الحالة الأولى. 194 00:08:46,170 --> 00:08:49,010 >> لذلك ليس لدي الآن لفرز اليسار نصف هذين العنصرين. 195 00:08:49,010 --> 00:08:50,870 النصف الأيسر، بطبيعة الحال، هو فقط 4. 196 00:08:50,870 --> 00:08:54,020 فكيف يمكنني فرز قائمة من عنصر واحد؟ 197 00:08:54,020 --> 00:08:57,960 حسنا الآن، هذه الحالة قاعدة خاصة حتى أعلى، إذا جاز التعبير، ينطبق. 198 00:08:57,960 --> 00:09:01,470 1 هو أقل من 2، وبلدي قائمة هو في الواقع من حجم 1. 199 00:09:01,470 --> 00:09:02,747 لذلك أنا فقط العودة. 200 00:09:02,747 --> 00:09:03,580 لا أفعل أي شيء. 201 00:09:03,580 --> 00:09:06,770 والواقع، أن ننظر في ما لدي عمله، 4 يتم فرز بالفعل. 202 00:09:06,770 --> 00:09:09,220 وكأنني بالفعل ناجحة جزئيا هنا. 203 00:09:09,220 --> 00:09:11,750 >> الآن يبدو نوع من الغباء المطالبة، ولكنه صحيح. 204 00:09:11,750 --> 00:09:13,700 4 هي قائمة من حجم 1. 205 00:09:13,700 --> 00:09:15,090 لقد تم فرزها بالفعل. 206 00:09:15,090 --> 00:09:16,270 هذا هو النصف الأيسر. 207 00:09:16,270 --> 00:09:18,010 أنا الآن فرز النصف الأيمن. 208 00:09:18,010 --> 00:09:22,310 بلدي إدخال عنصر واحد، 8 وبالمثل، مرتبة بالفعل. 209 00:09:22,310 --> 00:09:25,170 غبي أيضا، ولكن مرة أخرى، هذا المبدأ الأساسي 210 00:09:25,170 --> 00:09:28,310 سوف تسمح لنا ببناء الآن على رأس هذه بنجاح. 211 00:09:28,310 --> 00:09:32,260 4 فرزها، يتم فرز 8، الآن ما الذي كان الخطوة الأخيرة؟ 212 00:09:32,260 --> 00:09:35,330 لذا فإن الخطوة الثالثة والأخيرة، أي الوقت كنت فرز قائمة، أذكر، 213 00:09:35,330 --> 00:09:38,310 كان لدمج شطري، اليسار واليمين. 214 00:09:38,310 --> 00:09:39,900 لذلك دعونا نفعل ذلك بالضبط. 215 00:09:39,900 --> 00:09:41,940 بلدي النصف الأيسر هو، بطبيعة الحال، 4. 216 00:09:41,940 --> 00:09:43,310 بلدي النصف الأيمن هو 8. 217 00:09:43,310 --> 00:09:44,100 >> لذلك دعونا نفعل هذا. 218 00:09:44,100 --> 00:09:46,410 أولا انا ذاهب الى تخصيص بعض ذاكرة إضافية، 219 00:09:46,410 --> 00:09:48,680 التي سوف تمثل هنا، كما مجرد مجموعة الثانوية، 220 00:09:48,680 --> 00:09:49,660 هذا هو كبير بما يكفي لتناسب هذا. 221 00:09:49,660 --> 00:09:52,243 ولكن يمكنك أن تتخيل تمديد هذا المستطيل طول كله، 222 00:09:52,243 --> 00:09:53,290 إذا نحن بحاجة أكثر في وقت لاحق. 223 00:09:53,290 --> 00:09:58,440 كيف يمكنني أخذ 4 و 8، ودمج تلك القائمتين من حجم 1 معا؟ 224 00:09:58,440 --> 00:10:00,270 هنا، أيضا، بسيطة جدا. 225 00:10:00,270 --> 00:10:03,300 4 يأتي أولا، ثم يأتي 8. 226 00:10:03,300 --> 00:10:07,130 لأنه إذا أريد لفرز النصف الأيسر، ثم النصف الأيمن، 227 00:10:07,130 --> 00:10:09,900 ثم دمج تلك نصفي معا، من أجل فرزها، 228 00:10:09,900 --> 00:10:11,940 4 يأتي أولا، ثم يأتي 8. 229 00:10:11,940 --> 00:10:15,810 >> لذلك يبدو أننا نحرز تقدما، حتى على الرغم من أنني لم تقم بأي عمل فعلي. 230 00:10:15,810 --> 00:10:17,800 ولكن تذكر ما نحن فيه في القصة. 231 00:10:17,800 --> 00:10:19,360 أخذنا في الأصل ثمانية عناصر. 232 00:10:19,360 --> 00:10:21,480 نحن فرز النصف الأيسر، الذي هو 4. 233 00:10:21,480 --> 00:10:24,450 ثم قمنا بفرز النصف الأيسر من النصف الأيسر، الذي كان 2. 234 00:10:24,450 --> 00:10:25,270 وها قد بدأنا. 235 00:10:25,270 --> 00:10:26,920 نحن القيام به مع هذه الخطوة. 236 00:10:26,920 --> 00:10:29,930 >> حتى إذا قمنا فرز غادر نصف 2، ونحن الآن 237 00:10:29,930 --> 00:10:32,130 يجب أن فرز النصف الأيمن من 2. 238 00:10:32,130 --> 00:10:35,710 حتى النصف الأيمن من 2 هو هذه القيمتين هنا و 6 و 2. 239 00:10:35,710 --> 00:10:40,620 لذلك دعونا الآن أن تتخذ مدخلا من حجم 2، وفرز النصف الأيسر، ومن ثم 240 00:10:40,620 --> 00:10:42,610 النصف الأيمن، ثم دمجها معا. 241 00:10:42,610 --> 00:10:45,722 حسنا كيف يمكنني فرز قائمة من حجم 1، يحتوي فقط على عدد 6؟ 242 00:10:45,722 --> 00:10:46,430 انتهيت بالفعل. 243 00:10:46,430 --> 00:10:48,680 يتم فرز تلك القائمة من حجم 1. 244 00:10:48,680 --> 00:10:52,140 >> كيف يمكنني فرز قائمة أخرى من حجم 1، ويسمى النصف الأيمن. 245 00:10:52,140 --> 00:10:54,690 إضافة إلى أنه، أيضا، يتم فرز بالفعل. 246 00:10:54,690 --> 00:10:56,190 عدد 2 وحده. 247 00:10:56,190 --> 00:11:00,160 وحتى الآن لدي نصفين، اليسار و الحق، ولست بحاجة إلى دمجها معا. 248 00:11:00,160 --> 00:11:01,800 اسمحوا لي أن أقدم نفسي بعض مساحة إضافية. 249 00:11:01,800 --> 00:11:05,580 ووضع 2 في هناك، ثم 6 في هناك، وبالتالي 250 00:11:05,580 --> 00:11:10,740 فرز تلك القائمة، اليسار واليمين، ودمجه معا، في نهاية المطاف. 251 00:11:10,740 --> 00:11:12,160 لذلك أنا في وضع أفضل قليلا. 252 00:11:12,160 --> 00:11:16,250 أنا لم تفعل، لأنه من الواضح 4، 8، 2، 6 ليس هو الطلب الأخير الذي أريد. 253 00:11:16,250 --> 00:11:20,640 ولكن لدي الآن قائمتين من حجم 2، أن على حد سواء، على التوالي، تم فرزها. 254 00:11:20,640 --> 00:11:24,580 حتى الآن إذا كنت الترجيع في العقل الخاص بك العين، حيث لم تترك لنا؟ 255 00:11:24,580 --> 00:11:28,520 لقد بدأت مع ثمانية عناصر، ثم أنا تتفكك وصولا الى النصف الأيسر من 4 256 00:11:28,520 --> 00:11:31,386 ثم النصف الأيسر من 2، و ثم النصف الأيمن من 2 257 00:11:31,386 --> 00:11:34,510 انتهيت لذلك، والفرز اليسار نصف 2، والنصف الأيمن من 2 258 00:11:34,510 --> 00:11:37,800 فما هي الخطوة الثالثة والأخيرة هنا؟ 259 00:11:37,800 --> 00:11:41,290 لا بد لي من دمج معا قائمتين من حجم 2. 260 00:11:41,290 --> 00:11:42,040 لذلك دعونا المضي قدما. 261 00:11:42,040 --> 00:11:43,940 وعلى الشاشة هنا، وإعطاء لي بعض ذاكرة إضافية، 262 00:11:43,940 --> 00:11:47,170 على الرغم من الناحية الفنية، لاحظ أن لدي حصلت على مجموعة كاملة من الفضاء فارغا حتى أعلى 263 00:11:47,170 --> 00:11:47,670 هناك. 264 00:11:47,670 --> 00:11:50,044 إذا كنت تريد أن تكون خاصة الفضاء كفاءة الحكمة، 265 00:11:50,044 --> 00:11:52,960 أنا يمكن أن نبدأ تحريك العناصر ذهابا وإيابا، أعلى وأسفل. 266 00:11:52,960 --> 00:11:55,460 ولكن فقط من أجل الوضوح البصري، انا ذاهب الى وضعها أدناه، 267 00:11:55,460 --> 00:11:56,800 للحفاظ على الأشياء جميلة ونظيفة. 268 00:11:56,800 --> 00:11:58,150 >> حتى لقد حصلت على قائمتين من حجم 2. 269 00:11:58,150 --> 00:11:59,770 القائمة الأولى لديها 4 و 8. 270 00:11:59,770 --> 00:12:01,500 القائمة الثانية بها 2 و 6. 271 00:12:01,500 --> 00:12:03,950 دعونا دمج تلك معا من أجل فرزها. 272 00:12:03,950 --> 00:12:09,910 2، بطبيعة الحال، يأتي أولا، ثم 4 ثم 6 ثم 8. 273 00:12:09,910 --> 00:12:12,560 والآن يبدو أننا الحصول على مثيرة للاهتمام في مكان ما. 274 00:12:12,560 --> 00:12:15,720 نصف الآن لقد تم فرزها من قائمة، وقبيل الصدفة، انها 275 00:12:15,720 --> 00:12:18,650 جميع الأرقام الزوجية، ولكن هذا هو، في الواقع، مجرد صدفة. 276 00:12:18,650 --> 00:12:22,220 وأنا الآن قد فرز اليسار النصف، بحيث انها 2 و 4 و 6 و 8. 277 00:12:22,220 --> 00:12:23,430 لا شيء للخروج من النظام. 278 00:12:23,430 --> 00:12:24,620 وكأننا التقدم. 279 00:12:24,620 --> 00:12:26,650 >> الآن بدا الامر وكأننا لدي كان يتحدث الآن إلى الأبد، 280 00:12:26,650 --> 00:12:29,850 فما يبقى أن نرى ما إذا كان هذا الخوارزمية هي، في الواقع، أكثر كفاءة. 281 00:12:29,850 --> 00:12:31,766 ولكن ونحن في طريقنا من خلال انها عظمى بشكل منهجي. 282 00:12:31,766 --> 00:12:34,060 كمبيوتر، بطبيعة الحال، أن تفعل ذلك من هذا القبيل. 283 00:12:34,060 --> 00:12:34,840 فأين نحن؟ 284 00:12:34,840 --> 00:12:36,180 بدأنا مع ثمانية عناصر. 285 00:12:36,180 --> 00:12:37,840 I فرز النصف الأيسر من 4. 286 00:12:37,840 --> 00:12:39,290 يبدو لي أن فعلت مع ذلك. 287 00:12:39,290 --> 00:12:42,535 وحتى الآن فإن الخطوة التالية هي ل فرز النصف الأيمن من 4. 288 00:12:42,535 --> 00:12:44,410 وهذا الجزء يمكننا أن نذهب من خلال قليلا أكثر 289 00:12:44,410 --> 00:12:47,140 بسرعة، على الرغم من أنك كنت مرحبا بكم في الترجيع أو وقفه، فقط 290 00:12:47,140 --> 00:12:49,910 أعتقد من خلال ذلك في وتيرة الخاصة بك، ولكن ماذا 291 00:12:49,910 --> 00:12:53,290 لدينا الآن فرصة ل تفعل نفس خوارزمية الدقيق على أربعة 292 00:12:53,290 --> 00:12:54,380 أرقام مختلفة. 293 00:12:54,380 --> 00:12:57,740 >> لذلك دعونا المضي قدما، والتركيز على النصف الأيمن، والذي نحن هنا. 294 00:12:57,740 --> 00:13:01,260 النصف الأيسر من ذلك النصف الأيمن، والآن 295 00:13:01,260 --> 00:13:04,560 النصف الأيسر من اليسار نصف هذا النصف الأيمن، 296 00:13:04,560 --> 00:13:08,030 وكيف يمكنني فرز قائمة من حجم 1 تحتوي فقط على رقم 1؟ 297 00:13:08,030 --> 00:13:09,030 لقد فعلت ذلك. 298 00:13:09,030 --> 00:13:11,830 كيف أفعل نفس الشيء للحصول على قائمة من حجم 1 يحتوي فقط 7؟ 299 00:13:11,830 --> 00:13:12,840 لقد فعلت ذلك. 300 00:13:12,840 --> 00:13:16,790 الخطوة الثالثة لهذا الشوط ثم تم دمج هذين العنصرين 301 00:13:16,790 --> 00:13:20,889 في قائمة جديدة من حجم 2، 1 و 7. 302 00:13:20,889 --> 00:13:23,180 لا يبدو أن قد فعلت كل أن هناك الكثير من العمل للاهتمام. 303 00:13:23,180 --> 00:13:24,346 دعونا نرى ما سيحدث بعد ذلك. 304 00:13:24,346 --> 00:13:29,210 أنا فقط فرز النصف الأيسر من النصف الأيمن من بلدي الأصلي المدخل. 305 00:13:29,210 --> 00:13:32,360 الآن دعونا فرز الحق نصف، والذي يحتوي على 5 و 3. 306 00:13:32,360 --> 00:13:35,740 دعونا ننظر مرة أخرى في اليسار نصف وفرزها، النصف الأيمن، مرتبة، 307 00:13:35,740 --> 00:13:39,120 ودمج هذين معا، في بعض مساحة إضافية، 308 00:13:39,120 --> 00:13:41,670 3 يأتي أولا، ثم يأتي 5. 309 00:13:41,670 --> 00:13:46,190 وحتى الآن، لدينا فرز النصف الأيسر من النصف الأيمن 310 00:13:46,190 --> 00:13:49,420 المشكلة الأصلية، و النصف الأيمن من النصف الأيمن 311 00:13:49,420 --> 00:13:50,800 المشكلة الأصلية. 312 00:13:50,800 --> 00:13:52,480 ما هي الخطوة الثالثة والأخيرة؟ 313 00:13:52,480 --> 00:13:54,854 حسنا لدمج تلك نصفين اثنين معا. 314 00:13:54,854 --> 00:13:57,020 لذلك اسمحوا لي الحصول على نفسي بعض مساحة إضافية، ولكن، مرة أخرى، وأنا 315 00:13:57,020 --> 00:13:58,699 يمكن أن يكون استخدام هذا الفضاء حتى أعلى الفراغ. 316 00:13:58,699 --> 00:14:00,490 ولكن ونحن في طريقنا للحفاظ على من السهل بصريا. 317 00:14:00,490 --> 00:14:07,070 اسمحوا لي أن دمج في الآن 1، و ثم 3 ثم 5 ثم 7. 318 00:14:07,070 --> 00:14:10,740 ترك لي بذلك الآن مع النصف الأيمن من المشكلة الأصلية 319 00:14:10,740 --> 00:14:12,840 وهذا ما تم فرزها تماما. 320 00:14:12,840 --> 00:14:13,662 >> فما يبقى؟ 321 00:14:13,662 --> 00:14:16,120 أشعر وكأنني أقول دائما ل نفس الأشياء مرة أخرى، ومرة ​​أخرى، 322 00:14:16,120 --> 00:14:18,700 ولكن هذا يعكس حقيقة أن نستخدمه العودية. 323 00:14:18,700 --> 00:14:21,050 عملية استخدام الخوارزمية مرة أخرى، ومرة ​​أخرى، 324 00:14:21,050 --> 00:14:23,940 على مجموعات فرعية أصغر من المشكلة الأصلية. 325 00:14:23,940 --> 00:14:27,580 لذلك أنا الآن قد اليسار فرز نصف المشكلة الأصلية. 326 00:14:27,580 --> 00:14:30,847 لدي الصحيح نصف فرزها المشكلة الأصلية. 327 00:14:30,847 --> 00:14:32,180 ما هي الخطوة الثالثة والأخيرة؟ 328 00:14:32,180 --> 00:14:33,590 أوه، أنها الدمج. 329 00:14:33,590 --> 00:14:34,480 لذلك دعونا نفعل ذلك. 330 00:14:34,480 --> 00:14:36,420 دعونا تخصيص بعض إضافية الذاكرة، ولكن يا إلهي، نحن 331 00:14:36,420 --> 00:14:37,503 يمكن وضعه في أي مكان الآن. 332 00:14:37,503 --> 00:14:40,356 لدينا الكثير من الفضاء متاحة لنا، ولكننا سوف يبقيه بسيط. 333 00:14:40,356 --> 00:14:42,730 بدلا من الذهاب الى الوراء و إيابا مع الذاكرة الأصلية لدينا، 334 00:14:42,730 --> 00:14:44,480 دعونا فقط تفعل ذلك بصريا إلى هنا أدناه، 335 00:14:44,480 --> 00:14:47,240 إلى الانتهاء من دمج النصف الأيسر والنصف الأيمن. 336 00:14:47,240 --> 00:14:49,279 >> ذلك عن طريق دمج، ماذا يجب أن أفعل؟ 337 00:14:49,279 --> 00:14:50,820 وأود أن أغتنم العناصر في النظام. 338 00:14:50,820 --> 00:14:53,230 لذلك يبحث في النصف الأيسر، أرى أن الرقم الأول هو 2. 339 00:14:53,230 --> 00:14:55,230 ألقي نظرة على النصف الأيمن، أرى أن الرقم الأول 340 00:14:55,230 --> 00:14:58,290 هو 1، ومن الواضح أن ذلك الذي عدد تفعل أريد أن أقتلع، 341 00:14:58,290 --> 00:15:00,430 وطرحت لأول مرة في القائمة النهائية بلدي؟ 342 00:15:00,430 --> 00:15:01,449 وبطبيعة الحال، 1. 343 00:15:01,449 --> 00:15:02,990 الآن أريد أن أسأل هذا السؤال نفسه. 344 00:15:02,990 --> 00:15:05,040 على النصف الأيسر، لقد لا يزال لديه عدد 2. 345 00:15:05,040 --> 00:15:07,490 على النصف الأيمن، لقد حصلت على عدد 3. 346 00:15:07,490 --> 00:15:08,930 أي واحد لا أريد أن تختار؟ 347 00:15:08,930 --> 00:15:11,760 بالطبع، عدد 2 و تلاحظ الآن المرشحين 348 00:15:11,760 --> 00:15:13,620 هي 4 على اليسار و 3 على اليمين. 349 00:15:13,620 --> 00:15:15,020 دعونا، بطبيعة الحال، واختيار 3. 350 00:15:15,020 --> 00:15:18,020 الآن المرشحون هم على 4 اليسار، 5 على اليمين. 351 00:15:18,020 --> 00:15:19,460 ونحن، بالطبع، اختيار 4. 352 00:15:19,460 --> 00:15:21,240 6 على اليسار، 5 على اليمين. 353 00:15:21,240 --> 00:15:22,730 ونحن، بالطبع، اختيار 5. 354 00:15:22,730 --> 00:15:25,020 6 على اليسار، 7 على اليمين. 355 00:15:25,020 --> 00:15:29,320 نختار 6، ومن ثم نحن اختيار 7، ثم نختار 8. 356 00:15:29,320 --> 00:15:30,100 فويلا. 357 00:15:30,100 --> 00:15:34,370 >> لذلك العدد الهائل من الكلمات في وقت لاحق، ونحن وقد فرز هذه القائمة من ثمانية عناصر 358 00:15:34,370 --> 00:15:38,450 في قائمة واحدة خلال ثمانية، هذا ما المتزايد مع كل خطوة، 359 00:15:38,450 --> 00:15:40,850 ولكن كم من الوقت لم يستغرق منا أن نفعل ذلك. 360 00:15:40,850 --> 00:15:43,190 حسنا لقد قمت عمدا الأشياء المبينة بالصور 361 00:15:43,190 --> 00:15:46,330 هنا، لذلك ما في وسعنا نوع من نرى أو نقدر تقسيم 362 00:15:46,330 --> 00:15:49,060 في قهر وهذا ما كان يحدث. 363 00:15:49,060 --> 00:15:52,830 >> في الواقع إذا نظرنا إلى الوراء في أعقاب، لقد تركت كل هذه الخطوط المنقطة 364 00:15:52,830 --> 00:15:55,660 في أصحاب المكان، يمكنك، نوع من، انظر، في ترتيب عكسي، 365 00:15:55,660 --> 00:15:58,800 إذا كنت من النوع ننظر إلى الوراء في التاريخ الآن يا القائمة الأصلية 366 00:15:58,800 --> 00:16:00,250 هو، بطبيعة الحال، من حجم 8. 367 00:16:00,250 --> 00:16:03,480 وبعد ذلك سابقا، كنت التعامل مع قائمتين من حجم 4، 368 00:16:03,480 --> 00:16:08,400 ثم أربع قوائم من حجم 2، ثم ثماني قوائم حجم 1. 369 00:16:08,400 --> 00:16:10,151 >> فماذا يعني هذا، نوع من، أذكركم؟ 370 00:16:10,151 --> 00:16:11,858 حسنا، في الواقع، أي من خوارزميات قمنا 371 00:16:11,858 --> 00:16:14,430 نظرت حتى الآن أين نحن الانقسام، والانقسام، والانقسام، 372 00:16:14,430 --> 00:16:19,500 الحفاظ على وجود الأشياء مرة أخرى، و مرة أخرى، يؤدي إلى هذه الفكرة العامة. 373 00:16:19,500 --> 00:16:23,100 وحتى لا يكون هناك شيء وغاريتمي يجري هنا. 374 00:16:23,100 --> 00:16:26,790 وانها ليست السجل تماما من ن، ولكن هناك عنصر لوغاريتمي 375 00:16:26,790 --> 00:16:28,280 ما فعلناه للتو. 376 00:16:28,280 --> 00:16:31,570 >> الآن دعونا النظر في كيفية هذا هو الواقع. 377 00:16:31,570 --> 00:16:34,481 حتى تسجيل ن، ومرة ​​أخرى كان وقت تشغيل العظيم، 378 00:16:34,481 --> 00:16:36,980 عندما فعلنا شيء من هذا القبيل البحث الثنائي، كما نسميها الآن، 379 00:16:36,980 --> 00:16:40,090 استراتيجية فرق تسد عبر التي وجدنا مايك سميث. 380 00:16:40,090 --> 00:16:41,020 الآن من الناحية الفنية. 381 00:16:41,020 --> 00:16:43,640 هذا هو الأساس سجل 2 ن، حتى وإن كان في معظم فصول الرياضيات، 382 00:16:43,640 --> 00:16:45,770 10 عادة القاعدة التي تفترض. 383 00:16:45,770 --> 00:16:48,940 ولكن علماء الكمبيوتر دائما تقريبا التفكير والحديث من حيث قاعدة 2، 384 00:16:48,940 --> 00:16:52,569 لذلك نحن عموما نقول فقط سجل ن، بدلا من قاعدة سجل 2 ن، 385 00:16:52,569 --> 00:16:55,110 ولكنهم واحد بالضبط و نفسه في عالم الكمبيوتر 386 00:16:55,110 --> 00:16:57,234 العلم، وبوصفها جانبا، هناك عاملا ثابتا 387 00:16:57,234 --> 00:17:01,070 الفرق بين الاثنين، لذلك فمن موضع نقاش على أي حال، لأسباب أكثر رسمية. 388 00:17:01,070 --> 00:17:04,520 >> لكنه الآن، ما يهمنا حول هذا المثال. 389 00:17:04,520 --> 00:17:08,520 لذلك دعونا لا يثبت عن طريق القدوة، ولكن في الأقل استخدام مثال على أرقام 390 00:17:08,520 --> 00:17:10,730 في متناول اليد كما شيك التعقل، اذا صح التعبير. 391 00:17:10,730 --> 00:17:14,510 لذلك سابقا كانت صيغة قاعدة السجل 2 ن، ولكن ما هو ن في هذه الحالة. 392 00:17:14,510 --> 00:17:18,526 كان لي الأرقام ن الأصلية، أو 8 من العدد الأصلي على وجه التحديد. 393 00:17:18,526 --> 00:17:20,359 الآن انها كانت قليلا في حين، ولكن أنا جميلة 394 00:17:20,359 --> 00:17:25,300 تأكد أن قاعدة سجل 2 من قيمة 8 هو 3، 395 00:17:25,300 --> 00:17:29,630 وبالفعل، ما هو الجميل في هذا هو أن 3 هو بالضبط عدد المرات 396 00:17:29,630 --> 00:17:33,320 التي يمكنك تقسيم قائمة من طول 8 مرة أخرى، ومرة ​​أخرى، 397 00:17:33,320 --> 00:17:36,160 ومرة أخرى، حتى كنت تركت مع قوائم حجم عادل 1. 398 00:17:36,160 --> 00:17:36,660 الصحيح؟ 399 00:17:36,660 --> 00:17:40,790 8 يذهب إلى 4، ويذهب إلى 2، يذهب إلى 1، وهذا هو 400 00:17:40,790 --> 00:17:43,470 يعكس ذلك تماما الصورة كانت لدينا منذ لحظة فقط. 401 00:17:43,470 --> 00:17:47,160 حتى القليل من التعقل تحقق إلى أين اللوغاريتم هو بيت القصيد. 402 00:17:47,160 --> 00:17:50,180 >> وحتى الآن، وماذا تشارك هنا؟ ن. 403 00:17:50,180 --> 00:17:53,440 لذلك نلاحظ أن كل مرة كنت تقسيم القائمة، 404 00:17:53,440 --> 00:17:58,260 وإن كان ذلك في ترتيب عكسي في التاريخ هنا، كنت لا تزال تفعل ن الأشياء. 405 00:17:58,260 --> 00:18:02,320 هذه الخطوة تتطلب أن دمج كنت على اتصال كل واحد من الأرقام، 406 00:18:02,320 --> 00:18:05,060 من أجل أدخلها الموقع المناسب لها. 407 00:18:05,060 --> 00:18:10,760 ذلك على الرغم من ارتفاع هذا الرسم هو من حجم السجل ن ن أو 3، 408 00:18:10,760 --> 00:18:13,860 على وجه التحديد، وبعبارة أخرى، فعلت ثلاثة أقسام هنا. 409 00:18:13,860 --> 00:18:18,800 كيف الكثير من العمل لم أفعل أفقيا إلى جانب هذا المخطط في كل مرة؟ 410 00:18:18,800 --> 00:18:21,110 >> حسنا، أنا فعلت ن خطوات العمل، لأنه إذا كان لدي 411 00:18:21,110 --> 00:18:24,080 حصلت أربعة عناصر وأربعة عناصر، ولست بحاجة لدمجها معا. 412 00:18:24,080 --> 00:18:26,040 لست بحاجة للذهاب من خلال هذه الأربعة وهذه الأربعة، 413 00:18:26,040 --> 00:18:28,123 في نهاية المطاف إلى دمجها العودة إلى ثمانية عناصر. 414 00:18:28,123 --> 00:18:32,182 إذا على العكس لقد حصلت على ثمانية أصابع أكثر من هنا، وأنا لا، وثمانية 415 00:18:32,182 --> 00:18:34,390 fingers-- sorry-- إذا كنت قد حصلت أربعة أصابع أكثر من هنا، 416 00:18:34,390 --> 00:18:37,380 الذي أقوم به، وأربعة أصابع أكثر من هنا، والذي أقوم به، 417 00:18:37,380 --> 00:18:40,590 ثم أن نفس الشيء مثلا كما كان من قبل، إذا كنت تفعل 418 00:18:40,590 --> 00:18:44,010 لديها ثمانية أصابع وإن كان في مجموعه، والتي يمكن I، نوع من، القيام به. 419 00:18:44,010 --> 00:18:47,950 يمكنني القيام به بالضبط هنا، ثم يمكنني بالتأكيد 420 00:18:47,950 --> 00:18:50,370 دمج كل هذه القوائم من حجم 1 معا. 421 00:18:50,370 --> 00:18:54,050 ولكن لدي بالتأكيد للنظر في كل عنصر من عناصر مرة واحدة فقط. 422 00:18:54,050 --> 00:18:59,640 وبالتالي فإن ارتفاع هذه العملية هو سجل ن، عرض لهذه العملية، إذا جاز التعبير، 423 00:18:59,640 --> 00:19:02,490 غير ن، فما يبدو أننا أن يكون، في نهاية المطاف، هو 424 00:19:02,490 --> 00:19:06,470 مدته حجم ن مرات تسجيل ن. 425 00:19:06,470 --> 00:19:08,977 >> وبعبارة أخرى، قسمنا القائمة، سجل ن مرات، 426 00:19:08,977 --> 00:19:11,810 لكن في كل مرة فعلنا ذلك، كان لدينا للمس كل واحد من العناصر 427 00:19:11,810 --> 00:19:13,560 من أجل دمجها كل ذلك معا، والتي 428 00:19:13,560 --> 00:19:18,120 وN الخطوة، لذلك لدينا ن مرات تسجيل ن، أو كعالم كمبيوتر أن يقول، 429 00:19:18,120 --> 00:19:20,380 مقارب، التي ستكون كلمة كبيرة 430 00:19:20,380 --> 00:19:22,810 لوصف العلوي ملزمة على إدارة الوقت، 431 00:19:22,810 --> 00:19:28,010 نحن على التوالي في س كبير من سجل ن الوقت، إذا جاز التعبير. 432 00:19:28,010 --> 00:19:31,510 >> الآن هذا أمر مهم، لأن أذكر ما كانت مرات تشغيل 433 00:19:31,510 --> 00:19:34,120 مع فقاعة الفرز، واختيار النوع، والإدراج النوع، 434 00:19:34,120 --> 00:19:38,200 وحتى عدد قليل من الآخرين موجودة، ن مربع وحيث كنا في. 435 00:19:38,200 --> 00:19:39,990 ويمكنك، من نوع، نرى هذا هنا. 436 00:19:39,990 --> 00:19:45,720 إذا كان n تربيع ومن الواضح n مرة ن، ولكن هنا لدينا ن مرات تسجيل ن، 437 00:19:45,720 --> 00:19:48,770 ونحن نعرف بالفعل من أسبوع الصفر، وهذا السجل ن، ووغاريتمي، 438 00:19:48,770 --> 00:19:50,550 أفضل من شيء الخطية. 439 00:19:50,550 --> 00:19:52,930 بعد كل شيء، أذكر الصورة مع الأحمر والأصفر 440 00:19:52,930 --> 00:19:56,500 والخطوط الخضراء التي تعادلنا، و كان الخط الأخضر لوغاريتمي أقل من ذلك بكثير. 441 00:19:56,500 --> 00:20:00,920 وبالتالي، أفضل بكثير وأسرع من الخطوط الصفراء والحمراء على التوالي، 442 00:20:00,920 --> 00:20:05,900 n مرة السجل ن هو، في الواقع، على نحو أفضل من مرات ن ن، ن أو المربعة. 443 00:20:05,900 --> 00:20:09,110 >> لذلك يبدو أننا ل حددت لدمج خوارزمية 444 00:20:09,110 --> 00:20:11,870 النوع الذي يعمل في بكثير أسرع وقت، وبالفعل، 445 00:20:11,870 --> 00:20:16,560 لهذا السبب، في وقت سابق من هذا الأسبوع، عندما رأينا أن المسابقة بين فقاعة 446 00:20:16,560 --> 00:20:20,750 نوع، واختيار نوع، ودمج النوع، ودمج النوع حقا، فاز حقا. 447 00:20:20,750 --> 00:20:23,660 وبالفعل، لم نكن ننتظر حتى لفقاعة فرز واختيار نوع 448 00:20:23,660 --> 00:20:24,790 وحتى النهاية. 449 00:20:24,790 --> 00:20:27,410 >> الآن دعونا نلقي تمريرة الآخر في هذا، من أكثر قليلا 450 00:20:27,410 --> 00:20:31,030 منظور رسمي، فقط في حالة، وهذا صدى أفضل 451 00:20:31,030 --> 00:20:33,380 من ذلك مناقشة مستوى أعلى. 452 00:20:33,380 --> 00:20:34,880 حتى هنا في خوارزمية مرة أخرى. 453 00:20:34,880 --> 00:20:36,770 دعونا نسأل أنفسنا، ما وقت التشغيل 454 00:20:36,770 --> 00:20:39,287 هو من هذه الخوارزميات الخطوات المختلفة؟ 455 00:20:39,287 --> 00:20:41,620 دعونا تقسيمه إلى أول حالة والحالة الثانية. 456 00:20:41,620 --> 00:20:46,280 وإذا وآخر في حالة IF، IF n هو أقل من 2، والعودة فقط. 457 00:20:46,280 --> 00:20:47,580 يشعر وكأنه وقت ثابت. 458 00:20:47,580 --> 00:20:50,970 انها، من نوع، مثل خطوتين، IF n هو أقل من 2، ثم العودة. 459 00:20:50,970 --> 00:20:54,580 ولكن كما قلنا يوم الاثنين، وقت ثابت، أو كبيرة س 1، 460 00:20:54,580 --> 00:20:57,130 يمكن أن يكون خطوتين، ثلاثة الخطوات، حتى 1000 الخطوات. 461 00:20:57,130 --> 00:20:59,870 ما يهم هو أنه عدد ثابت من الخطوات. 462 00:20:59,870 --> 00:21:03,240 لذلك سلط الضوء الأصفر شبة الكود هنا يعمل في، ونحن سوف يطلق عليه، 463 00:21:03,240 --> 00:21:04,490 وقت ثابت. 464 00:21:04,490 --> 00:21:06,780 أكثر من ذلك رسميا، و ونحن في طريقنا to-- هذا 465 00:21:06,780 --> 00:21:09,910 سيكون مدى نحن إضفاء الطابع الرسمي على هذا الحق now-- T ن، 466 00:21:09,910 --> 00:21:15,030 إدارة الوقت من مشكلة أن يأخذ ن سمثينغس كمدخل، 467 00:21:15,030 --> 00:21:19,150 يساوي كبيرة يا واحد، IF n هو أقل من 2. 468 00:21:19,150 --> 00:21:20,640 لذلك فمن مشروطا ذلك. 469 00:21:20,640 --> 00:21:24,150 لكي نكون واضحين، إذا كان n أقل من 2، لدينا قائمة قصيرة جدا، ثم 470 00:21:24,150 --> 00:21:29,151 إدارة الوقت، T ن، حيث ن هو 1 أو 0، في هذه الحالة المحددة جدا، 471 00:21:29,151 --> 00:21:30,650 انها مجرد سيكون وقت ثابت. 472 00:21:30,650 --> 00:21:32,691 انها سوف تأخذ واحدة خطوة، خطوتين، أيا كان. 473 00:21:32,691 --> 00:21:33,950 انها عدد محدد من الخطوات. 474 00:21:33,950 --> 00:21:38,840 >> لذلك يجب أن يكون جزءا العصير بالتأكيد في حالة أخرى في pseudocode. 475 00:21:38,840 --> 00:21:40,220 حالة ELSE. 476 00:21:40,220 --> 00:21:44,870 ترتيب النصف الأيسر من العناصر، نوع الحق نصف العناصر، دمج شطري فرزها. 477 00:21:44,870 --> 00:21:46,800 وكم من كل تلك الخطوات تأخذ؟ 478 00:21:46,800 --> 00:21:49,780 حسنا، إذا كان تشغيل الوقت لفرز العناصر ن 479 00:21:49,780 --> 00:21:53,010 هو، دعنا نسميها جدا بشكل عام، T ن، 480 00:21:53,010 --> 00:21:55,500 ثم فرز اليسار نصف العناصر 481 00:21:55,500 --> 00:21:59,720 هو، نوع من مثل قوله، T ن مقسوما على 2، 482 00:21:59,720 --> 00:22:03,000 وبالمثل الفرز النصف الأيمن عناصر هي، من نوع، مثل قوله، 483 00:22:03,000 --> 00:22:06,974 T ن تقسيم 2، ومن ثم دمج شطري فرزها. 484 00:22:06,974 --> 00:22:08,890 حسنا إذا كنت قد حصلت على بعض عدد من العناصر هنا، 485 00:22:08,890 --> 00:22:11,230 مثل أربعة، وبعض العدد من العناصر هنا، مثل أربعة، 486 00:22:11,230 --> 00:22:14,650 ولقد لدمج كل من هذه الأربعة في، ولكل من هذه الأربعة في، واحد 487 00:22:14,650 --> 00:22:17,160 بعد الآخر، بحيث في نهاية المطاف لدي ثمانية عناصر. 488 00:22:17,160 --> 00:22:20,230 فهو يبدو وكأنه هذا هو كبير س ن الخطوات؟ 489 00:22:20,230 --> 00:22:23,500 إذا كنت قد حصلت على ن الأصابع وكل من منهم لديه المراد دمجها في مكانه، 490 00:22:23,500 --> 00:22:25,270 هذا مثل ن خطوات أخرى. 491 00:22:25,270 --> 00:22:27,360 >> ذلك الواقع formulaically، يمكننا التعبير عن هذا، 492 00:22:27,360 --> 00:22:29,960 وإن كان بالاقتراب قليلا في البداية نظرة، ولكن هو شيء 493 00:22:29,960 --> 00:22:31,600 الذي يلتقط بالضبط هذا المنطق. 494 00:22:31,600 --> 00:22:35,710 إدارة الوقت، T ن، ن IF أكبر من أو تساوي 2. 495 00:22:35,710 --> 00:22:42,500 في هذه الحالة، حالة ELSE، هو T ن مقسوما على 2، بالإضافة إلى T ن مقسوما على 2، 496 00:22:42,500 --> 00:22:45,320 بالإضافة كبير س ن، بعض عدد خطية من الخطوات، 497 00:22:45,320 --> 00:22:51,630 ربما بالضبط ن، ربما 2 مرات ن، لكنه تقريبا، بأمر من ن. 498 00:22:51,630 --> 00:22:54,060 بحيث، أيضا، هو كيف يمكننا التعبير عن هذا formulaically. 499 00:22:54,060 --> 00:22:56,809 الآن أنت لن تعرف هذا إلا إذا كنت قد سجلت في عقلك، 500 00:22:56,809 --> 00:22:58,710 أو البحث عنه في ظهر كتاب، أن 501 00:22:58,710 --> 00:23:00,501 قد يكون قليلا الغش ورقة في النهاية، 502 00:23:00,501 --> 00:23:03,940 ولكن هذا هو، في الواقع، والذهاب إلى تعطينا كبيرة س ن ن السجل، 503 00:23:03,940 --> 00:23:06,620 لأن تكرار ذلك ترونه هنا على الشاشة، 504 00:23:06,620 --> 00:23:09,550 إذا فعلت ذلك فعلا، مع عدد لا حصر له من الأمثلة، 505 00:23:09,550 --> 00:23:13,000 أو يمكنك فعل ذلك formulaically، تفعل نرى أن هذا، لأن هذه الصيغة 506 00:23:13,000 --> 00:23:17,100 في حد ذاته هو العودية، مع طن من ن على شيء على حق، 507 00:23:17,100 --> 00:23:21,680 ور ن الناحية اليسرى، وهذا يمكن في الواقع أن أعرب، في نهاية المطاف، 508 00:23:21,680 --> 00:23:24,339 العودة كبير اعتبارا من ن ن السجل. 509 00:23:24,339 --> 00:23:26,130 إذا لم يقتنع، وهذا غرامة الآن، فقط 510 00:23:26,130 --> 00:23:28,960 تأخذ على الإيمان، أن هذا هو، في الواقع، ما يؤدي ذلك إلى تكرار، 511 00:23:28,960 --> 00:23:31,780 ولكن هذا هو مجرد أكثر قليلا من نهج رياضي لأبحث 512 00:23:31,780 --> 00:23:36,520 في وقت تشغيل دمج النوع بناء على شبة الكود وحدها. 513 00:23:36,520 --> 00:23:39,030 >> الآن دعونا نلقي قليلا من استراحة من كل ذلك، 514 00:23:39,030 --> 00:23:41,710 ونلقي نظرة على بعض السناتور السابق الذي 515 00:23:41,710 --> 00:23:44,260 قد تبدو مألوفة قليلا، الذين جلست مع اريك جوجل 516 00:23:44,260 --> 00:23:48,410 شميت، منذ بعض الوقت، لإجراء مقابلة على خشبة المسرح، أمام مجموعة كاملة 517 00:23:48,410 --> 00:23:53,710 من الناس، والحديث في نهاية المطاف عن موضوع، وهذا الآن جدا مألوفة. 518 00:23:53,710 --> 00:23:54,575 لنلقي نظرة. 519 00:23:54,575 --> 00:24:01,020 520 00:24:01,020 --> 00:24:03,890 >> إريك شميدت: الآن عضو مجلس الشيوخ، كنت هنا في جوجل 521 00:24:03,890 --> 00:24:09,490 وأود أن نفكر في الرئاسة كما مقابلة عمل. 522 00:24:09,490 --> 00:24:11,712 الآن انه من الصعب الحصول على وظيفة رئيسا للبلاد. 523 00:24:11,712 --> 00:24:12,670 الرئيس أوباما: الحق. 524 00:24:12,670 --> 00:24:13,940 إريك شميدت: وكنت تنوي القيام به (غير مسموع) الآن. 525 00:24:13,940 --> 00:24:15,523 كما انها من الصعب الحصول على وظيفة في غوغل. 526 00:24:15,523 --> 00:24:17,700 الرئيس أوباما: الحق. 527 00:24:17,700 --> 00:24:21,330 >> إريك شميدت: لدينا أسئلة، ونسأل المرشحين أسئلتنا، 528 00:24:21,330 --> 00:24:24,310 وهذا هو واحد من لاري شويمر. 529 00:24:24,310 --> 00:24:25,890 >> الرئيس أوباما: OK. 530 00:24:25,890 --> 00:24:27,005 >> إريك شميدت: ماذا؟ 531 00:24:27,005 --> 00:24:28,130 اعتقد يا رفاق أنا تمزح؟ 532 00:24:28,130 --> 00:24:30,590 انها هنا. 533 00:24:30,590 --> 00:24:33,490 ما هي الطريقة الأكثر فعالية ل فرز الأعداد الصحيحة مليون 32 بت؟ 534 00:24:33,490 --> 00:24:37,560 535 00:24:37,560 --> 00:24:38,979 >> الرئيس أوباما: Well-- 536 00:24:38,979 --> 00:24:41,020 إريك شميدت: في بعض الأحيان، ربما أنا آسف، maybe-- 537 00:24:41,020 --> 00:24:42,750 الرئيس أوباما: لا، لا، لا، لا، لا، أنا think-- 538 00:24:42,750 --> 00:24:43,240 إريك شميدت: هذا ليس it-- 539 00:24:43,240 --> 00:24:45,430 الرئيس أوباما: I أعتقد، وأنا أعتقد أن فقاعة 540 00:24:45,430 --> 00:24:46,875 سوف يكون نوعا بطريقة خاطئة للذهاب. 541 00:24:46,875 --> 00:24:49,619 542 00:24:49,619 --> 00:24:50,535 إريك شميدت: هيا. 543 00:24:50,535 --> 00:24:52,200 الذي قال له هذا؟ 544 00:24:52,200 --> 00:24:54,020 حسنا. 545 00:24:54,020 --> 00:24:55,590 لم أكن على علم الحاسوب on-- 546 00:24:55,590 --> 00:24:58,986 >> الرئيس أوباما: لقد حصلت جواسيس لدينا في هناك. 547 00:24:58,986 --> 00:24:59,860 أستاذ: حسنا. 548 00:24:59,860 --> 00:25:03,370 دعونا نترك وراءنا الآن العالم النظري للخوارزميات 549 00:25:03,370 --> 00:25:06,520 في التحليل مقارب منه، والعودة إلى بعض الموضوعات 550 00:25:06,520 --> 00:25:09,940 من أسبوع واحد صفر، وبدء لإزالة بعض عجلات التدريب، 551 00:25:09,940 --> 00:25:10,450 اذا صح التعبير. 552 00:25:10,450 --> 00:25:13,241 حتى يتسنى لك فهم حقا في نهاية المطاف من الألف إلى الياء، ما هو 553 00:25:13,241 --> 00:25:16,805 يجري تحت غطاء محرك السيارة، عند كتابة وتجميع، وتنفيذ البرامج. 554 00:25:16,805 --> 00:25:19,680 أذكر على وجه الخصوص، أن هذا كان برنامج C الأولى التي نظرت، 555 00:25:19,680 --> 00:25:22,840 لذلك، برنامج بسيط الكنسي من نوع ما، نسبيا، 556 00:25:22,840 --> 00:25:24,620 حيث، فإنه يطبع، مرحبا العالم. 557 00:25:24,620 --> 00:25:27,610 وأذكر أنني قلت، عملية أن شفرة المصدر يمر 558 00:25:27,610 --> 00:25:28,430 هذا هو بالضبط. 559 00:25:28,430 --> 00:25:31,180 كنت تأخذ الكود الخاص بك، وتمرير من خلال مترجم، مثل رنة، 560 00:25:31,180 --> 00:25:34,650 ويأتي من رمز الكائن، أن قد تبدو هذه، وتلك الأصفار 561 00:25:34,650 --> 00:25:37,880 أن وحدة المعالجة المركزية للكمبيوتر، وسط وحدة المعالجة أو الدماغ، 562 00:25:37,880 --> 00:25:39,760 تدرك في نهاية المطاف. 563 00:25:39,760 --> 00:25:42,460 >> وتبين أن هذا هو قليلا من التبسيط، 564 00:25:42,460 --> 00:25:44,480 أننا الآن في موقف لندف بصرف النظر 565 00:25:44,480 --> 00:25:46,720 لفهم ما كان حقا يجري تحت غطاء محرك السيارة 566 00:25:46,720 --> 00:25:48,600 في كل مرة تقوم بتشغيل رنة، أو بصورة أعم، 567 00:25:48,600 --> 00:25:53,040 كل مرة تقوم فيها البرنامج، باستخدام واتخاذ CF 50 IDE. 568 00:25:53,040 --> 00:25:56,760 على وجه الخصوص، أشياء من هذا القبيل هذا يتم إنشاؤها لأول مرة، 569 00:25:56,760 --> 00:25:58,684 عند أول تجميع البرنامج. 570 00:25:58,684 --> 00:26:00,600 وبعبارة أخرى، عند تأخذ شفرة المصدر الخاصة بك 571 00:26:00,600 --> 00:26:04,390 وترجمة ذلك، ما هو أول يجري أنتج بواسطة رنة 572 00:26:04,390 --> 00:26:06,370 هو ما يعرف باسم رمز التجميع. 573 00:26:06,370 --> 00:26:08,990 وفي الواقع، يبدو تماما مثل هذا. 574 00:26:08,990 --> 00:26:11,170 >> ركضت أمر في سطر الأوامر في وقت سابق. 575 00:26:11,170 --> 00:26:16,260 hello.c رنة العاصمة اندفاعة الصورة، وهذا إنشاء ملف 576 00:26:16,260 --> 00:26:19,490 بالنسبة لي دعا hello.s، داخل منها بالضبط 577 00:26:19,490 --> 00:26:22,290 هذه المحتويات، وقليلا أكثر أعلاه وأكثر من ذلك بقليل أدناه، 578 00:26:22,290 --> 00:26:25,080 ولكن لقد وضعت عصيرا المعلومات هنا على الشاشة. 579 00:26:25,080 --> 00:26:29,190 وإذا كنت تبحث عن كثب، سترى على الأقل بضع كلمات مألوفة. 580 00:26:29,190 --> 00:26:31,330 لدينا الرئيسي في القمة. 581 00:26:31,330 --> 00:26:35,140 لقد printf لأسفل في الوسط. 582 00:26:35,140 --> 00:26:38,670 وعلينا أيضا أن مرحبا العالم مائل ن في الاقتباس في الأسفل. 583 00:26:38,670 --> 00:26:42,450 >> وكل شيء هنا هو تعليمات مستوى منخفض جدا 584 00:26:42,450 --> 00:26:45,500 أن وحدة المعالجة المركزية للكمبيوتر تفهم. 585 00:26:45,500 --> 00:26:50,090 تعليمات وحدة المعالجة المركزية التي تحرك الذاكرة حولها، أن سلاسل تحميل من الذاكرة، 586 00:26:50,090 --> 00:26:52,750 وفي نهاية المطاف، الطباعة الأشياء التي تظهر على الشاشة. 587 00:26:52,750 --> 00:26:56,780 الآن ما يحدث على الرغم من بعد يتم إنشاء هذا رمز التجميع؟ 588 00:26:56,780 --> 00:26:59,964 في نهاية المطاف، قمت بذلك، في الواقع، لا يزال توليد رمز الكائن. 589 00:26:59,964 --> 00:27:02,630 ولكن الخطوات التي حقا كان يحدث تحت غطاء محرك السيارة 590 00:27:02,630 --> 00:27:04,180 تبدو أكثر قليلا من هذا القبيل. 591 00:27:04,180 --> 00:27:08,390 يصبح شفرة المصدر رمز التجميع، وبعد ذلك يصبح رمز الكائن، 592 00:27:08,390 --> 00:27:11,930 وكلام المنطوق هنا هي أنه عند ترجمة التعليمات البرمجية المصدر، 593 00:27:11,930 --> 00:27:16,300 يخرج رمز التجميع، ثم عند تجميع رمز التجميع الخاص بك، 594 00:27:16,300 --> 00:27:17,800 يخرج رمز الكائن. 595 00:27:17,800 --> 00:27:20,360 >> الآن رنة هو السوبر متطورة، مثل الكثير من المجمعين، 596 00:27:20,360 --> 00:27:23,151 وانها تفعل كل خطوة من هذه الخطوات معا، وذلك لا يعني بالضرورة 597 00:27:23,151 --> 00:27:25,360 إخراج أي وسيط الملفات التي يمكنك ان ترى ذلك. 598 00:27:25,360 --> 00:27:28,400 انها مجرد تجمع الأشياء، وهو مصطلح عام 599 00:27:28,400 --> 00:27:30,000 يصف هذه العملية برمتها. 600 00:27:30,000 --> 00:27:32,000 ولكن إذا كنت تريد حقا أن تكون خاصة، هناك 601 00:27:32,000 --> 00:27:34,330 الكثير من يجري هناك كذلك. 602 00:27:34,330 --> 00:27:38,860 >> ولكن دعونا نعتبر أيضا أنه حتى الآن هذا البرنامج السوبر بسيط، hello.c، 603 00:27:38,860 --> 00:27:40,540 استدعاء دالة. 604 00:27:40,540 --> 00:27:41,870 ودعا printf. 605 00:27:41,870 --> 00:27:46,900 ولكن أنا لم أكتب printf، في الواقع، الذي يأتي مع ج، إذا جاز التعبير. 606 00:27:46,900 --> 00:27:51,139 انها استدعاء وظيفة هذا أعلن في io.h القياسية، التي 607 00:27:51,139 --> 00:27:53,180 هو ملف رأس، والتي هو موضوع سنقوم الواقع 608 00:27:53,180 --> 00:27:55,780 يغوص أكثر عمقا قبل فترة طويلة. 609 00:27:55,780 --> 00:27:58,000 لكن ملف الرأس يرافق عادة 610 00:27:58,000 --> 00:28:02,920 بواسطة ملف الرمز، ملف شفرة المصدر، وذلك يشبه إلى حد كبير يوجد io.h. القياسية 611 00:28:02,920 --> 00:28:05,930 >> قبل وقت ما، شخص ما، أو شخص ما، وكتب أيضا 612 00:28:05,930 --> 00:28:11,040 ملف يسمى io.c القياسية، في التي التعاريف الفعلية، 613 00:28:11,040 --> 00:28:15,220 أو تطبيقات printf، وعناقيد من الوظائف الأخرى، 614 00:28:15,220 --> 00:28:16,870 مكتوبة في الواقع. 615 00:28:16,870 --> 00:28:22,140 ذلك نظرا لأنه إذا اعتبرنا وجود هنا على اليسار، hello.c، أنه عندما 616 00:28:22,140 --> 00:28:26,250 المترجمة، يعطينا hello.s، حتى لو رنة لا يكلف نفسه عناء إنقاذ في مكان 617 00:28:26,250 --> 00:28:31,360 يمكننا أن نرى ذلك، وهذا رمز التجميع يحصل تجميعها في hello.o، التي 618 00:28:31,360 --> 00:28:34,630 هو، في الواقع، الاسم الافتراضي نظرا كلما تجميع المصدر 619 00:28:34,630 --> 00:28:39,350 رمز إلى رمز الكائن، ولكنها ليست على استعداد تام لتنفيذ ذلك حتى الآن، 620 00:28:39,350 --> 00:28:41,460 لأن خطوة أخرى يجب أن يحدث، ولديه 621 00:28:41,460 --> 00:28:44,440 ويحدث للقلة الماضي أسابيع، وربما دون علم لك. 622 00:28:44,440 --> 00:28:47,290 >> على وجه التحديد في مكان ما في CS50 IDE، وهذا، 623 00:28:47,290 --> 00:28:49,870 جدا، وسوف يكون قليلا من التبسيط لحظة، 624 00:28:49,870 --> 00:28:54,670 هناك، أو كان في قديم الزمان، ملف يسمى io.c القياسية، 625 00:28:54,670 --> 00:28:58,440 أن شخصا ما جمع في io.s القياسية أو ما يعادلها، 626 00:28:58,440 --> 00:29:02,010 أن شخصا تجميعها ثم في io.o القياسية، 627 00:29:02,010 --> 00:29:04,600 أو اتضح في ملف مختلف قليلا 628 00:29:04,600 --> 00:29:07,220 الشكل الذي يمكن أن يكون مختلفا ملف تمديد تماما، 629 00:29:07,220 --> 00:29:11,720 لكن من الناحية النظرية والمفاهيمية، بالضبط كانت تلك الخطوات أن يحدث بشكل أو بآخر. 630 00:29:11,720 --> 00:29:14,060 وهو ما يعني، أن الآن عندما أكتب برنامج، 631 00:29:14,060 --> 00:29:17,870 hello.c، أن يقول فقط، مرحبا العالم، وأنا باستخدام كود شخص آخر 632 00:29:17,870 --> 00:29:22,480 مثل printf، الذي كان مرة واحدة بناء على الوقت في ملف يسمى io.c القياسية، 633 00:29:22,480 --> 00:29:26,390 ثم ما لدي لاتخاذ بلدي رمز الكائن، يا الأصفار ومنها، 634 00:29:26,390 --> 00:29:29,260 وجوه هذا الشخص رمز، أو الأصفار ومنها، 635 00:29:29,260 --> 00:29:34,970 وتصل بطريقة أو بأخرى منها معا في الملف النهائي واحدة، ودعا مرحبا، أن 636 00:29:34,970 --> 00:29:38,070 لديه كل الأصفار و من وجهة نظري تلك الوظيفة الرئيسية، 637 00:29:38,070 --> 00:29:40,830 وجميع من الأصفار وتلك لprintf. 638 00:29:40,830 --> 00:29:44,900 >> والواقع، أن عملية الأخيرة ودعا، ربط رمز الكائن الخاص بك. 639 00:29:44,900 --> 00:29:47,490 خرج منها هو ملف تنفيذي. 640 00:29:47,490 --> 00:29:49,780 وذلك في الإنصاف، في نهاية اليوم، لا شيء 641 00:29:49,780 --> 00:29:52,660 لقد تغيرت منذ أسبوع واحد، ونحن عندما بدأت لأول مرة تجميع البرامج. 642 00:29:52,660 --> 00:29:55,200 والواقع أن كل هذا يحدث تحت غطاء محرك السيارة، 643 00:29:55,200 --> 00:29:57,241 ولكن نحن الآن في موقف حيث يمكننا فعلا 644 00:29:57,241 --> 00:29:58,794 ندف عدا هذه الخطوات المختلفة. 645 00:29:58,794 --> 00:30:00,710 وبالفعل، في نهاية اليوم، نحن لا نزال 646 00:30:00,710 --> 00:30:04,480 اليسار مع الأصفار وتلك التي هو في الواقع سغ] كبير الآن 647 00:30:04,480 --> 00:30:08,620 لقدرة أخرى من C، أن لقد يكن لدينا للاستفادة الأرجح 648 00:30:08,620 --> 00:30:11,250 حتى الآن، والمعروفة باسم مشغلي المختصة بالبت. 649 00:30:11,250 --> 00:30:15,220 وبعبارة أخرى، حتى الآن، في أي وقت قمنا التعامل مع البيانات في C أو C المتغيرات في، 650 00:30:15,220 --> 00:30:17,660 لقد كان لدينا أشياء مثل حرف والعوامات والإضافية 651 00:30:17,660 --> 00:30:21,990 ويتوق والزوجي وما شابه ذلك، ولكن كل من هؤلاء كانوا من ثمانية بت على الأقل. 652 00:30:21,990 --> 00:30:25,550 لقد الاطلاق حتى الآن قادرة على تلاعب بت الفردية، 653 00:30:25,550 --> 00:30:28,970 على الرغم من بعض الشيء الفردي، ونحن أعرف، يمكن أن تمثل 0 و 1. 654 00:30:28,970 --> 00:30:32,640 الآن اتضح أنه في C، كنت يمكن الحصول على بت الفردية، 655 00:30:32,640 --> 00:30:35,530 إذا كنت تعرف بناء الجملة، التي للحصول عليهم. 656 00:30:35,530 --> 00:30:38,010 >> لذلك دعونا نلقي نظرة في مشغلي المختصة بالبت. 657 00:30:38,010 --> 00:30:41,700 حتى في الصورة هنا بعض الرموز التي قمنا، من نوع، نوعا ما، يشاهد من قبل. 658 00:30:41,700 --> 00:30:45,580 أرى العطف، عمودي بار، والبعض الآخر كذلك، 659 00:30:45,580 --> 00:30:49,430 ونذكر بأن العطف العطف شيء رأيناه من قبل. 660 00:30:49,430 --> 00:30:54,060 والعامل المنطقي AND، حيث لديك اثنين منهم معا، أو المنطقية OR 661 00:30:54,060 --> 00:30:56,300 المشغل، حيث كنت دينا اثنين من أشرطة عمودية. 662 00:30:56,300 --> 00:31:00,550 مشغلي المختصة بالبت، والتي سنقوم رؤية تعمل على بت على حدة، 663 00:31:00,550 --> 00:31:03,810 مجرد استخدام العطف واحد، شريط عمودي واحد، ورمز الإقحام 664 00:31:03,810 --> 00:31:06,620 يأتي بعد ذلك، وقليلا تيلدا، وغادر بعد ذلك 665 00:31:06,620 --> 00:31:08,990 قوس يقم قوس، أو قوس الصحيح قوس الصحيح. 666 00:31:08,990 --> 00:31:10,770 كل هذه لها معان مختلفة. 667 00:31:10,770 --> 00:31:11,950 >> في الواقع، دعونا نلقي نظرة. 668 00:31:11,950 --> 00:31:16,560 دعنا نذهب المدرسة القديمة اليوم، واستخدام شاشة تعمل باللمس من الأمس، 669 00:31:16,560 --> 00:31:18,002 المعروفة باسم لوحة بيضاء. 670 00:31:18,002 --> 00:31:19,710 وهذه لوحة بيضاء سوف تسمح لنا 671 00:31:19,710 --> 00:31:27,360 للتعبير عن بعض الرموز بسيطة إلى حد ما، أو بالأحرى بعض صيغ بسيطة إلى حد ما، 672 00:31:27,360 --> 00:31:29,560 ما في وسعنا ثم في نهاية المطاف الرافعة المالية، من أجل 673 00:31:29,560 --> 00:31:33,230 للوصول فرد بت ضمن برنامج C. 674 00:31:33,230 --> 00:31:34,480 وبعبارة أخرى، دعونا نفعل هذا. 675 00:31:34,480 --> 00:31:37,080 دعونا نتحدث أولا ل لحظة عن العطف، 676 00:31:37,080 --> 00:31:39,560 وهو أحادي المعامل AND المشغل. 677 00:31:39,560 --> 00:31:42,130 وبعبارة أخرى، وهذا هو المشغل الذي يسمح 678 00:31:42,130 --> 00:31:45,930 لي أن يكون متغير الأيسر عادة، ومتغير الأيمن، 679 00:31:45,930 --> 00:31:50,640 أو قيمة الفردية، أننا إذا AND معا، يعطيني النتيجة النهائية. 680 00:31:50,640 --> 00:31:51,560 فماذا يعني؟ 681 00:31:51,560 --> 00:31:54,840 إذا كان في البرنامج، يكون لديك متغير أن مخازن واحدة من هذه القيم، 682 00:31:54,840 --> 00:31:58,000 أو دعونا يبقيه بسيط، وفقط كتابة الأصفار ومنها على حدة، 683 00:31:58,000 --> 00:32:00,940 وهنا كيف يعمل المشغل العطف. 684 00:32:00,940 --> 00:32:06,400 0 الضم 0 سوف تساوي 0. 685 00:32:06,400 --> 00:32:07,210 الآن لماذا هذا؟ 686 00:32:07,210 --> 00:32:09,291 >> انها تشبه الى حد بعيد التعبيرات المنطقية، 687 00:32:09,291 --> 00:32:10,540 أن ناقشناه حتى الآن. 688 00:32:10,540 --> 00:32:15,800 إذا كنت تعتقد بعد كل شيء، و0 غير كاذبة، 0 غير صحيح، كاذبة وزائفة 689 00:32:15,800 --> 00:32:18,720 هو، كما ناقشناه منطقيا، كاذبة أيضا. 690 00:32:18,720 --> 00:32:20,270 حتى نحصل 0 هنا كذلك. 691 00:32:20,270 --> 00:32:24,390 إذا كنت تأخذ 0 العطف 1، بالاضافة الى انه، ايضا، 692 00:32:24,390 --> 00:32:29,890 سيكون 0، لأن لهذا التعبير الأيسر ليكون صحيحا أو 1، 693 00:32:29,890 --> 00:32:32,360 أنها تحتاج إلى أن يكون صحيحا وصحيح. 694 00:32:32,360 --> 00:32:36,320 ولكن هنا لدينا كاذبة وصحيح، أو 0 و 1. 695 00:32:36,320 --> 00:32:42,000 الآن مرة أخرى، إذا كان لدينا 1 العطف 0، وهذا، أيضا، سيكون 0، 696 00:32:42,000 --> 00:32:47,240 وإذا كان لدينا 1 العطف 1، أخيرا هل لدينا 1 بت. 697 00:32:47,240 --> 00:32:50,340 لذلك وبعبارة أخرى، نحن لا نفعل أي شيء للاهتمام مع هذا المشغل 698 00:32:50,340 --> 00:32:51,850 فقط حتى الآن، هذا المشغل العطف. 699 00:32:51,850 --> 00:32:53,780 انها أحادي المعامل AND المشغل. 700 00:32:53,780 --> 00:32:57,290 ولكن هذه هي المكونات عبر التي يمكن أن نفعله 701 00:32:57,290 --> 00:32:59,240 أشياء مثيرة للاهتمام، كما سنرى في وقت قريب. 702 00:32:59,240 --> 00:33:02,790 >> الآن دعونا ننظر إلى مجرد واحد شريط عمودي هنا على اليمين. 703 00:33:02,790 --> 00:33:06,710 إذا كان لدي 0 قليلا وأنا أو مع، المختصة بالبت 704 00:33:06,710 --> 00:33:11,030 أو المشغل، 0 نوعا آخر، هذا سوف تعطيني 0. 705 00:33:11,030 --> 00:33:17,540 إذا كنت تأخذ 0 قليلا وأو مع 1 قليلا، ثم انا ذاهب الى الحصول على 1. 706 00:33:17,540 --> 00:33:19,830 في واقع الأمر، فقط ل وضوح، واسمحوا لي أن أعود، 707 00:33:19,830 --> 00:33:23,380 بحيث بلدي أشرطة عمودية لا مخطئا ل1 ل. 708 00:33:23,380 --> 00:33:26,560 اسمحوا لي إعادة كتابة كل بلدي 1 هو أكثر من ذلك قليلا 709 00:33:26,560 --> 00:33:32,700 بشكل واضح، بحيث نرى المقبل، إذا أنا و1 أو 0، وهذا سيكون 1، 710 00:33:32,700 --> 00:33:39,060 وإذا كان لدي 1 OR 1 أن، أيضا، سوف تكون 1. 711 00:33:39,060 --> 00:33:42,900 حتى تستطيع أن ترى منطقيا أن OR مشغل تتصرف بشكل مختلف للغاية. 712 00:33:42,900 --> 00:33:48,070 هذا يعطيني 0 أو 0 يعطيني 0، ولكن كل تركيبة أخرى يعطيني 1. 713 00:33:48,070 --> 00:33:52,480 طالما أنا واحد 1 في الصيغة، فإن النتيجة ستكون 1. 714 00:33:52,480 --> 00:33:55,580 >> على النقيض من ذلك مع و المشغل، والعطف، 715 00:33:55,580 --> 00:34:00,940 فقط إذا كان لدي اثنين من 1 في المعادلة، هل فعلا الحصول على 1 خارج. 716 00:34:00,940 --> 00:34:02,850 الآن هناك عدد قليل آخر مشغلي كذلك. 717 00:34:02,850 --> 00:34:04,810 واحد منهم هو أكثر من ذلك بقليل المعنيين. 718 00:34:04,810 --> 00:34:07,980 لذلك اسمحوا لي المضي قدما ومحو هذا لتحرير بعض المساحة. 719 00:34:07,980 --> 00:34:13,020 720 00:34:13,020 --> 00:34:16,460 ودعونا نلقي نظرة على رمز الإقحام، لمجرد لحظة. 721 00:34:16,460 --> 00:34:18,210 هذا هو عادة شخصية يمكنك كتابة 722 00:34:18,210 --> 00:34:21,420 على جهاز التحول عقد لوحة المفاتيح و ثم أحد الأرقام فوق الولايات المتحدة الخاص بك 723 00:34:21,420 --> 00:34:22,250 لوحة المفاتيح. 724 00:34:22,250 --> 00:34:26,190 >> لذلك هذا هو الحصري أو المشغل الحصري OR. 725 00:34:26,190 --> 00:34:27,790 لذلك رأينا فقط المشغل OR. 726 00:34:27,790 --> 00:34:29,348 هذا هو الحصري أو المشغل. 727 00:34:29,348 --> 00:34:30,639 ما هو في الواقع الفرق؟ 728 00:34:30,639 --> 00:34:34,570 حسنا دعونا ننظر فقط في الصيغة، واستخدام هذه المكونات في نهاية المطاف. 729 00:34:34,570 --> 00:34:37,690 0 XOR 0. 730 00:34:37,690 --> 00:34:39,650 أنا سأقول دائما 0. 731 00:34:39,650 --> 00:34:41,400 هذا هو تعريف XOR. 732 00:34:41,400 --> 00:34:47,104 0 XOR 1 سيكون 1. 733 00:34:47,104 --> 00:34:58,810 1 XOR 0 سيكون 1، و1 XOR 1 سيكون؟ 734 00:34:58,810 --> 00:34:59,890 الخطأ؟ 735 00:34:59,890 --> 00:35:00,520 صحيح؟ 736 00:35:00,520 --> 00:35:01,860 لا اعرف. 737 00:35:01,860 --> 00:35:02,810 0. 738 00:35:02,810 --> 00:35:04,700 الآن ما الذي يجري هنا؟ 739 00:35:04,700 --> 00:35:06,630 كذلك التفكير في اسم هذا المشغل. 740 00:35:06,630 --> 00:35:09,980 OR خاص، وذلك ل الاسم والنوع، يقترح، 741 00:35:09,980 --> 00:35:13,940 الجواب لن يؤدي الا الى أن 1 إذا كانت المدخلات هي حصرية، 742 00:35:13,940 --> 00:35:15,560 تختلف حصرا. 743 00:35:15,560 --> 00:35:18,170 حتى هنا المدخلات هي نفسه، وبالتالي فإن الناتج هو 0. 744 00:35:18,170 --> 00:35:20,700 هنا المدخلات هي نفسه، وبالتالي فإن الناتج هو 0. 745 00:35:20,700 --> 00:35:25,640 وهنا هي النواتج مختلفة، فإنها تعود حصرا، وبالتالي فإن الناتج هو 1. 746 00:35:25,640 --> 00:35:28,190 لذلك فمن تشبه الى حد بعيد و، انها متشابهة جدا، 747 00:35:28,190 --> 00:35:32,760 أو بالأحرى انها تشبه الى حد بعيد OR، ولكن فقط بطريقة حصرية. 748 00:35:32,760 --> 00:35:36,210 هذا واحد لم يعد 1، لأن لدينا اثنين 1، و 749 00:35:36,210 --> 00:35:38,621 وليس على سبيل الحصر، واحد منهم فقط. 750 00:35:38,621 --> 00:35:39,120 حسنا. 751 00:35:39,120 --> 00:35:40,080 ماذا عن الآخرين؟ 752 00:35:40,080 --> 00:35:44,220 حسنا تيلدا، وفي الوقت نفسه، هو لطيفة فعلا وبسيطة، والحمد لله. 753 00:35:44,220 --> 00:35:46,410 وهذا هو أحادي المشغل، مما يعني 754 00:35:46,410 --> 00:35:50,400 انها تطبق على مدخل واحد فقط، المعامل واحد، إذا جاز التعبير. 755 00:35:50,400 --> 00:35:51,800 ليس إلى اليسار واليمين. 756 00:35:51,800 --> 00:35:56,050 وبعبارة أخرى، إذا كنت تأخذ من تيلدا 0، فإن الإجابة ستكون عكس ذلك. 757 00:35:56,050 --> 00:35:59,710 وإذا كنت تأخذ تيلدا من 1، والجواب سيكون هناك عكس ذلك. 758 00:35:59,710 --> 00:36:02,570 وبالتالي فإن المشغل هو تيلدا وسيلة لإنكار بعض الشيء، 759 00:36:02,570 --> 00:36:06,000 أو التقليب قليلا من 0-1، أو 1-0. 760 00:36:06,000 --> 00:36:09,820 >> وأن يترك لنا أخيرا مع اثنين فقط من المشغلين النهائية، 761 00:36:09,820 --> 00:36:13,840 ما يسمى التحول الأيسر، و ما يسمى حق مشغل التحول. 762 00:36:13,840 --> 00:36:16,620 دعونا نلقي نظرة على كيفية عمل تلك. 763 00:36:16,620 --> 00:36:20,780 المشغل تحول اليسار، وكتب مع اثنين من أقواس زاوية من هذا القبيل، 764 00:36:20,780 --> 00:36:22,110 يعمل على النحو التالي. 765 00:36:22,110 --> 00:36:27,390 إذا كان لي المدخلات، أو بلدي المعامل، وإلى اليسار مشغل التحول هو بكل بساطة 1. 766 00:36:27,390 --> 00:36:33,750 وI ثم يقول الكمبيوتر ل غادر التحول أن 1، ويقول سبعة أماكن، 767 00:36:33,750 --> 00:36:37,150 والنتيجة هي كما لو كنت أخذ ذلك 1، وتحريكه 768 00:36:37,150 --> 00:36:40,160 سبعة أماكن على ل اليسار، وبشكل افتراضي، 769 00:36:40,160 --> 00:36:42,270 ونحن في طريقنا لنفترض أن مساحة لليمين 770 00:36:42,270 --> 00:36:44,080 سوف يتم مبطن مع الأصفار. 771 00:36:44,080 --> 00:36:50,316 وبعبارة أخرى، 1 غادر تحول 7 تسير أن تعطيني أن 1، تليها 1، 2، 3، 772 00:36:50,316 --> 00:36:54,060 4، 5، 6، 7 الأصفار. 773 00:36:54,060 --> 00:36:57,380 حتى بطريقة ما، فإنه يسمح لك ل اتخاذ عدد صغير مثل 1، 774 00:36:57,380 --> 00:37:00,740 وجعل من الواضح أنه كثيرا من ذلك بكثير، أكبر بكثير في هذا السبيل، 775 00:37:00,740 --> 00:37:06,460 لكننا ذاهبون فعلا أن نرى نهج أكثر ذكاء لذلك 776 00:37:06,460 --> 00:37:08,080 بدلا من ذلك، وكذلك، 777 00:37:08,080 --> 00:37:08,720 >> حسنا. 778 00:37:08,720 --> 00:37:10,060 هذا كل شيء لثلاثة أسابيع. 779 00:37:10,060 --> 00:37:11,400 سوف نرى لك في المرة القادمة. 780 00:37:11,400 --> 00:37:12,770 كان هذا CS50. 781 00:37:12,770 --> 00:37:17,270 782 00:37:17,270 --> 00:37:22,243 >> [عزف الموسيقى] 783 00:37:22,243 --> 00:37:25,766 >> رئيس 1: كان على وجبة خفيفة منع تناول مثلجات حلوى ساخنة. 784 00:37:25,766 --> 00:37:28,090 كان لديه كل شيء على وجهه. 785 00:37:28,090 --> 00:37:30,506 كان يرتدي أن الشوكولاته مثل لحية 786 00:37:30,506 --> 00:37:31,756 المتحدث 2: ماذا تفعل؟ 787 00:37:31,756 --> 00:37:32,422 SPEAKER 3: هممم؟ 788 00:37:32,422 --> 00:37:33,500 ماذا؟ 789 00:37:33,500 --> 00:37:36,800 >> المتحدث 2: هل مجرد ركود مزدوج؟ 790 00:37:36,800 --> 00:37:38,585 أنت تراجع مزدوج الشريحة. 791 00:37:38,585 --> 00:37:39,460 SPEAKER 3: عفوا. 792 00:37:39,460 --> 00:37:44,440 المتحدث 2: أنت تراجع رقاقة، كنت أخذت لدغة، وأنت انخفض مرة أخرى. 793 00:37:44,440 --> 00:37:44,940 SPEAKER 3: 794 00:37:44,940 --> 00:37:48,440 المتحدث 2: هذا هو مثل وضع الخاص بك كامل الحق الفم في تراجع. 795 00:37:48,440 --> 00:37:52,400 في المرة القادمة كنت تأخذ شريحة، مجرد تراجع لمرة واحدة، ووضع حد لها. 796 00:37:52,400 --> 00:37:53,890 >> SPEAKER 3: هل تعرف ما هي، دان؟ 797 00:37:53,890 --> 00:37:58,006 أنت تراجع بالطريقة التي تريدها الى الانخفاض. 798 00:37:58,006 --> 00:38:01,900 سوف تراجع الطريقة التي أريد أن الانخفاض. 799 00:38:01,900 --> 00:38:03,194