Searching ( Linear and Binary Search )

🧠 البحث الخطي والثنائي في الـ 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” لكل جديد في البرمجة التنافسية والخوارزميات.

اترك ردّاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

error: Content is protected !!