اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

وعليك السلام ورحمة الله وبركاته.

نعم بالفعل  خوارزمية البحث الثنائي  ( Binary Search ) هي من أشهر الخوارزميات المستخدمة في شرح مفهوم ال (Algorithms) و أيضا قياس الوقت الخاص بالخوارزمية والمقارنة بينها وبين البحث العادي .

وأيضا هي مشهورة لأنها سهلة التنفيذ وسهلة الفهم ويمكن تنفيذها بأكثر من طريقة و إستخدام أى لغة برمجة لتنفيذها وأيضا لأنها فعالة وسريعه في البحث حيث تأخذ O(log n) عوضا عن البحث العادي الذي يأخذ O(n*n) .

ولكن ال ( Binary Search ) ليس الأفضل دائما لذلك لا يمكننا أنها هي الأفضل من بين خوارزميات البحث . حيث هي الأفضل في حالة القوائم المرتبة الكبيرة . ولكن إذا لم تكن القوائم مرتبة فهنا يكمن القصور حيث سيتوجب أولا ترتيب القائمة ومن ثم البحث فيها .

ويمكنك قراءة الدرس التالي لمعرفة مزايا  ال ( Binary Search ) :

 

  • 0
نشر
بتاريخ 9 دقائق مضت قال محمد عاطف17:

وعليك السلام ورحمة الله وبركاته.

نعم بالفعل  خوارزمية البحث الثنائي  ( Binary Search ) هي من أشهر الخوارزميات المستخدمة في شرح مفهوم ال (Algorithms) و أيضا قياس الوقت الخاص بالخوارزمية والمقارنة بينها وبين البحث العادي .

وأيضا هي مشهورة لأنها سهلة التنفيذ وسهلة الفهم ويمكن تنفيذها بأكثر من طريقة و إستخدام أى لغة برمجة لتنفيذها وأيضا لأنها فعالة وسريعه في البحث حيث تأخذ O(log n) عوضا عن البحث العادي الذي يأخذ O(n*n) .

ولكن ال ( Binary Search ) ليس الأفضل دائما لذلك لا يمكننا أنها هي الأفضل من بين خوارزميات البحث . حيث هي الأفضل في حالة القوائم المرتبة الكبيرة . ولكن إذا لم تكن القوائم مرتبة فهنا يكمن القصور حيث سيتوجب أولا ترتيب القائمة ومن ثم البحث فيها .

ويمكنك قراءة الدرس التالي لمعرفة مزايا  ال ( Binary Search ) :

 

تمام جدا الف شكراا لحضرتك

  • 0
نشر

وعليكم السلام,

تخيل أن لدينا مصفوفة تحتوي على عدد هائل من العناصر مرتبة إذا أردنا أن نبحث عن عنصر معين في هذه المصفوفة أسوأً إحتمال worst time case هو أن نمر على جميع العناصر مما يؤدي إلى وقت طويل ونعبر عليه  رياضيا

o(n^2)

لكن بما أننا نعرف أنه مرتب تصاعديا نستطيع الذهاب لنصف المصفوفة ونتأكد اذا الرقم أكبر من اللذي نديره أم أصغر فنقسم المصفوفة لنصفين فنختار القسم اللذي يوجد فيه العنصر المراد تحديده ثم نعمل بالقسم الموجود فيه العنصر المراد تحديده مثل ما عملنا سابقا حتى نلقى العنصر مما يقلل من وقت البحث ويجعل البرنامج يعمل بشكل أسرع جدا ونعبر عليه رياضيا

O(logn)

فعندما نبحث في مصفوفة مرتبة تكون لنا الأفضلية كما أن تنفيذ الخوارزمية ليس صعبا.

وغالبا كل خوارزمية لها مميزاتها وعيوبها وأوقات محددة لإستخدامها فعليها نختار.

اقرأ هذا المقال لمعرفة كيف التنفيذ وتفاصيل أكثر:

اضغط هنا

  • 0
نشر
بتاريخ 6 ساعة قال عماد شيخ العشرة:

وعليكم السلام,

تخيل أن لدينا مصفوفة تحتوي على عدد هائل من العناصر مرتبة إذا أردنا أن نبحث عن عنصر معين في هذه المصفوفة أسوأً إحتمال worst time case هو أن نمر على جميع العناصر مما يؤدي إلى وقت طويل ونعبر عليه  رياضيا

o(n^2)

لكن بما أننا نعرف أنه مرتب تصاعديا نستطيع الذهاب لنصف المصفوفة ونتأكد اذا الرقم أكبر من اللذي نديره أم أصغر فنقسم المصفوفة لنصفين فنختار القسم اللذي يوجد فيه العنصر المراد تحديده ثم نعمل بالقسم الموجود فيه العنصر المراد تحديده مثل ما عملنا سابقا حتى نلقى العنصر مما يقلل من وقت البحث ويجعل البرنامج يعمل بشكل أسرع جدا ونعبر عليه رياضيا

O(logn)

فعندما نبحث في مصفوفة مرتبة تكون لنا الأفضلية كما أن تنفيذ الخوارزمية ليس صعبا.

وغالبا كل خوارزمية لها مميزاتها وعيوبها وأوقات محددة لإستخدامها فعليها نختار.

اقرأ هذا المقال لمعرفة كيف التنفيذ وتفاصيل أكثر:

اضغط هنا

شكراا جدا لحضرتك

  • 0
نشر

لأنها أكثر الخوارزميات كفاءة في البحث في مصفوفات مرتبة، وتعمل بزمن تشغيل O(log n) ، حيث n هو عدد العناصر في المصفوفة، أي أن زمن البحث يقل بشكل كبير مع زيادة عدد العناصر.

