Longitud del ciclo de ordenamiento

Dado un arreglo de enteros distintos y un valor seleccionado, devuelve la cantidad de intercambios en el ciclo de ese valor cuando cada valor desplazado se mueve a su posición en el arreglo ordenado ascendentemente. Devuelve 0 si el valor seleccionado ya está colocado correctamente.

¿Cuál es la longitud del ciclo de ordenamiento de 9?

[1, 9, 8, 4, 7, 2, 6, 3, 5]
[1, 5, 8, 4, 7, 2, 6, 3, 9]  // 9 swaps with 5; 9 is in its correct spot.
[1, 7, 8, 4, 5, 2, 6, 3, 9]  // 5 replaces 7; 5 is in its correct spot.
[1, 6, 8, 4, 5, 2, 7, 3, 9]  // 7 replaces 6; 7 is in its correct spot.
[1, 2, 8, 4, 5, 6, 7, 3, 9]  // 6 replaces 2; 6 is in its correct spot and 2 is in it's correct spot - done!

El ciclo de 9 tiene una longitud de 4. Observa cómo todos los números incluidos en el intercambio (9, 5, 7, 6 y 2) están en sus posiciones correspondientes. Esto se debe a que todos estos números están en el mismo ciclo de ordenamiento.

Aquí tienes otro ejemplo. Usando el mismo arreglo de arriba, ¿cuál es la longitud del ciclo de ordenamiento de 8?

[1, 9, 8, 4, 7, 2, 6, 3, 5]

[1, 9, 3, 4, 7, 2, 6, 8, 5] // 8 replaces 3; 8 and 3 are both in their correct spots.

El ciclo de 8 tiene una longitud de 1.

Ejemplos

cycleLength([1, 5, 4, 3, 2, 6], 4) ➞ 1

cycleLength([1, 6, 7, 2, 4, 3, 8, 9, 5], 7) ➞ 7

cycleLength([43, 81, 88, 93, 17, 32, 19, 11], 93) ➞ 5

cycleLength([1, 6, 7, 2, 4, 3, 8, 9, 5], 1) ➞ 0

Notas

  • Devuelve 0 si el elemento ya está en el orden correcto (consulta el ejemplo n.º 4).
  • Si esta pregunta resulta confusa, piénsalo de esta manera:
    • Normalmente, intercambiar dos números para colocar el primero en el orden correcto no coloca el segundo en su orden correcto. En otras palabras, es un ordenamiento beneficioso para una sola parte.
    • El ciclo de ordenamiento termina cuando un intercambio produce un ordenamiento beneficioso para ambas partes; por ejemplo, intercambiar dos números hace que el PRIMERO Y el segundo número queden en sus posiciones correspondientes.
  • Esta pregunta es difícil; consulta los Comentarios para obtener una pista si te atoras.