بحث سريع

في علوم الحاسوب ، يشير البحث بالقفز أو البحث بالكتل إلى خوارزمية بحث للقوائم المرتبة . تعمل هذه الخوارزمية عن طريق فحص جميع العناصر L km أولاً ، حيثكشمال{\displaystyle k\in \mathbb {N} }و m هو حجم الكتلة، حتى يتم العثور على عنصر أكبر من مفتاح البحث . ولإيجاد الموضع الدقيق لمفتاح البحث في القائمة، يتم إجراء بحث خطي على القائمة الفرعية L [( k -1) m , km ] .

القيمة المثلى لـ m هي √n ، حيث n هو طول القائمة L. ولأن كلتا خطوتي الخوارزمية تفحصان √n عنصرًا على الأكثر، فإن الخوارزمية تعمل في زمن O( √n ) . هذا أفضل من البحث الخطي ، ولكنه أسوأ من البحث الثنائي . تكمن ميزة البحث القفزي على البحث الثنائي في أنه يحتاج إلى القفز للخلف مرة واحدة فقط، بينما يمكن للبحث الثنائي القفز للخلف حتى log n مرة . قد يكون هذا مهمًا إذا استغرق القفز للخلف وقتًا أطول بكثير من القفز للأمام.

يمكن تعديل الخوارزمية بإجراء مستويات متعددة من البحث القفزي على القوائم الفرعية، قبل إجراء البحث الخطي النهائي . بالنسبة للبحث القفزي ذي k مستوى، يكون حجم الكتلة الأمثل m <sub>l</sub> للمستوى l (بدءًا من 1) هو n ( k<sub> l</sub>)/k . ستُجري الخوارزمية المُعدّلة k قفزة عكسية وتعمل في زمن O( k<sub>n </sub> 1/( k + 1)) .

تطبيق

خوارزمية JumpSearch تأخذ المدخلات التالية: قائمة مرتبة L ، طولها n ومفتاح البحث s . المخرجات: موضع s في L ، أو لا شيء إذا لم يكن s موجودًا في L.أ ← ٠ ب ← ⌊√ نطالما أن L min( b , n ) - 1 < s ، نفّذ ما يلي: abb + ⌊√n  ، إذا كان aفلا تُرجع شيئًا.طالما أن L a < قم بما يلي: aa + 1 إذا كان a = min( b , n ) ، لا تُرجع شيئًاإذا كانت L a = فأرجع a ، وإلا فلا تُرجع شيئًا.

انظر أيضاً

مراجع