Hola!!
bueno deciros que no me esperaba siquiera que alguien me contestara tan pronto .. que los senior debeis estar hasta las narices de pruguntas de los novatos.. muchas gracias!!
Leyendo tu respuesta veo que tienes más razón que un santo. En efecto el ejercicio no pide que se establezca un interruptor sino que simplemente ordene y no dé más pasadas de las necesarias. Lo del interruptor lo he encontrado yo buceando por san google donde llegué a una página donde se explica muy bien los diferentes métodos de ordenamiento y en ella se explica como utilizar un interruptor para mejorar el ordenamiento por el método de la burbuja. También explica como usar un índice de intercambio que es incluso mejor que usar el interruptor. Os paso el link:
http://es.scribd.com/doc/11411631/Burbuja
Voy a probar el codigo que propones. El que he hecho yo veo que funciona si se limita el número de registros a 10 pero el ejercicio pide un vector de 50 sobre 100 números aleatorios. Los tutoriales comentan que este método no es el más preciso pero tampoco creo que deba fallar a partir de 10 números, algo debo hacer mal.
Por ejemplo, en el caso de 20 números del 1 al 99 por ejemplo 1, 10 ,2, 3. 70,80,69,51,44,33,15,12,22,33,88,99,7,10,11,12 debería ordenarlos correlativos?
1,2,3,7,10,11,12,15...
o en el caso de que se repitiesen los números debería emparejarlos? 1,1,2,3,4,4,5,10,11
Bueno, gracias de nuevo a todos!! me servirá mucho el foro si sois tan majetes. Estudio online y estoy más solo que la una.
Hasta pronto!!
bcurto escribióHola PPSCENTURY, te dejo aquí mi solución a este ejercicio. No entiendo muy bien lo quieres decir con implementar un interruptor para que no se hagan más pasadas de las debidas, ya que el método de ordenamiento de burbuja lo que hace es recorrer el array comparando cada elemento de él con todos los restantes, por lo que necesitamos n-1 pasadas (siendo n la longitud del array) para ordenarlo. Si dispones de algo más de información sobre lo del interruptor publicala para ver si te podemos ayudar.
package interruptorburbuja;
public class InterruptorBurbuja
{
public static void main(String[] args)
{
int [] array=new InterruptorBurbuja().generarArray();
System.out.println("Array sin ordenar: ");
int cont=0;
for(int i: array)
{
System.out.print(i+(cont==array.length-1 ? "\n" : " "));
cont++;
}
array=new InterruptorBurbuja().ordenar(array);
System.out.println("Array ordenadado: ");
cont=0;
for(int i: array)
{
System.out.print(i+(cont==array.length-1 ? "\n" : " "));
cont++;
}
}
int [] generarArray()
{
int [] array=new int[50];
for(int i=0; i<array.length; i++)
{
array[i]=(int)(Math.random()*100+1);
}
return array;
}
int [] ordenar(int [] array)
{
for(int i=0; i<array.length; i++)
{
for(int j=i+1; j<array.length; j++)
{
if(array[i]>array[j])
{
int temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
}
return array;
}
}
Espero te sirva de ayuda. Un saludo