🧠 البحث الخطي والثنائي في الـ Competitive Programming
في عالم البرمجة التنافسية، من أهم المهارات اللي لازم تتعلمها هي تقنيات البحث في المصفوفات (Arrays). في البوست ده، هنتكلم عن طريقتين أساسيتين:
🔍 Linear Search – البحث الخطي
دي أبسط طريقة للبحث. بتمر على كل عنصر في الـ array واحدة واحدة، لحد ما تلاقي العنصر اللي بتدور عليه.
- ✅ المميزات: سهل الفهم والتنفيذ – بيشتغل على أي نوع من الـ arrays، سواء مرتبة أو لأ
- ❌ العيوب: بطيء لو عدد العناصر كبير (الوقت = O(n))
int linearSearch(int arr[], int n, int target) {
for (int i = 0; i < n; i++) {
if (arr[i] == target)
return i;
}
return -1;
}
⚡ Binary Search – البحث الثنائي
البحث الثنائي أسرع بكتير، لكنه محتاج الـ array تكون مرتبة (sorted). بتبدأ تقسم النطاق للنص، وتشوف هل العنصر في النص، ولا على اليمين، ولا على الشمال.
- ✅ المميزات: سريع جدًا (الوقت = O(log n)) – مثالي في المسابقات لما يكون عندك بيانات مرتبة
- ❌ العيوب: مينفعش تستخدمه مع بيانات غير مرتبة من غير ترتيبها الأول
int binarySearch(int arr[], int n, int target) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == target)
return mid;
else if (arr[mid] < target)
left = mid + 1;
else
right = mid - 1;
}
return -1;
}
🏁 أيهم أستخدم في المسابقة؟
لو الـ array مش مرتبة، استخدم Linear Search.
لو مرتبة، استخدم Binary Search واستفد من السرعة الكبيرة في الحل. ⏱️
💡 تابع موقعنا “Mr Algorithms” لكل جديد في البرمجة التنافسية والخوارزميات.