كيف يكون البحث الثنائي مقابل المخططات البحثية الأخرى؟
Context:المصفوفات المصنفة مع البحث الثنائي هي حل غير فعال للغاية عندما تتداخل عمليات الإدراج والحذف مع الاسترداد، مع أخذ  0n) الوقت لكل عملية من هذه. بالإضافة إلى ذلك، يمكن للمصفوفات المصنفة أن تعقد استخدام الذاكرة خاصة عندما يتم إدراج العناصر في كثير من الأحيان في المصفوفة. كاينوا هيكليات بيانات أخرى تدعم الإدراج والحذف الأكثر كفاءة. يمكن استخدام البحث الثنائي لإجراء التطابق الدقيق وعضوية المجموعة (تحديد ما إذا كانت القيمة المستهدفة موجودة في مجموعة من القيم). هناك هياكل بيانات تدعم التطابق الدقيق السريع وعضوية المجموعة. ومع ذلك، على عكس العديد من مخططات البحث الأخرى، يمكن استخدام البحث الثنائي للتطابق التقريبي الفعال، وعادة ما يتم إجراء هذه التطابقات في O ((log n) الوقت بغض النظر عن نوع أو بنية القيم نفسها. بالإضافة إلى ذلك، توجد بعض العمليات، مثل العثور على أصغر وأكبر عنصر، والتي يمكن تنفيذها بكفاءة على مصفوفة مرتبة.  البحث الخطي:  البحث الخطي هو خوارزمية البحث البسيطة التي تتحقق من كل سجل حتى تجد القيمة المستهدفة. يمكن إجراء البحث الخطي على قائمة مرتبطة، والتي تسمح بإدراج وحذف أسرع من صفيف. البحث الثنائي أسرع من البحث الخطي للمصفوفات المصنفة ما عدا إذا كانت المصفوفة قصيرة، على الرغم من أن المصفوفة تحتاج إلى ترتيب مسبقا. كل خوارزميات الترتيب القائمة على عناصر المقارنة، مثل الترتيب السريع والترتيب المدمج، تتطلب على الأقل 0nlog n) المقارنات في أسوأ حالة. على عكس البحث الخطي، يمكن استخدام البحث الثنائي للتطابق التقريبي الفعال. وهناك عمليات مثل العثور على أصغر وأكبر عنصر يمكن تنفيذها بكفاءة على مصفوفة مرتبة ولكن ليس على مصفوفة غير مرتبة.  الشجرة:  تتم البحث في الأشجار الثنائية باستخدام خوارزمية مشابهة للبحث الثنائي. شجرة البحث الثنائية هي بنية بيانات شجرة ثنائية تعمل على أساس مبدأ البحث الثنائي. يتم ترتيب سجلات الشجرة بترتيب مرتب، ويمكن البحث عن كل سجل في الشجرة باستخدام خوارزمية مشابهة للبحث الثنائي، مع أخذ متوسط الوقت اللوغاريتمي. كما يتطلب الإدراج والحذف في المتوسط وقت لوغاريتمي في أشجار البحث الثنائي. يمكن أن يكون هذا أسرع من الإدراج والحذف في الوقت الخطي للمصفوفات المصنفة، وتحتفظ الأشجار الثنائية بالقدرة على تنفيذ جميع العمليات الممكنة على المصفوفة المصنفة، بما في ذلك الاستعلامات النطاقية والتقريبية.  ومع ذلك، عادة ما يكون البحث الثنائي أكثر كفاءة للبحث حيث أن أشجار البحث الثنائي من المرجح أن تكون غير متوازنة بشكل غير كامل، مما يؤدي إلى أداء أسوأ قليلاً من البحث الثنائي. حتى هذا ينطبق على أشجار البحث الثنائية المتوازنة، أشجار البحث الثنائية التي توازن العقد الخاصة بها، لأنها نادرا ما تنتج الشجرة بأقل مستويات ممكنة. إلا بالنسبة لشجرة البحث الثنائية المتوازنة، قد تكون الشجرة غير متوازنة بشدة مع عدد قليل من العقد الداخلية مع طفلين، مما يؤدي إلى متوسط وأسوأ حالة وقت البحث يقترب من n مقارنات.[e] أشجار البحث الثنائي تأخذ مساحة أكبر من المصفوفات المصنفة.  شجرة البحث الثنائية تسمح للبحث السريع في الذاكرة الخارجية المخزنة في الأقراص الصلبة، حيث يمكن أن تكون شجرة البحث الثنائية منظمة بكفاءة في أنظمة الملفات. وتعمم شجرة B هذه الطريقة في تنظيم الشجرة. غالبًا ما يتم استخدام أشجار B لتنظيم التخزين على المدى الطويل مثل قواعد البيانات وأنظمة الملفات.  تكرار: وبالنسبة لتنفيذ المصفوفات التعاونية، فإن جداول التجزئة، وهي هيكل البيانات التي ترسم خرائط المفاتيح إلى السجلات باستخدام دالة التجزئة، هي بشكل عام أسرع من البحث الثنائي على مجموعة مرتبة من السجلات. معظم تنفيذات جدول التجزئة تتطلب فقط وقت ثابت مستهلك في المتوسط. ومع ذلك، التجزئة ليست مفيدة للتطابقات التقريبية، مثل حساب أصغر المفاتيح التالية، وأكبر المفاتيح التالية، والأقرب المفاتيح، لأن المعلومات الوحيدة المقدمة في البحث الفاشل هي أن الهدف غير موجود في أي سجل. البحث الثنائي مثالي لمثل هذه التطابقات، حيث يؤديها في الوقت اللوغاريتمي. كما يدعم البحث الثنائي التطابقات التقريبية. يمكن إجراء بعض العمليات، مثل العثور على أصغر وأكبر عنصر، بكفاءة على المصفوفات المصنفة ولكن ليس على جداول التجزئة.  حدد خوارزميات العضوية: ومشكلة مرتبطة بالبحث هي العضوية في المجموعة. يمكن استخدام أي خوارزمية تقوم بالبحث، مثل البحث الثنائي، لعضوية المجموعة. وهناك خوارزميات أخرى مناسبة بشكل خاص لعضوية المجموعة. المجموعة البيتية هي الأبسط، مفيدة عندما يكون نطاق المفاتيح محدود. ويقوم بتخزين مجموعة من البيتات، مع كل بت يمثل مفتاح واحد داخل نطاق المفاتيح. المصفوفات بت سريعة جدا، وتتطلب فقط وقت O(1). نوع جودي1 من صف جودي يتعامل مع مفاتيح 64 بت بكفاءة.  وبالنسبة للنتائج التقريبية، فإن فلاتر بلوم، وهي بنية بيانات احتمالية أخرى تقوم على التجزئة، تخزن مجموعة من المفاتيح عن طريق ترميز المفاتيح باستخدام صفيف بت ووظائف التجزئة المتعددة. فلاتر بلوم أكثر كفاءة في المساحة من المصفوفات بت في معظم الحالات وليس أبطأ بكثير: مع k وظائف التجزئة، طلبات العضوية تتطلب فقط وقت مناسب. ومع ذلك، تعاني مرشحات بلوم من الإيجابيات الزائفة.  بنيات البيانات الأخرى: هناك هياكل بيانات قد تحسن البحث الثنائي في بعض الحالات لكل من البحث والعمليات الأخرى المتاحة للمصفوفات المصنفة. على سبيل المثال، يمكن إجراء عمليات البحث والمطابقات التقريبية والعمليات المتاحة للمصفوفات المصنفة بشكل أكثر كفاءة من البحث الثنائي على هياكل البيانات المتخصصة مثل أشجار فان إمدي بوس وأشجار الاندماج والتجارب ومصفوفات البتات. عادةً ما تكون هياكل البيانات المتخصصة هذه أسرع لأنها تستفيد من خصائص المفاتيح ذات سمة معينة (عادةً المفاتيح التي هي أرقام صحيحة صغيرة) ، وبالتالي فستستغرق وقتًا أو مساحة للمفاتيح التي تفتقر إلى هذه السمة. طالما يمكن ترتيب المفاتيح، يمكن دائمًا تنفيذ هذه العمليات على الأقل بكفاءة على مصفوفة مرتبة بغض النظر عن المفاتيح. وتستخدم بعض الهياكل، مثل مصفوفات جودي، مزيجًا من الأساليب للتخفيف من ذلك مع الاحتفاظ بالكفاءة والقدرة على إجراء التطابق التقريبي.
المصفوفات المصنفة مع البحث الثنائي هي حل غير فعال للغاية عندما تتداخل عمليات الإدراج والحذف مع الاسترداد. بالإضافة إلى ذلك، يمكن للمصفوفات المصنفة أن تعقد استخدام الذاكرة خاصة عندما يتم إدراج العناصر في كثير من الأحيان في المصفوفة. البحث الثنائي أسرع من البحث الخطي للمصفوفات المصنفة ما عدا إذا كانت المصفوفة قصيرة، على الرغم من أن المصفوفة تحتاج إلى ترتيب مسبقا. عادةً ما يكون البحث الثنائي أكثر كفاءة للبحث حيث أن أشجار البحث الثنائي من المرجح أن تكون غير متوازنة بشكل غير كامل، مما يؤدي إلى أداء أسوأ قليلاً من البحث الثنائي. هيكل البيانات الذي يرسم خرائط المفاتيح إلى السجلات باستخدام دالة التجزئة، هو عادة أسرع من البحث الثنائي على مجموعة مرتبة من السجلات.