Ordenamiento de array mediante burbuja

Iniciado por luchi, 19 Agosto 2013, 17:48 PM

0 Miembros y 1 Visitante están viendo este tema.

luchi

Hola a todos.
Llevo un tiempo pasando por aquí y la verdad esque el foro está genial, me pasaré más seguido por aquí para aprender y ayudar en lo que pueda.
Echas las presentaciones, lo cierto esque tengo un problema:
Lo que tengo que hacer es, teniendo dos arrays de enteros, meterlos dentro de un tercero, hasta ahí todo bien, el problema, esque, además de meterlos, tengo que ordenarlos utilizando el método de la burbuja y según éste código, lo que hace es ordenarme los tres primeros números:


package array;

class pedir{
    public void arrays(int []a1, int[]a2){
       //Se introducen dos arrays dentro de un tercero
        int[]a3=new int[a1.length+a2.length];
        int i;
        int j;
        for( i=0;i<a1.length;i++){
           a3[i]=a1[i]; }
         for( i=0;i<a2.length;i++){
          a3[a1.length+i]=a2[i];}
             for( j=0;j<a3.length;j++){
             System.out.print(a3[j]);
             }
        //Hasta aquí el programa funciona bien
         
        //Ahora viene el ordenarlo mediante la burbuja
             
             int aux;
             for(int k=a3.length;k>0;k--){
                 for(int y=0;y<i-1;y++){
                     if(a3[y]<a3[y+1]){
                         aux = a3[y+1];
                         a3[y+1]=a3[y];
                         a3[y]=aux;
                     }
                    System.out.println(a3[y]);   
                   }       
                  }       
                 }                   
                }
               
public class Array {

   
    public static void main(String[] args) {
       
      pedir arreglo=new pedir();
      int[] aray1={5,4,3,2,1};
      int [] array2={9,8,7,6};
      arreglo.arrays(aray1, array2);
       
             }
       
               
       }   
 

1mpuls0

Este es el método de la burbuja.

Lo encontré en mi repertorio  ;D

Código (java) [Seleccionar]

public static void ordenar( int arreglo2[] )
    {
    int almacen;
       
        for( int pasada = 1; pasada < arreglo2.length; pasada++ )
    {
    for( int elemento = 0; elemento < arreglo2.length - 1; elemento++ )
    {
                    if ( arreglo2[ elemento ] > arreglo2[ elemento +1 ] )
                    {
                        almacen = arreglo2[ elemento ];
                        arreglo2[ elemento ] = arreglo2[ elemento + 1 ];
                        arreglo2[ elemento + 1 ] = almacen;
                    }
               
                }
        }
       
        System.out.println( "\n\nElementos del arreglo ordenados\n" );
    for(int indice = 0; indice < arreglo2.length; indice++  )
        System.out.print( arreglo2[indice] + "  " );
       
   }



Espero te sirva.

Saludos.
abc

luchi

Muchas gracias  :D, después de probar mucho, al fin un método de la burbuja que funcione.
Por cierto, otra duda ¿cuál es la diferencia entre bubblesort y Cocktail sort? ¿Sólo cambia la forma de hacerlo, pero el resultado es el mismo? Esque no me ha quedado claro. Gracias.

1mpuls0

Cocktail sort es una ligera variación de Bubble sort. Se diferencia en que en lugar de pasar repetidamente a través de la lista de abajo hacia arriba, pasa alternativamente de abajo hacia arriba y luego de arriba a abajo.

La razón de esto es que Bubble sort sólo pasa a través de la lista en una dirección y por lo tanto sólo se puede mover elementos hacia atrás cada iteración.

Se puede lograr un rendimiento ligeramente mejor que Bubble sort estándar.

abc

trolleoatodos

Bueno mejoré el código que tenías , y aquí va funciona casi perfect,
debes cambiar d versión de algoritmo porque estaba mal
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


class pedir{
    public void arrays(int []a1, int[]a2) throws IOException{
       //Se introducen dos arrays dentro de un tercero
        int[]a3=new int[a1.length+a2.length];
        int i;
        int j;
        for( i=0;i<a1.length;i++){
           a3[i]=a1[i]; }
         for( i=0;i<a2.length;i++){
          a3[a1.length+i]=a2[i];}
             for( j=0;j<a3.length;j++){
             System.out.print(a3[j]);
             }
             boolean salir=false;
while(!salir){
String opxion =null;

System.out.println("Los números son ");
for (int i1 =0 ;i1<9;i1++){System.out.print(a3[i1]);}
System.out.println(" ¿Desea ordenarlos con bubblesort? S/N");
opxion = new BufferedReader(new InputStreamReader(System.in)).readLine();
if (opxion.equals("S"))salir=true;
}
             
             
             int aux;
             int count = 0;
             for(int k=a3.length;k>0;k--){


                 for(int y=0;y<a3.length-1;y++){
                     if(a3[y]<a3[y+1]){
                         aux = a3[y+1];
                         a3[y+1]=a3[y];
                         a3[y]=aux;
                         
                     }
                    System.out.print(a3[y]);  count++;
                    if (count==9){count=0; System.out.println();}
                   }       
                  }       
                 }                   
                }
               
public class bur {

   
    public static void main(String[] args) throws IOException {
       
      pedir arreglo=new pedir();
      int[] aray1={5,4,3,2,1};
      int [] array2={9,8,7,6};
      arreglo.arrays(aray1, array2);
       
             }
       
               
       }   

1mpuls0

abc