أختار البحث الخطي ولا الثنائي؟
الفكرة الأساسية
البحث الخطي يفحص العناصر واحدًا بعد الآخر ولا يشترط ترتيبها. البحث الثنائي يقارن بالمنتصف ويقلص مجالًا مرتبًا في كل خطوة. ميزته تعتمد على تحقق شروط الترتيب والوصول.
استخدام البحث الثنائي على قائمة غير مرتبة ثم إعلان غياب القيمة خطأ في أصل الطريقة، حتى لو بدا الكود سليمًا.
مثال تتبعه بنفسك
القيم المرتبة هي 3 و7 و11 و18 و25. نبحث عن 18. المنتصف 11، ولذلك نكمل في الجزء الأعلى من المجال، ثم نصل إلى 18.
لو نبحث عن 20، سنضيق المجال بين القيم المناسبة حتى يصبح فارغًا. هذه هي حجة الغياب. لا تعد أقرب قيمة إلا إذا كان هذا هو المطلوب.
اتفق على معنى الحدود
قد يستخدم التنفيذ مجالًا يشمل الحدين أو مجالًا نصف مفتوح. الطريقتان ممكنتان، لكن تحديث الحدود يجب أن يطابق الاختيار. الخلط قد يترك عنصرًا أو يمنع التوقف.
حساب المنتصف بصيغة low + (high - low) / 2 يتجنب جمع فهرسين كبيرين مباشرة، بشرط صحة المجال والحساب وأنواع القيم.
قارن الاستخدام الكامل
| الحالة | بداية مناسبة | السبب |
|---|---|---|
| بحث واحد في مجموعة صغيرة غير مرتبة | مرور خطي | لا يحتاج تجهيزًا بالفرز |
| بحث متكرر في مصفوفة مرتبة | بحث ثنائي | تقليص المجال كل مرة |
| تعديلات وبحث متكرران | تقييم هيكل البيانات كله | الحفاظ على الترتيب له تكلفة |
| العثور على أول قيمة مكررة | بحث محدد للحد الأدنى | أي تطابق قد لا يكفي |
في المصفوفة المرتبة، عدد مقارنات البحث الثنائي O(log n)، مقابل O(n) في أسوأ حالات المرور الخطي. لا تنقل هذا الاستنتاج تلقائيًا إلى بنية لا تدعم الوصول بالفهرس بكفاءة.
ماذا تقصد مع التكرار؟
في 2 و5 و5 و5 و9، سؤال وجود 5 مختلف عن مكان أول 5 أو عدد مرات ظهورها. اكتب الناتج المطلوب قبل اختيار التنفيذ.
اختبر قيمة أصغر من الجميع وأكبر من الجميع وبين عنصرين. وراجع الفراغ والعنصر الواحد حسب اتفاق الدالة.
تمرين
تتبع البحث عن 14 في 4 و8 و14 و21 و30 و42. سجل المجال والمنتصف في كل خطوة. ثم اشرح لماذا قد لا تحتاج إلى ترتيب قائمة جديدة إذا كان المطلوب بحثًا واحدًا فقط.
تأتي الخوارزميات بعد هياكل البيانات في جمال تك. اربط طريقة البحث بتمثيل البيانات وطريقة تحديثها حتى تكون المقارنة كاملة.
مراجع وتفاصيل الكورسات
المراجع التالية تساعد على متابعة التعلم. الأمثلة والتمارين في هذا المقال تعليمية، وتفاصيل الكورسات تُراجع من الكتالوج.