Problema desafiante....

gigap
12 de Septiembre del 2009

Le he dado bastantes vueltas a este problema, que opinais?


5. Dado el siguiente método :
static void ordenar (double lista[]) { 1
for (int i = 0; i < lista.length; i++) 2
for (int j = lista.length-1; j > i; j--) 3
if (lista[j] < lista[j-1]) intercambiar (lista, j, j-1); 4
}

¿Qué modificaciones habría que realizar en las líneas 1 y 4 de este método para quedicho método sea aplicable a cualquier tipo de datos de entrada. Defina las clases y/o
interfaces adicionales que sean necesarias.

jdiscolo
12 de Septiembre del 2009
static void ordenar (double lista[]) {
double por Object

if (lista[j] < lista[j-1]) intercambiar (lista, j, j-1);
para eso puedes implementar el interfaz Comparable en cada clase que quieras usar, esto te obliga a tener un método compareTo(Object o1) y así la línea quedaría como esto
if(lista[j].compareTo(lista[j-1]) intercambiar(lista,j,j-1);

cada implementación de compareTo(Object o1) de cada clase dependerá del que desarrolle dicha clase. por ejemplo no es lo mismo ordenar peras que limones, si las peras las ordenas por el peso y los limones por el tono de amarillo, cada una debe saber cómo ordenarse.

saludos.