1 00:00:00,000 --> 00:00:13,300 2 00:00:13,300 --> 00:00:15,010 >> ROB BOWDEN: مرحبا، أنا روب. 3 00:00:15,010 --> 00:00:16,790 كيف يمكننا توظيف البحث الثنائي؟ 4 00:00:16,790 --> 00:00:18,770 دعونا معرفة ذلك. 5 00:00:18,770 --> 00:00:23,400 لذلك، لاحظ أن هذا البحث ونحن في طريقنا لتنفيذ بشكل متكرر. 6 00:00:23,400 --> 00:00:27,470 هل يمكن أيضا تنفيذ البحث الثنائي تكرارا، حتى إذا كنت فعلت ذلك، 7 00:00:27,470 --> 00:00:29,280 هذا ما يرام تماما. 8 00:00:29,280 --> 00:00:32,820 >> الآن أولا، دعونا نتذكر ما وتهدف المعايير إلى البحث أن يكون. 9 00:00:32,820 --> 00:00:36,120 هنا، ونحن نرى قيمة كثافة العمليات، والتي هي من المفترض أن تكون قيمة المستخدم 10 00:00:36,120 --> 00:00:37,320 تبحث عنه. 11 00:00:37,320 --> 00:00:40,800 ونحن نرى القيم كثافة مجموعة، والتي هو مجموعة التي نحن 12 00:00:40,800 --> 00:00:42,520 البحث عن القيمة. 13 00:00:42,520 --> 00:00:45,602 ونحن نرى ن الباحث، الذي هو طول مجموعة لدينا. 14 00:00:45,602 --> 00:00:47,410 >> الآن، أول شيء أولا. 15 00:00:47,410 --> 00:00:51,350 نحن تحقق لمعرفة ما إذا كان n يساوي 0، في هذه الحالة نعود كاذبة. 16 00:00:51,350 --> 00:00:54,770 ان مجرد القول اذا كان لدينا فارغة مجموعة، قيمة هو واضح ليس في 17 00:00:54,770 --> 00:00:57,860 مجموعة فارغة، حتى نتمكن من العودة كاذبة. 18 00:00:57,860 --> 00:01:01,250 >> الآن، ونحن فعلا تريد أن تفعل ثنائي البحث جزءا من البحث الثنائي. 19 00:01:01,250 --> 00:01:04,780 لذا، نريد أن نجد وسط عنصر من هذه المجموعة. 20 00:01:04,780 --> 00:01:09,130 هنا، ونحن نقول منتصف يساوي ن تقسيم بنسبة 2، منذ منتصف العنصر هو 21 00:01:09,130 --> 00:01:12,240 سيكون طول مجموعة لدينا مقسوما على 2. 22 00:01:12,240 --> 00:01:15,040 الآن نحن في طريقنا للتحقق لمعرفة ما إذا كان العنصر منتصف يساوي قيمة نحن 23 00:01:15,040 --> 00:01:16,160 تبحث عنه. 24 00:01:16,160 --> 00:01:21,030 إذا كان الأمر كذلك القيم المتوسطة يساوي قيمة، ونحن يمكن العودة الحقيقية منذ وجدنا 25 00:01:21,030 --> 00:01:22,810 قيمة في مجموعة لدينا. 26 00:01:22,810 --> 00:01:26,380 >> ولكن إذا لم يكن ذلك صحيحا، والآن يتعين علينا القيام به في العودية 27 00:01:26,380 --> 00:01:27,840 خطوة من البحث الثنائي. 28 00:01:27,840 --> 00:01:30,450 نحن بحاجة للبحث إما إلى تبقى من مجموعة أو ل 29 00:01:30,450 --> 00:01:32,320 وسط مجموعة. 30 00:01:32,320 --> 00:01:39,280 حتى هنا، ونحن نقول إذا كانت القيم في المنتصف هي أقل من القيمة، وهذا يعني أن قيمة 31 00:01:39,280 --> 00:01:41,350 كان أكبر من الوسط من الصفيف. 32 00:01:41,350 --> 00:01:45,790 لذلك يجب أن تكون قيمة لليمين العنصر الذي نحن ننظر فقط في. 33 00:01:45,790 --> 00:01:48,090 >> حتى هنا، ونحن في طريقنا لل بحث بشكل متكرر. 34 00:01:48,090 --> 00:01:50,320 وسوف نبحث في ما نقوم بتمرير لهذا في الثانية. 35 00:01:50,320 --> 00:01:53,440 ولكن ونحن في طريقنا للبحث في حق العنصر الوسط. 36 00:01:53,440 --> 00:01:57,710 وفي حالة أخرى، وهذا يعني أن وكان أقل قيمة من منتصف 37 00:01:57,710 --> 00:02:00,660 مجموعة، وهكذا نحن في طريقنا للبحث إلى اليسار. 38 00:02:00,660 --> 00:02:03,520 الآن، اليسار ستكون أسهل قليلا للنظر في. 39 00:02:03,520 --> 00:02:07,770 لذلك، نرى هنا أننا متكرر داعيا البحث حيث أول 40 00:02:07,770 --> 00:02:10,120 الحجة هي، مرة أخرى، قيمة نحن نبحث أكثر. 41 00:02:10,120 --> 00:02:14,970 الحجة الثانية ستكون في مجموعة أننا كانوا يبحثون انتهى. 42 00:02:14,970 --> 00:02:17,090 والعنصر الأخير الآن وسط. 43 00:02:17,090 --> 00:02:21,650 تذكر المعلمة الأخيرة هي كثافة العمليات لدينا ن، لذلك هذا هو طول مجموعة لدينا. 44 00:02:21,650 --> 00:02:25,310 >> في المكالمة العودية للبحث، ونحن يقولون الآن أن طول 45 00:02:25,310 --> 00:02:27,230 مجموعة هو الوسط. 46 00:02:27,230 --> 00:02:32,900 لذلك، إذا كان لدينا مجموعة من حجم 20، ونحن البحث في الفهرس 10، منذ منتصف هو 47 00:02:32,900 --> 00:02:36,930 20 مقسومة على 2، وهذا يعني أننا ويمر 10 كما جديدة 48 00:02:36,930 --> 00:02:38,300 طول مجموعة لدينا. 49 00:02:38,300 --> 00:02:41,910 تذكر أنه عندما يكون لديك مجموعة طول 10، وهذا يعني صالحة 50 00:02:41,910 --> 00:02:45,450 العناصر هي في مؤشرات من 0 إلى 9. 51 00:02:45,450 --> 00:02:50,120 لذلك هذا هو بالضبط ما نريد أن لدينا مجموعة وتحديد تحديث - اليسار 52 00:02:50,120 --> 00:02:53,010 مجموعة من العنصر الوسط. 53 00:02:53,010 --> 00:02:55,710 >> لذلك، تتطلع الى الحق هو من الصعب بعض الشيء. 54 00:02:55,710 --> 00:03:00,170 الآن أولا، دعونا النظر في طول من مجموعة إلى يمين 55 00:03:00,170 --> 00:03:01,240 العنصر الوسط. 56 00:03:01,240 --> 00:03:08,390 لذلك، إذا كان لدينا مجموعة من حجم ن، ثم وسوف تكون مجموعة جديدة من حجم ن ناقص 57 00:03:08,390 --> 00:03:10,140 وسط ناقص 1. 58 00:03:10,140 --> 00:03:12,530 لذلك، دعونا نفكر ن ناقص الوسط. 59 00:03:12,530 --> 00:03:18,710 >> مرة أخرى، إذا كانت مجموعة من حجم 20 و نحن القسمة 2 للحصول على الوسط، 60 00:03:18,710 --> 00:03:23,540 حتى منتصف هو 10، ثم ن ناقص المتوسطة سوف تعطينا 10، حتى 10 61 00:03:23,540 --> 00:03:25,330 العناصر إلى يمين الوسط. 62 00:03:25,330 --> 00:03:27,780 ولكن لدينا أيضا هذا ناقص 1، لأننا لا نريد أن 63 00:03:27,780 --> 00:03:29,700 وتشمل الوسط نفسه. 64 00:03:29,700 --> 00:03:34,190 حتى ن ناقص الوسط ناقص 1 يعطينا إجمالي عدد العناصر إلى اليمين 65 00:03:34,190 --> 00:03:36,800 المؤشر الوسطى في صفيف. 66 00:03:36,800 --> 00:03:41,870 >> الآن هنا، أن نتذكر أن الوسط المعلمة هي القيم صفيف. 67 00:03:41,870 --> 00:03:46,180 حتى هنا، ونحن تمرير تحديث القيم صفيف. 68 00:03:46,180 --> 00:03:50,930 هذا بالإضافة إلى القيم المتوسطة هو زائد 1 قائلا في الواقع استدعاء متكرر 69 00:03:50,930 --> 00:03:56,460 البحث، ويمر في مجموعة جديدة، حيث يبدأ مجموعة جديدة في الوسط 70 00:03:56,460 --> 00:03:59,370 زائد واحد من قيمنا الأصلية صفيف. 71 00:03:59,370 --> 00:04:05,400 >> بناء جملة بديل لذلك، الآن بعد أن كنت قد بدأت لمعرفة مؤشرات، هي 72 00:04:05,400 --> 00:04:10,170 قيم العطف المتوسطة بالإضافة إلى 1. 73 00:04:10,170 --> 00:04:17,149 لذلك، والاستيلاء على عنوان الوسط بالإضافة إلى عنصر واحد من القيم. 74 00:04:17,149 --> 00:04:23,690 >> الآن، إذا لم تكن مريحة تعديل مجموعة من هذا القبيل، كنت 75 00:04:23,690 --> 00:04:28,900 ويمكن أيضا أن نفذت باستخدام هذه وظيفة مساعد متكررة، حيث 76 00:04:28,900 --> 00:04:31,680 أن يأخذ وظيفة مساعد مزيد من الحجج. 77 00:04:31,680 --> 00:04:36,610 وذلك بدلا من مجرد أخذ القيمة، مجموعة، وحجم المصفوفة، 78 00:04:36,610 --> 00:04:42,315 وظيفة مساعد قد يستغرق أكثر الحجج، بما فيها قيمة المؤشر أقل 79 00:04:42,315 --> 00:04:45,280 ان كنت يهتمون في مجموعة ومؤشر العليا التي يهمك 80 00:04:45,280 --> 00:04:46,300 حول مجموعة. 81 00:04:46,300 --> 00:04:49,770 >> وهكذا تتبع كل من أقل مؤشر ومؤشر العليا، لم تقم بذلك 82 00:04:49,770 --> 00:04:52,780 تحتاج إلى تعديل من أي وقت مضى مجموعة القيم الأصلية. 83 00:04:52,780 --> 00:04:56,390 يمكنك متابعة فقط ل استخدام القيم صفيف. 84 00:04:56,390 --> 00:04:59,540 ولكن هنا، لاحظ أننا لا نحتاج مساعد تعمل طالما نحن 85 00:04:59,540 --> 00:05:01,760 على استعداد لتعديل الأصلي مجموعة القيم. 86 00:05:01,760 --> 00:05:05,020 ونحن على استعداد لتمرير في على القيم التي تم تحديثها. 87 00:05:05,020 --> 00:05:09,140 >> الآن، ونحن لا يمكن البحث الثنائي على صفيف هو غير مصنفة. 88 00:05:09,140 --> 00:05:12,220 لذلك، دعونا الحصول على هذا تسويتها. 89 00:05:12,220 --> 00:05:17,650 الآن، لاحظ هذا النوع هو الماضيين المعلمات الباحث القيم، والذي هو 90 00:05:17,650 --> 00:05:21,110 مجموعة أننا الفرز، وكثافة العمليات ن، الذي هو طول المصفوفة التي 91 00:05:21,110 --> 00:05:22,250 نحن الفرز. 92 00:05:22,250 --> 00:05:24,840 لذلك، وهنا نريد أن تنفيذ خوارزمية الفرز 93 00:05:24,840 --> 00:05:26,690 وهذا هو س ن المربعة. 94 00:05:26,690 --> 00:05:30,560 هل يمكن أن تختار نوع فقاعة، واختيار نوع أو نوع الإدراج، أو 95 00:05:30,560 --> 00:05:32,670 بعض نوع آخر ليس لدينا ينظر في الصف. 96 00:05:32,670 --> 00:05:36,380 ولكن هنا، ونحن في طريقنا لل استخدام اختيار نوع. 97 00:05:36,380 --> 00:05:40,030 >> لذلك، ونحن في طريقنا للتكرار على مجموعة بأكملها. 98 00:05:40,030 --> 00:05:44,360 حسنا، هنا نرى أننا بالتكرار من 0 إلى n ناقص 1. 99 00:05:44,360 --> 00:05:45,990 لماذا ليست كل وسيلة تصل إلى ن؟ 100 00:05:45,990 --> 00:05:49,320 حسنا، إذا كنا بالفعل فرز أول ن ناقص 1 العناصر، ثم 101 00:05:49,320 --> 00:05:54,420 العنصر الأخير جدا ما يجب أن يكون بالفعل في المكان الصحيح، لذلك الفرز على 102 00:05:54,420 --> 00:05:56,520 مجموعة بأكملها. 103 00:05:56,520 --> 00:05:58,770 >> الآن، وتذكر كيف اختيار يعمل الفرز. 104 00:05:58,770 --> 00:06:01,950 ونحن في طريقنا للذهاب على مجموعة كاملة تبحث عن قيمة الحد الأدنى في 105 00:06:01,950 --> 00:06:04,480 مجموعة والعصا التي في البداية. 106 00:06:04,480 --> 00:06:07,610 ثم ونحن في طريقنا للذهاب على كامل مجموعة تبحث مرة أخرى للمرة الثانية 107 00:06:07,610 --> 00:06:10,410 أصغر عنصر، والعصا التي في المرتبة الثانية في 108 00:06:10,410 --> 00:06:12,100 مجموعة، وهلم جرا. 109 00:06:12,100 --> 00:06:14,330 لذلك، وهذا ما يقوم به هذا. 110 00:06:14,330 --> 00:06:17,290 >> هنا، ونحن نشهد أننا تحديد الحد الأدنى الحالي 111 00:06:17,290 --> 00:06:20,030 قيمة للمؤشر ط ال. 112 00:06:20,030 --> 00:06:23,160 ذلك على التكرار الأول، ونحن في طريقنا للنظر في قيمة الحد الأدنى لتكون 113 00:06:23,160 --> 00:06:25,030 بداية مجموعة لدينا. 114 00:06:25,030 --> 00:06:28,500 ثم، ونحن في طريقنا لتكرار عبر ما تبقى من مجموعة، والتحقق ل 115 00:06:28,500 --> 00:06:31,870 معرفة ما إذا كان هناك أي عناصر أصغر من واحد أننا حاليا 116 00:06:31,870 --> 00:06:33,900 النظر في الحد الأدنى. 117 00:06:33,900 --> 00:06:38,840 >> حتى هنا، تقدر ي زائد واحد - وهذا أقل من ما نحن عليه حاليا 118 00:06:38,840 --> 00:06:40,380 النظر في الحد الأدنى. 119 00:06:40,380 --> 00:06:42,940 ثم ونحن في طريقنا لاستكمال ما نعتقد هو الحد الأدنى ل 120 00:06:42,940 --> 00:06:44,640 مؤشر ي زائد 1. 121 00:06:44,640 --> 00:06:48,540 لذلك، فعل ذلك عبر مجموعة كاملة، وبعد هذا للحلقة، والحد الأدنى 122 00:06:48,540 --> 00:06:53,160 وينبغي أن يكون الحد الأدنى للعنصر من موقف ط عشر في الصفيف. 123 00:06:53,160 --> 00:06:57,350 >> مرة واحدة لدينا ذلك، فإننا يمكن مبادلة قيمة الحد الأدنى في موقف ط ال 124 00:06:57,350 --> 00:06:58,230 في صفيف. 125 00:06:58,230 --> 00:07:00,130 لذلك هذا هو مجرد تبادل القياسية. 126 00:07:00,130 --> 00:07:03,940 نقوم بتخزين في قيمة مؤقتة - قيمة ط عشر في مجموعة - 127 00:07:03,940 --> 00:07:08,460 وضعت في قيمة ط ال في مجموعة و قيمة الحد الأدنى الذي ينتمي هناك، 128 00:07:08,460 --> 00:07:13,580 ومن ثم تخزين مرة أخرى إلى حيث قيمة الحد الأدنى الحالي كان ليكون 129 00:07:13,580 --> 00:07:16,460 قيمة ط عشر في مجموعة، وذلك أننا لم يخسر عليه. 130 00:07:16,460 --> 00:07:20,510 >> لذلك، التي لا تزال على التكرار التالي. 131 00:07:20,510 --> 00:07:23,480 سنبدأ تبحث عن الثاني قيمة الحد الأدنى وإدراج ذلك في 132 00:07:23,480 --> 00:07:24,590 المركز الثاني. 133 00:07:24,590 --> 00:07:27,440 على التكرار الثالث، ونحن سوف ننظر ل قيمة الحد الأدنى الثالث وإدراج 134 00:07:27,440 --> 00:07:31,550 أن في المركز الثالث، وهكذا على حتى يكون لدينا مجموعة وفرزها. 135 00:07:31,550 --> 00:07:33,820 اسمي روب، وهذا وكان اختيار نوع. 136 00:07:33,820 --> 00:07:39,456