freeCodeCamp/guide/arabic/miscellaneous/freecodecamp-algorithm-bina.../index.md

3.0 KiB

title localeTitle
Freecodecamp Algorithm Binary Search Guide Freecodecamp الخوارزمية دليل البحث الثنائي

البحث الثنائي عبارة عن خوارزمية بحث تعثر على موضع لقيمة الهدف داخل مصفوفة تم فرزها.

مثال

بحث ثنائي

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

خوارزمية

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

يكون pseudocode لخوارزمية البحث الثنائي كما يلي:

BinarySearch(A<a href='https://repl.it/CWZq/158' target='_blank' rel='nofollow'>0..N-1], value) { low = 0 high = N - 1 while (low <= high) { // invariants: value > A[i] for all i < low value < A[i] for all i > high mid = (low + high) / 2 if (A[mid] > value) high = mid - 1 else if (A[mid] < value) low = mid + 1 else return mid } return not_found // value would be inserted at index "low" }

تعقيد

  • أسوأ أداء للحالة: O (log n)
  • أفضل أداء للحالة: O (1)
  • متوسط ​​أداء الحالة: O (log n)
  • أسوأ تعقيد للحالات الفضائية: O (1) للتكرار؛ O (log n) for recursive.

تنفيذ C ++

`int binarySearch(int arr[], int value, int left, int right) {
int middle;
while (left <= right) {
middle = (left + right) / 2;
if (arr[middle] == value)
return middle;
else if (arr[middle] > value)
right = middle - 1;
else
left = middle + 1;
}
return -1;
}
`

rocket: [Run Code ## Python Implementation

def binary_search(l, value): low = 0 high = len(l)-1 while low <= high: mid = (low+high)//2 if l<a href='https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":rocket:"' target='_blank' rel='nofollow'>mid] > value: high = mid-1 elif l[mid] < value: low = mid+1 else: return mid return -1

:rocket: تشغيل الكود