Binary Search: أسرع طريقة للبحث فى البيانات

x32x01
  • بواسطة x32x01 ||

يعنى ايه Binary Search وليه الشركات الكبيرة بتستخدمه؟ 🧐

كوباية الشاي بتاعتك جاهزة؟ ☕
يلا بينا نفهم مع بعض Binary Search وايه الفرق بينها وبين Linear Search وليه معظم الشركات الكبيرة بتعتمدها في البرمجة وإدارة البيانات الكبيرة.

Binary Search هي واحدة من أهم طرق البحث في البرمجة، خصوصًا لما يكون عندك مجموعات بيانات كبيرة وعايز تلاقي عنصر معين بسرعة وبدون هدر وقت.

Linear Search وBinary Search: الفرق بينهم 👀

خلينا نبدأ بمثال عملي:
عندك كتاب صفحاته من 1 لحد 100، وعايز تقرأ حاجة موجودة في صفحة 78، إزاي هتدور عليها؟

الطريقة الأولى (Linear Search):

  • تمسك الكتاب من الأول وتشوف كل صفحة على حدة
  • لو مش الصفحة اللي انت عايزها، تروح للصفحة اللي بعدها وتقارن تاني
  • هتفضل تعمل كده لحد ما تلاقي الصفحة المطلوبة
  • العيب هنا إنك ممكن تضطر تمشي على معظم صفحات الكتاب، وده بياخد وقت طويل ⏳

الطريقة الثانية (Binary Search):

  • تروح للصفحة اللي في نص الكتاب، مثلا صفحة 50
  • تقارن رقم الصفحة المطلوبة (78) بالصفحة اللي انت فيها
  • هتلاقي الصفحة المطلوبة أكبر من رقم الصفحة اللي انت فيها
  • يعني مستحيل تكون الصفحة المطلوبة في نص الكتاب الأول (صفحات 1-49)
  • كده تقدر تستبعد نص الكتاب الأول وتبحث في النص التاني
  • تروح لنص النص التاني (صفحة 75 مثلا) وتقارن تاني
  • هتكرر العملية لحد ما تلاقي الصفحة المطلوبة ✅

تحويل المثال لData Structure 💻

اللي عملناه في المثال ده بيتسمى في البرمجة:
  1. الطريقة الأولى: Linear Search
  2. الطريقة الثانية: Binary Search
وطبعًا Binary Search أفضل بكتير من Linear Search، بس فيه شرط مهم:
  • مجموعة البيانات اللي هتبحث فيها لازم تكون مرتبة
  • زي الكتاب بالظبط، الصفحات من 1 لحد 100

Time Complexity لكل طريقة ⏱️

الـ Time Complexity هي المقياس اللي بيحددلك سرعة البحث حسب حجم البيانات.

Linear Search: (n)

  • يعني لو عندك 1000 عنصر، ممكن تحتاج تقارن كل العناصر واحد واحد لحد ما تلاقي المطلوب
  • Binary Search: (log n)
  • لو عندك 1000 عنصر، هتلاقي العنصر المطلوب بعد حوالي 10 خطوات بس! 🔥

كود مثال Binary Search بلغة Python 🐍

لو عايز تشوف Binary Search شغال على Array، ممكن تستخدم الكود ده:
Python:
def binary_search(arr, target):
low = 0
high = len(arr) - 1

while low <= high:
    mid = (low + high) // 2
    if arr[mid] == target:
        return mid
    elif arr[mid] < target:
        low = mid + 1
    else:
        high = mid - 1
return -1

# مثال

numbers = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
print(binary_search(numbers, 11))  # هيرجع 5

كود مثال Binary Search بلغة JavaScript 💻

JavaScript:
function binarySearch(arr, target) {
let low = 0;
let high = arr.length - 1;

while (low <= high) {
    let mid = Math.floor((low + high) / 2);
    if (arr[mid] === target) return mid;
    else if (arr[mid] < target) low = mid + 1;
    else high = mid - 1;
}
return -1;

}

// مثال
let numbers = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19];
console.log(binarySearch(numbers, 11)); // هيرجع 5

مميزات Binary Search 💡

  • سرعة عالية مقارنة بـ Linear Search
  • فعالة جدًا مع مجموعات بيانات كبيرة
  • مناسبة للبرمجة اللي بتحتاج بحث مستمر على بيانات مرتبة

عيوب Binary Search ⚠️

  • البيانات لازم تكون مرتبة
  • أصعب شويه في التنفيذ من Linear Search لو المبتدئ لسه بيتعلم البرمجة
  • مش مناسبة للبيانات اللي حجمها صغير جدًا

استخدام Binary Search في الشركات الكبيرة 🏢

معظم شركات البرمجة الكبيرة زي Google وFacebook وAmazon بتستخدم Binary Search لأنها:
  • بتوفر وقت البحث في قواعد بيانات ضخمة
  • بتقلل استهلاك الموارد والمعالج
  • بتساعد المطورين يكتبوا برامج أسرع وأكثر كفاءة

نصايح لتطبيق Binary Search صح 🔧

  • دايمًا تأكد إن البيانات مرتبة قبل استخدام Binary Search
  • استخدمه مع Arrays وLists الكبيرة
  • لو عندك مجموعة صغيرة جدًا، Linear Search أحيانًا بيكون أسهل

🎯 لو عايز تبحث بسرعة في مجموعات بيانات كبيرة، Binary Search هو الحل الأمثل.
Linear Search كويس للبيانات الصغيرة، بس لما البيانات تكبر، Binary Search هيوفر وقت ومجهود كبير جدًا.
 
التعديل الأخير:
المواضيع ذات الصلة
x32x01
الردود
0
المشاهدات
778
x32x01
x32x01
x32x01
الردود
0
المشاهدات
597
x32x01
x32x01
x32x01
الردود
0
المشاهدات
768
x32x01
x32x01
x32x01
الردود
0
المشاهدات
383
x32x01
x32x01
x32x01
الردود
0
المشاهدات
615
x32x01
x32x01
x32x01
الردود
0
المشاهدات
414
x32x01
x32x01
x32x01
الردود
0
المشاهدات
447
x32x01
x32x01
x32x01
  • x32x01
الردود
0
المشاهدات
113
x32x01
x32x01
x32x01
الردود
0
المشاهدات
511
x32x01
x32x01
x32x01
الردود
0
المشاهدات
651
x32x01
x32x01
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
1,831
المشاركات
2,028
أعضاء أكتب كود
464
أخر عضو
رشن7
عودة
أعلى