Помогите решить задачку
Реализовать функцию getMin($a). $a – массив чисел. Результат ее выполнения: минимальное числа в массиве (не используя функцию min, ключи массив может быть ассоциативный).
Moses Fender, в худшем случае, сложность алгоритма сортировки asort будет больше O(n). Тогда как нахождение минимального значения должно быть не больше.
Александр, там быстрая сортировка, значит в худшем случае O(n2), в лучшем O(n * log n). В итоге просто перебор с поиском минимального значений будет лучше, да
Александр, ты вот сам себя почитай: "в худшем случае, сложность алгоритма сортировки asort будет больше O(n). Тогда как нахождение минимального значения должно быть не больше."
Да, вполне понятно написано.
Сортировка всегда будет потреблять больше вычислительных ресурсов, чем обычный обход массива, с помощью которого, и нужно реализовывать функцию getmin.
Александр, хотя по сути здесь идет лишний вызов замыкания, не знаю как у пхп по скорости с этим, но в джаве это быстро..
Хотя просто foreach был бы явно быстрее, если не учитывать то, что он создает копии массива в последних версиях пхп, что может тоже дать тупняк по скорости
Александр, да и в asort если передать массив и когда пойдет его изменение, будет создана копия... но потом идет вызов сишных циклов внутри реализации asort, которые будут быстрее перебирать элементы массива и сортировать (вопрос только к реализации сортировщика в asort)
сделал бы кто бенчмарки
Талян, только вот функция getmin по семантики не уровня фреймворка, а реализуется на уровне core библиотеки языка. И задание теоретическое, т.к. на практике вы будете использовать функцию min(), вместо костылей. И вот уже исходя из таких предпосылок, реализация через сортировку в корне не верна.
P.S. Я прекрасно понимаю, что на практике это будет неактуально, но тут речь все-таки про теорию.