سؤال

لدي مجموعة كبيرة من السلسلة التي أريد استخدامها كبحث.

انا استخدم in_array(), ، لكن أنا مشتبه فيه إنها تفعل حلقة بسيطة - هل يعرف أي شخص ما إذا كان in_array() يستخدم Algo algo bsearch؟

هل كانت مفيدة؟

المحلول

in_array() هو O(n). انظر أيضا قائمة Big-O لوظائف PHP

نصائح أخرى

نظرًا لأنه لا يتطلب فرز الصفيف ، فأنا لا أرى كيف يمكنه إجراء بحث ثنائي.

in_array() يستخدم بحث خطي (O (N)) بدلاً من بحث ثنائي (O (log n)).

إذا كنت تريد o (log n) أو أفضل ، أود أن أقترح عليك إما وضع القيم التي تريد البحث عنها كمفاتيح في صفيف أو تقوم بإنشاء بنية فهرس يقوم بنفس الشيء بشكل فعال.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top