هل يستخدم in_array () خوارزمية بحث ثنائية؟
-
26-09-2019 - |
سؤال
لدي مجموعة كبيرة من السلسلة التي أريد استخدامها كبحث.
انا استخدم in_array()
, ، لكن أنا مشتبه فيه إنها تفعل حلقة بسيطة - هل يعرف أي شخص ما إذا كان in_array()
يستخدم Algo algo bsearch؟
المحلول
in_array()
هو O(n)
. انظر أيضا قائمة Big-O لوظائف PHP
نصائح أخرى
نظرًا لأنه لا يتطلب فرز الصفيف ، فأنا لا أرى كيف يمكنه إجراء بحث ثنائي.
in_array()
يستخدم بحث خطي (O (N)) بدلاً من بحث ثنائي (O (log n)).
إذا كنت تريد o (log n) أو أفضل ، أود أن أقترح عليك إما وضع القيم التي تريد البحث عنها كمفاتيح في صفيف أو تقوم بإنشاء بنية فهرس يقوم بنفس الشيء بشكل فعال.
لا تنتمي إلى StackOverflow