¿Qué significa “ romper los lazos ” en el contexto de la clasificación

Como asignación de entrevista para desarrollador de software, he recibido la tarea. Tengo una lista de niños, y la tarea es: ordenar a los niños de forma ascendente por su fecha de nacimiento, romper los lazos por ID

La estructura del niño es:

"child": { "id": "14" "name": "John" "birth_date": "1990-12-20T11:50:48Z" } 

No puedo entender el significado de la frase «romper lazos» en el contexto dado. Supongo que puede ser uno de los siguientes:

  • si birth_date es el mismo – primero va al niño con id
  • mientras ordena con birth_date, ignore el signo -.

Comentarios

  • Es ' probablemente la primera opción que le dio.
  • esta es una pregunta en inglés
  • Como otros han señalado, ' es casi con certeza la primera interpretación. Sin embargo, solo quiero dar un consejo: si la entrevista se realiza en persona o si hay ' una manera fácil de contactarlos, no dude en preguntar para una aclaración allí mismo. Nadie con sentido común lo reprochará.

Responder

A tie-break es una jugada extra cuando dos jugadores tienen la misma cantidad de puntos, para decidir quién es el ganador.

Nunca escuché esta expresión al ordenar, pero trasponer de tenis a esa área, significa que todo lo demás en igualdad de condiciones, hace una comparación adicional sobre la identificación para decidir quién es el primero.

¿Podría hablar de una lista vinculada? Dudaría más, porque un empate también es un enlace o una conexión. Pero incluso con este significado, en su contexto de clasificación, la única conexión que podría tener sentido sería la de igualdad.

Comentarios

  • El concepto de " vincula " en la clasificación es ciertamente lo suficientemente común como para tener una palabra clave para ello en SQL. " romper un empate " no es un término técnico, sino que simplemente significa lidiar con los empates dando algún paso adicional para garantizar clasificaciones únicas, a menudo un paso que es espurio o de naturaleza aleatoria (como lanzar una moneda para determinar un partido de fútbol, o clasificar los datos por I d).
  • @Steve Gracias por esta esclarecedora confirmación. De hecho, SQL TOP WITH TIES se refiere a valores iguales. Por otro lado, C ++ ve los lazos de manera muy diferente, siendo std :: tie un grupo de elementos enlazados entre sí en una tupla. También se utiliza ' para ordenar, pero solo para crear un orden lexicográfico entre los elementos.

Respuesta

En el contexto de la clasificación, el desempate se trata de garantizar un orden total.

Eche un vistazo a los datos de ejemplo:

 "id": "14" //made up data "name": "John" //real data "birth_date": "1990-12-20T11:50:48Z" //real data 

Hay exactamente dos datos reales, ¿qué sucede si hay dos personas con nombres y fechas de nacimiento idénticos?

El algoritmo de clasificación no puede decidir cuál va primero, o incluso si son esencialmente lo mismo, y debería descartarse en la copia.

Este es un problema real porque ordenar dos copias separadas de una lista podría resultar en dos ordenamientos diferentes, comparándolos por pares de elementos (a[0] == b[0] && a[1] == b[1] && ...) darían como resultado falso.

Por eso es importante un orden total.

Ahora no hay más datos reales para hacer la distinción, entonces, ¿cómo vamos a asegurarnos de que los elementos siempre se clasificarán en el mismo orden? La respuesta es romper el empate utilizando los datos inventados. Es completamente arbitrario, pero ahora, independientemente de la frecuencia con la que se revuelva y reorganice la lista, siempre ordenará los elementos en las mismas posiciones, lo que permitirá la comparación comparando cada par de elementos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *