El objeto es ordenar ascendentemente una lista desordenada de enteros consecutivos 1,2,3.....n intercambiando números (por ejemplo, intercambiando valores en los índices 3 y 6) y encontrar el número mínimo de intercambios necesarios. Mi código funciona, pero se agota (límite de 10 segundos) cuando se le da el caso de borde 100000 enteros. ¿Cómo puedo simplificar este código? Para mí, ya se siente bastante mínimo, sin bucles anidados ni nada. No tengo mucha experiencia con la evaluación de la eficiencia, agradecería cualquier ayuda, gracias.
function minimumSwaps(arr) { var swaps = 0; for (var i = 0; i < arr.length; i++) { if (arr[i] !== i+1) { var tempIndex = arr.indexOf(i+1); var tempVal = arr[i]; arr[i] = i+1; arr[tempIndex] = tempVal; swaps += 1; } } //console.log(swaps) return swaps; }