تفتاش جوجي (ألݣوريتم)
موضيل:مقالة زنقة ماكاتخرجش موضيل:مقالة مقطوعة من شجرة موضيل:معلومات ألݣوريتم ف لانفورماتيك، تّفتاش جّوجي (بموضيل:Lang-en) هو ألݣوريتم د تفتاش. كتستعمل ماش تجبر موطاع ديال شي عنصر هدف ف شي ليستة مستفة. تفتاش جوجي كيقارن ديك لعنصر لهدف مع لعنصر لي جا فلوصط ديال ليستة، إدا كانو قد قد سالينا، و يلا كان لهدف صغير من لوصط، كيفتّش ف نص د شْمال (ليستة مستفة من صغير ن لكبير من شمال ن ليمن) د ليستة، إلا كان لهدف كبير من لوصط كيفتش ف نص د ليمن د ليستة. بهاد طريقة طاية ديال ليستة كتقسم على جوج ف كل دورة ديال لألݣوريتم. هنا من جا لإسم ديالو.
تعقيد ف لوقت ديالو هو فين هو طاي د ليستة.[1] تّفتاش جّوجي سرع من تفتاش لخطي (تعقيد ف لوقت ديالو ) من غير بنسبة ن ليستات قصارين. ولكن لّيستة خاص ضروري تكون مستفة ماش يتطبق هاد لألݣوريتم بينما تّفتاش لخطي كيخدم فجميع لحالات.
لكود ف پايطون
هادا متال ديال لألݣوريتم ف پايطون، هنايا L هي ليستة، target هو لعنصر لهدف. هاد فونكسيون كترجع رقم تستافي ديال لهدف. ليستة مستفة من شمال ن ليمن (رقم تستافي لول هو 0 و لاخر هو طاي د L ناقص واحد). ادا لهدف مكانش ف ليستة كترجع 1-.
def binary_search(L, target):
l, r = 0, len(L)-1
while l <= r:
mid = (l+r)//2
if L[mid] == target:
return mid
elif L[mid] > target:
r = mid - 1
else:
l = mid + 1
return -1
تطبيق مسكسف
لحساب د بتفتاش جوجي
عدد ماشي جدري، يعني ميمكنشي نكتبوه على شكل معا ولاكين يمكنا نقربولو بشحال ما بغينا و نجبرو تقريب ديالو على شكل عداد ب لفاصلة.
أنسمّيو
تّقريب ديال
بدقة ديال
يعني
. عارفين بلي
فهاد لحالة ليستة لمستفة هي
ولعنصر الهدف هو
.
def sqrt(y, epsilon):
l, r = 0, y
mid = (l+r)/2
while abs(mid**2-y) > epsilon:
mid = (l+r)/2
if mid**2 > y:
r = mid
elif mid **2 < y:
l = mid
return mid
ف پايطون ما يمكناشي نفوتو دقة ديال تقريبا.
مصادر
موضيل:عيون موضيل:زريعة موضيل:قلدات د الداطا و ألڭوريتمات موضيل:ضبط مخازني