contents
- searching for a number within a set of numbers problem
- searching for a number using the sequential search algorithm
- searching for a number the algorithm that ignores unnecessary numbers
- searching for a number using the binary search algorithm
مسألة البحث عن رقم داخل مجموعة أرقام
لنفترض أننا نريد العثور على رقم معين داخل مجموعة أرقام من 1 إلى 10 مليون. الرقم الذي نبحث عنه هو 9,999,996. سنقوم بحل هذه المسألة باستخدام ثلاث خوارزميات لاكتشاف الخوارزمية الأفضل بينهم.
البحث عن رقم باستخدام خوارزمية البحث التسلسلي
نبدأ بالبحث من الرقم الأول، ثم نتحقق من كل رقم واحدًا تلو الآخر حتى نجد الرقم المطلوب. وإذا وجدناه، نقوم بطباعة عدد المحاولات التي استغرقها البحث. عند تشغيل هذه الخوارزمية نجد الرقم في 9,999,997 محاولة. والزمن المستغرق 10 ميلي ثانية. لكن تنفيذ الخوارزمية قد لا يكون دائمًا بنفس السرعة، فقد يختلف زمن التنفيذ حتى عند تشغيل نفس الكود على نفس الجهاز، وهذا طبيعي.
البحث عن رقم باستخدام خوارزمية تجاهل الأرقام غير الضرورية
هنا نقوم بتخطي الأعداد الزوجية أو الفرديةإذا كان الرقم المطلوب زوجيًا، نبحث فقط بين الأعداد الزوجية. وأما إذا كان الرقم المطلوب فرديًا، نبحث فقط بين الأعداد الفردية. هذا يؤدي إلى تقليل عدد المحاولات إلى النصف. والنتيجة بعد تشغيل الكود نجد الرقم في 4,999,999 محاولة. والزمن المستغرق 4 ميلي ثانية. وهذا تحسن جيد عن أداء الخوارزمية السابقة.
البحث عن رقم باستخدام خوارزمية البحث الثنائي
في هذه الخوارزمية يتم تقسيم المجموعة إلى نصفين في كل خطوة نحدد العنصر الأوسط من المجموعة، إذا كان الرقم المطلوب أكبر من العنصر الأوسط، فإننا نتجاهل النصف الأول ونبحث في النصف الثاني. وإذا كان الرقم المطلوب أصغر من العنصر الأوسط، فإننا نتجاهل النصف الثاني ونبحث في النصف الأول. ثم نكرر العملية حتى نجد الرقم المطلوب. عند تشغيل هذه الخوارزمية نجد الرقم بعد 22 محاولة فقط والزمن المستغرق أقل من 1 ميلي ثانية . عظيم إنه أداء رائع وبالتالي خوارزمية البحث الثنائي هي الخوارزمية الأفضل للبحث عن الرقم المطلوب.