1 00:00:00,000 --> 00:00:03,346 >> [عزف الموسيقى] 2 00:00:03,346 --> 00:00:05,258 3 00:00:05,258 --> 00:00:06,220 >> DOUG لويد: حسنا. 4 00:00:06,220 --> 00:00:08,140 لذلك البحث الثنائي هو خوارزمية يمكننا استخدام 5 00:00:08,140 --> 00:00:10,530 العثور على عنصر داخل صفيف. 6 00:00:10,530 --> 00:00:14,710 عكس البحث الخطي، فإنه يتطلب أن تتحقق الشروط الخاصة مسبقا، 7 00:00:14,710 --> 00:00:19,020 لكنه أكثر من ذلك بكثير إذا كفاءة هذا الشرط هو، في الواقع، التقى. 8 00:00:19,020 --> 00:00:20,470 >> فما هي الفكرة هنا؟ 9 00:00:20,470 --> 00:00:21,780 انها فرق تسد. 10 00:00:21,780 --> 00:00:25,100 نحن نريد للحد من حجم منطقة البحث إلى النصف في كل مرة 11 00:00:25,100 --> 00:00:27,240 من أجل العثور على العدد المستهدف. 12 00:00:27,240 --> 00:00:29,520 هذا هو المكان هذا الشرط يأتي دور، وإن كان. 13 00:00:29,520 --> 00:00:32,740 يمكننا الاستفادة فقط قوة القضاء على نصف العناصر 14 00:00:32,740 --> 00:00:36,070 دون النظر حتى في منهم إذا تم فرز مجموعة. 15 00:00:36,070 --> 00:00:39,200 >> اذا كان مزيج الكامل لأعلى، لا يمكننا فقط من ناحية 16 00:00:39,200 --> 00:00:42,870 تجاهل النصف من العناصر، ل نحن لا نعرف ما نقوم رميه. 17 00:00:42,870 --> 00:00:45,624 ولكن إذا تم فرز مجموعة، يمكننا أن نفعل ذلك، لأننا 18 00:00:45,624 --> 00:00:48,040 أعرف أن كل شيء لل ترك ما نحن فيه حاليا 19 00:00:48,040 --> 00:00:50,500 يجب أن يكون أقل من قيمة نحن حاليا في. 20 00:00:50,500 --> 00:00:52,300 وكل شيء لل حق ما نحن فيه 21 00:00:52,300 --> 00:00:55,040 يجب أن تكون أكبر من القيمة نحن نبحث حاليا في. 22 00:00:55,040 --> 00:00:58,710 >> فما هي شبة الكود خطوات للبحث ثنائي؟ 23 00:00:58,710 --> 00:01:02,310 نكرر هذه العملية حتى مجموعة، أو كلما تقدمنا ​​من خلال، 24 00:01:02,310 --> 00:01:07,740 صفائف فرعية، وقطع صغيرة من مجموعة الأصلي، هو حجم 0. 25 00:01:07,740 --> 00:01:10,960 حساب منتصف من مجموعة فرعية الحالية. 26 00:01:10,960 --> 00:01:14,460 >> إذا كانت القيمة التي تبحث عنه في هذا العنصر في المصفوفة، ووقف. 27 00:01:14,460 --> 00:01:15,030 هل وجدت ذلك. 28 00:01:15,030 --> 00:01:16,550 هذا عظيم. 29 00:01:16,550 --> 00:01:19,610 خلاف ذلك، إذا كان الهدف هو أقل من ما هو في منتصف الطريق، 30 00:01:19,610 --> 00:01:23,430 حتى إذا كانت قيمة نحن نبحث لأقل من ما نراه، 31 00:01:23,430 --> 00:01:26,780 كرر هذه العملية مرة أخرى، ولكن تغيير نقطة نهاية، بدلا من ذلك 32 00:01:26,780 --> 00:01:29,300 من كونها أصلية إكمال مجموعة كاملة، 33 00:01:29,300 --> 00:01:34,110 أن تكون فقط على يسار من حيث نظرنا فقط. 34 00:01:34,110 --> 00:01:38,940 >> كنا نعرف أن الوسط كان مرتفعا جدا، أو الهدف كان أقل من الوسط 35 00:01:38,940 --> 00:01:42,210 وهكذا يجب أن توجد، لو كان موجود على الإطلاق في مجموعة، 36 00:01:42,210 --> 00:01:44,660 في مكان ما على يسار نقطة الوسط. 37 00:01:44,660 --> 00:01:48,120 ولذا فإننا سوف تعيين مجموعة موقع فقط إلى اليسار 38 00:01:48,120 --> 00:01:51,145 من منتصف كنقطة نهاية جديدة. 39 00:01:51,145 --> 00:01:53,770 على العكس من ذلك، إذا كان الهدف هو أكبر من ما هو في منتصف الطريق، 40 00:01:53,770 --> 00:01:55,750 نقوم به بالضبط نفس العملية، ولكن بدلا من ذلك نحن 41 00:01:55,750 --> 00:01:59,520 تغيير نقطة البداية لتكون مجرد حق من نقطة الوسط 42 00:01:59,520 --> 00:02:00,680 حسبنا فقط. 43 00:02:00,680 --> 00:02:03,220 ومن ثم، علينا أن نبدأ العملية من جديد. 44 00:02:03,220 --> 00:02:05,220 >> دعونا تصور هذا، OK؟ 45 00:02:05,220 --> 00:02:08,620 لذلك هناك الكثير مما يجري وهنا، ولكن هنا مجموعة من 15 عنصرا. 46 00:02:08,620 --> 00:02:11,400 ونحن في طريقنا إلى أن تتبع من أكثر الاشياء الكثير هذه المرة. 47 00:02:11,400 --> 00:02:13,870 حتى في البحث الخطي، كنا فقط يهتم هدفا. 48 00:02:13,870 --> 00:02:15,869 ولكن هذه المرة نريد أن يهتمون أين نحن 49 00:02:15,869 --> 00:02:18,480 بدأت تبدو، حيث نحن وقف المظهر، 50 00:02:18,480 --> 00:02:21,876 وما هو نقطة الوسط من المجموعة الحالية. 51 00:02:21,876 --> 00:02:23,250 حتى هنا نذهب مع البحث الثنائي. 52 00:02:23,250 --> 00:02:25,290 نحن الى حد كبير على ما يرام، أليس كذلك؟ 53 00:02:25,290 --> 00:02:28,650 انا فقط لاخماد أدناه هنا مجموعة من المؤشرات. 54 00:02:28,650 --> 00:02:32,430 وهذا هو الأساس فقط ما العنصر المصفوفة التي نتحدث عنها. 55 00:02:32,430 --> 00:02:34,500 مع البحث الخطي، ونحن يهمني، بقدر ما نحن 56 00:02:34,500 --> 00:02:36,800 بحاجة إلى معرفة كم عدد عناصر نقوم بالتكرار عبر، 57 00:02:36,800 --> 00:02:40,010 ولكن نحن لا نهتم فعلا ما عنصر نحن نبحث حاليا في. 58 00:02:40,010 --> 00:02:41,014 بحثا ثنائي، ونحن نفعل. 59 00:02:41,014 --> 00:02:42,930 وحتى تلك هي فقط هناك كدليل قليلا. 60 00:02:42,930 --> 00:02:44,910 >> حتى نتمكن من البدء، أليس كذلك؟ 61 00:02:44,910 --> 00:02:46,240 حسنا، ليس تماما. 62 00:02:46,240 --> 00:02:48,160 تذكر ما قلته حول البحث الثنائي؟ 63 00:02:48,160 --> 00:02:50,955 لا نستطيع أن نفعل ذلك على مجموعة غير مصنفة أو آخر، 64 00:02:50,955 --> 00:02:55,820 نحن لا تضمن أن بعض العناصر أو القيم ليست 65 00:02:55,820 --> 00:02:57,650 يجري عن طريق الخطأ التخلص منها عندما كنا فقط 66 00:02:57,650 --> 00:02:59,920 قررت تجاهل نصف المصفوفة. 67 00:02:59,920 --> 00:03:02,574 >> حتى خطوة واحدة مع البحث الثنائي هو يجب أن يكون لديك مجموعة فرزها. 68 00:03:02,574 --> 00:03:05,240 ويمكنك استخدام أي من الفرز الخوارزميات التي تحدثنا عنها 69 00:03:05,240 --> 00:03:06,700 لتحصل على هذا الموقف. 70 00:03:06,700 --> 00:03:10,370 وحتى الآن، ونحن في وضع يمكنها من حيث يمكننا إجراء البحث ثنائي. 71 00:03:10,370 --> 00:03:12,560 >> لذلك دعونا تكرار هذه العملية خطوة بخطوة والحفاظ على 72 00:03:12,560 --> 00:03:14,830 تتبع ما يحدث ونحن نمضي. 73 00:03:14,830 --> 00:03:17,980 لذلك علينا أولا عليك القيام به هو حساب في منتصف المجموعة الحالية. 74 00:03:17,980 --> 00:03:20,620 حسنا، سوف نقول نحن، أولا وقبل جميع، وتبحث عن قيمة 19. 75 00:03:20,620 --> 00:03:22,290 ونحن نحاول العثور على عدد 19. 76 00:03:22,290 --> 00:03:25,380 العنصر الأول من هذا يقع مجموعة في مؤشر الصفر، 77 00:03:25,380 --> 00:03:28,880 والعنصر الأخير من هذا يقع في مجموعة المؤشر 14. 78 00:03:28,880 --> 00:03:31,430 ولذا فإننا سوف استدعاء هؤلاء بداية ونهاية. 79 00:03:31,430 --> 00:03:35,387 >> لذلك نحن حساب منتصف بواسطة مضيفا 0 بالاضافة الى 14 مقسومة على 2؛ 80 00:03:35,387 --> 00:03:36,720 منتصف جميلة واضحة. 81 00:03:36,720 --> 00:03:40,190 ويمكننا القول أن نقطة الوسط هو الآن 7. 82 00:03:40,190 --> 00:03:43,370 لذلك هو 15 ما كنت تبحث عنه؟ 83 00:03:43,370 --> 00:03:43,940 لا ليس كذلك. 84 00:03:43,940 --> 00:03:45,270 نحن نبحث عن 19. 85 00:03:45,270 --> 00:03:49,400 ولكننا نعرف أن 19 أكبر من ما وجدناه في الوسط. 86 00:03:49,400 --> 00:03:52,470 >> وذلك ما يمكننا القيام به هو تغيير نقطة بداية 87 00:03:52,470 --> 00:03:57,280 أن يكون مجرد حق لل منتصف، وتكرار هذه العملية مرة أخرى. 88 00:03:57,280 --> 00:04:01,690 وعندما نفعل ذلك، ونحن نقول الآن نقطة بداية جديدة هي مجموعة موقع 8. 89 00:04:01,690 --> 00:04:07,220 ما فعلناه هو فعال كل شيء تجاهلها إلى اليسار من 15. 90 00:04:07,220 --> 00:04:09,570 لقد القضاء النصف لهذه المشكلة، والآن، 91 00:04:09,570 --> 00:04:13,510 بدلا من الاضطرار للبحث أكثر من 15 عناصر في مجموعة لدينا، 92 00:04:13,510 --> 00:04:15,610 ليس لدينا سوى للبحث أكثر من 7. 93 00:04:15,610 --> 00:04:17,706 حتى 8 هو نقطة بداية جديدة. 94 00:04:17,706 --> 00:04:19,600 14 لا يزال نقطة النهاية. 95 00:04:19,600 --> 00:04:21,430 >> والآن، نذهب أكثر من ذلك مرة أخرى. 96 00:04:21,430 --> 00:04:22,810 نحسب نقطة الوسط الجديد. 97 00:04:22,810 --> 00:04:27,130 8 زائد 14 هو 22، مقسوما على 2 هو 11. 98 00:04:27,130 --> 00:04:28,660 هذا هو ما نبحث عنه؟ 99 00:04:28,660 --> 00:04:30,110 لا ليس كذلك. 100 00:04:30,110 --> 00:04:32,930 نحن نبحث عن قيمة هذا أقل من ما وجدناه فقط. 101 00:04:32,930 --> 00:04:34,721 لذلك نحن في طريقنا للتكرار العملية مرة أخرى. 102 00:04:34,721 --> 00:04:38,280 ونحن في طريقنا إلى تغيير نقطة نهاية ل يكون مجرد ليسار منتصف. 103 00:04:38,280 --> 00:04:41,800 حتى نقطة النهاية الجديدة يصبح 10. 104 00:04:41,800 --> 00:04:44,780 والآن، وهذا هو الجزء الوحيد من مجموعة لدينا من خلال لفرز. 105 00:04:44,780 --> 00:04:48,460 لذلك علينا القضاء الآن 12 من 15 عناصر. 106 00:04:48,460 --> 00:04:51,550 ونحن نعلم أنه إذا 19 موجود في مجموعة، فإنه 107 00:04:51,550 --> 00:04:57,210 يجب أن يكون موجودا في مكان ما بين عنصر عدد (8) والعنصر رقم 10. 108 00:04:57,210 --> 00:04:59,400 >> لذلك نحن حساب منتصف جديد مرة أخرى. 109 00:04:59,400 --> 00:05:02,900 8 زائد 10 هو 18، مقسوما على 2 هو 9. 110 00:05:02,900 --> 00:05:05,074 وفي هذه الحالة، انظر، الهدف هو في الوسط. 111 00:05:05,074 --> 00:05:06,740 وجدنا بالضبط ما نبحث عنه. 112 00:05:06,740 --> 00:05:07,780 نستطيع التوقف. 113 00:05:07,780 --> 00:05:10,561 أكملنا بنجاح بحث ثنائي. 114 00:05:10,561 --> 00:05:11,060 حسنا. 115 00:05:11,060 --> 00:05:13,930 لذلك نحن نعرف هذه الخوارزمية يعمل إذا كان الهدف هو 116 00:05:13,930 --> 00:05:16,070 في مكان ما داخل المصفوفة. 117 00:05:16,070 --> 00:05:19,060 يعمل هذا خوارزمية إذا الهدف ليس في المصفوفة؟ 118 00:05:19,060 --> 00:05:20,810 حسنا، دعونا نبدأ ذلك مرة أخرى، وهذه المرة، 119 00:05:20,810 --> 00:05:23,380 دعونا ننظر للعنصر 16، والتي بصريا يمكننا أن نرى 120 00:05:23,380 --> 00:05:25,620 لا توجد في أي مكان في المصفوفة. 121 00:05:25,620 --> 00:05:27,110 >> نقطة البداية هي مرة أخرى 0. 122 00:05:27,110 --> 00:05:28,590 نقطة النهاية هي مرة أخرى 14. 123 00:05:28,590 --> 00:05:32,490 تلك هي المؤشرات الأولى و العناصر الأخيرة من مجموعة كاملة. 124 00:05:32,490 --> 00:05:36,057 وسوف نذهب من خلال عملية نحن فقط مرت مرة أخرى، في محاولة للعثور على 16، 125 00:05:36,057 --> 00:05:39,140 على الرغم من البصر، ويمكننا بالفعل أقول أنه لن يكون هناك. 126 00:05:39,140 --> 00:05:43,450 نحن نريد فقط للتأكد من هذه الخوارزمية و، في الواقع، لا تزال تعمل في بعض الطريق 127 00:05:43,450 --> 00:05:46,310 وليس مجرد ترك لنا عالقا في حلقة لا نهائية. 128 00:05:46,310 --> 00:05:48,190 >> فما هي الخطوة الأولى؟ 129 00:05:48,190 --> 00:05:50,230 حساب منتصف من المجموعة الحالية. 130 00:05:50,230 --> 00:05:52,790 ما هي نقطة الوسط من المجموعة الحالية؟ 131 00:05:52,790 --> 00:05:54,410 حسنا، انها 7، أليس كذلك؟ 132 00:05:54,410 --> 00:05:57,560 14 زائد 0 مقسوما على 2 من 7. 133 00:05:57,560 --> 00:05:59,280 15 ما كنت تبحث عنه؟ 134 00:05:59,280 --> 00:05:59,780 لا. 135 00:05:59,780 --> 00:06:02,930 انها قريبة جدا، ولكن نحن نبحث عن قيمة أكبر قليلا من ذلك. 136 00:06:02,930 --> 00:06:06,310 >> لذلك نحن نعرف أنه سيكون ل يكون مكان لليسار 15. 137 00:06:06,310 --> 00:06:08,540 الهدف أكبر من ما هو في منتصف. 138 00:06:08,540 --> 00:06:12,450 وهكذا وضعنا نقطة بداية جديدة ل يكون مجرد حق من الوسط. 139 00:06:12,450 --> 00:06:16,130 منتصف حاليا 7، لذلك دعنا نقول نقطة بداية جديدة هي 8. 140 00:06:16,130 --> 00:06:18,130 وما قمنا بفعالية به مرة أخرى يتم تجاهل 141 00:06:18,130 --> 00:06:21,150 النصف الأيسر كامل المصفوفة. 142 00:06:21,150 --> 00:06:23,750 >> الآن، نكرر عملية واحدة لمزيد من الوقت. 143 00:06:23,750 --> 00:06:24,910 حساب منتصف الجديد. 144 00:06:24,910 --> 00:06:29,350 8 زائد 14 هو 22، مقسوما على 2 هو 11. 145 00:06:29,350 --> 00:06:31,060 هو 23 ما كنت تبحث عنه؟ 146 00:06:31,060 --> 00:06:31,870 للاسف لا. 147 00:06:31,870 --> 00:06:34,930 نحن نبحث عن قيمة أقل من 23. 148 00:06:34,930 --> 00:06:37,850 وحتى في هذه الحالة، نحن ذاهبون لتغيير نقطة النهاية ليكون مجرد 149 00:06:37,850 --> 00:06:40,035 على يسار منتصف الحالي. 150 00:06:40,035 --> 00:06:43,440 منتصف الحالي هو 11، و ولذا فإننا سوف تحديد نقطة نهاية جديدة 151 00:06:43,440 --> 00:06:46,980 للمرة القادمة ونحن نمضي من خلال هذه العملية إلى 10. 152 00:06:46,980 --> 00:06:48,660 >> مرة أخرى، نذهب من خلال العملية مرة أخرى. 153 00:06:48,660 --> 00:06:49,640 حساب منتصف. 154 00:06:49,640 --> 00:06:53,100 8 زائد 10 مقسومة على 2 هو 9. 155 00:06:53,100 --> 00:06:54,750 هو 19 ما كنت تبحث عنه؟ 156 00:06:54,750 --> 00:06:55,500 للاسف لا. 157 00:06:55,500 --> 00:06:58,050 نحن لا تزال تبحث عن عدد أقل من ذلك. 158 00:06:58,050 --> 00:07:02,060 لذلك سنقوم بتغيير نقطة النهاية هذه المرة أن يكون مجرد ليسار منتصف. 159 00:07:02,060 --> 00:07:05,532 منتصف حاليا 9، حتى نقطة النهاية ستكون 8. 160 00:07:05,532 --> 00:07:07,920 والآن، ونحن مجرد النظر في مجموعة عنصر واحد. 161 00:07:07,920 --> 00:07:10,250 >> ما هو منتصف هذه المجموعة؟ 162 00:07:10,250 --> 00:07:13,459 كذلك، فإنه يبدأ في 8، فإنه ينتهي في 8، منتصف هو 8. 163 00:07:13,459 --> 00:07:14,750 غير أن ما نبحث عنه؟ 164 00:07:14,750 --> 00:07:16,339 الذي نبحث عنه 17؟ 165 00:07:16,339 --> 00:07:17,380 لا، نحن نبحث عن 16. 166 00:07:17,380 --> 00:07:20,160 حتى إذا كان موجودا في مجموعة، فإنه يجب أن يكون موجودا في مكان ما 167 00:07:20,160 --> 00:07:21,935 إلى اليسار من ما نحن فيه حاليا. 168 00:07:21,935 --> 00:07:23,060 فما نحن فاعلون؟ 169 00:07:23,060 --> 00:07:26,610 حسنا، سنقوم بتعيين نقطة النهاية ليكون مجرد على يسار منتصف الحالي. 170 00:07:26,610 --> 00:07:29,055 لذلك سنقوم بتغيير نقطة النهاية إلى 7. 171 00:07:29,055 --> 00:07:32,120 هل ترى ما فقط حدث هنا، على الرغم من؟ 172 00:07:32,120 --> 00:07:33,370 ننظر هنا الآن. 173 00:07:33,370 --> 00:07:35,970 >> بداية هو الآن أكبر من النهاية. 174 00:07:35,970 --> 00:07:39,620 على نحو فعال، طرفي من مجموعة لدينا عبروا، 175 00:07:39,620 --> 00:07:42,252 ونقطة البداية هي الآن بعد إلى نقطة النهاية. 176 00:07:42,252 --> 00:07:43,960 حسنا، هذا لا أي معنى، أليس كذلك؟ 177 00:07:43,960 --> 00:07:47,960 وحتى الآن، ما يمكننا قوله هو أننا لدينا مجموعة فرعية من حجم 0. 178 00:07:47,960 --> 00:07:50,110 ومرة واحدة ونحن نصل الى هذه النقطة، يمكننا الآن 179 00:07:50,110 --> 00:07:53,940 تضمن هذا العنصر 16 غير موجود في المصفوفة، 180 00:07:53,940 --> 00:07:56,280 لأن نقطة البداية وعبرت نقطة النهاية. 181 00:07:56,280 --> 00:07:58,340 ولذا فإنه ليس هناك. 182 00:07:58,340 --> 00:08:01,340 الآن، لاحظ أن هذا هو قليلا تختلف عن نقطة بداية ونهاية 183 00:08:01,340 --> 00:08:02,900 نشير كونها نفسه. 184 00:08:02,900 --> 00:08:05,030 لو كنا أبحث ل17، فإنه سيتعين عليها 185 00:08:05,030 --> 00:08:08,870 كان في مجموعة، ونقطة البداية ونقطة النهاية لهذا التكرار الماضي 186 00:08:08,870 --> 00:08:11,820 قبل تلك النقاط عبرت، كنا قد وجدنا 17 من هناك. 187 00:08:11,820 --> 00:08:15,510 انها فقط عند عبورهم ما في وسعنا ضمان أن العنصر لا 188 00:08:15,510 --> 00:08:17,180 موجودة في المصفوفة. 189 00:08:17,180 --> 00:08:20,260 >> لذلك دعونا نلقي أقل كثيرا خطوات من البحث الخطي. 190 00:08:20,260 --> 00:08:23,250 في أسوأ الحالات، كان لدينا لتقسيم قائمة من العناصر ن 191 00:08:23,250 --> 00:08:27,770 مرارا وتكرارا في نصف للعثور على الهدف، إما لأن العنصر المستهدف 192 00:08:27,770 --> 00:08:33,110 سوف يكون في مكان ما في الماضي تقسيم، أو أنه غير موجود على الإطلاق. 193 00:08:33,110 --> 00:08:37,830 حتى في أسوأ الحالات، علينا أن تقسيم لarray-- هل تعرف؟ 194 00:08:37,830 --> 00:08:40,510 سجل المرات ن. نحن تضطر إلى خفض المشكلة 195 00:08:40,510 --> 00:08:42,610 في نصف عدد معين من المرات. 196 00:08:42,610 --> 00:08:45,160 هذا العدد من المرات هو سجل ن. 197 00:08:45,160 --> 00:08:46,510 >> ما هو أفضل سيناريو؟ 198 00:08:46,510 --> 00:08:48,899 حسنا، أولا لدينا الوقت حساب منتصف، 199 00:08:48,899 --> 00:08:50,190 نجد ما تبحث عنه. 200 00:08:50,190 --> 00:08:52,150 في جميع السابق أمثلة على البحث الثنائي 201 00:08:52,150 --> 00:08:55,489 لقد ذهبت للتو أكثر، لو كان لدينا كانت تبحث عن العنصر 15، 202 00:08:55,489 --> 00:08:57,030 أن وجدنا ذلك على الفور. 203 00:08:57,030 --> 00:08:58,321 كان ذلك في البداية. 204 00:08:58,321 --> 00:09:01,200 كان ذلك منتصف المحاولة الأولى في انقسام 205 00:09:01,200 --> 00:09:03,950 من تقسيم في البحث الثنائي. 206 00:09:03,950 --> 00:09:06,350 >> وحتى في أسوأ حالة، ويدير البحث الثنائي 207 00:09:06,350 --> 00:09:11,580 في سجل ن، التي هي خير كبير من البحث الخطي، في أسوأ الأحوال. 208 00:09:11,580 --> 00:09:16,210 في أفضل الأحوال، ثنائي البحث يعمل في أوميغا 1. 209 00:09:16,210 --> 00:09:18,990 لذلك البحث الثنائي الكثير أفضل من البحث الخطي، 210 00:09:18,990 --> 00:09:23,270 ولكن لديك للتعامل مع عملية فرز مجموعة الخاصة بك أولا قبل أن تتمكن 211 00:09:23,270 --> 00:09:26,140 الاستفادة من قوة البحث الثنائي. 212 00:09:26,140 --> 00:09:27,130 >> أنا دوغ ويد. 213 00:09:27,130 --> 00:09:29,470 هذا هو CS 50. 214 00:09:29,470 --> 00:09:31,070