¿Se puede ordenar una lista enlazada circular?

¿Se puede ordenar una lista enlazada circular?

Depende de lo que quieras decir, pero diría que seguro. Lo llamaría ordenado si no hay más de un lugar donde salta hacia atrás. Entonces 99,100,1,2,3,4,5,6,7,8,9, …, 97,98 sería un ejemplo de una lista circular ordenada con 100 enteros únicos en ella.

Tome una lista circular vinculada de números que, según afirmo, están ordenados en orden ascendente. Estás tratando de determinar si 528 está en la lista.

Escenario 1: El elemento que está viendo es 520. El siguiente elemento es 537. Podemos concluir que 528 no está presente en la lista sin examinar todos los demás elementos de la lista.

Escenario 2: El elemento que está viendo es 520. El siguiente elemento es 519. Podemos concluir que 528 no está presente en la lista (el valor más alto en la lista fue 520).

(Por supuesto, una ordenación de este tipo sería horriblemente improductiva de mantener, no le ofrece cosas como la búsqueda binaria, y ni siquiera admite un escenario como “imprima todos los elementos en orden” sin más movimientos o comience con un escaneo)

Se puede ordenar una lista enlazada circularmente en cada nodo excepto uno.

Pregunta divertida Depende de cómo defina ‘ordenado’ para estructuras circulares.

Yo diría que una estructura circular se ordena si se ordena la secuencia infinita que genera.

Entonces, si la lista enlazada circular es circular [3,4,5], se ordena si la secuencia infinita (3,4,5,3,4,5,3,4,5, …) está ordenada; claramente no es en este caso. (Se ordena una secuencia infinita si no hay dos elementos consecutivos que estén fuera de servicio).

Entonces, según esa definición, ¿ se puede ordenar una lista circular vinculada? Claro: se ordena si todos sus elementos son iguales: se ordena la circular [3,3,3].

(Probar esto se deja como un ejercicio 🙂

EDITAR:

Originalmente dije que estaba ordenado si y solo si todos sus elementos son iguales, pero como señala Daniel Kuck-Alvarez en los comentarios, eso está mal. Lo contrario solo se aplica a las relaciones de orden lineal, pero hay otras relaciones de orden, como piedra

Si hay un solo circuito y todos los elementos son parte de ese circuito, saque un enlace, ordénelo y devuélvalo.

No importará qué enlace elimines.

More Interesting

¿Vale la pena tomar el curso de Algoritmos de Udacity?

¿Puedo leer Introducción a las estructuras de datos de Cormen como un principiante completo?

¿Cuál es el problema de optimización / mejora más difícil que haya conocido y cómo lo resolvió?

En el algoritmo O (n) para encontrar el elemento máximo en una matriz, ¿cuál es el valor esperado del número total de cambios en el valor de una variable que mantiene el máximo sobre el paso de una matriz?

Cómo verificar el número dado es múltiplo de 3 sin usar el operador de módulo

Supongamos que eliminamos un borde de un árbol de expansión y luego agregamos un borde diferente para que permanezca conectado. ¿Seguirá siendo un árbol de expansión?

¿Cuáles son algunos algoritmos inesperados que se usan en física y ciencia de materiales?

Cómo eliminar duplicados en un vector C ++ y también si solo quiero elementos duplicados

Algoritmos: ¿Qué es el árbol utópico?

Cómo incrementar mis habilidades en programación dinámica

Cómo superar y comprender el algoritmo / código de otras personas

¿Es el algoritmo y la metodología para corregir automáticamente las palabras mal escritas en las consultas de búsqueda de Google una "salsa secreta" o está abierto?

¿Cuál es un ejemplo de un problema causado por la escritura dinámica en la programación?

¿Cómo se puede calcular el número de inversiones entre dos matrices en O (N log N)?

¿Por qué Google todavía muestra el tiempo de búsqueda en la página de resultados?