const arr = [1, 2, 3, 4, 5];
for (let i = arr.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[arr[i], arr[j]] = [arr[j], arr[i]];
} 📥 Inputs:
❓ ¿Cuál es el output?
Ingresa tu respuesta abajo
💡 Explicación
El algoritmo Fisher-Yates moderno (o algoritmo de Durstenfeld, 1964) mezcla aleatoriamente un array en O(n) - exactamente n-1 iteraciones. Es el algoritmo de barajado más eficiente y justo, donde cada permutación tiene la misma probabilidad. Richard Durstenfeld lo optimizó en 1964 reduciendo la complejidad espacial a O(1).
¿Conocías este algoritmo? 🎲