وتستخدم في العديد من التطبيقات المختلفة، مثل قواعد البيانات، والبحث في الملفات، وإدارة الذاكرة، وغيرها.

وتتمثل الفكرة الأساسية في تقسيم المصفوفة إلى نصفين، ثم تحديد النصف الذي يحتوي على العنصر المطلوب.

مثلاً لو لدينا مصفوفة مرتبة تحتوي على الأرقام 1، 2، 3، 4، 5، 6، 7، 8، 9، وتبحث عن الرقم 5، فستقوم خوارزمية البحث الثنائي بتقسيم المصفوفة إلى نصفين:

  • النصف الأول: 1، 2، 3، 4
  • النصف الثاني: 5، 6، 7، 8، 9

ثم ستقوم بتحديد النصف الذي يحتوي على الرقم 5، وهو النصف الثاني، ثم تقسيم النصف الثاني إلى نصفين مرة أخرى:

  • النصف الأول: 5، 6
  • النصف الثاني: 7، 8، 9

ثم ستقوم بتحديد النصف الذي يحتوي على الرقم 5، وهو النصف الأول، ثم ستقوم بتحديد الرقم 5 في النصف الأول.

أي تخيل أنك تبحث عن رقم معين في قائمة مرتبة من الأرقام، تبدأ بالبحث في النقطة الوسطى للقائمة، وفي حال كان الرقم الذي تبحث عنه أكبر من الرقم في النقطة الوسطى، فإنك تركز على النصف العلوي من القائمة، وفي حال الرقم الذي تبحث عنه أصغر من الرقم في النقطة الوسطى، فإنك تركز على النصف السفلي من القائمة، وتكرر تلك العملية حتى تجد الرقم الذي تبحث عنه.

ولا يمكن استخدام خوارزمية البحث الثنائي مع البيانات غير مرتبة، وأحيانًا لا تُعطي تلك الخوارزمية النتيجة الصحيحة عند وجود بيانات متكررة.

بالتالي هي ليست دائمًا الأفضل في كل الحالات، فهناك خوارزميات أخرى أفضل في بعض الحالات، ومنها:

  • خوارزمية البحث الخطي: أفضل في حالات البحث في مصفوفات صغيرة أو غير مرتبة.
  • خوارزمية البحث الثنائي المتكرر: أفضل في حالات البحث في مصفوفات مرتبة بشكل خاص.
  • خوارزمية البحث الحشوي: أفضل في حالات البحث في مصفوفات كبيرة ومرتبة بشكل خاص.

 

  • 0
نشر
بتاريخ 2 ساعة قال Mustafa Suleiman:

لأنها أكثر الخوارزميات كفاءة في البحث في مصفوفات مرتبة، وتعمل بزمن تشغيل O(log n) ، حيث n هو عدد العناصر في المصفوفة، أي أن زمن البحث يقل بشكل كبير مع زيادة عدد العناصر.

وتستخدم في العديد من التطبيقات المختلفة، مثل قواعد البيانات، والبحث في الملفات، وإدارة الذاكرة، وغيرها.

وتتمثل الفكرة الأساسية في تقسيم المصفوفة إلى نصفين، ثم تحديد النصف الذي يحتوي على العنصر المطلوب.

مثلاً لو لدينا مصفوفة مرتبة تحتوي على الأرقام 1، 2، 3، 4، 5، 6، 7، 8، 9، وتبحث عن الرقم 5، فستقوم خوارزمية البحث الثنائي بتقسيم المصفوفة إلى نصفين:

  • النصف الأول: 1، 2، 3، 4
  • النصف الثاني: 5، 6، 7، 8، 9

ثم ستقوم بتحديد النصف الذي يحتوي على الرقم 5، وهو النصف الثاني، ثم تقسيم النصف الثاني إلى نصفين مرة أخرى:

  • النصف الأول: 5، 6
  • النصف الثاني: 7، 8، 9

ثم ستقوم بتحديد النصف الذي يحتوي على الرقم 5، وهو النصف الأول، ثم ستقوم بتحديد الرقم 5 في النصف الأول.

أي تخيل أنك تبحث عن رقم معين في قائمة مرتبة من الأرقام، تبدأ بالبحث في النقطة الوسطى للقائمة، وفي حال كان الرقم الذي تبحث عنه أكبر من الرقم في النقطة الوسطى، فإنك تركز على النصف العلوي من القائمة، وفي حال الرقم الذي تبحث عنه أصغر من الرقم في النقطة الوسطى، فإنك تركز على النصف السفلي من القائمة، وتكرر تلك العملية حتى تجد الرقم الذي تبحث عنه.

ولا يمكن استخدام خوارزمية البحث الثنائي مع البيانات غير مرتبة، وأحيانًا لا تُعطي تلك الخوارزمية النتيجة الصحيحة عند وجود بيانات متكررة.

بالتالي هي ليست دائمًا الأفضل في كل الحالات، فهناك خوارزميات أخرى أفضل في بعض الحالات، ومنها:

  • خوارزمية البحث الخطي: أفضل في حالات البحث في مصفوفات صغيرة أو غير مرتبة.
  • خوارزمية البحث الثنائي المتكرر: أفضل في حالات البحث في مصفوفات مرتبة بشكل خاص.
  • خوارزمية البحث الحشوي: أفضل في حالات البحث في مصفوفات كبيرة ومرتبة بشكل خاص.

 

شكراا لحضرتك جدا

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...