function minimumAbsoluteDifference($arr) { // Primero se ordena de esta manera // los elementos para que los elementos queden ordenados // según su proximidad. sort($arr); // $min = pow(10, 9) + 1; // Investigué en la documentación de PHP que hay una constante // para obtener el máximo valor de un entero en la plataforma // en la que se ejecuta el programa. $min = PHP_INT_MAX; // Se itera una sola vez en el array. for ($i = 0; $i < count($arr) - 1; $i++) { // Se hace la differencia entre los números que se encuentran próximos, // no hace falta formar pajeras porque ya están ordenados, // en un plano carteciano ya están ordenados según suproximidad, // de tal forma que en algún momento se hará la diferencia de // los números que se encuentren más próximos entre sí // lo que daría la diferencia mínima. $operation = abs($arr[$i] - $arr[$i + 1]); // Se compara de esta manera porque usar el operador ternario // implicaría una operación más. if ($operation < $min) { $min = $operation; } } // La complejidad computacional termina siendo de O(n log n), // porque sólo se iteró una vez, claro más el sort pero al ser una // función propia de PHP ya está optimizada. return $min; }