Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Cómo ordenar un arreglo bidimensional aplicando ordenamiento burbuja?

Estas en el tema de Cómo ordenar un arreglo bidimensional aplicando ordenamiento burbuja? en el foro de C/C++ en Foros del Web. Buenas gente, les escribo para saber si me pueden dar una mano, en cómo ordenar un arreglo de 15x15 que contiene números aleatorios del 1 ...
  #1 (permalink)  
Antiguo 13/02/2015, 20:14
Avatar de UmbraNoche  
Fecha de Ingreso: febrero-2015
Ubicación: San José
Mensajes: 5
Antigüedad: 9 años, 9 meses
Puntos: 0
Pregunta Cómo ordenar un arreglo bidimensional aplicando ordenamiento burbuja?

Buenas gente, les escribo para saber si me pueden dar una mano, en cómo ordenar un arreglo de 15x15 que contiene números aleatorios del 1 al 999 aplicando el ordenamiento burbuja. He estado quebrandome la cabeza pero no he tenido éxito. Aquí les dejo el código.

Gracias de antemano.

Código C++:
Ver original
  1. const int Fil = 15;
  2. const int Col = 15;
  3.  
  4. srand(time(NULL));
  5.  
  6.         cout << setw(50) << "Matriz con numeros del 1 al 999\n\n";
  7.  
  8.         for(int fila = 0; fila < Fil; fila++){
  9.             for(int columna = 0; columna < Col; columna++)
  10.                 matriz[fila][columna] = 1 + rand()% 999;
  11.         }
  12.  
  13.         for(int f = 0; f < Fil; f++){
  14.             for(int c = 0; c < Col; c++)
  15.                 cout << matriz[f][c] << " ";
  16.  
  17.                 cout << endl;
  18.         }
  19.  
  20.         cout << "Matriz Ordenada\n\n";
  21.  
  22.         int temp;
  23.  
  24.         for(int fila = 0; fila < Fil-1; fila ++){
  25.             for(int columna = 0; columna < Col-1; columna++){
  26.                 for(int FilaAux = 0; FilaAux < Fil; FilaAux++){
  27.                     for(int ColumnaAux = 0; ColumnaAux < Col; ColumnaAux++){
  28.                             if(matriz[fila][columna] > matriz[FilaAux+1][ColumnaAux+1]){
  29.                                 temp = matriz[FilaAux][ColumnaAux];
  30.                                 matriz[fila][columna] = matriz[FilaAux+1][ColumnaAux+1];
  31.                                 matriz[FilaAux+1][ColumnaAux+1] = temp;
  32.                             }
  #2 (permalink)  
Antiguo 13/02/2015, 21:43
 
Fecha de Ingreso: julio-2013
Mensajes: 36
Antigüedad: 11 años, 3 meses
Puntos: 1
Respuesta: Cómo ordenar un arreglo bidimensional aplicando ordenamiento burbuja?

Cambia esto:
Cita:
temp = matriz[FilaAux][ColumnaAux];
por esto:
Código:
  temp = matriz[Fila][Columna];
Cambia esa linea y dime tu resultado.

Saludos.
  #3 (permalink)  
Antiguo 14/02/2015, 10:16
Avatar de UmbraNoche  
Fecha de Ingreso: febrero-2015
Ubicación: San José
Mensajes: 5
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Cómo ordenar un arreglo bidimensional aplicando ordenamiento burbuja?

Cita:
Iniciado por fradalape Ver Mensaje
Cambia esto:


por esto:
Código:
  temp = matriz[Fila][Columna];
Cambia esa linea y dime tu resultado.

Saludos.
Muchas gracias por reponder fradalape, hice lo que me dijiste y no me funciono, los numeros se salen del arreglo y no se ordenan.

Si tienes otra sugerencia te estaría muy agradecido
  #4 (permalink)  
Antiguo 14/02/2015, 12:35
 
Fecha de Ingreso: febrero-2015
Ubicación: France
Mensajes: 12
Antigüedad: 9 años, 9 meses
Puntos: 1
Respuesta: Cómo ordenar un arreglo bidimensional aplicando ordenamiento burbuja?

Hola

[URL="http://es.wikipedia.org/wiki/Ordenamiento_de_burbuja"]aqui[/URL] hay varios ejemplos de algoritmos de ordenamiento de burbuja con arreglos 1D.

Intente esto :

Código C++:
Ver original
  1. cout << "Matriz Ordenada\n\n";
  2.  
  3.     int temp, *elt1, *elt2, max=Fil*Col;
  4.    
  5.  
  6.     for(int i = 1; i < max;  i++)
  7.     {
  8.         for (int j=0; j< max-i; ++j)
  9.         {          
  10.             elt1 = &matriz[j/Fil][j%Fil];
  11.             elt2 = &matriz[(j+1)/Fil][(j+1)%Fil];
  12.            
  13.             if (*elt1 > *elt2)
  14.             {
  15.                 temp = *elt1;
  16.                 *elt1 = *elt2;
  17.                 *elt2 = temp;
  18.             }      
  19.  
  20.         }  
  21.     }

Es como considera el arreglo 2D en un arreglo 1D y aplicar el primero algoritmo dado en de la pagina.



Saludos
  #5 (permalink)  
Antiguo 14/02/2015, 15:51
Avatar de UmbraNoche  
Fecha de Ingreso: febrero-2015
Ubicación: San José
Mensajes: 5
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Cómo ordenar un arreglo bidimensional aplicando ordenamiento burbuja?

Cita:
Iniciado por Reynolds Ver Mensaje
Hola

[URL="http://es.wikipedia.org/wiki/Ordenamiento_de_burbuja"]aqui[/URL] hay varios ejemplos de algoritmos de ordenamiento de burbuja con arreglos 1D.

Intente esto :

Código C++:
Ver original
  1. cout << "Matriz Ordenada\n\n";
  2.  
  3.     int temp, *elt1, *elt2, max=Fil*Col;
  4.    
  5.  
  6.     for(int i = 1; i < max;  i++)
  7.     {
  8.         for (int j=0; j< max-i; ++j)
  9.         {          
  10.             elt1 = &matriz[j/Fil][j%Fil];
  11.             elt2 = &matriz[(j+1)/Fil][(j+1)%Fil];
  12.            
  13.             if (*elt1 > *elt2)
  14.             {
  15.                 temp = *elt1;
  16.                 *elt1 = *elt2;
  17.                 *elt2 = temp;
  18.             }      
  19.  
  20.         }  
  21.     }

Es como considera el arreglo 2D en un arreglo 1D y aplicar el primero algoritmo dado en de la pagina.



Saludos
Muchas gracias Reynolds tu solución me ayudo. Pero los numeros se salen del arreglo cuando ejecuto el programa. No sé por qué ocurre eso, cuaquier sugerencia de la agradeceria bastante.

Etiquetas: arreglo, int, numero, ordenamiento
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:25.