Duda parcial jul2010

Duda parcial jul2010

de Alejandro Sena Peraza -
Número de respuestas: 1
En el primer ejercicio del parcial dice :
ordena por ord[0], en caso de empates se desempata ordenando por ord[1], en caso de que continúen habiendo empates se desempata por ord[2], finalmente, si persisten algunos empates, se desempata por el orden en que están los elementos en la lista original.

¿Que viene a ser un empate? en la solucion ordenaron 3 veces consecutivas sin checkear nada, creo q eso esta mal, si la primera vez quedo bien y a la tercera quedan empates entonces debe quedar la lista como antes(cosa q tampoco chekea) lo q me parece es incorrecto
En respuesta a Alejandro Sena Peraza

Re: Duda parcial jul2010

de Lorena Etcheverry -
Hola Alejandro:

la solución es correcta, porque lo que hace es ordenar aplicando los criterios en orden INVERSO al deseado.

De esta forma te aseguras que los empates se resuelven solos según el criterio deseado:
1) cuando vas a ordenar la lista por el criterio x1, la misma ya está ordenada por el criterio x2 y OrdenarPorCampo conserva el orden (asi que no se desordena)
2) en caso de empate en el último criterio (que es el 1ero en ser evaluado) es necesario que devuelvas respetando el orden en que aparecen en la lista original. Esto lo garantiza ObtenerMenorPersona.

Podría hacerse al reves, ordenando primero por el criterio x1 y en caso de empate ordenando por x2, etc pero te das cuenta que el algoritmo es mas complicado y que deberías, cuando apliques el último criterio, poder desempatar en función del orden ORIGINAL (mantendrías una copia??).

Desde el punto de vista del uso de memoria esta solución puede ser menos eficiente, ya que recorre necesariamente la lista parámetro tantas veces como criterios tengas y cada vez CREA una copia limpia de la lista, pero NO estamos evaluando eso en este ejercicio y recalco que el algoritmo es mucho mas simple y elegante.

slds
Lorena